On 31/08/20 4:19 pm, Jiri Olsa wrote:
> On Sat, Aug 29, 2020 at 01:50:13PM +0300, Adrian Hunter wrote:
> 
> SNIP
> 
>> +            *p = '\0';
>> +
>> +    /*
>> +     * O_RDWR avoids POLLHUPs which is necessary to allow the other
>> +     * end of a FIFO to be repeatedly opened and closed.
>> +     */
>> +    fd = open(s, O_RDWR | O_NONBLOCK | O_CLOEXEC);
>> +    if (fd < 0) {
>> +            pr_err("Failed to open '%s'\n", s);
>> +            ret = -errno;
>> +            goto out_free;
>> +    }
>> +    *ctl_fd = fd;
>> +    *ctl_fd_close = true;
>> +
>> +    if (p && *++p) {
>> +            /* O_RDWR | O_NONBLOCK means the other end need not be open */
>> +            fd = open(p, O_RDWR | O_NONBLOCK | O_CLOEXEC);
>> +            if (fd < 0) {
>> +                    pr_err("Failed to open '%s'\n", p);
>> +                    ret = -errno;
>> +                    goto out_free;
>> +            }
>> +            *ctl_fd_ack = fd;
>> +    }
>> +
>> +out_free:
>> +    free(s);
>> +    return ret;
>> +}
>> +
>> +int evlist__parse_control(const char *str, int *ctl_fd, int *ctl_fd_ack, 
>> bool *ctl_fd_close)
>>  {
>>      char *comma = NULL, *endptr = NULL;
>>  
>>      if (strncmp(str, "fd:", 3))
>> -            return -EINVAL;
>> +            return evlist__parse_control_names(str, ctl_fd, ctl_fd_ack, 
>> ctl_fd_close);
> 
> do we want to mention somewhere that the fifo name is everything
> except for 'fd:' ?

It is only mentioned in the documentation i.e.

--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -627,7 +627,9 @@ option. The -e option and this one can be mixed and 
matched.  Events
 can be grouped using the {} notation.
 endif::HAVE_LIBPFM[]
 
+--control=ctl-fifo[,ack-fifo]::
 --control=fd:ctl-fd[,ack-fd]::
+ctl-fifo / ack-fifo are opened and used as ctl-fd / ack-fd as follows.
 Listen on ctl-fd descriptor for command to control measurement ('enable': 
enable events,
 'disable': disable events). Measurements can be started with events disabled 
using
 --delay=-1 option. Optionally send control command completion ('ack\n') to 
ack-fd descriptor

> 
> also how likely is that we will add another channel type that
> will need another keyword (likd 'fd:')? I originaly thought
> we'd use 'fifo:filename' for this ... would be great to somehow
> avoid future confusions

Sure, I will add fifo: in V2



Reply via email to