On 24.10.2020 18:44, Jiri Olsa wrote: > On Wed, Oct 21, 2020 at 07:10:09PM +0300, Alexey Budankov wrote: >> >> Start threads in detached state because its management is possible >> via messaging. Block signals prior the threads start so only main >> tool thread would be notified on external async signals during data >> collection. Streaming threads connect one-to-one to mapped data >> buffers and write into per-CPU trace files located at data directory. >> Data buffers and threads are affined to local NUMA nodes and monitored >> CPUs according to system topology. --cpu option can be used to specify >> CPUs to be monitored. >> >> Signed-off-by: Alexey Budankov <alexey.budan...@linux.intel.com> >> --- >> tools/perf/builtin-record.c | 128 +++++++++++++++++++++++++++++++++--- >> 1 file changed, 120 insertions(+), 8 deletions(-) >> >> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c >> index a15642656066..1d41e996a994 100644 >> --- a/tools/perf/builtin-record.c >> +++ b/tools/perf/builtin-record.c >> @@ -56,6 +56,7 @@ >> #include <poll.h> >> #include <pthread.h> >> #include <unistd.h> >> +#include <sys/syscall.h> >> #include <sched.h> >> #include <signal.h> >> #ifdef HAVE_EVENTFD_SUPPORT >> @@ -1377,6 +1378,62 @@ static void record__thread_munmap_filtered(struct >> fdarray *fda, int fd, >> perf_mmap__put(map); >> } >> >> +static void *record__thread(void *arg) >> +{ >> + enum thread_msg msg = THREAD_MSG__READY; >> + bool terminate = false; >> + struct fdarray *pollfd; >> + int err, ctlfd_pos; >> + >> + thread = arg; >> + thread->tid = syscall(SYS_gettid); >> + >> + err = write(thread->comm.ack[1], &msg, sizeof(msg)); >> + if (err == -1) >> + pr_err("threads: %d failed to notify on start. Error %m", >> thread->tid); >> + >> + pollfd = &(thread->pollfd); > > I don't think braces are necessary in here
Corrected in v3. Alexei