On Tue, 21.10.14 13:16, Daniel Mack (zon...@kemper.freedesktop.org) wrote: > src/libsystemd/sd-bus/bus-kernel.c | 16 +++++++++++++--- > src/libsystemd/sd-bus/kdbus.h | 3 ++- > 2 files changed, 15 insertions(+), 4 deletions(-) > > New commits: > commit 03785ad0e51b061efb9f9b3f2e328685f9a866aa > Author: Daniel Mack <dan...@zonque.org> > Date: Tue Oct 21 22:14:03 2014 +0200 > > sd-bus: sync kdbus.h (API change: switch to absolute timeouts) > > kdbus_msg.timeout_ns now takes an absolute value, based on > CLOCK_MONOTONIC, > in order to eventually support automatically restarted syscalls. > > Signed-off-by: Daniel Mack <dan...@zonque.org> > > diff --git a/src/libsystemd/sd-bus/bus-kernel.c > b/src/libsystemd/sd-bus/bus-kernel.c > index 6b5a3d3..136c90f 100644 > --- a/src/libsystemd/sd-bus/bus-kernel.c > +++ b/src/libsystemd/sd-bus/bus-kernel.c > @@ -270,10 +270,20 @@ static int bus_message_setup_kmsg(sd_bus *b, > sd_bus_message *m) { > m->kdbus->cookie = (uint64_t) m->header->serial; > m->kdbus->priority = m->priority; > > - if (m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) > + if (m->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED) { > m->kdbus->cookie_reply = m->reply_cookie; > - else > - m->kdbus->timeout_ns = m->timeout * NSEC_PER_USEC; > + } else { > + struct timespec now; > + > + r = clock_gettime(CLOCK_MONOTONIC_COARSE, &now);
It sounds OK to enclose this in assert( == 0) really. That's what we do in now() at least. If gettint the time fails we are massively fucked, and we can just assert. > + if (r < 0) { > + r = -errno; > + goto fail; > + } > + > + m->kdbus->timeout_ns = now.tv_sec * NSEC_PER_SEC + > now.tv_nsec + > + m->timeout * NSEC_PER_USEC; I wonder if it's worth adding timspec_load_ns() or so, similar to timespec_load() but for nsec_t instead of usec_t for this. Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel