From c05c7a7306a23a4b01d1606172b142c45caffc92 Mon Sep 17 00:00:00 2001 From: Riku Voipio Date: Fri, 26 Mar 2010 15:25:11 +0000 Subject: [PATCH] linux-user: add inotify_init1 syscall support New syscall which gets actively used when you have a fresh kernel. Signed-off-by: Riku Voipio Signed-off-by: Aurelien Jarno --- configure | 18 ++++++++++++++++++ linux-user/syscall.c | 14 ++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/configure b/configure index 6bc40a388d..f9e08f6999 100755 --- a/configure +++ b/configure @@ -1629,6 +1629,21 @@ if compile_prog "" "" ; then inotify=yes fi +inotify1=no +cat > $TMPC << EOF +#include + +int +main(void) +{ + /* try to start inotify */ + return inotify_init1(0); +} +EOF +if compile_prog "" "" ; then + inotify1=yes +fi + # check if utimensat and futimens are supported utimens=no cat > $TMPC << EOF @@ -2136,6 +2151,9 @@ fi if test "$inotify" = "yes" ; then echo "CONFIG_INOTIFY=y" >> $config_host_mak fi +if test "$inotify1" = "yes" ; then + echo "CONFIG_INOTIFY1=y" >> $config_host_mak +fi if test "$byteswap_h" = "yes" ; then echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak fi diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 80d8633473..80acf70ce8 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -506,9 +506,18 @@ static int sys_inotify_rm_watch(int fd, int32_t wd) return (inotify_rm_watch(fd, wd)); } #endif +#ifdef CONFIG_INOTIFY1 +#if defined(TARGET_NR_inotify_init1) && defined(__NR_inotify_init1) +static int sys_inotify_init1(int flags) +{ + return (inotify_init1(flags)); +} +#endif +#endif #else /* Userspace can usually survive runtime without inotify */ #undef TARGET_NR_inotify_init +#undef TARGET_NR_inotify_init1 #undef TARGET_NR_inotify_add_watch #undef TARGET_NR_inotify_rm_watch #endif /* CONFIG_INOTIFY */ @@ -7055,6 +7064,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, ret = get_errno(sys_inotify_init()); break; #endif +#if defined(TARGET_NR_inotify_init1) && defined(__NR_inotify_init1) + case TARGET_NR_inotify_init1: + ret = get_errno(sys_inotify_init1(arg1)); + break; +#endif #if defined(TARGET_NR_inotify_add_watch) && defined(__NR_inotify_add_watch) case TARGET_NR_inotify_add_watch: p = lock_user_string(arg2);