On Wed, May 13, 2020 at 11:00:02AM +0300, Alexey Budankov wrote:

SNIP

> +
> +static int evlist__ctlfd_recv(struct evlist *evlist, enum evlist_ctl_cmd 
> *cmd,
> +                           char *cmd_data, size_t data_size)
> +{
> +     int err;
> +     char c;
> +     size_t bytes_read = 0;
> +
> +     memset(cmd_data, 0, data_size--);
> +
> +     do {
> +             err = read(evlist->ctl_fd, &c, 1);
> +             if (err > 0) {
> +                     if (c == '\n' || c == '\0')
> +                             break;
> +                     cmd_data[bytes_read++] = c;
> +                     if (bytes_read == data_size)
> +                             break;
> +             } else {
> +                     if (err == -1)
> +                             pr_err("Failed to read from ctlfd %d: %m\n", 
> evlist->ctl_fd);
> +                     break;
> +             }
> +     } while (1);
> +
> +     pr_debug("Message from ctl_fd: \"%s%s\"\n", cmd_data,
> +              bytes_read == data_size ? "" : c == '\n' ? "\\n" : "\\0");
> +
> +     if (err > 0) {
> +             if (!strncmp(cmd_data, EVLIST_CTL_CMD_ENABLE_TAG,
> +                          strlen(EVLIST_CTL_CMD_ENABLE_TAG))) {
> +                     *cmd = EVLIST_CTL_CMD_ENABLE;
> +             } else if (!strncmp(cmd_data, EVLIST_CTL_CMD_DISABLE_TAG,
> +                                 strlen(EVLIST_CTL_CMD_DISABLE_TAG))) {
> +                     *cmd = EVLIST_CTL_CMD_DISABLE;
> +             }

are there more comands comming?

jirka

Reply via email to