Back to index

glibc  2.9
inotify.h
Go to the documentation of this file.
00001 /* Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
00002    This file is part of the GNU C Library.
00003 
00004    The GNU C Library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Lesser General Public
00006    License as published by the Free Software Foundation; either
00007    version 2.1 of the License, or (at your option) any later version.
00008 
00009    The GNU C Library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Lesser General Public License for more details.
00013 
00014    You should have received a copy of the GNU Lesser General Public
00015    License along with the GNU C Library; if not, write to the Free
00016    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00017    02111-1307 USA.  */
00018 
00019 #ifndef       _SYS_INOTIFY_H
00020 #define       _SYS_INOTIFY_H       1
00021 
00022 #include <stdint.h>
00023 
00024 
00025 /* Flags for the parameter of inotify_init1.  */
00026 enum
00027   {
00028     IN_CLOEXEC = 02000000,
00029 #define IN_CLOEXEC IN_CLOEXEC
00030     IN_NONBLOCK = 0200
00031 #define IN_NONBLOCK IN_NONBLOCK
00032   };
00033 
00034 
00035 /* Structure describing an inotify event.  */
00036 struct inotify_event
00037 {
00038   int wd;            /* Watch descriptor.  */
00039   uint32_t mask;     /* Watch mask.  */
00040   uint32_t cookie;   /* Cookie to synchronize two events.  */
00041   uint32_t len;             /* Length (including NULs) of name.  */
00042   char name __flexarr;      /* Name.  */
00043 };
00044 
00045 
00046 /* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH.  */
00047 #define IN_ACCESS     0x00000001   /* File was accessed.  */
00048 #define IN_MODIFY     0x00000002   /* File was modified.  */
00049 #define IN_ATTRIB     0x00000004   /* Metadata changed.  */
00050 #define IN_CLOSE_WRITE       0x00000008   /* Writtable file was closed.  */
00051 #define IN_CLOSE_NOWRITE 0x00000010       /* Unwrittable file closed.  */
00052 #define IN_CLOSE      (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close.  */
00053 #define IN_OPEN              0x00000020   /* File was opened.  */
00054 #define IN_MOVED_FROM        0x00000040   /* File was moved from X.  */
00055 #define IN_MOVED_TO      0x00000080       /* File was moved to Y.  */
00056 #define IN_MOVE              (IN_MOVED_FROM | IN_MOVED_TO) /* Moves.  */
00057 #define IN_CREATE     0x00000100   /* Subfile was created.  */
00058 #define IN_DELETE     0x00000200   /* Subfile was deleted.  */
00059 #define IN_DELETE_SELF       0x00000400   /* Self was deleted.  */
00060 #define IN_MOVE_SELF  0x00000800   /* Self was moved.  */
00061 
00062 /* Events sent by the kernel.  */
00063 #define IN_UNMOUNT    0x00002000   /* Backing fs was unmounted.  */
00064 #define IN_Q_OVERFLOW        0x00004000   /* Event queued overflowed.  */
00065 #define IN_IGNORED    0x00008000   /* File was ignored.  */
00066 
00067 /* Helper events.  */
00068 #define IN_CLOSE      (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)      /* Close.  */
00069 #define IN_MOVE              (IN_MOVED_FROM | IN_MOVED_TO)            /* Moves.  */
00070 
00071 /* Special flags.  */
00072 #define IN_ONLYDIR    0x01000000   /* Only watch the path if it is a
00073                                       directory.  */
00074 #define IN_DONT_FOLLOW       0x02000000   /* Do not follow a sym link.  */
00075 #define IN_MASK_ADD   0x20000000   /* Add to the mask of an already
00076                                       existing watch.  */
00077 #define IN_ISDIR      0x40000000   /* Event occurred against dir.  */
00078 #define IN_ONESHOT    0x80000000   /* Only send event once.  */
00079 
00080 /* All events which a program can wait on.  */
00081 #define IN_ALL_EVENTS        (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE  \
00082                        | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM         \
00083                        | IN_MOVED_TO | IN_CREATE | IN_DELETE                \
00084                        | IN_DELETE_SELF | IN_MOVE_SELF)
00085 
00086 
00087 __BEGIN_DECLS
00088 
00089 /* Create and initialize inotify instance.  */
00090 extern int inotify_init (void) __THROW;
00091 
00092 /* Create and initialize inotify instance.  */
00093 extern int inotify_init1 (int __flags) __THROW;
00094 
00095 /* Add watch of object NAME to inotify instance FD.  Notify about
00096    events specified by MASK.  */
00097 extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
00098   __THROW;
00099 
00100 /* Remove the watch specified by WD from the inotify instance FD.  */
00101 extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW;
00102 
00103 __END_DECLS
00104 
00105 #endif /* sys/inotify.h */