Re: [GIT PULL] kdbus for 4.1-rc1

Daniel Mack
2015-04-16T10:32:03Z

On 04/16/2015 12:11 AM, Andy Lutomirski wrote:
> Also, getting the really high performance stuff right would be nice.
> Binder has one thing going for it (IIRC -- I've talked about it to
> some of the authors, but I've never so much as glanced at the code):
> it has a primitive to send and wait for a reply. This reduces the
> load on scheduler.

kdbus has the same thing, we call it a synchronous reply. That concept
is actually comprehensively explained in kdbus.message(7):

By default, all calls to kdbus are considered asynchronous,
non-blocking. However, as there are many use cases that need
to wait for a remote peer to answer a method call, there's a
way to send a message and wait for a reply in a synchronous
fashion. This is what the KDBUS_SEND_SYNC_REPLY controls. The
KDBUS_CMD_SEND ioctl will block until the reply has arrived,
the timeout limit is reached, in case the remote connection
was shut down, or if interrupted by a signal before any reply;
see signal(7). The offset of the reply message in the sender's
pool is stored in in offset_reply when the ioctl has returned
without error. Hence, there is no need for another KDBUS_CMD_RECV
ioctl or anything else to receive the reply.

Thanks,
Daniel