core,logind,networkd: check for udev device initialization via enumeration matches

Instead of checking each device after we got it, check wuth an
enumeration filter instead, to make it more efficient.
This commit is contained in:
Lennart Poettering
2013-12-18 18:21:28 +01:00
parent fa28bc2df7
commit e120204729
5 changed files with 23 additions and 20 deletions
+4 -8
View File
@@ -303,14 +303,6 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
assert(m);
#if 0
/* FIXME: this is always false for devices received from udev_monitor */
/* Don't pick up devices before udev finished initialization for them */
if (!udev_device_get_is_initialized(dev))
return 0;
#endif
sysfs = udev_device_get_syspath(dev);
if (!sysfs)
return 0;
@@ -557,6 +549,10 @@ static int device_enumerate(Manager *m) {
if (r < 0)
goto fail;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
goto fail;
r = udev_enumerate_scan_devices(e);
if (r < 0)
goto fail;
+4 -3
View File
@@ -210,6 +210,10 @@ int devnode_acl_all(struct udev *udev,
if (r < 0)
return r;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
return r;
r = udev_enumerate_scan_devices(e);
if (r < 0)
return r;
@@ -223,9 +227,6 @@ int devnode_acl_all(struct udev *udev,
if (!d)
return -ENOMEM;
if (!udev_device_get_is_initialized(d))
continue;
sn = udev_device_get_property_value(d, "ID_SEAT");
if (isempty(sn))
sn = "seat0";
+8 -6
View File
@@ -198,6 +198,10 @@ static int manager_enumerate_devices(Manager *m) {
if (r < 0)
return r;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
return r;
r = udev_enumerate_scan_devices(e);
if (r < 0)
return r;
@@ -211,9 +215,6 @@ static int manager_enumerate_devices(Manager *m) {
if (!d)
return -ENOMEM;
if (!udev_device_get_is_initialized(d))
continue;
k = manager_process_seat_device(m, d);
if (k < 0)
r = k;
@@ -249,6 +250,10 @@ static int manager_enumerate_buttons(Manager *m) {
if (r < 0)
return r;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
return r;
r = udev_enumerate_scan_devices(e);
if (r < 0)
return r;
@@ -262,9 +267,6 @@ static int manager_enumerate_buttons(Manager *m) {
if (!d)
return -ENOMEM;
if (!udev_device_get_is_initialized(d))
continue;
k = manager_process_button_device(m, d);
if (k < 0)
r = k;
+3
View File
@@ -170,7 +170,10 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
r = udev_enumerate_add_match_tag(e, seat);
else
r = udev_enumerate_add_match_tag(e, "seat");
if (r < 0)
return r;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
return r;
+4 -3
View File
@@ -171,6 +171,10 @@ int manager_udev_enumerate_links(Manager *m) {
if (r < 0)
return r;
r = udev_enumerate_add_match_is_initialized(e);
if (r < 0)
return r;
r = udev_enumerate_scan_devices(e);
if (r < 0)
return r;
@@ -184,9 +188,6 @@ int manager_udev_enumerate_links(Manager *m) {
if (!d)
return -ENOMEM;
if (!udev_device_get_is_initialized(d))
continue;
k = manager_process_link(m, d);
if (k < 0)
r = k;