From 87839111d86616f3a81849c5ebeed3a9962d48d3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 17 Aug 2005 06:17:34 +0000 Subject: [PATCH] * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add sys/inotify.h. * sysdeps/unix/sysv/linux/sys/inotify.h: New file. * sysdeps/unix/sysv/linux/syscalls.list: Add inotify syscalls. --- ChangeLog | 5 ++ sysdeps/unix/sysv/linux/Makefile | 2 +- sysdeps/unix/sysv/linux/sys/inotify.h | 82 +++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 3 + 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 sysdeps/unix/sysv/linux/sys/inotify.h diff --git a/ChangeLog b/ChangeLog index 4ef1bedabb..661d4ed222 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2005-08-16 Ulrich Drepper + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add + sys/inotify.h. + * sysdeps/unix/sysv/linux/sys/inotify.h: New file. + * sysdeps/unix/sysv/linux/syscalls.list: Add inotify syscalls. + * nscd/cache.c (prune_cache): Add more debug output. Only for debug level 3 and higher and very verbose. diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 37be75e964..c5e1da03e9 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -24,7 +24,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \ sys/quota.h sys/fsuid.h \ scsi/sg.h scsi/scsi.h scsi/scsi_ioctl.h sys/pci.h \ sys/ultrasound.h sys/raw.h sys/personality.h sys/epoll.h \ - bits/a.out.h + bits/a.out.h sys/inotify.h install-others += $(inst_includedir)/bits/syscall.h diff --git a/sysdeps/unix/sysv/linux/sys/inotify.h b/sysdeps/unix/sysv/linux/sys/inotify.h new file mode 100644 index 0000000000..eab39b88d5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sys/inotify.h @@ -0,0 +1,82 @@ +/* Copyright (C) 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_INOTIFY_H +#define _SYS_INOTIFY_H 1 + +#include + + +/* Structure describing an inotify event. */ +struct inotify_event +{ + int wd; /* Watch descriptor. */ + uint32_t mask; /* Watch mask. */ + uint32_t cookie; /* Cookie to synchronize two events. */ + uint32_t len; /* Length (including NULs) of name. */ + char name __flexarr; /* Name. */ +}; + + +/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */ +#define IN_ACCESS 0x00000001 /* File was accessed. */ +#define IN_MODIFY 0x00000002 /* File was modified. */ +#define IN_ATTRIB 0x00000004 /* Metadata changed. */ +#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */ +#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */ +#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */ +#define IN_OPEN 0x00000020 /* File was opened. */ +#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */ +#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */ +#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */ +#define IN_CREATE 0x00000100 /* Subfile was created. */ +#define IN_DELETE 0x00000200 /* Subfile was deleted. */ +#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */ + +/* Events sent by the kernel. */ +#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */ +#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */ +#define IN_IGNORED 0x00008000 /* File was ignored. */ + +/* Special flags. */ +#define IN_ISDIR 0x40000000 /* Event occurred against dir. */ +#define IN_ONESHOT 0x80000000 /* Only send event once. */ + +/* All events which a program can wait on. */ +#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \ + | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \ + | IN_MOVED_TO | IN_CREATE | IN_DELETE \ + | IN_DELETE_SELF) + + +__BEGIN_DECLS + +/* Create and initialize inotify instance. */ +extern int inotify_init (void) __THROW; + +/* Add watch of object NAME to inotify instance FD. Notify about + events specified by MASK. */ +extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask) + __THROW; + +/* Remove the watch specified by WD from the inotify instance FD. */ +extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW; + +__END_DECLS + +#endif /* sys/inotify.h */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index a97305e822..3dc8c5ec48 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -25,6 +25,9 @@ getresuid - getresuid i:ppp getresuid getresgid - getresgid i:ppp getresgid getsid - getsid i:i getsid init_module EXTRA init_module 5 init_module +inotify_add_watch EXTRA inotify_add_watch i:isi inotify_add_watch +inotify_init EXTRA inotify_init i: inotify_init +inotify_rm_watch EXTRA inotify_rm_watch i:ii inotify_rm_watch ioperm - ioperm i:iii ioperm iopl - iopl i:i iopl keyctl EXTRA keyctl i:iiiii keyctl