Use futex(2) not syscall(2)

Index: include/tbb/machine/linux_common.h
--- include/tbb/machine/linux_common.h.orig
+++ include/tbb/machine/linux_common.h
@@ -77,8 +77,8 @@ namespace tbb {
 
 namespace internal {
 
-inline int futex_wait( void *futex, int comparand ) {
-    int r = syscall( SYS_futex,futex,__TBB_FUTEX_WAIT,comparand,NULL,NULL,0 );
+inline int futex_wait( void *uaddr, int comparand ) {
+    int r = futex( (volatile uint32_t *)uaddr,FUTEX_WAIT,comparand,NULL,NULL );
 #if TBB_USE_ASSERT
     int e = errno;
     __TBB_ASSERT( r==0||r==EWOULDBLOCK||(r==-1&&(e==EAGAIN||e==EINTR)), "futex_wait failed." );
@@ -86,14 +86,14 @@ inline int futex_wait( void *futex, int comparand ) {
     return r;
 }
 
-inline int futex_wakeup_one( void *futex ) {
-    int r = ::syscall( SYS_futex,futex,__TBB_FUTEX_WAKE,1,NULL,NULL,0 );
+inline int futex_wakeup_one( void *uaddr ) {
+    int r = ::futex( (volatile uint32_t *)uaddr,__TBB_FUTEX_WAKE,1,NULL,NULL );
     __TBB_ASSERT( r==0||r==1, "futex_wakeup_one: more than one thread woken up?" );
     return r;
 }
 
-inline int futex_wakeup_all( void *futex ) {
-    int r = ::syscall( SYS_futex,futex,__TBB_FUTEX_WAKE,INT_MAX,NULL,NULL,0 );
+inline int futex_wakeup_all( void *uaddr ) {
+    int r = ::futex( (volatile uint32_t *)uaddr,__TBB_FUTEX_WAKE,INT_MAX,NULL,NULL );
     __TBB_ASSERT( r>=0, "futex_wakeup_all: error in waking up threads" );
     return r;
 }
