From: Riku Voipio Date: Fri, 26 Mar 2010 15:25:11 +0000 (+0000) Subject: linux-user: add inotify_init1 syscall support X-Git-Tag: v0.13.0-rc0~980 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c05c7a7306a23a4b01d1606172b142c45caffc92;p=thirdparty%2Fqemu.git 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 --- diff --git a/configure b/configure index 6bc40a388de..f9e08f6999a 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 80d86334732..80acf70ce87 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);