'\" t .TH "SD_BUS_MESSAGE_GET_MONOTONIC_USEC" "3" "" "systemd 247" "sd_bus_message_get_monotonic_usec" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" sd_bus_message_get_monotonic_usec, sd_bus_message_get_realtime_usec, sd_bus_message_get_seqnum \- Retrieve the sender timestamps and sequence number of a message .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ sd_bus_message_get_monotonic_usec('u .BI "int sd_bus_message_get_monotonic_usec(sd_bus_message\ *" "message" ", uint64_t\ *" "usec" ");" .HP \w'int\ sd_bus_message_get_realtime_usec('u .BI "int sd_bus_message_get_realtime_usec(sd_bus_message\ *" "message" ", uint64_t\ *" "usec" ");" .HP \w'int\ sd_bus_message_get_seqnum('u .BI "int sd_bus_message_get_seqnum(sd_bus_message\ *" "message" ", uint64_t\ *" "seqnum" ");" .SH "DESCRIPTION" .PP \fBsd_bus_message_get_monotonic_usec()\fR returns the monotonic timestamp of the time the message was sent\&. This value is in microseconds since the \fBCLOCK_MONOTONIC\fR epoch, see \fBclock_gettime\fR(2) for details\&. .PP Similarly, \fBsd_bus_message_get_realtime_usec()\fR returns the realtime (wallclock) timestamp of the time the message was sent\&. This value is in microseconds since Jan 1st, 1970, i\&.e\&. in the \fBCLOCK_REALTIME\fR clock\&. .PP \fBsd_bus_message_get_seqnum()\fR returns the kernel\-assigned sequence number of the message\&. The kernel assigns a global, monotonically increasing sequence number to all messages transmitted on the local system, at the time the message was sent\&. This sequence number is useful for determining message send order, even across different buses of the local system\&. The sequence number combined with the boot ID of the system (as returned by \fBsd_id128_get_boot\fR(3)) is a suitable globally unique identifier for bus messages\&. .PP Note that the sending order and receiving order of messages might differ, in particular for broadcast messages\&. This means that the sequence number and the timestamps of messages a client reads are not necessarily monotonically increasing\&. .PP These timestamps and the sequence number are attached to each message by the kernel and cannot be manipulated by the sender\&. .PP Note that these timestamps are only available on some bus transports, and only after support for them has been negotiated with the \fBsd_bus_negotiate_timestamp\fR(3) call\&. .SH "RETURN VALUE" .PP On success, these calls return 0 or a positive integer\&. On failure, these calls return a negative errno\-style error code\&. .PP On success, the timestamp or sequence number is returned in the specified 64\-bit unsigned integer variable\&. .SS "Errors" .PP Returned errors may indicate the following problems: .PP \fB\-EINVAL\fR .RS 4 A specified parameter is invalid\&. .RE .PP \fB\-ENODATA\fR .RS 4 No timestamp or sequence number information is attached to the passed message\&. This error is returned if the underlying transport does not support timestamping or assigning of sequence numbers, or if this feature has not been negotiated with \fBsd_bus_negotiate_timestamp\fR(3)\&. .RE .SH "NOTES" .PP These APIs are implemented as a shared library, which can be compiled and linked to with the \fBlibsystemd\fR\ \&\fBpkg-config\fR(1) file\&. .SH "SEE ALSO" .PP \fBsystemd\fR(1), \fBsd-bus\fR(3), \fBsd_bus_new\fR(3), \fBsd_bus_negotiate_timestamp\fR(3), \fBclock_gettime\fR(2), \fBsd_id128_get_boot\fR(3)