aboutsummaryrefslogtreecommitdiffstats
path: root/udev_libc_wrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'udev_libc_wrapper.h')
-rw-r--r--udev_libc_wrapper.h69
1 files changed, 67 insertions, 2 deletions
diff --git a/udev_libc_wrapper.h b/udev_libc_wrapper.h
index 6f8c8f24..9a8b26a2 100644
--- a/udev_libc_wrapper.h
+++ b/udev_libc_wrapper.h
@@ -24,7 +24,72 @@
#include <string.h>
#include <unistd.h>
-#include <linux/types.h>
+#include <stdint.h>
+
+/* needed until Inotify! syscalls reach glibc */
+#include <sys/syscall.h>
+#ifndef __NR_inotify_init
+#if defined(__i386__)
+# define __NR_inotify_init 291
+# define __NR_inotify_add_watch 292
+# define __NR_inotify_rm_watch 293
+#elif defined(__x86_64__)
+# define __NR_inotify_init 253
+# define __NR_inotify_add_watch 254
+# define __NR_inotify_rm_watch 255
+#elif defined(__powerpc__) || defined(__powerpc64__)
+# define __NR_inotify_init 275
+# define __NR_inotify_add_watch 276
+# define __NR_inotify_rm_watch 277
+#elif defined (__ia64__)
+# define __NR_inotify_init 1277
+# define __NR_inotify_add_watch 1278
+# define __NR_inotify_rm_watch 1279
+#elif defined (__s390__)
+# define __NR_inotify_init 284
+# define __NR_inotify_add_watch 285
+# define __NR_inotify_rm_watch 286
+#elif defined (__alpha__)
+# define __NR_inotify_init 444
+# define __NR_inotify_add_watch 445
+# define __NR_inotify_rm_watch 446
+#elif defined (__sparc__) || defined (__sparc64__)
+# define __NR_inotify_init 151
+# define __NR_inotify_add_watch 152
+# define __NR_inotify_rm_watch 156
+#elif defined (__arm__)
+# define __NR_inotify_init 316
+# define __NR_inotify_add_watch 317
+# define __NR_inotify_rm_watch 318
+#elif defined (__sh__)
+# define __NR_inotify_init 290
+# define __NR_inotify_add_watch 291
+# define __NR_inotify_rm_watch 292
+#else
+# error "Unsupported architecture!"
+#endif
+#endif /* __NR_inotify_init */
+
+/* needed until /usr/include/sys/inotify.h is working */
+#ifdef __KLIBC__
+#include <sys/inotify.h>
+#else
+static inline int inotify_init(void)
+{
+ return syscall(__NR_inotify_init);
+}
+
+static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
+{
+ return syscall(__NR_inotify_add_watch, fd, name, mask);
+}
+#define IN_CREATE 0x00000100 /* Subfile was created */
+#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
+#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
+#define IN_DELETE 0x00000200 /* Subfile was deleted */
+#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
+#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
+#endif /* __KLIBC__ */
/* needed for our signal handlers to work */
#undef asmlinkage
@@ -32,7 +97,7 @@
#define asmlinkage __attribute__((regparm(0)))
#else
#define asmlinkage
-#endif
+#endif /* __i386__ */
/* headers are broken on some lazy platforms */
#ifndef __FD_SET