diff options
author | Eric Paris <eparis@redhat.com> | 2009-12-17 21:24:26 -0500 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2010-07-28 09:58:56 -0400 |
commit | 2a3edf86040a7e15684525a2aadc29f532c51325 (patch) | |
tree | cf0a5436139125d054fe46b75d5388c914b22c21 /include/linux | |
parent | bbaa4168b2d2d8cc674e6d35806e8426aef464b8 (diff) |
fanotify: fanotify_mark syscall implementation
NAME
fanotify_mark - add, remove, or modify an fanotify mark on a
filesystem object
SYNOPSIS
int fanotify_mark(int fanotify_fd, unsigned int flags, u64 mask,
int dfd, const char *pathname)
DESCRIPTION
fanotify_mark() is used to add remove or modify a mark on a filesystem
object. Marks are used to indicate that the fanotify group is
interested in events which occur on that object. At this point in
time marks may only be added to files and directories.
fanotify_fd must be a file descriptor returned by fanotify_init()
The flags field must contain exactly one of the following:
FAN_MARK_ADD - or the bits in mask and ignored mask into the mark
FAN_MARK_REMOVE - bitwise remove the bits in mask and ignored mark
from the mark
The following values can be OR'd into the flags field:
FAN_MARK_DONT_FOLLOW - same meaning as O_NOFOLLOW as described in open(2)
FAN_MARK_ONLYDIR - same meaning as O_DIRECTORY as described in open(2)
dfd may be any of the following:
AT_FDCWD: the object will be lookup up based on pathname similar
to open(2)
file descriptor of a directory: if pathname is not NULL the
object to modify will be lookup up similar to openat(2)
file descriptor of the final object: if pathname is NULL the
object to modify will be the object referenced by dfd
The mask is the bitwise OR of the set of events of interest such as:
FAN_ACCESS - object was accessed (read)
FAN_MODIFY - object was modified (write)
FAN_CLOSE_WRITE - object was writable and was closed
FAN_CLOSE_NOWRITE - object was read only and was closed
FAN_OPEN - object was opened
FAN_EVENT_ON_CHILD - interested in objected that happen to
children. Only relavent when the object
is a directory
FAN_Q_OVERFLOW - event queue overflowed (not implemented)
RETURN VALUE
On success, this system call returns 0. On error, -1 is
returned, and errno is set to indicate the error.
ERRORS
EINVAL An invalid value was specified in flags.
EINVAL An invalid value was specified in mask.
EINVAL An invalid value was specified in ignored_mask.
EINVAL fanotify_fd is not a file descriptor as returned by
fanotify_init()
EBADF fanotify_fd is not a valid file descriptor
EBADF dfd is not a valid file descriptor and path is NULL.
ENOTDIR dfd is not a directory and path is not NULL
EACCESS no search permissions on some part of the path
ENENT file not found
ENOMEM Insufficient kernel memory is available.
CONFORMING TO
These system calls are Linux-specific.
Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/fanotify.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h index 00bc6d4fbb58..95aeea2a3ca6 100644 --- a/include/linux/fanotify.h +++ b/include/linux/fanotify.h | |||
@@ -18,10 +18,23 @@ | |||
18 | /* helper events */ | 18 | /* helper events */ |
19 | #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) /* close */ | 19 | #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) /* close */ |
20 | 20 | ||
21 | /* flags used for fanotify_init() */ | ||
21 | #define FAN_CLOEXEC 0x00000001 | 22 | #define FAN_CLOEXEC 0x00000001 |
22 | #define FAN_NONBLOCK 0x00000002 | 23 | #define FAN_NONBLOCK 0x00000002 |
23 | 24 | ||
24 | #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK) | 25 | #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK) |
26 | |||
27 | /* flags used for fanotify_modify_mark() */ | ||
28 | #define FAN_MARK_ADD 0x00000001 | ||
29 | #define FAN_MARK_REMOVE 0x00000002 | ||
30 | #define FAN_MARK_DONT_FOLLOW 0x00000004 | ||
31 | #define FAN_MARK_ONLYDIR 0x00000008 | ||
32 | |||
33 | #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD |\ | ||
34 | FAN_MARK_REMOVE |\ | ||
35 | FAN_MARK_DONT_FOLLOW |\ | ||
36 | FAN_MARK_ONLYDIR) | ||
37 | |||
25 | /* | 38 | /* |
26 | * All of the events - we build the list by hand so that we can add flags in | 39 | * All of the events - we build the list by hand so that we can add flags in |
27 | * the future and not break backward compatibility. Apps will get only the | 40 | * the future and not break backward compatibility. Apps will get only the |