summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiku Voipio <riku.voipio@nokia.com>2010-03-26 15:25:11 +0000
committerAurelien Jarno <aurelien@aurel32.net>2010-03-26 17:15:10 +0100
commitc05c7a7306a23a4b01d1606172b142c45caffc92 (patch)
tree7ceaf846d7ecf4f8b989b95481dfb6f585101e31
parentbedd2912c83b1a87a6bfe3f59a892fd65cda7084 (diff)
downloadqemu-c05c7a7306a23a4b01d1606172b142c45caffc92.tar.gz
linux-user: add inotify_init1 syscall support
New syscall which gets actively used when you have a fresh kernel. Signed-off-by: Riku Voipio <riku.voipio@nokia.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
-rwxr-xr-xconfigure18
-rw-r--r--linux-user/syscall.c14
2 files changed, 32 insertions, 0 deletions
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 <sys/inotify.h>
+
+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);