diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2011-08-17 21:05:18 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2011-08-17 21:05:18 +0200 |
commit | a20a57a7bfbc6edd7602c135ca78f3e56878badb (patch) | |
tree | 4460dac44dfccd5f5e380de17c0b28de8bc79711 | |
parent | cdfdc85fb5728c844460c67641bea7197e104b12 (diff) |
export USEC_INITIALIZED= and take timestamp on message receive time
-rw-r--r-- | libudev/libudev-device.c | 6 | ||||
-rw-r--r-- | udev/udev-event.c | 2 | ||||
-rw-r--r-- | udev/udevd.c | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/libudev/libudev-device.c b/libudev/libudev-device.c index 273e5cb59c..064ffad9bf 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 391fce81c3..3c1a3e7aa7 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 f1a31e7afb..325ad034c2 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); } |