From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Jiri Olsa <jolsa@redhat.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Andi Kleen <ak@linux.intel.com>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v10 05/15] perf evlist: implement control command handling functions
Date: Mon, 13 Jul 2020 11:24:54 +0300 [thread overview]
Message-ID: <218d3cf9-86fc-44ac-89eb-4b7ad422deb8@linux.intel.com> (raw)
In-Reply-To: <CAM9d7cikDcaLaUv8+xh9fp_KVHFVQD+eRYGAR5kN4A7ppPHmBQ@mail.gmail.com>
On 13.07.2020 6:20, Namhyung Kim wrote:
> On Wed, Jul 8, 2020 at 4:50 PM Alexey Budankov
> <alexey.budankov@linux.intel.com> wrote:
>>
>>
>> Implement functions of initialization, finalization and processing
>> of control command messages coming from control file descriptors.
>> Allocate control file descriptor as descriptor at struct pollfd
>> object of evsel_list for atomic poll() operation.
>>
>> Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
>> ---
> [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--);
>
> I overlooked the '--' at the end and thought there might be
> buffer overflow.. Care to add a comment?
If it wants to be more explicit then it could possibly be implemented
like this:
memset(cmd_data, 0, data_size);
data_size--;
>
>> +
>> + do {
>> + err = read(evlist->ctl_fd.fd, &c, 1);
>
> Maybe I missed earlier discussion, but do we really want
> this 1 byte read in a loop?
That was the explicit request to support commands of variable
length so it implements it like that.
Alexei
>
> Thanks
> Namhyung
>
>
>> + 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.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,
>> + (sizeof(EVLIST_CTL_CMD_ENABLE_TAG)-1))) {
>> + *cmd = EVLIST_CTL_CMD_ENABLE;
>> + } else if (!strncmp(cmd_data, EVLIST_CTL_CMD_DISABLE_TAG,
>> + (sizeof(EVLIST_CTL_CMD_DISABLE_TAG)-1))) {
>> + *cmd = EVLIST_CTL_CMD_DISABLE;
>> + }
>> + }
>> +
>> + return err;
>> +}
next prev parent reply other threads:[~2020-07-13 8:24 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-08 7:36 [PATCH v10 00/15] perf: support enable and disable commands in stat and record modes Alexey Budankov
2020-07-08 7:45 ` [PATCH v10 01/15] tools/libperf: avoid internal moving of fdarray fds Alexey Budankov
2020-07-08 7:46 ` [PATCH v10 02/15] tools/libperf: add flags to fdarray fds objects Alexey Budankov
2020-07-08 7:47 ` [PATCH v10 03/15] tools/libperf: avoid counting of nonfilterable fdarray fds Alexey Budankov
2020-07-08 7:47 ` [PATCH v10 04/15] perf evlist: introduce control file descriptors Alexey Budankov
2020-07-13 3:13 ` Namhyung Kim
2020-07-13 8:16 ` Alexey Budankov
2020-07-08 7:50 ` [PATCH v10 05/15] perf evlist: implement control command handling functions Alexey Budankov
2020-07-13 3:20 ` Namhyung Kim
2020-07-13 8:24 ` Alexey Budankov [this message]
2020-07-08 7:50 ` [PATCH v10 06/15] perf stat: factor out body of event handling loop for system wide Alexey Budankov
2020-07-08 7:51 ` [PATCH v10 07/15] perf stat: move target check to loop control statement Alexey Budankov
2020-07-08 7:51 ` [PATCH v10 08/15] perf stat: factor out body of event handling loop for fork case Alexey Budankov
2020-07-08 7:52 ` [PATCH v10 09/15] perf stat: factor out event handling loop into dispatch_events() Alexey Budankov
2020-07-08 7:53 ` [PATCH v10 10/15] perf stat: extend -D,--delay option with -1 value Alexey Budankov
2020-07-08 7:53 ` [PATCH v10 11/15] perf stat: implement control commands handling Alexey Budankov
2020-07-08 7:54 ` [PATCH v10 12/15] perf stat: introduce --control fd:ctl-fd[,ack-fd] options Alexey Budankov
2020-07-08 7:54 ` [PATCH v10 13/15] perf record: extend -D,--delay option with -1 value Alexey Budankov
2020-07-08 7:55 ` [PATCH v10 14/15] perf record: implement control commands handling Alexey Budankov
2020-07-08 7:55 ` [PATCH v10 15/15] perf record: introduce --control fd:ctl-fd[,ack-fd] options Alexey Budankov
2020-07-12 21:12 ` [PATCH v10 00/15] perf: support enable and disable commands in stat and record modes Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=218d3cf9-86fc-44ac-89eb-4b7ad422deb8@linux.intel.com \
--to=alexey.budankov@linux.intel.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.