[Android] [PATCH 5/7] jni: Use the syscall function in JNI for all Android archs

Rafaël Carré funman at videolan.org
Mon Jul 23 16:30:49 CEST 2012


Le 2012-07-23 05:56, Edward Wang a écrit :
> It is better to use the syscall function instead of ASM for portability.
> ---
>  vlc-android/jni/eventfd.c |   22 ++--------------------
>  1 files changed, 2 insertions(+), 20 deletions(-)
> 
> diff --git a/vlc-android/jni/eventfd.c b/vlc-android/jni/eventfd.c
> index 4c08612..7ad8c7e 100644
> --- a/vlc-android/jni/eventfd.c
> +++ b/vlc-android/jni/eventfd.c
> @@ -19,29 +19,11 @@
>   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
>   *****************************************************************************/
>  
> +#include <sys/syscall.h>
>  #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;
> +    return syscall(__NR_eventfd2, initval, flags);
>  }

Merged, thanks



More information about the Android mailing list