[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