diff options
Diffstat (limited to 'src/libudev')
-rw-r--r-- | src/libudev/libudev-device.c | 20 | ||||
-rw-r--r-- | src/libudev/libudev-enumerate.c | 2 | ||||
-rw-r--r-- | src/libudev/libudev-private.h | 1 | ||||
-rw-r--r-- | src/libudev/libudev.h | 1 | ||||
-rw-r--r-- | src/libudev/libudev.sym | 5 |
5 files changed, 26 insertions, 3 deletions
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index 98077e777d..1bef70962c 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -714,7 +714,25 @@ _public_ struct udev_device *udev_device_new_from_devnum(struct udev *udev, char return udev_device_new_from_syspath(udev, path); } -struct udev_device *udev_device_new_from_id_filename(struct udev *udev, char *id) +/** + * udev_device_new_from_device_id: + * @udev: udev library context + * @id: text string identifying a kernel device + * + * Create new udev device, and fill in information from the sys + * device and the udev database entry. The device is looked-up + * by a special string: + * b8:2 - block device major:minor + * c128:1 - char device major:minor + * n3 - network device ifindex + * +sound:card29 - kernel driver core subsystem:device name + * + * The initial refcount is 1, and needs to be decremented to + * release the resources of the udev device. + * + * Returns: a new udev device, or #NULL, if it does not exist + **/ +_public_ struct udev_device *udev_device_new_from_device_id(struct udev *udev, char *id) { char type; int maj, min; diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c index a945758e38..f0305a488b 100644 --- a/src/libudev/libudev-enumerate.c +++ b/src/libudev/libudev-enumerate.c @@ -789,7 +789,7 @@ static int scan_devices_tags(struct udev_enumerate *udev_enumerate) if (dent->d_name[0] == '.') continue; - dev = udev_device_new_from_id_filename(udev_enumerate->udev, dent->d_name); + dev = udev_device_new_from_device_id(udev_enumerate->udev, dent->d_name); if (dev == NULL) continue; diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h index 5990605445..42342234a2 100644 --- a/src/libudev/libudev-private.h +++ b/src/libudev/libudev-private.h @@ -47,7 +47,6 @@ struct udev_list_entry *udev_get_properties_list_entry(struct udev *udev); /* libudev-device.c */ struct udev_device *udev_device_new(struct udev *udev); -struct udev_device *udev_device_new_from_id_filename(struct udev *udev, char *id); mode_t udev_device_get_devnode_mode(struct udev_device *udev_device); int udev_device_set_syspath(struct udev_device *udev_device, const char *syspath); int udev_device_set_devnode(struct udev_device *udev_device, const char *devnode); diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h index 86439849b1..799f47096e 100644 --- a/src/libudev/libudev.h +++ b/src/libudev/libudev.h @@ -73,6 +73,7 @@ struct udev *udev_device_get_udev(struct udev_device *udev_device); struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *syspath); struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, dev_t devnum); struct udev_device *udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname); +struct udev_device *udev_device_new_from_device_id(struct udev *udev, char *id); struct udev_device *udev_device_new_from_environment(struct udev *udev); /* udev_device_get_parent_*() does not take a reference on the returned device, it is automatically unref'd with the parent */ struct udev_device *udev_device_get_parent(struct udev_device *udev_device); diff --git a/src/libudev/libudev.sym b/src/libudev/libudev.sym index 47683ecda4..5b2c3d32cc 100644 --- a/src/libudev/libudev.sym +++ b/src/libudev/libudev.sym @@ -95,3 +95,8 @@ global: local: *; }; + +LIBUDEV_189 { +global: + udev_device_new_from_device_id; +} LIBUDEV_183; |