Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Inode based directory notification for Linux
0004  *
0005  * Copyright (C) 2005 John McCutchan
0006  */
0007 
0008 #ifndef _UAPI_LINUX_INOTIFY_H
0009 #define _UAPI_LINUX_INOTIFY_H
0010 
0011 /* For O_CLOEXEC and O_NONBLOCK */
0012 #include <linux/fcntl.h>
0013 #include <linux/types.h>
0014 
0015 /*
0016  * struct inotify_event - structure read from the inotify device for each event
0017  *
0018  * When you are watching a directory, you will receive the filename for events
0019  * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
0020  */
0021 struct inotify_event {
0022     __s32       wd;     /* watch descriptor */
0023     __u32       mask;       /* watch mask */
0024     __u32       cookie;     /* cookie to synchronize two events */
0025     __u32       len;        /* length (including nulls) of name */
0026     char        name[]; /* stub for possible name */
0027 };
0028 
0029 /* the following are legal, implemented events that user-space can watch for */
0030 #define IN_ACCESS       0x00000001  /* File was accessed */
0031 #define IN_MODIFY       0x00000002  /* File was modified */
0032 #define IN_ATTRIB       0x00000004  /* Metadata changed */
0033 #define IN_CLOSE_WRITE      0x00000008  /* Writtable file was closed */
0034 #define IN_CLOSE_NOWRITE    0x00000010  /* Unwrittable file closed */
0035 #define IN_OPEN         0x00000020  /* File was opened */
0036 #define IN_MOVED_FROM       0x00000040  /* File was moved from X */
0037 #define IN_MOVED_TO     0x00000080  /* File was moved to Y */
0038 #define IN_CREATE       0x00000100  /* Subfile was created */
0039 #define IN_DELETE       0x00000200  /* Subfile was deleted */
0040 #define IN_DELETE_SELF      0x00000400  /* Self was deleted */
0041 #define IN_MOVE_SELF        0x00000800  /* Self was moved */
0042 
0043 /* the following are legal events.  they are sent as needed to any watch */
0044 #define IN_UNMOUNT      0x00002000  /* Backing fs was unmounted */
0045 #define IN_Q_OVERFLOW       0x00004000  /* Event queued overflowed */
0046 #define IN_IGNORED      0x00008000  /* File was ignored */
0047 
0048 /* helper events */
0049 #define IN_CLOSE        (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
0050 #define IN_MOVE         (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
0051 
0052 /* special flags */
0053 #define IN_ONLYDIR      0x01000000  /* only watch the path if it is a directory */
0054 #define IN_DONT_FOLLOW      0x02000000  /* don't follow a sym link */
0055 #define IN_EXCL_UNLINK      0x04000000  /* exclude events on unlinked objects */
0056 #define IN_MASK_CREATE      0x10000000  /* only create watches */
0057 #define IN_MASK_ADD     0x20000000  /* add to the mask of an already existing watch */
0058 #define IN_ISDIR        0x40000000  /* event occurred against dir */
0059 #define IN_ONESHOT      0x80000000  /* only send event once */
0060 
0061 /*
0062  * All of the events - we build the list by hand so that we can add flags in
0063  * the future and not break backward compatibility.  Apps will get only the
0064  * events that they originally wanted.  Be sure to add new events here!
0065  */
0066 #define IN_ALL_EVENTS   (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
0067              IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
0068              IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
0069              IN_MOVE_SELF)
0070 
0071 /* Flags for sys_inotify_init1.  */
0072 #define IN_CLOEXEC O_CLOEXEC
0073 #define IN_NONBLOCK O_NONBLOCK
0074 
0075 /*
0076  * ioctl numbers: inotify uses 'I' prefix for all ioctls,
0077  * except historical FIONREAD, which is based on 'T'.
0078  *
0079  * INOTIFY_IOC_SETNEXTWD: set desired number of next created
0080  * watch descriptor.
0081  */
0082 #define INOTIFY_IOC_SETNEXTWD   _IOW('I', 0, __s32)
0083 
0084 #endif /* _UAPI_LINUX_INOTIFY_H */