Implement handling of 'enable' and 'disable' control commands coming from control file descriptor.
Signed-off-by: Alexey Budankov <alexey.budan...@linux.intel.com> --- tools/perf/builtin-record.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 44fba34bc5aa..3ed352508b83 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1496,6 +1496,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) bool disabled = false, draining = false; int fd; float ratio = 0; + enum evlist_ctl_cmd cmd = EVLIST_CTL_CMD_UNSUPPORTED; atexit(record__sig_exit); signal(SIGCHLD, sig_handler); @@ -1793,8 +1794,23 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) * Propagate error, only if there's any. Ignore positive * number of returned events and interrupt error. */ - if (err > 0 || (err < 0 && errno == EINTR)) + if (err > 0 || (err < 0 && errno == EINTR)) { err = 0; + if (evlist__ctlfd_process(rec->evlist, &cmd) > 0) { + switch (cmd) { + case EVLIST_CTL_CMD_ENABLE: + pr_info(EVLIST_ENABLED_MSG); + break; + case EVLIST_CTL_CMD_DISABLE: + pr_info(EVLIST_DISABLED_MSG); + break; + case EVLIST_CTL_CMD_ACK: + case EVLIST_CTL_CMD_UNSUPPORTED: + default: + break; + } + } + } waking++; if (evlist__filter_pollfd(rec->evlist, POLLERR | POLLHUP) == 0) -- 2.24.1