Commit acce0223 authored by Alexey Budankov's avatar Alexey Budankov Committed by Arnaldo Carvalho de Melo
Browse files

perf record: Implement control commands handling



Implement handling of 'enable' and 'disable' control commands coming
from control file descriptor.

Signed-off-by: default avatarAlexey Budankov <alexey.budankov@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/f0fde590-1320-dca1-39ff-da3322704d3b@linux.intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 68cd3b45
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1564,6 +1564,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);
@@ -1883,6 +1884,21 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
				draining = true;
		}

		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;
			}
		}

		/*
		 * When perf is starting the traced process, at the end events
		 * die with the process and we wait for that. Thus no need to