summaryrefslogtreecommitdiff
path: root/udev/lib
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-04-23 04:07:51 +0200
committerKay Sievers <kay.sievers@vrfy.org>2009-04-23 04:07:51 +0200
commit08a7a795f61eaf42f31b26e435067a664f0a4d4d (patch)
tree67c7c464411d0b1662c09899e9408fb3ddd90614 /udev/lib
parentbb7045a0a372abc3638e027e9d8c4b05b79c9f67 (diff)
libudev: monitor - add udev_monitor_filter_remove
Diffstat (limited to 'udev/lib')
-rw-r--r--udev/lib/exported_symbols1
-rw-r--r--udev/lib/libudev-monitor.c8
-rw-r--r--udev/lib/libudev.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/udev/lib/exported_symbols b/udev/lib/exported_symbols
index a700f98ac8..5b0d8fd011 100644
--- a/udev/lib/exported_symbols
+++ b/udev/lib/exported_symbols
@@ -57,6 +57,7 @@ udev_monitor_get_udev
udev_monitor_get_fd
udev_monitor_receive_device
udev_monitor_filter_add_match_subsystem_devtype
+udev_monitor_filter_remove
udev_queue_new
udev_queue_ref
udev_queue_unref
diff --git a/udev/lib/libudev-monitor.c b/udev/lib/libudev-monitor.c
index 211aa12f62..bf95657da2 100644
--- a/udev/lib/libudev-monitor.c
+++ b/udev/lib/libudev-monitor.c
@@ -707,3 +707,11 @@ int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_mo
return -ENOMEM;
return 0;
}
+
+int udev_monitor_filter_remove(struct udev_monitor *udev_monitor)
+{
+ static struct sock_fprog filter = { 0, NULL };
+
+ udev_list_cleanup_entries(udev_monitor->udev, &udev_monitor->filter_subsystem_list);
+ return setsockopt(udev_monitor->sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter));
+}
diff --git a/udev/lib/libudev.h b/udev/lib/libudev.h
index e366d76877..0b52e6e775 100644
--- a/udev/lib/libudev.h
+++ b/udev/lib/libudev.h
@@ -85,6 +85,7 @@ extern struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor);
extern int udev_monitor_get_fd(struct udev_monitor *udev_monitor);
extern struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monitor);
extern int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype);
+extern int udev_monitor_filter_remove(struct udev_monitor *udev_monitor);
/* sys enumeration */
struct udev_enumerate;