mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
linux: Add fanotify_mark C implementation
Passing 64-bit arguments on syscalls.list is tricky: it requires to reimplement the expected kernel abi in each architecture. This is way to better to represent in C code where we already have macros for this (SYSCALL_LL64). Checked on x86_64-linux-gnu.
This commit is contained in:
parent
c3b023a782
commit
d150181d73
@ -66,7 +66,8 @@ sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
|
||||
fxstatat fxstatat64 \
|
||||
xmknod xmknodat convert_scm_timestamps \
|
||||
closefrom_fallback \
|
||||
clone3 clone-internal
|
||||
clone3 clone-internal \
|
||||
fanotify_mark \
|
||||
|
||||
CFLAGS-gethostid.c = -fexceptions
|
||||
CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
|
||||
|
@ -17,8 +17,6 @@ setfsuid - setfsuid32 Ei:i setfsuid
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
||||
# proper socket implementations:
|
||||
|
36
sysdeps/unix/sysv/linux/fanotify_mark.c
Normal file
36
sysdeps/unix/sysv/linux/fanotify_mark.c
Normal file
@ -0,0 +1,36 @@
|
||||
/* Add, remove, or modify an fanotify mark on a filesystem object.
|
||||
Linux specific syscall.
|
||||
Copyright (C) 2021 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/fanotify.h>
|
||||
#include <sysdep.h>
|
||||
|
||||
int
|
||||
__fanotify_mark (int fd, unsigned int flags, uint64_t mask, int dirfd,
|
||||
const char *pathname)
|
||||
{
|
||||
return INLINE_SYSCALL_CALL (fanotify_mark, fd, flags, SYSCALL_LL64 (mask),
|
||||
dirfd, pathname);
|
||||
}
|
||||
#ifdef VERSION_fanotify_mark
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libc, __fanotify_mark, fanotify_mark,
|
||||
VERSION_fanotify_mark);
|
||||
#else
|
||||
weak_alias (__fanotify_mark, fanotify_mark)
|
||||
#endif
|
@ -2,4 +2,3 @@
|
||||
|
||||
# rlimit APIs
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
2
sysdeps/unix/sysv/linux/hppa/fanotify_mark.c
Normal file
2
sysdeps/unix/sysv/linux/hppa/fanotify_mark.c
Normal file
@ -0,0 +1,2 @@
|
||||
#define VERSION_fanotify_mark GLIBC_2_19
|
||||
#include <sysdeps/unix/sysv/linux/fanotify_mark.c>
|
@ -10,5 +10,4 @@ socket - socket i:iii __socket socket
|
||||
socketpair - socketpair i:iiif __socketpair socketpair
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp __prlimit64 prlimit64@@GLIBC_2.17
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis __fanotify_mark fanotify_mark@@GLIBC_2.19
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -21,6 +21,4 @@ vm86 - vm86 i:ip __vm86 vm86@@GLIBC_2.3.4
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -17,5 +17,4 @@ setfsuid - setfsuid32 Ei:i setfsuid
|
||||
|
||||
cacheflush EXTRA cacheflush i:iiii __cacheflush cacheflush
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -3,5 +3,4 @@
|
||||
cacheflush EXTRA cacheflush i:iiii __cacheflush cacheflush
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -1,5 +1,3 @@
|
||||
# File name Caller Syscall name # args Strong name Weak names
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
@ -6,6 +6,4 @@ lseek64 - lseek i:iii __lseek64 __libc_lseek64 lseek64@@GLIBC_2.2 llseek@GLIBC
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark
|
||||
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -2,6 +2,4 @@
|
||||
|
||||
prlimit EXTRA prlimit64 i:iipp prlimit prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark
|
||||
|
||||
sendfile - sendfile i:iipi sendfile sendfile64
|
||||
|
@ -4,4 +4,3 @@ chown - chown i:sii __chown chown@@GLIBC_2.1
|
||||
lchown - lchown i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
@ -16,5 +16,4 @@ setfsgid - setfsgid32 Ei:i setfsgid
|
||||
setfsuid - setfsuid32 Ei:i setfsuid
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
2
sysdeps/unix/sysv/linux/sh/fanotify_mark.c
Normal file
2
sysdeps/unix/sysv/linux/sh/fanotify_mark.c
Normal file
@ -0,0 +1,2 @@
|
||||
#define VERSION_fanotify_mark GLIBC_2_16
|
||||
#include <sysdeps/unix/sysv/linux/fanotify_mark.c>
|
@ -17,6 +17,4 @@ setfsuid - setfsuid32 Ei:i setfsuid
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis __fanotify_mark fanotify_mark@@GLIBC_2.16
|
||||
|
||||
personality EXTRA personality Ei:i __personality personality
|
||||
|
@ -16,4 +16,3 @@ setfsgid - setfsgid32 Ei:i setfsgid
|
||||
setfsuid - setfsuid32 Ei:i setfsuid
|
||||
|
||||
prlimit64 EXTRA prlimit64 i:iipp prlimit64
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
||||
|
@ -2,6 +2,4 @@
|
||||
|
||||
sendfile - sendfile i:iipi sendfile sendfile64
|
||||
prlimit EXTRA prlimit64 i:iipp prlimit prlimit64
|
||||
|
||||
fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark
|
||||
personality EXTRA personality i:i __personality personality
|
||||
|
Loading…
Reference in New Issue
Block a user