From a20a57a7bfbc6edd7602c135ca78f3e56878badb Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 17 Aug 2011 21:05:18 +0200 Subject: [PATCH] export USEC_INITIALIZED= and take timestamp on message receive time --- libudev/libudev-device.c | 6 ++++++ udev/udev-event.c | 2 +- udev/udevd.c | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libudev/libudev-device.c b/libudev/libudev-device.c index 273e5cb5..064ffad9 100644 --- a/libudev/libudev-device.c +++ b/libudev/libudev-device.c @@ -437,6 +437,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device, udev_device_add_tag(udev_device, tag); } } + } else if (strncmp(property, "USEC_INITIALIZED=", 19) == 0) { + udev_device_set_usec_initialized(udev_device, strtoull(&property[19], NULL, 10)); } else if (strncmp(property, "DRIVER=", 7) == 0) { udev_device_set_driver(udev_device, &property[7]); } else if (strncmp(property, "ACTION=", 7) == 0) { @@ -1322,7 +1324,11 @@ unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_dev void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized) { + char num[32]; + udev_device->usec_initialized = usec_initialized; + snprintf(num, sizeof(num), "%llu", usec_initialized); + udev_device_add_property(udev_device, "USEC_INITIALIZED", num); } /** diff --git a/udev/udev-event.c b/udev/udev-event.c index 391fce81..3c1a3e7a 100644 --- a/udev/udev-event.c +++ b/udev/udev-event.c @@ -1040,7 +1040,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, /* preserve old, or get new initialization timestamp */ if (event->dev_db != NULL && udev_device_get_usec_initialized(event->dev_db) > 0) udev_device_set_usec_initialized(event->dev, udev_device_get_usec_initialized(event->dev_db)); - else + else if (udev_device_get_usec_initialized(event->dev) == 0) udev_device_set_usec_initialized(event->dev, now_usec()); /* (re)write database file */ diff --git a/udev/udevd.c b/udev/udevd.c index f1a31e7a..325ad034 100644 --- a/udev/udevd.c +++ b/udev/udevd.c @@ -1655,6 +1655,7 @@ int main(int argc, char *argv[]) dev = udev_monitor_receive_device(monitor); if (dev != NULL) + udev_device_set_usec_initialized(dev, now_usec()); if (event_queue_insert(dev) < 0) udev_device_unref(dev); } -- 2.39.5