xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/watch_queue.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_WATCH_QUEUE_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_LINUX_WATCH_QUEUE_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/fcntl.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h>
12*8d67ca89SAndroid Build Coastguard Worker #define O_NOTIFICATION_PIPE O_EXCL
13*8d67ca89SAndroid Build Coastguard Worker #define IOC_WATCH_QUEUE_SET_SIZE _IO('W', 0x60)
14*8d67ca89SAndroid Build Coastguard Worker #define IOC_WATCH_QUEUE_SET_FILTER _IO('W', 0x61)
15*8d67ca89SAndroid Build Coastguard Worker enum watch_notification_type {
16*8d67ca89SAndroid Build Coastguard Worker   WATCH_TYPE_META = 0,
17*8d67ca89SAndroid Build Coastguard Worker   WATCH_TYPE_KEY_NOTIFY = 1,
18*8d67ca89SAndroid Build Coastguard Worker   WATCH_TYPE__NR = 2
19*8d67ca89SAndroid Build Coastguard Worker };
20*8d67ca89SAndroid Build Coastguard Worker enum watch_meta_notification_subtype {
21*8d67ca89SAndroid Build Coastguard Worker   WATCH_META_REMOVAL_NOTIFICATION = 0,
22*8d67ca89SAndroid Build Coastguard Worker   WATCH_META_LOSS_NOTIFICATION = 1,
23*8d67ca89SAndroid Build Coastguard Worker };
24*8d67ca89SAndroid Build Coastguard Worker struct watch_notification {
25*8d67ca89SAndroid Build Coastguard Worker   __u32 type : 24;
26*8d67ca89SAndroid Build Coastguard Worker   __u32 subtype : 8;
27*8d67ca89SAndroid Build Coastguard Worker   __u32 info;
28*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_LENGTH 0x0000007f
29*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_LENGTH__SHIFT 0
30*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_ID 0x0000ff00
31*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_ID__SHIFT 8
32*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_TYPE_INFO 0xffff0000
33*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_TYPE_INFO__SHIFT 16
34*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_0 0x00010000
35*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_1 0x00020000
36*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_2 0x00040000
37*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_3 0x00080000
38*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_4 0x00100000
39*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_5 0x00200000
40*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_6 0x00400000
41*8d67ca89SAndroid Build Coastguard Worker #define WATCH_INFO_FLAG_7 0x00800000
42*8d67ca89SAndroid Build Coastguard Worker };
43*8d67ca89SAndroid Build Coastguard Worker struct watch_notification_type_filter {
44*8d67ca89SAndroid Build Coastguard Worker   __u32 type;
45*8d67ca89SAndroid Build Coastguard Worker   __u32 info_filter;
46*8d67ca89SAndroid Build Coastguard Worker   __u32 info_mask;
47*8d67ca89SAndroid Build Coastguard Worker   __u32 subtype_filter[8];
48*8d67ca89SAndroid Build Coastguard Worker };
49*8d67ca89SAndroid Build Coastguard Worker struct watch_notification_filter {
50*8d67ca89SAndroid Build Coastguard Worker   __u32 nr_filters;
51*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved;
52*8d67ca89SAndroid Build Coastguard Worker   struct watch_notification_type_filter filters[];
53*8d67ca89SAndroid Build Coastguard Worker };
54*8d67ca89SAndroid Build Coastguard Worker struct watch_notification_removal {
55*8d67ca89SAndroid Build Coastguard Worker   struct watch_notification watch;
56*8d67ca89SAndroid Build Coastguard Worker   __u64 id;
57*8d67ca89SAndroid Build Coastguard Worker };
58*8d67ca89SAndroid Build Coastguard Worker enum key_notification_subtype {
59*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_INSTANTIATED = 0,
60*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_UPDATED = 1,
61*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_LINKED = 2,
62*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_UNLINKED = 3,
63*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_CLEARED = 4,
64*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_REVOKED = 5,
65*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_INVALIDATED = 6,
66*8d67ca89SAndroid Build Coastguard Worker   NOTIFY_KEY_SETATTR = 7,
67*8d67ca89SAndroid Build Coastguard Worker };
68*8d67ca89SAndroid Build Coastguard Worker struct key_notification {
69*8d67ca89SAndroid Build Coastguard Worker   struct watch_notification watch;
70*8d67ca89SAndroid Build Coastguard Worker   __u32 key_id;
71*8d67ca89SAndroid Build Coastguard Worker   __u32 aux;
72*8d67ca89SAndroid Build Coastguard Worker };
73*8d67ca89SAndroid Build Coastguard Worker #endif
74