mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
udevadm/info: also show driver subsystem and device ID
This adds two more fields in 'udevadm info': - J for device ID, e.g. b128:1, c10:1, n1, and so on. - B for driver subsystem, e.g. pci, i2c, and so on. These, especially the device ID field may be useful to find udev database file under /run/udev/data for a device.
This commit is contained in:
@@ -336,10 +336,18 @@
|
||||
<entry><literal>R:</literal></entry>
|
||||
<entry>Device number in <filename>/sys/</filename> (i.e. the numeric suffix of the last component of <literal>P:</literal>)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>J:</literal></entry>
|
||||
<entry>Device ID</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>U:</literal></entry>
|
||||
<entry>Kernel subsystem</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>B:</literal></entry>
|
||||
<entry>Driver subsystem</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>T:</literal></entry>
|
||||
<entry>Kernel device type within subsystem</entry>
|
||||
|
||||
@@ -323,9 +323,15 @@ static int print_record(sd_device *device, const char *prefix) {
|
||||
if (sd_device_get_sysnum(device, &str) >= 0)
|
||||
printf("%sR: %s%s%s\n", prefix, ansi_highlight_white(), str, ansi_normal());
|
||||
|
||||
if (sd_device_get_device_id(device, &str) >= 0)
|
||||
printf("%sJ: %s%s%s\n", prefix, ansi_highlight_white(), str, ansi_normal());
|
||||
|
||||
if (sd_device_get_subsystem(device, &subsys) >= 0)
|
||||
printf("%sU: %s%s%s\n", prefix, ansi_highlight_green(), subsys, ansi_normal());
|
||||
|
||||
if (sd_device_get_driver_subsystem(device, &str) >= 0)
|
||||
printf("%sB: %s%s%s\n", prefix, ansi_highlight_green(), str, ansi_normal());
|
||||
|
||||
if (sd_device_get_devtype(device, &str) >= 0)
|
||||
printf("%sT: %s%s%s\n", prefix, ansi_highlight_green(), str, ansi_normal());
|
||||
|
||||
@@ -376,8 +382,9 @@ static int record_to_json(sd_device *device, sd_json_variant **ret) {
|
||||
assert(device);
|
||||
assert(ret);
|
||||
|
||||
/* We don't show any shorthand fields here as done in print_record() except for SYSNAME and SYSNUM as
|
||||
* all the other ones have a matching property which will already be included. */
|
||||
/* We don't show any shorthand fields here as done in print_record() except for SYSNAME, SYSNUM,
|
||||
* DRIVER_SUBSYSTEM, and DEVICE_ID, as all the other ones have a matching property which will already
|
||||
* be included. */
|
||||
|
||||
if (sd_device_get_sysname(device, &str) >= 0) {
|
||||
r = sd_json_variant_set_field_string(&v, "SYSNAME", str);
|
||||
@@ -391,6 +398,18 @@ static int record_to_json(sd_device *device, sd_json_variant **ret) {
|
||||
return r;
|
||||
}
|
||||
|
||||
if (sd_device_get_driver_subsystem(device, &str) >= 0) {
|
||||
r = sd_json_variant_set_field_string(&v, "DRIVER_SUBSYSTEM", str);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (sd_device_get_device_id(device, &str) >= 0) {
|
||||
r = sd_json_variant_set_field_string(&v, "DEVICE_ID", str);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
FOREACH_DEVICE_PROPERTY(device, key, val) {
|
||||
r = sd_json_variant_set_field_string(&v, key, val);
|
||||
if (r < 0)
|
||||
|
||||
Reference in New Issue
Block a user