[Android] [PATCH] Add missing eventfd syscall for 2.2
Rafaël Carré
funman at videolan.org
Thu Apr 26 04:05:13 CEST 2012
---
Does this help?
vlc-android/jni/Android.mk | 2 +-
vlc-android/jni/eventfd.c | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 vlc-android/jni/eventfd.c
diff --git a/vlc-android/jni/Android.mk b/vlc-android/jni/Android.mk
index d9b8ba5..c6642e6 100644
--- a/vlc-android/jni/Android.mk
+++ b/vlc-android/jni/Android.mk
@@ -3,7 +3,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libvlcjni
-LOCAL_SRC_FILES := libvlcjni.c aout.c thumbnailer.c pthread-condattr.c pthread-rwlocks.c
+LOCAL_SRC_FILES := libvlcjni.c aout.c thumbnailer.c pthread-condattr.c pthread-rwlocks.c eventfd.c
LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/include
diff --git a/vlc-android/jni/eventfd.c b/vlc-android/jni/eventfd.c
new file mode 100644
index 0000000..d58d1d2
--- /dev/null
+++ b/vlc-android/jni/eventfd.c
@@ -0,0 +1,26 @@
+#include <sys/linux-syscalls.h>
+#include <errno.h>
+
+int eventfd(unsigned int initval, int flags)
+{
+ int ret;
+ int syscall_nr = __NR_eventfd2;
+
+ asm(
+ "mov r0, %[initval] \n\t"
+ "mov r1, %[flags] \n\t"
+ "mov r7, %[nr] \n\t"
+ "svc #0 \n\t"
+ "mov %[ret], r0 \n\t"
+ : [ret] "=r" (ret)
+ : [initval] "r" (initval), [flags] "r" (flags), [nr] "r" (syscall_nr)
+ : "r7"
+ );
+
+ if (ret < 0) {
+ errno = -ret;
+ return -1;
+ }
+
+ return ret;
+}
--
1.7.9.5
More information about the Android
mailing list