mirror of
https://github.com/systemd/systemd.git
synced 2026-07-26 03:06:21 +00:00
Allow watch handle to be stored in the udevdb.
This commit is contained in:
@@ -64,6 +64,8 @@ int udev_device_update_db(struct udev_device *udev_device)
|
||||
goto file;
|
||||
if (udev_device_get_event_timeout(udev_device) >= 0)
|
||||
goto file;
|
||||
if (udev_device_get_watch_handle(udev_device) >= 0)
|
||||
goto file;
|
||||
if (udev_device_get_devnode(udev_device) == NULL)
|
||||
goto out;
|
||||
|
||||
@@ -109,6 +111,8 @@ file:
|
||||
fprintf(f, "A:%u\n", udev_device_get_num_fake_partitions(udev_device));
|
||||
if (udev_device_get_ignore_remove(udev_device))
|
||||
fprintf(f, "R:%u\n", udev_device_get_ignore_remove(udev_device));
|
||||
if (udev_device_get_watch_handle(udev_device) >= 0)
|
||||
fprintf(f, "W:%u\n", udev_device_get_watch_handle(udev_device));
|
||||
udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(udev_device)) {
|
||||
if (!udev_list_entry_get_flag(list_entry))
|
||||
continue;
|
||||
|
||||
@@ -58,6 +58,7 @@ struct udev_device {
|
||||
int devlink_priority;
|
||||
int refcount;
|
||||
dev_t devnum;
|
||||
int watch_handle;
|
||||
unsigned int parent_set:1;
|
||||
unsigned int subsystem_set:1;
|
||||
unsigned int devtype_set:1;
|
||||
@@ -176,6 +177,9 @@ int udev_device_read_db(struct udev_device *udev_device)
|
||||
case 'E':
|
||||
udev_device_add_property_from_string(udev_device, val);
|
||||
break;
|
||||
case 'W':
|
||||
udev_device_set_watch_handle(udev_device, atoi(val));
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
@@ -251,6 +255,7 @@ struct udev_device *device_new(struct udev *udev)
|
||||
udev_list_init(&udev_device->properties_list);
|
||||
udev_list_init(&udev_device->sysattr_list);
|
||||
udev_device->event_timeout = -1;
|
||||
udev_device->watch_handle = -1;
|
||||
/* copy global properties */
|
||||
udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
|
||||
udev_device_add_property(udev_device,
|
||||
@@ -1291,3 +1296,16 @@ int udev_device_set_ignore_remove(struct udev_device *udev_device, int ignore)
|
||||
udev_device->ignore_remove = ignore;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int udev_device_get_watch_handle(struct udev_device *udev_device)
|
||||
{
|
||||
if (!udev_device->info_loaded)
|
||||
device_load_info(udev_device);
|
||||
return udev_device->watch_handle;
|
||||
}
|
||||
|
||||
int udev_device_set_watch_handle(struct udev_device *udev_device, int handle)
|
||||
{
|
||||
udev_device->watch_handle = handle;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -84,6 +84,8 @@ extern int udev_device_get_devlink_priority(struct udev_device *udev_device);
|
||||
extern int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio);
|
||||
extern int udev_device_get_ignore_remove(struct udev_device *udev_device);
|
||||
extern int udev_device_set_ignore_remove(struct udev_device *udev_device, int ignore);
|
||||
extern int udev_device_get_watch_handle(struct udev_device *udev_device);
|
||||
extern int udev_device_set_watch_handle(struct udev_device *udev_device, int handle);
|
||||
extern void udev_device_set_info_loaded(struct udev_device *device);
|
||||
|
||||
/* libudev-device-db-write.c */
|
||||
|
||||
Reference in New Issue
Block a user