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:' ?

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

thanks,
jirka

Reply via email to