linux-kernel.vger.kernel.org archive mirror
 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 v4 01/10] tools/libperf: introduce static poll file descriptors
Date: Mon, 1 Jun 2020 10:34:05 +0300	[thread overview]
Message-ID: <d36ac0e2-3f79-6662-c3a8-03c06798f8d3@linux.intel.com> (raw)
In-Reply-To: <20200531181912.GC881900@krava>


On 31.05.2020 21:19, Jiri Olsa wrote:
> On Mon, May 25, 2020 at 05:17:31PM +0300, Alexey Budankov wrote:
> 
> SBIP
> 
>> +int fdarray__add_stat(struct fdarray *fda, int fd, short revents)
>> +{
>> +	int pos = fda->nr_stat;
>> +
>> +	if (pos >= FDARRAY__STAT_ENTRIES_MAX)
>> +		return -1;
>> +
>> +	fda->stat_entries[pos].fd = fd;
>> +	fda->stat_entries[pos].events = revents;
>> +	fda->nr_stat++;
>> +
>> +	return pos;
>> +}
>> +
>>  int fdarray__filter(struct fdarray *fda, short revents,
>>  		    void (*entry_destructor)(struct fdarray *fda, int fd, void *arg),
>>  		    void *arg)
>> @@ -113,7 +133,27 @@ int fdarray__filter(struct fdarray *fda, short revents,
>>  
>>  int fdarray__poll(struct fdarray *fda, int timeout)
>>  {
>> -	return poll(fda->entries, fda->nr, timeout);
>> +	int nr, i, pos, res;
>> +
>> +	nr = fda->nr;
>> +
>> +	for (i = 0; i < fda->nr_stat; i++) {
>> +		if (fda->stat_entries[i].fd != -1) {
>> +			pos = fdarray__add(fda, fda->stat_entries[i].fd,
>> +					   fda->stat_entries[i].events);
>> +			if (pos >= 0)
>> +				fda->priv[pos].idx = i;
>> +		}
>> +	}
> 
> hum, so every time we call evlist__poll we end up in here
> adding more stuff to entries?

It depends on whether static fds were added by perf_evlist__add_pollfd_stat() or not.
If they weren't then poll() checks only event fds added by perf_evlist__add_pollfd().
If static fds have been added and there are valid (!=-1) fds still then  they are
appended to fds array. After return from poll() its result copied back to static fds
storage so fds state could be checked separately from event fds.

~Alexey

  reply	other threads:[~2020-06-01  7:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-25 14:11 [PATCH v4 00/10] perf: support enable and disable commands in stat and record modes Alexey Budankov
2020-05-25 14:17 ` [PATCH v4 01/10] tools/libperf: introduce static poll file descriptors Alexey Budankov
2020-05-31 18:19   ` Jiri Olsa
2020-06-01  7:34     ` Alexey Budankov [this message]
2020-05-25 14:18 ` [PATCH v4 02/10] perf evlist: introduce control " Alexey Budankov
2020-05-25 14:19 ` [PATCH v4 03/10] perf evlist: implement control command handling functions Alexey Budankov
2020-05-25 14:19 ` [PATCH v4 04/10] perf stat: factor out event handling loop into a function Alexey Budankov
2020-05-31 18:19   ` Jiri Olsa
2020-06-01  7:38     ` Alexey Budankov
2020-06-01 16:10       ` Alexey Budankov
2020-05-25 14:20 ` [PATCH v4 05/10] perf stat: extend -D,--delay option with -1 value Alexey Budankov
2020-05-25 14:21 ` [PATCH v4 06/10] perf stat: implement control commands handling Alexey Budankov
2020-05-25 14:21 ` [PATCH v4 07/10] perf stat: introduce --ctl-fd[-ack] options Alexey Budankov
2020-05-25 14:22 ` [PATCH v4 08/10] perf record: extend -D,--delay option with -1 value Alexey Budankov
2020-05-25 14:23 ` [PATCH v4 09/10] perf record: implement control commands handling Alexey Budankov
2020-05-25 14:23 ` [PATCH v4 10/10] perf record: introduce --ctl-fd[-ack] options Alexey Budankov
2020-06-03 12:05   ` Adrian Hunter
2020-06-03 12:52     ` Alexey Budankov
2020-06-03 15:44       ` Adrian Hunter
2020-06-03 15:52         ` Alexey Budankov
2020-05-27  9:27 ` [PATCH v4 00/10] perf: support enable and disable commands in stat and record modes Alexey Budankov
2020-05-27 10:29   ` 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=d36ac0e2-3f79-6662-c3a8-03c06798f8d3@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).