[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