diff options
| -rw-r--r-- | libc/sysdeps/linux/common/Makefile.in | 1 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/fanotify.c | 32 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/sys/fanotify.h | 38 | 
3 files changed, 71 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index 82525984a..b75b712ac 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -27,6 +27,7 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \  	eventfd.c \  	eventfd_read.c \  	eventfd_write.c \ +	fanotify.c \  	getrandom.c \  	inotify.c \  	ioperm.c \ diff --git a/libc/sysdeps/linux/common/fanotify.c b/libc/sysdeps/linux/common/fanotify.c new file mode 100644 index 000000000..431e0e591 --- /dev/null +++ b/libc/sysdeps/linux/common/fanotify.c @@ -0,0 +1,32 @@ +/* vi: set sw=4 ts=4: */ +/* + * fanotify interface for uClibc + * + * Copyright (C) 2015 by Bartosz Golaszewski <bartekgola@gmail.com> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include <sys/syscall.h> +#include <sys/fanotify.h> + +#ifdef __NR_fanotify_init +_syscall2(int, fanotify_init, unsigned int, flags, unsigned int, event_f_flags) +#endif + +#ifdef __NR_fanotify_mark +# include <bits/wordsize.h> +# include <fcntl.h> + +# if __WORDSIZE == 64 +_syscall5(int, fanotify_mark, int, fanotify_fd, unsigned int, flags, +	  uint64_t, mask, int, dirfd, const char *, pathname) +# else +int fanotify_mark(int fanotify_fd, unsigned int flags, +		  uint64_t mask, int dirfd, const char *pathname) +{ +	return INLINE_SYSCALL(fanotify_mark, 6, fanotify_fd, flags, +			      OFF64_HI_LO(mask), dirfd, pathname); +} +# endif +#endif diff --git a/libc/sysdeps/linux/common/sys/fanotify.h b/libc/sysdeps/linux/common/sys/fanotify.h new file mode 100644 index 000000000..5eec3e55c --- /dev/null +++ b/libc/sysdeps/linux/common/sys/fanotify.h @@ -0,0 +1,38 @@ +/* Copyright (C) 2010-2015 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, see +   <http://www.gnu.org/licenses/>.  */ + +#ifndef	_SYS_FANOTIFY_H +#define	_SYS_FANOTIFY_H	1 + +#include <stdint.h> +#include <linux/fanotify.h> + + +__BEGIN_DECLS + +/* Create and initialize fanotify group.  */ +extern int fanotify_init (unsigned int __flags, unsigned int __event_f_flags) +  __THROW; + +/* Add, remove, or modify an fanotify mark on a filesystem object.  */ +extern int fanotify_mark (int __fanotify_fd, unsigned int __flags, +			  uint64_t __mask, int __dfd, const char *__pathname) +     __THROW; + +__END_DECLS + +#endif /* sys/fanotify.h */  | 
