diff --git a/man/udevadm.xml b/man/udevadm.xml index b515f3c79c..556f845dce 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -336,10 +336,18 @@ R: Device number in /sys/ (i.e. the numeric suffix of the last component of P:) + + J: + Device ID + U: Kernel subsystem + + B: + Driver subsystem + T: Kernel device type within subsystem diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index 824b6fc726..0a1da3ed31 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -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)