linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-trace-devel@vger.kernel.org
Subject: [PATCH 31/38] tracecmd: Clean up handling of cpu_count
Date: Wed, 03 Jan 2018 12:52:33 -0500	[thread overview]
Message-ID: <20180103175339.371012628@goodmis.org> (raw)
In-Reply-To: 20180103175202.044283643@goodmis.org

[-- Attachment #1: 0031-tracecmd-Clean-up-handling-of-cpu_count.patch --]
[-- Type: text/plain, Size: 6013 bytes --]

From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

Instead of passing around a pointer to a cpus variable, have the
msg_handle->cpu_count set up when the total cpus are discovered.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 trace-cmd.h    |  7 ++++---
 trace-listen.c | 26 ++++++++++++++++----------
 trace-msg.c    | 15 +++++++++------
 3 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/trace-cmd.h b/trace-cmd.h
index 526634fd674b..1204bb307431 100644
--- a/trace-cmd.h
+++ b/trace-cmd.h
@@ -315,7 +315,8 @@ enum tracecmd_msg_flags {
 /* for both client and server */
 struct tracecmd_msg_handle {
 	int			fd;
-	int			version;	/* Current protocol version */
+	short			cpu_count;
+	short			version;	/* Current protocol version */
 	unsigned long		flags;
 };
 
@@ -335,9 +336,9 @@ void tracecmd_msg_send_close_msg(struct tracecmd_msg_handle *msg_handle);
 
 /* for server */
 int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle,
-				 int *cpus, int *pagesize);
+				 int *pagesize);
 int tracecmd_msg_send_port_array(struct tracecmd_msg_handle *msg_handle,
-				 int total_cpus, int *ports);
+				 int *ports);
 int tracecmd_msg_collect_metadata(struct tracecmd_msg_handle *msg_handle, int ofd);
 bool tracecmd_msg_done(struct tracecmd_msg_handle *msg_handle);
 void tracecmd_msg_set_done(struct tracecmd_msg_handle *msg_handle);
diff --git a/trace-listen.c b/trace-listen.c
index 93cae4c793fa..c7c0afc5bbee 100644
--- a/trace-listen.c
+++ b/trace-listen.c
@@ -373,13 +373,14 @@ static int open_udp(const char *node, const char *port, int *pid,
 }
 
 static int communicate_with_client(struct tracecmd_msg_handle *msg_handle,
-				   int *cpus, int *pagesize)
+				   int *pagesize)
 {
 	char *last_proto = NULL;
 	char buf[BUFSIZ];
 	char *option;
 	int options;
 	int size;
+	int cpus;
 	int n, s, t, i;
 	int ret = -EINVAL;
 	int fd = msg_handle->fd;
@@ -394,10 +395,10 @@ static int communicate_with_client(struct tracecmd_msg_handle *msg_handle,
 		/** ERROR **/
 		return -EINVAL;
 
-	*cpus = atoi(buf);
+	cpus = atoi(buf);
 
 	/* Is the client using the new protocol? */
-	if (*cpus == -1) {
+	if (cpus == -1) {
 		if (memcmp(buf, V2_CPU, n) != 0) {
 			/* If it did not send a version, then bail */
 			if (memcmp(buf, "-1V", 3)) {
@@ -437,15 +438,17 @@ static int communicate_with_client(struct tracecmd_msg_handle *msg_handle,
 		msg_handle->version = V2_PROTOCOL;
 
 		/* read the CPU count, the page size, and options */
-		if (tracecmd_msg_initial_setting(msg_handle, cpus, pagesize) < 0)
+		if (tracecmd_msg_initial_setting(msg_handle, pagesize) < 0)
 			goto out;
 	} else {
 		/* The client is using the v1 protocol */
 
-		plog("cpus=%d\n", *cpus);
-		if (*cpus < 0)
+		plog("cpus=%d\n", cpus);
+		if (cpus < 0)
 			goto out;
 
+		msg_handle->cpu_count = cpus;
+
 		/* next read the page size */
 		n = read_string(fd, buf, BUFSIZ);
 		if (n == BUFSIZ)
@@ -542,7 +545,7 @@ static void destroy_all_readers(int cpus, int *pid_array, const char *node,
 	free(pid_array);
 }
 
-static int *create_all_readers(int cpus, const char *node, const char *port,
+static int *create_all_readers(const char *node, const char *port,
 			       int pagesize, struct tracecmd_msg_handle *msg_handle)
 {
 	int use_tcp = msg_handle->flags & TRACECMD_MSG_FL_USE_TCP;
@@ -551,6 +554,7 @@ static int *create_all_readers(int cpus, const char *node, const char *port,
 	int *pid_array;
 	int start_port;
 	int udp_port;
+	int cpus = msg_handle->cpu_count;
 	int cpu;
 	int pid;
 
@@ -585,7 +589,7 @@ static int *create_all_readers(int cpus, const char *node, const char *port,
 
 	if (msg_handle->version == V2_PROTOCOL) {
 		/* send set of port numbers to the client */
-		if (tracecmd_msg_send_port_array(msg_handle, cpus, port_array) < 0) {
+		if (tracecmd_msg_send_port_array(msg_handle, port_array) < 0) {
 			plog("Failed sending port array\n");
 			goto out_free;
 		}
@@ -684,13 +688,13 @@ static int process_client(struct tracecmd_msg_handle *msg_handle,
 	int ofd;
 	int ret;
 
-	ret = communicate_with_client(msg_handle, &cpus, &pagesize);
+	ret = communicate_with_client(msg_handle, &pagesize);
 	if (ret < 0)
 		return ret;
 
 	ofd = create_client_file(node, port);
 
-	pid_array = create_all_readers(cpus, node, port, pagesize, msg_handle);
+	pid_array = create_all_readers(node, port, pagesize, msg_handle);
 	if (!pid_array)
 		return -ENOMEM;
 
@@ -708,6 +712,8 @@ static int process_client(struct tracecmd_msg_handle *msg_handle,
 	/* wait a little to let our readers finish reading */
 	sleep(1);
 
+	cpus = msg_handle->cpu_count;
+
 	/* stop our readers */
 	stop_all_readers(cpus, pid_array);
 
diff --git a/trace-msg.c b/trace-msg.c
index 0d564c4aee32..55fb2e8baabb 100644
--- a/trace-msg.c
+++ b/trace-msg.c
@@ -479,11 +479,12 @@ static void error_operation_for_server(struct tracecmd_msg *msg)
 #define MAX_OPTION_SIZE 4096
 
 int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle,
-				 int *cpus, int *pagesize)
+				 int *pagesize)
 {
 	struct tracecmd_msg_opt *opt;
 	struct tracecmd_msg msg;
 	int options, i, s;
+	int cpus;
 	int ret;
 	int offset = 0;
 	u32 size = MIN_TINIT_SIZE;
@@ -502,13 +503,15 @@ int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle,
 		goto error;
 	}
 
-	*cpus = ntohl(msg.tinit.cpus);
-	plog("cpus=%d\n", *cpus);
-	if (*cpus < 0) {
+	cpus = ntohl(msg.tinit.cpus);
+	plog("cpus=%d\n", cpus);
+	if (cpus < 0) {
 		ret = -EINVAL;
 		goto error;
 	}
 
+	msg_handle->cpu_count = cpus;
+
 	*pagesize = ntohl(msg.tinit.page_size);
 	plog("pagesize=%d\n", *pagesize);
 	if (*pagesize <= 0) {
@@ -555,13 +558,13 @@ error:
 }
 
 int tracecmd_msg_send_port_array(struct tracecmd_msg_handle *msg_handle,
-				 int total_cpus, int *ports)
+				 int *ports)
 {
 	struct tracecmd_msg msg;
 	int ret;
 
 	tracecmd_msg_init(MSG_RINIT, &msg);
-	ret = make_rinit(&msg, total_cpus, ports);
+	ret = make_rinit(&msg, msg_handle->cpu_count, ports);
 	if (ret < 0)
 		return ret;
 
-- 
2.13.2

  parent reply	other threads:[~2018-01-03 17:53 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-03 17:52 [PATCH 00/38] trace-cmd: Simplify the msg handling Steven Rostedt
2018-01-03 17:52 ` [PATCH 01/38] trace-cmd recorder: Check if pipe_size was modified by fcntl(F_GETPIPE_SZ) Steven Rostedt
2018-01-03 17:52 ` [PATCH 02/38] pevent: Simplify pointer print logic and fix %pF Steven Rostedt
2018-01-03 17:52 ` [PATCH 03/38] pevent: Handle new pointer processing of bprint strings Steven Rostedt
2018-01-03 17:52 ` [PATCH 04/38] trace-cmd record: Fix clearing out the ctx->instance when used in for_all_instances() Steven Rostedt
2018-01-03 17:52 ` [PATCH 05/38] trace-cmd: Remove the creating of msg out of tracecmd_msg_send() Steven Rostedt
2018-01-03 17:52 ` [PATCH 06/38] trace-cmd: Move tracecmd_msg_send_and_wait_for_msg() into its only user Steven Rostedt
2018-01-03 17:52 ` [PATCH 07/38] trace-cmd: Turn tracecmd_msg data into an anonymous union Steven Rostedt
2018-01-03 17:52 ` [PATCH 08/38] trace-cmd: Remove unused structure tracecmd_msg_error Steven Rostedt
2018-01-03 17:52 ` [PATCH 09/38] trace-cmd: Move size and cmd in tracecmd_msg into its own header struct Steven Rostedt
2018-01-03 17:52 ` [PATCH 10/38] trace-cmd: Move the tracecmd_msg pointers into their own union Steven Rostedt
2018-01-03 17:52 ` [PATCH 11/38] trace-cmd: Just use the buf field for sending pointers Steven Rostedt
2018-01-03 17:52 ` [PATCH 12/38] trace-cmd: Use an array to map msg types and min sizes Steven Rostedt
2018-01-03 17:52 ` [PATCH 13/38] trace-cmd: Merge msg_do_write_check() into msg_write() Steven Rostedt
2018-01-03 17:52 ` [PATCH 14/38] trace-cmd: Simplify msg_free() by using min sizes Steven Rostedt
2018-01-03 17:52 ` [PATCH 15/38] trace-cmd: Add tracecmd_msg_init() helper function Steven Rostedt
2018-01-03 17:52 ` [PATCH 16/38] trace-cmd: Remove mulitplexer tracecmd_msg_create() Steven Rostedt
2018-01-03 17:52 ` [PATCH 17/38] trace-cmd: Simplify msg_read_extra() Steven Rostedt
2018-01-03 17:52 ` [PATCH 18/38] trace-cmd: Have msg_free() zero out msg contents Steven Rostedt
2018-01-03 17:52 ` [PATCH 19/38] trace-cmd: Verify RINIT was received after TINIT msg sent Steven Rostedt
2018-01-03 17:52 ` [PATCH 20/38] trace-cmd: Make send_metadata a flag in the output handle Steven Rostedt
2018-01-03 17:52 ` [PATCH 21/38] trace-cmd: Pass cpu count and port array to make_rinit() Steven Rostedt
2018-01-03 17:52 ` [PATCH 22/38] trace-cmd: Pass cpu_count instead of having it as a global Steven Rostedt
2018-01-03 17:52 ` [PATCH 23/38] trace-cmd: Pass in client_ports instead of using a global variable Steven Rostedt
2018-01-03 17:52 ` [PATCH 24/38] trace-cmd msg: Add debug prints of messages sent and received Steven Rostedt
2018-01-03 17:52 ` [PATCH 25/38] trace-cmd msg: Move the saved closing fd to the caller Steven Rostedt
2018-01-03 17:52 ` [PATCH 26/38] trace-cmd listen: Add better output on error of connections Steven Rostedt
2018-01-03 17:52 ` [PATCH 27/38] trace-cmd msg: Create a msg_handle to pass around for saved state Steven Rostedt
2018-01-03 17:52 ` [PATCH 28/38] trace-cmd msg: Add server structure of msg_handler Steven Rostedt
2018-01-03 20:31   ` [PATCH 28/38 v2] " Steven Rostedt
2018-01-03 17:52 ` [PATCH 29/38] trace-cmd: Remove global use_tcp variable Steven Rostedt
2018-01-03 17:52 ` [PATCH 30/38] trace-cmd: Move protocol version into msg_handler Steven Rostedt
2018-01-03 17:52 ` Steven Rostedt [this message]
2018-01-03 17:52 ` [PATCH 32/38] tracecmd listen: Have pagesize passed as return not parameter Steven Rostedt
2018-01-03 17:52 ` [PATCH 33/38] trace-cmd: Have cpu_count reside in instances and not be global Steven Rostedt
2018-01-03 17:52 ` [PATCH 34/38] trace-cmd: Add option CPUCOUNT to buffer instance options Steven Rostedt
2018-01-03 17:52 ` [PATCH 35/38] trace-cmd: Have msg_handle part of the buffer instance Steven Rostedt
2018-01-03 17:52 ` [PATCH 36/38] trace-cmd record: Allow instances to be recorded over the network Steven Rostedt
2018-01-03 17:52 ` [PATCH 37/38] trace-cmd: Have keep and profile be flags of buffer instance Steven Rostedt
2018-01-03 17:52 ` [PATCH 38/38] trace-cmd: Add network handle into " Steven Rostedt

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=20180103175339.371012628@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=linux-trace-devel@vger.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).