aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco d'Itri <md@Linux.IT>2006-04-06 19:52:41 +0200
committerKay Sievers <kay.sievers@suse.de>2006-04-06 19:52:41 +0200
commit750d10daacfc0285f83204161811f5e2ea531712 (patch)
treef01cbf8d25a00320fc395c0f6848b8c41d0e47e0
parentfc8ec932580698a2a4274204029aebb937000c70 (diff)
downloadudev-750d10daacfc0285f83204161811f5e2ea531712.tar.gz
add inotify support for hppa and MIPS and log if inotify is not available
-rw-r--r--udev_libc_wrapper.h22
-rw-r--r--udevd.c6
2 files changed, 27 insertions, 1 deletions
diff --git a/udev_libc_wrapper.h b/udev_libc_wrapper.h
index fc66670a..ed807094 100644
--- a/udev_libc_wrapper.h
+++ b/udev_libc_wrapper.h
@@ -65,6 +65,28 @@
# 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 8741a090..2129d3c6 100644
--- 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");