mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
sd-device: make device_get_device_id() public
We have already exposed sd_device_new_from_device_id(), but we have never provide the way to get device ID from an existing sd_device object.
This commit is contained in:
parent
44bc6f3cab
commit
1ff0164be5
@ -524,7 +524,8 @@ manpages = [
|
||||
['sd_bus_wait', '3', [], ''],
|
||||
['sd_device_get_syspath',
|
||||
'3',
|
||||
['sd_device_get_devname',
|
||||
['sd_device_get_device_id',
|
||||
'sd_device_get_devname',
|
||||
'sd_device_get_devnum',
|
||||
'sd_device_get_devpath',
|
||||
'sd_device_get_devtype',
|
||||
|
@ -29,6 +29,7 @@
|
||||
<refname>sd_device_get_ifindex</refname>
|
||||
<refname>sd_device_get_driver</refname>
|
||||
<refname>sd_device_get_diskseq</refname>
|
||||
<refname>sd_device_get_device_id</refname>
|
||||
|
||||
<refpurpose>Returns various fields of device objects</refpurpose>
|
||||
</refnamediv>
|
||||
@ -109,6 +110,12 @@
|
||||
<paramdef>uint64_t *<parameter>ret</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_device_get_device_id</function></funcdef>
|
||||
<paramdef>sd_device *<parameter>device</parameter></paramdef>
|
||||
<paramdef>uint64_t *<parameter>ret</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
@ -171,6 +178,22 @@
|
||||
the device name changing, and is relevant for block devices encapsulating devices with changing media
|
||||
(e.g. floppy or CD-ROM), or loopback block devices. Only defined for block devices, i.e. those of
|
||||
subsystem <literal>block</literal>.</para>
|
||||
|
||||
<para><function>sd_device_get_device_id()</function> returns the short string that identifies the device
|
||||
record. When the device ID obtained by the function for a specified device record is passed to
|
||||
<function>sd_device_new_from_device_id()</function>, a new instance of the same device record will be
|
||||
gained. When a block or character device is specified, which has corresponding device node, this returns
|
||||
<literal>b</literal> or <literal>c</literal>, respectively, followed by the device node major and minor
|
||||
numbers separated with a colon. Example: <literal>b259:1</literal> or <literal>c10:121</literal>. Whan a
|
||||
network interface device is specified, this returns <literal>n</literal> followed by the interface index,
|
||||
which can be obtained by <function>sd_device_get_ifindex()</function>. Example: <literal>n1</literal>.
|
||||
When a device in the <literal>driver</literal> subsystem is specified, this returns
|
||||
<literal>+drivers:</literal> followed by its driver subsystem and sysfs name separated with a colon.
|
||||
Example: <literal>+drivers:pci:iwlwifi</literal> for a driver device record whose driver subsystem is
|
||||
<literal>pci</literal> and sysfs name is <literal>iwlwifi</literal>,
|
||||
When an other type of device is specified, this function returns <literal>+</literal> followed by its
|
||||
subsystem and sysfs name separated with a colon. Example: <literal>+acpi:ACPI0003:00</literal>,
|
||||
<literal>+input:input16</literal>, or <literal>+pci:0000:00:1f.6</literal>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
@ -220,7 +243,8 @@
|
||||
<function>sd_device_get_ifindex()</function>,
|
||||
<function>sd_device_get_driver()</function>, and
|
||||
<function>sd_device_get_diskseq()</function> were added in version 251.</para>
|
||||
<para><function>sd_device_get_driver_subsystem()</function> was added in version 257.</para>
|
||||
<para><function>sd_device_get_driver_subsystem()</function> and
|
||||
<function>sd_device_get_device_id()</function> were added in version 257.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -1046,6 +1046,7 @@ global:
|
||||
sd_varlink_take_fd;
|
||||
sd_varlink_unref;
|
||||
sd_varlink_wait;
|
||||
sd_device_get_device_id;
|
||||
sd_device_get_driver_subsystem;
|
||||
sd_device_monitor_is_running;
|
||||
sd_device_monitor_get_fd;
|
||||
|
@ -711,7 +711,7 @@ static int device_tag(sd_device *device, const char *tag, bool add) {
|
||||
assert(device);
|
||||
assert(tag);
|
||||
|
||||
r = device_get_device_id(device, &id);
|
||||
r = sd_device_get_device_id(device, &id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@ -797,7 +797,7 @@ static int device_get_db_path(sd_device *device, char **ret) {
|
||||
assert(device);
|
||||
assert(ret);
|
||||
|
||||
r = device_get_device_id(device, &id);
|
||||
r = sd_device_get_device_id(device, &id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -26,7 +26,6 @@ static inline int device_get_sysattr_unsigned(sd_device *device, const char *sys
|
||||
}
|
||||
int device_get_sysattr_u32(sd_device *device, const char *sysattr, uint32_t *ret_value);
|
||||
int device_get_sysattr_bool(sd_device *device, const char *sysattr);
|
||||
int device_get_device_id(sd_device *device, const char **ret);
|
||||
int device_get_devlink_priority(sd_device *device, int *ret);
|
||||
int device_get_devnode_mode(sd_device *device, mode_t *ret);
|
||||
int device_get_devnode_uid(sd_device *device, uid_t *ret);
|
||||
|
@ -1637,9 +1637,8 @@ static int handle_db_line(sd_device *device, char key, const char *value) {
|
||||
}
|
||||
}
|
||||
|
||||
int device_get_device_id(sd_device *device, const char **ret) {
|
||||
assert(device);
|
||||
assert(ret);
|
||||
_public_ int sd_device_get_device_id(sd_device *device, const char **ret) {
|
||||
assert_return(device, -EINVAL);
|
||||
|
||||
if (!device->device_id) {
|
||||
_cleanup_free_ char *id = NULL;
|
||||
@ -1689,6 +1688,7 @@ int device_get_device_id(sd_device *device, const char **ret) {
|
||||
device->device_id = TAKE_PTR(id);
|
||||
}
|
||||
|
||||
if (ret)
|
||||
*ret = device->device_id;
|
||||
return 0;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ static void test_sd_device_one(sd_device *d) {
|
||||
dev = sd_device_unref(dev);
|
||||
|
||||
/* The device ID depends on subsystem. */
|
||||
assert_se(device_get_device_id(d, &id) >= 0);
|
||||
assert_se(sd_device_get_device_id(d, &id) >= 0);
|
||||
r = sd_device_new_from_device_id(&dev, id);
|
||||
if (r == -ENODEV && ifindex > 0)
|
||||
log_device_warning_errno(d, r,
|
||||
|
@ -86,6 +86,7 @@ int sd_device_get_sysnum(sd_device *device, const char **ret);
|
||||
int sd_device_get_action(sd_device *device, sd_device_action_t *ret);
|
||||
int sd_device_get_seqnum(sd_device *device, uint64_t *ret);
|
||||
int sd_device_get_diskseq(sd_device *device, uint64_t *ret);
|
||||
int sd_device_get_device_id(sd_device *device, const char **ret);
|
||||
|
||||
int sd_device_get_is_initialized(sd_device *device);
|
||||
int sd_device_get_usec_initialized(sd_device *device, uint64_t *ret);
|
||||
|
@ -729,7 +729,7 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
|
||||
if (r < 0 && r != -ENOENT)
|
||||
return r;
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0 && r != -ENOENT)
|
||||
return r;
|
||||
|
||||
|
@ -220,7 +220,7 @@ static int stack_directory_find_prioritized_devnode(sd_device *dev, int dirfd, b
|
||||
if (!dir)
|
||||
return -errno;
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@ -246,7 +246,7 @@ static int stack_directory_update(sd_device *dev, int fd, bool add) {
|
||||
assert(dev);
|
||||
assert(fd >= 0);
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@ -405,7 +405,7 @@ static int node_get_current(const char *slink, int dirfd, char **ret_id, int *re
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@ -446,7 +446,7 @@ static int link_update(sd_device *dev, const char *slink, bool add) {
|
||||
if (current_id) {
|
||||
const char *id;
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return log_device_debug_errno(dev, r, "Failed to get device id: %m");
|
||||
|
||||
|
@ -111,7 +111,7 @@ static int udev_watch_clear(sd_device *dev, int dirfd, int *ret_wd) {
|
||||
assert(dev);
|
||||
assert(dirfd >= 0);
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return log_device_debug_errno(dev, r, "Failed to get device ID: %m");
|
||||
|
||||
@ -188,7 +188,7 @@ int udev_watch_begin(int inotify_fd, sd_device *dev) {
|
||||
if (r < 0)
|
||||
return log_device_debug_errno(dev, r, "Failed to get device node: %m");
|
||||
|
||||
r = device_get_device_id(dev, &id);
|
||||
r = sd_device_get_device_id(dev, &id);
|
||||
if (r < 0)
|
||||
return log_device_debug_errno(dev, r, "Failed to get device ID: %m");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user