1#ifndef _LINUX_DEVFS_FS_H 2#define _LINUX_DEVFS_FS_H 3 4#include <linux/ioctl.h> 5 6#define DEVFSD_PROTOCOL_REVISION_KERNEL 5 7 8#define DEVFSD_IOCTL_BASE 'd' 9 10/* These are the various ioctls */ 11#define DEVFSDIOC_GET_PROTO_REV _IOR(DEVFSD_IOCTL_BASE, 0, int) 12#define DEVFSDIOC_SET_EVENT_MASK _IOW(DEVFSD_IOCTL_BASE, 2, int) 13#define DEVFSDIOC_RELEASE_EVENT_QUEUE _IOW(DEVFSD_IOCTL_BASE, 3, int) 14#define DEVFSDIOC_SET_DEBUG_MASK _IOW(DEVFSD_IOCTL_BASE, 4, int) 15 16#define DEVFSD_NOTIFY_REGISTERED 0 17#define DEVFSD_NOTIFY_UNREGISTERED 1 18#define DEVFSD_NOTIFY_ASYNC_OPEN 2 19#define DEVFSD_NOTIFY_CLOSE 3 20#define DEVFSD_NOTIFY_LOOKUP 4 21#define DEVFSD_NOTIFY_CHANGE 5 22#define DEVFSD_NOTIFY_CREATE 6 23#define DEVFSD_NOTIFY_DELETE 7 24 25#define DEVFS_PATHLEN 1024 /* Never change this otherwise the 26 binary interface will change */ 27 28struct devfsd_notify_struct 29{ /* Use native C types to ensure same types in kernel and user space */ 30 unsigned int type; /* DEVFSD_NOTIFY_* value */ 31 unsigned int mode; /* Mode of the inode or device entry */ 32 unsigned int major; /* Major number of device entry */ 33 unsigned int minor; /* Minor number of device entry */ 34 unsigned int uid; /* Uid of process, inode or device entry */ 35 unsigned int gid; /* Gid of process, inode or device entry */ 36 unsigned int overrun_count; /* Number of lost events */ 37 unsigned int namelen; /* Number of characters not including '\0' */ 38 /* The device name MUST come last */ 39 char devname[DEVFS_PATHLEN]; /* This will be '\0' terminated */ 40}; 41 42 43#endif /* _LINUX_DEVFS_FS_H */ 44