chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
e93c38c
)
udevadm: monitor - add <subsytem>:<devtype> support
author
Kay Sievers
<kay.sievers@vrfy.org>
Thu, 23 Apr 2009 02:07:15 +0000
(
04:07
+0200)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Thu, 23 Apr 2009 02:07:15 +0000
(
04:07
+0200)
udev/udevadm-monitor.c
patch
|
blob
|
history
diff --git
a/udev/udevadm-monitor.c
b/udev/udevadm-monitor.c
index 10b2f2e71b8c1ce0f2d4b49f153bcb30342b7115..7e8186f798874e2948c0d9dde2a8381eb6b28359 100644
(file)
--- a/
udev/udevadm-monitor.c
+++ b/
udev/udevadm-monitor.c
@@
-103,13
+103,26
@@
int udevadm_monitor(struct udev *udev, int argc, char *argv[])
print_udev = 1;
break;
case 's':
print_udev = 1;
break;
case 's':
- udev_list_entry_add(udev, &subsystem_match_list, optarg, NULL, 1, 0);
- break;
+ {
+ char subsys[UTIL_NAME_SIZE];
+ char *devtype;
+
+ util_strlcpy(subsys, optarg, sizeof(subsys));
+ devtype = strchr(subsys, ':');
+ if (devtype != NULL) {
+ devtype[0] = '\0';
+ devtype++;
+ }
+printf("add '%s' '%s')\n", subsys, devtype);
+ udev_list_entry_add(udev, &subsystem_match_list, subsys, devtype, 0, 0);
+ break;
+ }
case 'h':
printf("Usage: udevadm monitor [--environment] [--kernel] [--udev] [--help]\n"
case 'h':
printf("Usage: udevadm monitor [--environment] [--kernel] [--udev] [--help]\n"
- " --env print the whole event environment\n"
- " --kernel print kernel uevents\n"
- " --udev print udev events\n"
+ " --env print the whole event environment\n"
+ " --kernel print kernel uevents\n"
+ " --udev print udev events\n"
+ " --subsystem-match=<subsystem> filter events\n"
" --help\n\n");
default:
goto out;
" --help\n\n");
default:
goto out;
@@
-142,8
+155,9
@@
int udevadm_monitor(struct udev *udev, int argc, char *argv[])
udev_list_entry_foreach(entry, udev_list_get_entry(&subsystem_match_list)) {
const char *subsys = udev_list_entry_get_name(entry);
udev_list_entry_foreach(entry, udev_list_get_entry(&subsystem_match_list)) {
const char *subsys = udev_list_entry_get_name(entry);
+ const char *devtype = udev_list_entry_get_value(entry);
- if (udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, subsys,
NULL
) < 0)
+ if (udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, subsys,
devtype
) < 0)
fprintf(stderr, "error: unable to apply subsystem filter '%s'\n", subsys);
}
fprintf(stderr, "error: unable to apply subsystem filter '%s'\n", subsys);
}
@@
-155,12
+169,22
@@
int udevadm_monitor(struct udev *udev, int argc, char *argv[])
printf("UDEV - the event which udev sends out after rule processing\n");
}
if (print_kernel) {
printf("UDEV - the event which udev sends out after rule processing\n");
}
if (print_kernel) {
+ struct udev_list_entry *entry;
+
kernel_monitor = udev_monitor_new_from_netlink(udev, "kernel");
if (kernel_monitor == NULL) {
fprintf(stderr, "error: unable to create netlink socket\n");
rc = 3;
goto out;
}
kernel_monitor = udev_monitor_new_from_netlink(udev, "kernel");
if (kernel_monitor == NULL) {
fprintf(stderr, "error: unable to create netlink socket\n");
rc = 3;
goto out;
}
+
+ udev_list_entry_foreach(entry, udev_list_get_entry(&subsystem_match_list)) {
+ const char *subsys = udev_list_entry_get_name(entry);
+
+ if (udev_monitor_filter_add_match_subsystem_devtype(kernel_monitor, subsys, NULL) < 0)
+ fprintf(stderr, "error: unable to apply subsystem filter '%s'\n", subsys);
+ }
+
if (udev_monitor_enable_receiving(kernel_monitor) < 0) {
fprintf(stderr, "error: unable to subscribe to kernel events\n");
rc = 4;
if (udev_monitor_enable_receiving(kernel_monitor) < 0) {
fprintf(stderr, "error: unable to subscribe to kernel events\n");
rc = 4;