Remove EVENT_JUSTHANDLEIT (XCC)
[akaros.git] / kern / include / ros / fdtap.h
1 /* Copyright (c) 2015 Google Inc
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details. */
4
5 #ifndef ROS_INC_FDTAP_H
6 #define ROS_INC_FDTAP_H
7
8 #include <ros/event.h>
9
10 /* FD Tap commands.  The commands get passed to the device, but intermediate
11  * code will process them to some extent. */
12 #define FDTAP_CMD_ADD                   1
13 #define FDTAP_CMD_REM                   2
14 #define FDTAP_CMD_MOD                   3
15
16 /* FD Tap Event/Filter types.  These are somewhat a mix of kqueue and epoll
17  * filters and are in flux.  For instance, we don't support things like
18  * ONESHOT/DISPATCH yet.
19  *
20  * When using these, you're communicating directly with the device, so really
21  * anything goes, but we'll try to standardize on a few flags. */
22 #define FDTAP_FILT_READABLE             0x00000001
23 #define FDTAP_FILT_WRITABLE             0x00000002
24 #define FDTAP_FILT_WRITTEN              0x00000004
25 #define FDTAP_FILT_DELETED              0x00000008
26 #define FDTAP_FILT_ERROR                0x00000010      /* may overwrite *data */
27 #define FDTAP_FILT_RENAME               0x00000020
28 #define FDTAP_FILT_TRUNCATE             0x00000040
29 #define FDTAP_FILT_ATTRIB               0x00000080
30 #define FDTAP_FILT_PRIORITY             0x00000100
31 #define FDTAP_FILT_HANGUP               0x00000200
32 #define FDTAP_FILT_RDHUP                0x00000400
33
34 /* When an event on FD matches filter, that event will be sent to ev_q with
35  * ev_id, with an optional data blob passed back.  The specifics will depend on
36  * the type of ev_q used.  For a CEQ, the event will coalesce, and the data will
37  * be a 'last write wins'. */
38 struct fd_tap_req {
39         int                                                     fd;
40         int                                                     cmd;
41         int                                                     filter;
42         int                                                     ev_id;
43         struct event_queue                      *ev_q;
44         void                                            *data;
45 };
46
47 #endif /* ROS_INC_FDTAP_H */