[systemd-devel] [RFC 4/8] HACK0: allow meta information customizable

AKASHI Takahiro takahiro.akashi at linaro.org
Wed Jun 25 02:13:33 PDT 2014


My ftrace log shows that kdbus_meta_append(), is one of dominant functions
in sending a message, while the other is kdbus_conn_queue_alloc().
This patch adds an extra argument to kdbus_hello() utility function and
allows us to explicitly specify meta information attached to a message
for performance evaluation.

Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
---
 test/kdbus-util.c |   35 +++++++++++++++++++++--------------
 test/kdbus-util.h |    2 ++
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/test/kdbus-util.c b/test/kdbus-util.c
index 2cac8be..ef5e0b7 100644
--- a/test/kdbus-util.c
+++ b/test/kdbus-util.c
@@ -31,7 +31,7 @@ int lib_verbose = 0;
 
 #define POOL_SIZE (16 * 1024LU * 1024LU)
 static struct conn *
-__kdbus_hello(const char *path, uint64_t flags,
+__kdbus_hello(const char *path, uint64_t flags, uint64_t attach_flags,
 	      const struct kdbus_item *item, size_t item_size)
 {
 	int fd, ret;
@@ -58,17 +58,7 @@ __kdbus_hello(const char *path, uint64_t flags,
 
 	h.hello.conn_flags = flags | KDBUS_HELLO_ACCEPT_FD;
 
-	h.hello.attach_flags = KDBUS_ATTACH_TIMESTAMP |
-			       KDBUS_ATTACH_CREDS |
-			       KDBUS_ATTACH_NAMES |
-			       KDBUS_ATTACH_COMM |
-			       KDBUS_ATTACH_EXE |
-			       KDBUS_ATTACH_CMDLINE |
-			       KDBUS_ATTACH_CAPS |
-			       KDBUS_ATTACH_CGROUP |
-			       KDBUS_ATTACH_SECLABEL |
-			       KDBUS_ATTACH_AUDIT |
-			       KDBUS_ATTACH_CONN_NAME;
+	h.hello.attach_flags = attach_flags;
 
 	h.type = KDBUS_ITEM_CONN_NAME;
 	h.size = KDBUS_ITEM_HEADER_SIZE + sizeof(h.comm);
@@ -109,7 +99,24 @@ __kdbus_hello(const char *path, uint64_t flags,
 
 struct conn *kdbus_hello(const char *path, uint64_t flags)
 {
-	return __kdbus_hello(path, flags, NULL, 0);
+	uint64_t attach_flags = (KDBUS_ATTACH_TIMESTAMP |
+			       KDBUS_ATTACH_CREDS |
+			       KDBUS_ATTACH_NAMES |
+			       KDBUS_ATTACH_COMM |
+			       KDBUS_ATTACH_EXE |
+			       KDBUS_ATTACH_CMDLINE |
+			       KDBUS_ATTACH_CAPS |
+			       KDBUS_ATTACH_CGROUP |
+			       KDBUS_ATTACH_SECLABEL |
+			       KDBUS_ATTACH_AUDIT |
+			       KDBUS_ATTACH_CONN_NAME);
+	return __kdbus_hello(path, flags, attach_flags, NULL, 0);
+}
+
+struct conn *kdbus_hello2(const char *path, uint64_t flags,
+				uint64_t attach_flags)
+{
+	return __kdbus_hello(path, flags, attach_flags, NULL, 0);
 }
 
 static struct conn *
@@ -144,7 +151,7 @@ kdbus_hello_registrar(const char *path, const char *name,
 		item = KDBUS_ITEM_NEXT(item);
 	}
 
-	return __kdbus_hello(path, flags, items, size);
+	return __kdbus_hello(path, flags, 0 /*FIXME*/, items, size);
 }
 
 struct conn *kdbus_hello_activator(const char *path, const char *name,
diff --git a/test/kdbus-util.h b/test/kdbus-util.h
index be6ccab..3f9ff78 100644
--- a/test/kdbus-util.h
+++ b/test/kdbus-util.h
@@ -49,6 +49,8 @@ char *msg_id(uint64_t id, char *buf);
 int msg_send(const struct conn *conn, const char *name, uint64_t cookie,
 	     uint64_t flags, uint64_t timeout, int64_t priority, uint64_t dst_id);
 struct conn *kdbus_hello(const char *path, uint64_t hello_flags);
+struct conn *kdbus_hello2(const char *path, uint64_t hello_flags,
+			  uint64_t attach_flags);
 struct conn *kdbus_hello_activator(const char *path, const char *name,
 				   const struct kdbus_policy_access *access,
 				   size_t num_access);
-- 
1.7.9.5



More information about the systemd-devel mailing list