[PATCH] server: Use syscall(2) instead of inline assembly on Mac OS, too.

Charles Davis cdavis at mymail.mines.edu
Fri Oct 7 13:35:07 CDT 2011


---
 server/mach.c |   22 +++++-----------------
 1 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/server/mach.c b/server/mach.c
index f890321..b06b870 100644
--- a/server/mach.c
+++ b/server/mach.c
@@ -29,6 +29,9 @@
 #include <stdarg.h>
 #include <sys/types.h>
 #include <unistd.h>
+#ifdef HAVE_SYS_SYSCALL_H
+#include <sys/syscall.h>
+#endif
 
 #include "ntstatus.h"
 #define WIN32_NO_STATUS
@@ -47,21 +50,6 @@
 #include <mach/thread_act.h>
 #include <servers/bootstrap.h>
 
-#if defined(__APPLE__) && defined(__i386__)
-extern int pthread_kill_syscall( mach_port_t, int );
-__ASM_GLOBAL_FUNC( pthread_kill_syscall,
-                   "movl $328,%eax\n\t"  /* SYS___pthread_kill */
-                   "int $0x80\n\t"
-                   "jae 1f\n\t"
-                   "negl %eax\n"
-                   "1:\tret" )
-#else
-static inline int pthread_kill_syscall( mach_port_t, int )
-{
-    return -ENOSYS;
-}
-#endif
-
 static mach_port_t server_mach_port;
 
 void sigchld_callback(void)
@@ -268,9 +256,9 @@ int send_thread_signal( struct thread *thread, int sig )
         if (!mach_port_extract_right( process_port, thread->unix_tid,
                                       MACH_MSG_TYPE_COPY_SEND, &port, &type ))
         {
-            if ((ret = pthread_kill_syscall( port, sig )) < 0)
+            if ((ret = syscall( SYS___pthread_kill, port, sig )) != 0)
             {
-                errno = -ret;
+                errno = ret;
                 ret = -1;
             }
             mach_port_deallocate( mach_task_self(), port );
-- 
1.7.7




More information about the wine-patches mailing list