diff options
author | David Howells <dhowells@redhat.com> | 2019-10-11 08:48:10 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2019-10-11 08:48:10 +0100 |
commit | 3a92c6e49c470dfdd1efb744a71fd4f1433e441e (patch) | |
tree | 8119448ded3286752ca2db6832fa71f8c0197f9f /kernel | |
parent | 7871ca053dd8ec5f5ae5a9427cd5ef72a828264f (diff) | |
download | linux-next-3a92c6e49c470dfdd1efb744a71fd4f1433e441e.tar.gz |
Add a general, global device notification watch list
Create a general, global watch list that can be used for the posting of
device notification events, for such things as device attachment,
detachment and errors on sources such as block devices and USB devices.
This can be enabled with:
CONFIG_DEVICE_NOTIFICATIONS
To add a watch on this list, an event queue must be created and configured:
fd = open("/dev/event_queue", O_RDWR);
ioctl(fd, IOC_WATCH_QUEUE_SET_SIZE, page_size << n);
and then a watch can be placed upon it using a system call:
watch_devices(fd, 12, 0);
Unless the application wants to receive all events, it should employ
appropriate filters. For example, to receive just USB notifications, it
could do:
struct watch_notification_filter filter = {
.nr_filters = 1,
.filters = {
[0] = {
.type = WATCH_TYPE_USB_NOTIFY,
.subtype_filter[0] = UINT_MAX;
},
},
};
ioctl(fd, IOC_WATCH_QUEUE_SET_FILTER, &filter);
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sys_ni.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 34b76895b81e..184ad68c087f 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -51,6 +51,7 @@ COND_SYSCALL_COMPAT(io_pgetevents); COND_SYSCALL(io_uring_setup); COND_SYSCALL(io_uring_enter); COND_SYSCALL(io_uring_register); +COND_SYSCALL(watch_devices); /* fs/xattr.c */ |