diff options
author | Tom Gundersen <teg@jklm.no> | 2015-03-13 18:43:00 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-03-13 18:47:07 +0100 |
commit | 1b14c3cfbe25f9bf1183bd26875f3c68847559c0 (patch) | |
tree | 205ad65aa947bd405ebd10ad815d2985df93ccec /src | |
parent | 0964dcd77213a9e229efcc2f00084e1f63fc00ca (diff) |
udev: make set_usec_initialized() internal to libudev
Instead introduce ensure_usec_initialized(), which copies the timestamp if possible otherwise
sets it to now(CLOCK_MONOTONIC).
Diffstat (limited to 'src')
-rw-r--r-- | src/libudev/libudev-device.c | 26 | ||||
-rw-r--r-- | src/libudev/libudev-private.h | 2 | ||||
-rw-r--r-- | src/udev/udev-event.c | 5 | ||||
-rw-r--r-- | src/udev/udevd.c | 4 |
4 files changed, 21 insertions, 16 deletions
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index c0a061af6c..b518a2f891 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -445,6 +445,23 @@ static int udev_device_set_syspath(struct udev_device *udev_device, const char * return 0; } +static void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized) +{ + char num[DECIMAL_STR_MAX(usec_t)]; + + udev_device->usec_initialized = usec_initialized; + snprintf(num, sizeof(num), USEC_FMT, usec_initialized); + udev_device_add_property_internal(udev_device, "USEC_INITIALIZED", num); +} + +void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *old_device) +{ + if (old_device && old_device->usec_initialized != 0) + udev_device_set_usec_initialized(udev_device, old_device->usec_initialized); + else + udev_device_set_usec_initialized(udev_device, now(CLOCK_MONOTONIC)); +} + /* * parse property string, and if needed, update internal values accordingly * @@ -1418,15 +1435,6 @@ usec_t udev_device_get_usec_initialized(struct udev_device *udev_device) return udev_device->usec_initialized; } -void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized) -{ - char num[32]; - - udev_device->usec_initialized = usec_initialized; - snprintf(num, sizeof(num), USEC_FMT, usec_initialized); - udev_device_add_property_internal(udev_device, "USEC_INITIALIZED", num); -} - /** * udev_device_get_sysattr_value: * @udev_device: udev device diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h index a34c0f74e4..403ae599f6 100644 --- a/src/libudev/libudev-private.h +++ b/src/libudev/libudev-private.h @@ -60,7 +60,7 @@ int udev_device_add_tag(struct udev_device *udev_device, const char *tag); void udev_device_remove_tag(struct udev_device *udev_device, const char *tag); void udev_device_cleanup_tags_list(struct udev_device *udev_device); usec_t udev_device_get_usec_initialized(struct udev_device *udev_device); -void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized); +void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *old_device); int udev_device_get_devlink_priority(struct udev_device *udev_device); int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio); int udev_device_get_watch_handle(struct udev_device *udev_device); diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index f62c1eaf47..3a165b0b4f 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -873,10 +873,7 @@ void udev_event_execute_rules(struct udev_event *event, } /* 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 if (udev_device_get_usec_initialized(event->dev) == 0) - udev_device_set_usec_initialized(event->dev, now(CLOCK_MONOTONIC)); + udev_device_ensure_usec_initialized(event->dev, event->dev_db); /* (re)write database file */ udev_device_update_db(dev); diff --git a/src/udev/udevd.c b/src/udev/udevd.c index f7d61915fb..8eaf2cdc8c 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1474,8 +1474,8 @@ int main(int argc, char *argv[]) { struct udev_device *dev; dev = udev_monitor_receive_device(monitor); - if (dev != NULL) { - udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC)); + if (dev) { + udev_device_ensure_usec_initialized(dev, NULL); if (event_queue_insert(dev) < 0) udev_device_unref(dev); } |