diff options
author | Keith Deacon <kdeacon@ti.com> | 2010-08-31 16:16:01 -0500 |
---|---|---|
committer | Keith Deacon <kdeacon@ti.com> | 2010-08-31 16:16:01 -0500 |
commit | 3a1bbee36b773862e88c6f1895b607c0cd81b499 (patch) | |
tree | e41cd69c2dbf3370e4060988e6299b657ff0b632 | |
parent | a1727092595a65e4dd9d9a6bae3778ad8c31d77f (diff) | |
download | bionic-3a1bbee36b773862e88c6f1895b607c0cd81b499.zip bionic-3a1bbee36b773862e88c6f1895b607c0cd81b499.tar.gz bionic-3a1bbee36b773862e88c6f1895b607c0cd81b499.tar.bz2 |
Add eventfd system call support
-rw-r--r-- | libc/SYSCALLS.TXT | 2 | ||||
-rw-r--r-- | libc/arch-arm/syscalls.mk | 1 | ||||
-rw-r--r-- | libc/arch-arm/syscalls/eventfd.S | 19 | ||||
-rw-r--r-- | libc/include/sys/eventfd.h | 14 | ||||
-rw-r--r-- | libc/include/sys/linux-syscalls.h | 3 | ||||
-rw-r--r-- | libc/include/sys/linux-unistd.h | 1 |
6 files changed, 40 insertions, 0 deletions
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index 11407b9..b5a3bbe 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -262,3 +262,5 @@ int poll(struct pollfd *, unsigned int, long) 168 # ARM-specific ARM_NR_BASE == 0x0f0000 == 983040 int __set_tls:ARM_set_tls(void*) 983045,-1 int cacheflush:ARM_cacheflush(long start, long end, long flags) 983042,-1 + +int eventfd(int count, int flags) 351,323 diff --git a/libc/arch-arm/syscalls.mk b/libc/arch-arm/syscalls.mk index 9cdd28a..9bfe70a 100644 --- a/libc/arch-arm/syscalls.mk +++ b/libc/arch-arm/syscalls.mk @@ -171,3 +171,4 @@ syscall_src += arch-arm/syscalls/inotify_rm_watch.S syscall_src += arch-arm/syscalls/poll.S syscall_src += arch-arm/syscalls/__set_tls.S syscall_src += arch-arm/syscalls/cacheflush.S +syscall_src += arch-arm/syscalls/eventfd.S diff --git a/libc/arch-arm/syscalls/eventfd.S b/libc/arch-arm/syscalls/eventfd.S new file mode 100644 index 0000000..fb0912f --- /dev/null +++ b/libc/arch-arm/syscalls/eventfd.S @@ -0,0 +1,19 @@ +/* autogenerated by gensyscalls.py */ +#include <sys/linux-syscalls.h> + + .text + .type eventfd, #function + .globl eventfd + .align 4 + .fnstart + +eventfd: + .save {r4, r7} + stmfd sp!, {r4, r7} + ldr r7, =__NR_eventfd + swi #0 + ldmfd sp!, {r4, r7} + movs r0, r0 + bxpl lr + b __set_syscall_errno + .fnend diff --git a/libc/include/sys/eventfd.h b/libc/include/sys/eventfd.h new file mode 100644 index 0000000..0e142fd --- /dev/null +++ b/libc/include/sys/eventfd.h @@ -0,0 +1,14 @@ +#ifndef _SYS_EVENTFD_H_ +#define _SYS_EVENTFD_H_ + +#include <sys/cdefs.h> +#include <asm/unistd.h> +#include <asm/termbits.h> + +__BEGIN_DECLS + +extern int eventfd(int count, int flags); + +__END_DECLS + +#endif /* _SYS_EVENTFD_H_ */ diff --git a/libc/include/sys/linux-syscalls.h b/libc/include/sys/linux-syscalls.h index 6e373e0..9fefd86 100644 --- a/libc/include/sys/linux-syscalls.h +++ b/libc/include/sys/linux-syscalls.h @@ -181,6 +181,7 @@ #define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318) #define __NR_ARM_set_tls (__NR_SYSCALL_BASE + 983045) #define __NR_ARM_cacheflush (__NR_SYSCALL_BASE + 983042) +#define __NR_eventfd (__NR_SYSCALL_BASE + 351) #endif #ifdef __i386__ @@ -222,6 +223,7 @@ #define __NR_inotify_init (__NR_SYSCALL_BASE + 291) #define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 292) #define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 293) +#define __NR_eventfd (__NR_SYSCALL_BASE + 323) #endif #if defined(__SH3__) || defined(__SH4__) @@ -279,6 +281,7 @@ #define __NR_inotify_init (__NR_SYSCALL_BASE + 290) #define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 291) #define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 292) +#define __NR_eventfd (__NR_SYSCALL_BASE + 323) #endif #endif diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h index b0e7822..de5c2bb 100644 --- a/libc/include/sys/linux-unistd.h +++ b/libc/include/sys/linux-unistd.h @@ -202,6 +202,7 @@ int inotify_rm_watch (int, unsigned int); int poll (struct pollfd *, unsigned int, long); int __set_tls (void*); int cacheflush (long start, long end, long flags); +int eventfd (int count, int flags); #ifdef __cplusplus } #endif |