All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	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 v8 03/13] perf evlist: implement control command handling functions
Date: Wed, 24 Jun 2020 16:20:51 +0300	[thread overview]
Message-ID: <3ab05af5-b882-ffde-8311-307b6c373fd3@linux.intel.com> (raw)
In-Reply-To: <20200623145613.GI2619137@krava>


On 23.06.2020 17:56, Jiri Olsa wrote:
> On Wed, Jun 17, 2020 at 11:36:46AM +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.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.fd);
>> +			break;
>> +		}
>> +	} while (1);
>> +
>> +	pr_debug("Message from ctl_fd: \"%s%s\"\n", cmd_data,
>> +		 bytes_read == data_size ? "" : c == '\n' ? "\\n" : "\\0");
> 
> do you want to display the message above only if (err > 0) ?

I do, only for err >= 0. For err == -1 there is already the error message.

> 
>> +
>> +	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;
>> +		}
>> +	}
>> +
>> +	return err;
>> +}
> 
> SNIP
> 
>> +	int ctlfd_pos = evlist->ctl_fd.pos;
>> +	struct pollfd *entries = evlist->core.pollfd.entries;
>> +
>> +	if (ctlfd_pos == -1 || !entries[ctlfd_pos].revents)
>> +		return 0;
>> +
>> +	if (entries[ctlfd_pos].revents & POLLIN) {
>> +		err = evlist__ctlfd_recv(evlist, cmd, cmd_data,
>> +					 EVLIST_CTL_CMD_MAX_LEN);
>> +		if (err > 0) {
>> +			switch (*cmd) {
>> +			case EVLIST_CTL_CMD_ENABLE:
>> +				evlist__enable(evlist);
>> +				break;
>> +			case EVLIST_CTL_CMD_DISABLE:
>> +				evlist__disable(evlist);
>> +				break;
>> +			case EVLIST_CTL_CMD_ACK:
>> +			case EVLIST_CTL_CMD_UNSUPPORTED:
>> +			default:
>> +				pr_debug("ctlfd: unsupported %d\n", *cmd);
>> +				break;
>> +			}
>> +			if (!(*cmd == EVLIST_CTL_CMD_ACK || *cmd == EVLIST_CTL_CMD_UNSUPPORTED))
>> +				evlist__ctlfd_ack(evlist);
>> +		}
>> +	}
>> +
>> +	if (entries[ctlfd_pos].revents & (POLLHUP | POLLERR))
>> +		evlist__finalize_ctlfd(evlist);
> 
> should this error be propagated via err?

I don't think so. Currently it returns 0 only and there is no need to 
stop collection or skip processing in caller in this case.

~Alexey

> 
> jirka
> 

  reply	other threads:[~2020-06-24 13:21 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-17  8:30 [PATCH v8 00/13] perf: support enable and disable commands in stat and record modes Alexey Budankov
2020-06-17  8:35 ` [PATCH v8 01/13] tools/libperf: avoid moving of fds at fdarray__filter() call Alexey Budankov
2020-06-24 17:19   ` Alexey Budankov
2020-06-25 17:14     ` Jiri Olsa
2020-06-25 19:32       ` Alexey Budankov
2020-06-26  9:37         ` Jiri Olsa
2020-06-26 10:06           ` Alexey Budankov
2020-06-29 15:11             ` Alexey Budankov
2020-06-29 19:17               ` Jiri Olsa
2020-06-17  8:35 ` [PATCH v8 02/13] perf evlist: introduce control file descriptors Alexey Budankov
2020-06-17  8:36 ` [PATCH v8 03/13] perf evlist: implement control command handling functions Alexey Budankov
2020-06-23 14:56   ` Jiri Olsa
2020-06-23 15:03     ` Arnaldo Carvalho de Melo
2020-06-23 15:14       ` Jiri Olsa
2020-06-24 13:35         ` Alexey Budankov
2020-06-23 14:56   ` Jiri Olsa
2020-06-24 13:20     ` Alexey Budankov [this message]
2020-06-17  8:37 ` [PATCH v8 04/13] perf stat: factor out body of event handling loop for system wide Alexey Budankov
2020-06-23 14:56   ` Jiri Olsa
2020-06-24 14:27     ` Alexey Budankov
2020-06-25 12:17       ` Jiri Olsa
2020-06-25 16:01         ` Alexey Budankov
2020-06-25 17:13           ` Jiri Olsa
2020-06-25 18:43             ` Alexey Budankov
2020-06-17  8:38 ` [PATCH v8 05/13] perf stat: move target check to loop control statement Alexey Budankov
2020-06-17  8:39 ` [PATCH v8 06/13] perf stat: factor out body of event handling loop for fork case Alexey Budankov
2020-06-17  8:40 ` [PATCH v8 07/13] perf stat: factor out event handling loop into dispatch_events() Alexey Budankov
2020-06-23 14:56   ` Jiri Olsa
2020-06-24 13:27     ` Alexey Budankov
2020-06-17  8:40 ` [PATCH v8 08/13] perf stat: extend -D,--delay option with -1 value Alexey Budankov
2020-06-17  8:41 ` [PATCH v8 09/13] perf stat: implement control commands handling Alexey Budankov
2020-06-23 14:54   ` Jiri Olsa
2020-06-24 14:10     ` Alexey Budankov
2020-06-25 12:14       ` Jiri Olsa
2020-06-25 14:58         ` Alexey Budankov
2020-06-23 14:54   ` Jiri Olsa
2020-06-24 13:39     ` Alexey Budankov
2020-06-25 12:12       ` Jiri Olsa
2020-06-25 14:52         ` Alexey Budankov
2020-06-17  8:42 ` [PATCH v8 10/13] perf stat: introduce --control fd:ctl-fd[,ack-fd] options Alexey Budankov
2020-06-17  8:42 ` [PATCH v8 11/13] perf record: extend -D,--delay option with -1 value Alexey Budankov
2020-06-17  8:43 ` [PATCH v8 12/13] perf record: implement control commands handling Alexey Budankov
2020-06-23 14:54   ` Jiri Olsa
2020-06-24 14:00     ` Alexey Budankov
2020-06-24 14:55       ` Alexey Budankov
2020-06-25 17:07         ` Jiri Olsa
2020-06-17  8:44 ` [PATCH v8 13/13] perf record: introduce --control fd:ctl-fd[,ack-fd] options Alexey Budankov
2020-06-22  3:38 ` [PATCH v8 00/13] perf: support enable and disable commands in stat and record modes Alexey Budankov
2020-06-22  8:55   ` 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=3ab05af5-b882-ffde-8311-307b6c373fd3@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.