linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Michael Petlan <mpetlan@redhat.com>,
	Ian Rogers <irogers@google.com>,
	Stephane Eranian <eranian@google.com>,
	Alexei Budankov <abudankov@huawei.com>
Subject: [PATCH 01/24] perf daemon: Add daemon command
Date: Sun, 31 Jan 2021 00:48:33 +0100	[thread overview]
Message-ID: <20210130234856.271282-2-jolsa@kernel.org> (raw)
In-Reply-To: <20210130234856.271282-1-jolsa@kernel.org>

Adding daemon skeleton with minimal base (non) functionality,
covering various setup in start command.

Adding empty perf-daemon.txt to skip compile warning. All the
features and man page are coming in following patches.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/Build                         |  1 +
 tools/perf/Documentation/perf-daemon.txt |  0
 tools/perf/builtin-daemon.c              | 86 ++++++++++++++++++++++++
 tools/perf/builtin.h                     |  1 +
 tools/perf/command-list.txt              |  1 +
 tools/perf/perf.c                        |  1 +
 6 files changed, 90 insertions(+)
 create mode 100644 tools/perf/Documentation/perf-daemon.txt
 create mode 100644 tools/perf/builtin-daemon.c

diff --git a/tools/perf/Build b/tools/perf/Build
index 5f392dbb88fc..db61dbe2b543 100644
--- a/tools/perf/Build
+++ b/tools/perf/Build
@@ -24,6 +24,7 @@ perf-y += builtin-mem.o
 perf-y += builtin-data.o
 perf-y += builtin-version.o
 perf-y += builtin-c2c.o
+perf-y += builtin-daemon.o
 
 perf-$(CONFIG_TRACE) += builtin-trace.o
 perf-$(CONFIG_LIBELF) += builtin-probe.o
diff --git a/tools/perf/Documentation/perf-daemon.txt b/tools/perf/Documentation/perf-daemon.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/tools/perf/builtin-daemon.c b/tools/perf/builtin-daemon.c
new file mode 100644
index 000000000000..8b13e455ac40
--- /dev/null
+++ b/tools/perf/builtin-daemon.c
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <subcmd/parse-options.h>
+#include <linux/limits.h>
+#include <string.h>
+#include <signal.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "builtin.h"
+#include "perf.h"
+#include "debug.h"
+#include "util.h"
+
+struct daemon {
+	char			*base;
+	FILE			*out;
+	char			 perf[PATH_MAX];
+};
+
+static struct daemon __daemon = { };
+
+static const char * const daemon_usage[] = {
+	"perf daemon start [<options>]",
+	"perf daemon [<options>]",
+	NULL
+};
+
+static bool done;
+
+static void sig_handler(int sig __maybe_unused)
+{
+	done = true;
+}
+
+static int __cmd_start(struct daemon *daemon, struct option parent_options[],
+		       int argc, const char **argv)
+{
+	struct option start_options[] = {
+		OPT_PARENT(parent_options),
+		OPT_END()
+	};
+	int err = 0;
+
+	argc = parse_options(argc, argv, start_options, daemon_usage, 0);
+	if (argc)
+		usage_with_options(daemon_usage, start_options);
+
+	debug_set_file(daemon->out);
+	debug_set_display_time(true);
+
+	pr_info("daemon started (pid %d)\n", getpid());
+
+	signal(SIGINT, sig_handler);
+	signal(SIGTERM, sig_handler);
+
+	while (!done && !err) {
+		sleep(1);
+	}
+
+	pr_info("daemon exited\n");
+	fclose(daemon->out);
+	return err;
+}
+
+int cmd_daemon(int argc, const char **argv)
+{
+	struct option daemon_options[] = {
+		OPT_INCR('v', "verbose", &verbose, "be more verbose"),
+		OPT_END()
+	};
+
+	perf_exe(__daemon.perf, sizeof(__daemon.perf));
+	__daemon.out = stdout;
+
+	argc = parse_options(argc, argv, daemon_options, daemon_usage,
+			     PARSE_OPT_STOP_AT_NON_OPTION);
+
+	if (argc) {
+		if (!strcmp(argv[0], "start"))
+			return __cmd_start(&__daemon, daemon_options, argc, argv);
+
+		pr_err("failed: unknown command '%s'\n", argv[0]);
+		return -1;
+	}
+
+	return -1;
+}
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
index 14a2db622a7b..7303e80a639c 100644
--- a/tools/perf/builtin.h
+++ b/tools/perf/builtin.h
@@ -37,6 +37,7 @@ int cmd_inject(int argc, const char **argv);
 int cmd_mem(int argc, const char **argv);
 int cmd_data(int argc, const char **argv);
 int cmd_ftrace(int argc, const char **argv);
+int cmd_daemon(int argc, const char **argv);
 
 int find_scripts(char **scripts_array, char **scripts_path_array, int num,
 		 int pathlen);
diff --git a/tools/perf/command-list.txt b/tools/perf/command-list.txt
index bc6c585f74fc..825a12e8d694 100644
--- a/tools/perf/command-list.txt
+++ b/tools/perf/command-list.txt
@@ -31,3 +31,4 @@ perf-timechart			mainporcelain common
 perf-top			mainporcelain common
 perf-trace			mainporcelain audit
 perf-version			mainporcelain common
+perf-daemon			mainporcelain common
diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index 27f94b0bb874..20cb91ef06ff 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -88,6 +88,7 @@ static struct cmd_struct commands[] = {
 	{ "mem",	cmd_mem,	0 },
 	{ "data",	cmd_data,	0 },
 	{ "ftrace",	cmd_ftrace,	0 },
+	{ "daemon",	cmd_daemon,	0 },
 };
 
 struct pager_config {
-- 
2.29.2


  reply	other threads:[~2021-01-30 23:51 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210129134855.195810-1-jolsa@redhat.com>
2021-01-30 23:48 ` [PATCHv3 00/24] perf tools: Add daemon command Jiri Olsa
2021-01-30 23:48   ` Jiri Olsa [this message]
2021-01-30 23:48   ` [PATCH 02/24] perf daemon: Add config option Jiri Olsa
2021-02-03 20:57     ` Arnaldo Carvalho de Melo
2021-02-04 14:42       ` Jiri Olsa
2021-01-30 23:48   ` [PATCH 03/24] perf daemon: Add base option Jiri Olsa
2021-02-03 20:57     ` Arnaldo Carvalho de Melo
2021-01-30 23:48   ` [PATCH 04/24] perf daemon: Add server socket support Jiri Olsa
2021-02-03 21:04     ` Arnaldo Carvalho de Melo
2021-02-04 14:49       ` Jiri Olsa
2021-02-04 15:53         ` Arnaldo Carvalho de Melo
2021-02-05 11:30     ` Namhyung Kim
2021-02-06 19:04       ` Jiri Olsa
2021-02-07  1:36         ` Namhyung Kim
2021-01-30 23:48   ` [PATCH 05/24] perf daemon: Add client " Jiri Olsa
2021-02-03 21:05     ` Arnaldo Carvalho de Melo
2021-02-04 14:50       ` Jiri Olsa
2021-02-05 11:39     ` Namhyung Kim
2021-01-30 23:48   ` [PATCH 06/24] perf daemon: Add config file support Jiri Olsa
2021-02-03 21:12     ` Arnaldo Carvalho de Melo
2021-02-04 15:08       ` Jiri Olsa
2021-02-06 20:25         ` Jiri Olsa
2021-02-04 12:42     ` Namhyung Kim
2021-02-04 12:58       ` Arnaldo Carvalho de Melo
2021-02-04 15:10         ` Jiri Olsa
2021-02-06  8:06           ` Namhyung Kim
2021-02-05 12:14     ` Namhyung Kim
2021-02-05 12:56       ` Jiri Olsa
2021-02-06  8:05         ` Namhyung Kim
2021-02-06 22:35           ` Jiri Olsa
2021-02-07  1:38             ` Namhyung Kim
2021-01-30 23:48   ` [PATCH 07/24] perf daemon: Add config file change check Jiri Olsa
2021-02-03 21:13     ` Arnaldo Carvalho de Melo
2021-02-04 14:51       ` Jiri Olsa
2021-01-30 23:48   ` [PATCH 08/24] perf daemon: Add background support Jiri Olsa
2021-02-03 21:16     ` Arnaldo Carvalho de Melo
2021-02-04 14:52       ` Jiri Olsa
2021-01-30 23:48   ` [PATCH 09/24] perf daemon: Add signalfd support Jiri Olsa
2021-02-03 21:24     ` Arnaldo Carvalho de Melo
2021-02-04 15:06       ` Jiri Olsa
2021-01-30 23:48   ` [PATCH 10/24] perf daemon: Add list command Jiri Olsa
2021-01-30 23:48   ` [PATCH 11/24] perf daemon: Add signal command Jiri Olsa
2021-01-30 23:48   ` [PATCH 12/24] perf daemon: Add stop command Jiri Olsa
2021-01-30 23:48   ` [PATCH 13/24] perf daemon: Allow only one daemon over base directory Jiri Olsa
2021-01-30 23:48   ` [PATCH 14/24] perf daemon: Set control fifo for session Jiri Olsa
2021-01-30 23:48   ` [PATCH 15/24] perf daemon: Add ping command Jiri Olsa
2021-01-30 23:48   ` [PATCH 16/24] perf daemon: Use control to stop session Jiri Olsa
2021-01-30 23:48   ` [PATCH 17/24] perf daemon: Add up time for daemon/session list Jiri Olsa
2021-01-30 23:48   ` [PATCH 18/24] perf daemon: Add man page for perf-daemon Jiri Olsa
2021-02-03 21:17     ` Arnaldo Carvalho de Melo
2021-02-04 14:53       ` Jiri Olsa
2021-01-30 23:48   ` [PATCH 19/24] perf tests: Add daemon list command test Jiri Olsa
2021-01-30 23:48   ` [PATCH 20/24] perf tests: Add daemon reconfig test Jiri Olsa
2021-01-30 23:48   ` [PATCH 21/24] perf tests: Add daemon stop command test Jiri Olsa
2021-01-30 23:48   ` [PATCH 22/24] perf tests: Add daemon signal " Jiri Olsa
2021-01-30 23:48   ` [PATCH 23/24] perf tests: Add daemon ping " Jiri Olsa
2021-01-30 23:48   ` [PATCH 24/24] perf tests: Add daemon lock test Jiri Olsa
2021-02-08 20:08 [PATCHv4 00/24] perf tools: Add daemon command Jiri Olsa
2021-02-08 20:08 ` [PATCH 01/24] perf daemon: " 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=20210130234856.271282-2-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=abudankov@huawei.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.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).