chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8323bc1
)
bus: parse and expose kdbus message timestamps
author
Lennart Poettering
<lennart@poettering.net>
Thu, 11 Apr 2013 23:57:53 +0000
(
01:57
+0200)
committer
Lennart Poettering
<lennart@poettering.net>
Thu, 11 Apr 2013 23:57:53 +0000
(
01:57
+0200)
src/libsystemd-bus/bus-kernel.c
patch
|
blob
|
history
src/libsystemd-bus/bus-message.c
patch
|
blob
|
history
src/libsystemd-bus/bus-message.h
patch
|
blob
|
history
src/systemd/sd-bus.h
patch
|
blob
|
history
diff --git
a/src/libsystemd-bus/bus-kernel.c
b/src/libsystemd-bus/bus-kernel.c
index 3d26f16cda7866f3149d973e62bf94a0b55b6cad..1b2297fbb4dceae5d2d49aa71263d9928f24a217 100644
(file)
--- a/
src/libsystemd-bus/bus-kernel.c
+++ b/
src/libsystemd-bus/bus-kernel.c
@@
-225,6
+225,7
@@
static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
struct bus_header *h = NULL;
size_t total, n_bytes = 0, idx = 0;
struct kdbus_creds *creds = NULL;
struct bus_header *h = NULL;
size_t total, n_bytes = 0, idx = 0;
struct kdbus_creds *creds = NULL;
+ uint64_t nsec = 0;
int r;
assert(bus);
int r;
assert(bus);
@@
-266,6
+267,8
@@
static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
} else if (d->type == KDBUS_MSG_SRC_CREDS)
creds = &d->creds;
} else if (d->type == KDBUS_MSG_SRC_CREDS)
creds = &d->creds;
+ else if (d->type == KDBUS_MSG_TIMESTAMP)
+ nsec = d->ts_ns;
}
if (!h)
}
if (!h)
@@
-313,6
+316,8
@@
static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
m->uid_valid = m->gid_valid = true;
}
m->uid_valid = m->gid_valid = true;
}
+ m->timestamp = nsec / NSEC_PER_USEC;
+
r = bus_message_parse_fields(m);
if (r < 0) {
sd_bus_message_unref(m);
r = bus_message_parse_fields(m);
if (r < 0) {
sd_bus_message_unref(m);
diff --git
a/src/libsystemd-bus/bus-message.c
b/src/libsystemd-bus/bus-message.c
index aac49f486e51cdb5b56c9a4ec553210f92071ada..467b519039a7d32d7abec7ed17dfc4483ea82e72 100644
(file)
--- a/
src/libsystemd-bus/bus-message.c
+++ b/
src/libsystemd-bus/bus-message.c
@@
-709,6
+709,17
@@
const char *sd_bus_message_get_label(sd_bus_message *m) {
return m->label;
}
return m->label;
}
+int sd_bus_message_get_timestamp(sd_bus_message *m, uint64_t *usec) {
+ if (!m)
+ return -EINVAL;
+
+ if (m->timestamp <= 0)
+ return -ENOENT;
+
+ *usec = m->timestamp;
+ return 0;
+}
+
int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) {
if (!m)
return -EINVAL;
int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) {
if (!m)
return -EINVAL;
@@
-2922,6
+2933,8
@@
int bus_message_dump(sd_bus_message *m) {
printf("\tgid=%lu\n", (unsigned long) m->gid);
if (m->pid_starttime != 0)
printf("\tpid_starttime=%llu\n", (unsigned long long) m->pid_starttime);
printf("\tgid=%lu\n", (unsigned long) m->gid);
if (m->pid_starttime != 0)
printf("\tpid_starttime=%llu\n", (unsigned long long) m->pid_starttime);
+ if (m->timestamp)
+ printf("\ttimestamp=%llu\n", (unsigned long long) m->timestamp);
r = sd_bus_message_rewind(m, true);
if (r < 0) {
r = sd_bus_message_rewind(m, true);
if (r < 0) {
diff --git
a/src/libsystemd-bus/bus-message.h
b/src/libsystemd-bus/bus-message.h
index 079a1887875701d71b9821a1abe96eb557f29a0b..c501325b12b8a63394f98fb6aae3346f5b601444 100644
(file)
--- a/
src/libsystemd-bus/bus-message.h
+++ b/
src/libsystemd-bus/bus-message.h
@@
-68,6
+68,7
@@
struct sd_bus_message {
pid_t pid;
pid_t tid;
usec_t pid_starttime;
pid_t pid;
pid_t tid;
usec_t pid_starttime;
+ usec_t timestamp;
bool sealed:1;
bool dont_send:1;
bool sealed:1;
bool dont_send:1;
diff --git
a/src/systemd/sd-bus.h
b/src/systemd/sd-bus.h
index 4ab5924e7d94ec560f14bece61f01609c50cb228..91445bb62d3788ae31d8e9c17968572520605f7c 100644
(file)
--- a/
src/systemd/sd-bus.h
+++ b/
src/systemd/sd-bus.h
@@
-127,6
+127,7
@@
int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid);
int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid);
int sd_bus_message_get_pid_starttime(sd_bus_message *m, uint64_t *usec);
const char *sd_bus_message_get_label(sd_bus_message *m);
int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid);
int sd_bus_message_get_pid_starttime(sd_bus_message *m, uint64_t *usec);
const char *sd_bus_message_get_label(sd_bus_message *m);
+int sd_bus_message_get_timestamp(sd_bus_message *m, uint64_t *usec);
int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member);
int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member);
int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member);
int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member);