From df440adfe9214ba178e81d054b147f40e884f6e9 Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Fri, 17 Jan 2014 21:31:11 +0100 Subject: [PATCH] connection: let kdbus_conn_queue_insert() hand back the used offset ... so we can store the answer offset in case of synchronous operations. --- connection.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/connection.c b/connection.c index f136eac..62c8450 100644 --- a/connection.c +++ b/connection.c @@ -414,7 +414,8 @@ static void kdbus_conn_queue_cleanup(struct kdbus_conn_queue *queue) /* enqueue a message into the receiver's pool */ static int kdbus_conn_queue_insert(struct kdbus_conn *conn, - struct kdbus_kmsg *kmsg) + struct kdbus_kmsg *kmsg, + u64 *offset) { struct kdbus_conn_queue *queue; u64 msg_size; @@ -575,6 +576,9 @@ static int kdbus_conn_queue_insert(struct kdbus_conn *conn, mutex_unlock(&conn->lock); + if (offset) + *offset = off; + /* wake up poll() */ wake_up_interruptible(&conn->ep->wait); return 0; @@ -976,6 +980,7 @@ int kdbus_conn_kmsg_send(struct kdbus_ep *ep, const struct kdbus_msg *msg = &kmsg->msg; struct kdbus_conn *conn_dst = NULL; struct kdbus_conn *c; + u64 offset; int ret; /* assign namespace-global message sequence number */ @@ -1020,7 +1025,7 @@ int kdbus_conn_kmsg_send(struct kdbus_ep *ep, kmsg->seq, conn_dst->attach_flags); - kdbus_conn_queue_insert(conn_dst, kmsg); + kdbus_conn_queue_insert(conn_dst, kmsg, NULL); } mutex_unlock(&ep->bus->lock); @@ -1112,10 +1117,10 @@ int kdbus_conn_kmsg_send(struct kdbus_ep *ep, */ mutex_lock(&ep->bus->lock); list_for_each_entry(c, &ep->bus->monitors_list, monitor_entry) - kdbus_conn_queue_insert(c, kmsg); + kdbus_conn_queue_insert(c, kmsg, NULL); mutex_unlock(&ep->bus->lock); - ret = kdbus_conn_queue_insert(conn_dst, kmsg); + ret = kdbus_conn_queue_insert(conn_dst, kmsg, &offset); if (ret < 0) goto exit_unref; -- 2.34.1