chiark / gitweb /
add inotify support for hppa and MIPS and log if inotify is not available
authorMarco d'Itri <md@Linux.IT>
Thu, 6 Apr 2006 17:52:41 +0000 (19:52 +0200)
committerKay Sievers <kay.sievers@suse.de>
Thu, 6 Apr 2006 17:52:41 +0000 (19:52 +0200)
udev_libc_wrapper.h
udevd.c

index fc66670a3c181f40b27187607ed2d5fe9a122036..ed8070947fbe4a77cec2f10105b45b3fd28cc8c0 100644 (file)
 # define __NR_inotify_init     290
 # define __NR_inotify_add_watch        291
 # define __NR_inotify_rm_watch 292
+#elif defined (__hppa__)
+# define __NR_inotify_init      269
+# define __NR_inotify_add_watch 270
+# define __NR_inotify_rm_watch  271
+#elif defined (__mips__)
+# include <sgidefs.h>
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+#  define __NR_Linux             4000
+#  define __NR_inotify_init      (__NR_Linux + 284)
+#  define __NR_inotify_add_watch (__NR_Linux + 285)
+#  define __NR_inotify_rm_watch  (__NR_Linux + 286)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+#  define __NR_Linux             5000
+#  define __NR_inotify_init      (__NR_Linux + 243)
+#  define __NR_inotify_add_watch (__NR_Linux + 244)
+#  define __NR_inotify_rm_watch  (__NR_Linux + 245)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+#  define __NR_Linux             6000
+#  define __NR_inotify_init      (__NR_Linux + 247)
+#  define __NR_inotify_add_watch (__NR_Linux + 248)
+#  define __NR_inotify_rm_watch  (__NR_Linux + 249)
+# endif
 #else
 #warning "inotify unsupported on this architecture!"
 #endif
diff --git a/udevd.c b/udevd.c
index 8741a0901b1752e6088c5887c97f0dbd6bf9ea28..2129d3c66a3751c906ecf3e908ae10b737c67876 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -971,8 +971,12 @@ int main(int argc, char *argv[], char *envp[])
 
        /* watch rules directory */
        inotify_fd = inotify_init();
-       if (inotify_fd > 0)
+       if (inotify_fd >= 0)
                inotify_add_watch(inotify_fd, udev_rules_filename, IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+       else if (errno == ENOSYS)
+               err("the kernel does not support inotify, udevd can't monitor configuration file changes");
+       else
+               err("inotify_init failed: %s", strerror(errno));
 
        /* maximum limit of forked childs */
        value = getenv("UDEVD_MAX_CHILDS");