[systemd-commits] src/libsystemd-bus

Kay Sievers kay at kemper.freedesktop.org
Wed Dec 25 08:00:19 PST 2013


 src/libsystemd-bus/bus-kernel.c |    7 +++++--
 src/libsystemd-bus/kdbus.h      |   28 +++++++++++-----------------
 2 files changed, 16 insertions(+), 19 deletions(-)

New commits:
commit 80a33f113bbdadf4fc7ffec7fed026fde59d232b
Author: Kay Sievers <kay at vrfy.org>
Date:   Wed Dec 25 16:42:50 2013 +0100

    bus: conditionally set cookie_reply/timeout and update kdbus.h

diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c
index c15218f..7944f51 100644
--- a/src/libsystemd-bus/bus-kernel.c
+++ b/src/libsystemd-bus/bus-kernel.c
@@ -257,8 +257,11 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) {
                 m->destination ? unique : KDBUS_DST_ID_BROADCAST;
         m->kdbus->payload_type = KDBUS_PAYLOAD_DBUS;
         m->kdbus->cookie = m->header->serial;
-        m->kdbus->cookie_reply = m->reply_serial;
-        m->kdbus->timeout_ns = m->timeout * NSEC_PER_USEC;
+
+        if (m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED)
+                m->kdbus->cookie_reply = m->reply_serial;
+        else
+                m->kdbus->timeout_ns = m->timeout * NSEC_PER_USEC;
 
         d = m->kdbus->items;
 
diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h
index 71bf86d..71cfe06 100644
--- a/src/libsystemd-bus/kdbus.h
+++ b/src/libsystemd-bus/kdbus.h
@@ -345,21 +345,13 @@ enum kdbus_payload_type {
  * @payload_type:	Payload type (KDBUS_PAYLOAD_*)
  * @cookie:		Userspace-supplied cookie, for the connection
  * 			to identify its messages
- * @cookie_reply:	A reply to the message with the same cookie. The
- * 			reply itself has its own cookie, @cookie_reply
- * 			corresponds to the cookie of the request message
- * @timeout_ns:		For non-kernel-generated messages, this denotes the
- * 			message timeout in nanoseconds. A message has to be
- * 			received with KDBUS_CMD_MSG_RECV by the destination
- * 			connection within this time frame. For messages that
- * 			have KDBUS_MSG_FLAGS_EXPECT_REPLY set in @flags,
- * 			this value also denotes the timeout for the reply to
- * 			this message. If there is no reply, or the message is
- * 			not received in time by the other side, a
- * 			kernel-generated message with an attached
- * 			KDBUS_ITEM_REPLY_TIMEOUT item is sent to @src_id.
- * 			A 0-value is only valid if KDBUS_MSG_FLAGS_EXPECT_REPLY
- * 			is unset in @flags.
+ * @cookie_reply:	A reply to the requesting message with the same
+ * 			cookie. The requesting connection can match its
+ * 			request and the reply with this value
+ * @timeout_ns:		The time to wait for a message reply from the peer.
+ * 			If there is no reply, a kernel-generated message
+ * 			with an attached KDBUS_ITEM_REPLY_TIMEOUT item
+ * 			is sent to @src_id.
  * @items:		A list of kdbus_items containing the message payload
  */
 struct kdbus_msg {
@@ -369,8 +361,10 @@ struct kdbus_msg {
 	__u64 src_id;
 	__u64 payload_type;
 	__u64 cookie;
-	__u64 cookie_reply;
-	__u64 timeout_ns;
+	union {
+		__u64 cookie_reply;
+		__u64 timeout_ns;
+	};
 	struct kdbus_item items[0];
 } __attribute__((aligned(8)));
 



More information about the systemd-commits mailing list