Messages in this thread | | | From | Namhyung Kim <> | Date | Tue, 19 Jan 2021 14:35:06 +0900 | Subject | Re: [PATCH 11/22] perf daemon: Add stop command |
| |
On Sun, Jan 3, 2021 at 7:05 AM Jiri Olsa <jolsa@kernel.org> wrote: > > Add 'perf daemon stop' command to stop daemon process > and all running sessions. > > Example: > > # cat ~/.perfconfig > [daemon] > base=/opt/perfdata > > [session-cycles] > run = -m 10M -e cycles --overwrite --switch-output -a > > [session-sched] > run = -m 20M -e sched:* --overwrite --switch-output -a > > Starting the daemon: > > # perf daemon start > > Stopping the daemon > > # perf daemon stop > > Daemon is not running, nothing to connect to: > > # perf daemon > connect error: Connection refused > > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > --- > tools/perf/builtin-daemon.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/tools/perf/builtin-daemon.c b/tools/perf/builtin-daemon.c > index a7ffbecf8d14..45748bb471ec 100644 > --- a/tools/perf/builtin-daemon.c > +++ b/tools/perf/builtin-daemon.c > @@ -524,6 +524,7 @@ static int setup_server_socket(struct daemon *daemon) > enum { > CMD_LIST = 0, > CMD_SIGNAL = 1, > + CMD_STOP = 2, > CMD_MAX, > }; > > @@ -650,6 +651,10 @@ static int handle_server_socket(struct daemon *daemon, int sock_fd) > case CMD_SIGNAL: > ret = cmd_session_kill(daemon, &cmd, out); > break; > + case CMD_STOP: > + done = 1; > + pr_debug("perf daemon is exciting\n");
I can see how much you are excited. ;-)
Thanks, Namhyung
> + break; > default: > break; > } > @@ -992,6 +997,27 @@ static int __cmd_signal(struct daemon *daemon, struct option parent_options[], > return send_cmd(daemon, &cmd); > } > > +static int __cmd_stop(struct daemon *daemon, struct option parent_options[], > + int argc, const char **argv) > +{ > + struct option start_options[] = { > + OPT_PARENT(parent_options), > + OPT_END() > + }; > + union cmd cmd = { .cmd = CMD_STOP, }; > + > + argc = parse_options(argc, argv, start_options, daemon_usage, 0); > + if (argc) > + usage_with_options(daemon_usage, start_options); > + > + if (setup_config(daemon)) { > + pr_err("failed: config not found\n"); > + return -1; > + } > + > + return send_cmd(daemon, &cmd); > +} > + > int cmd_daemon(int argc, const char **argv) > { > struct option daemon_options[] = { > @@ -1015,6 +1041,8 @@ int cmd_daemon(int argc, const char **argv) > if (argc) { > if (!strcmp(argv[0], "signal")) > return __cmd_signal(&__daemon, daemon_options, argc, argv); > + else if (!strcmp(argv[0], "stop")) > + return __cmd_stop(&__daemon, daemon_options, argc, argv); > > pr_err("failed: unknown command '%s'\n", argv[0]); > return -1; > -- > 2.26.2 >
| |