]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/um/os-Linux/process.c
Merge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
[linux-2.6-omap-h63xx.git] / arch / um / os-Linux / process.c
index b1cda818f5b5755e5ae601c2a39ee3b35f143816..c692a192957a80775f98097ee47d7b0d73dc6b12 100644 (file)
@@ -7,11 +7,10 @@
 #include <stdio.h>
 #include <errno.h>
 #include <signal.h>
-#include <setjmp.h>
-#include <linux/unistd.h>
 #include <sys/mman.h>
 #include <sys/wait.h>
 #include <sys/mman.h>
+#include <sys/syscall.h>
 #include "ptrace_user.h"
 #include "os.h"
 #include "user.h"
@@ -141,11 +140,9 @@ void os_usr1_process(int pid)
  * syscalls, and also breaks with clone(), which does not unshare the TLS.
  */
 
-inline _syscall0(pid_t, getpid)
-
 int os_getpid(void)
 {
-       return(getpid());
+       return(syscall(__NR_getpid));
 }
 
 int os_getpgrp(void)
@@ -247,7 +244,17 @@ void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int))
                set_sigstack(sig_stack, pages * page_size());
                flags = SA_ONSTACK;
        }
-       if(usr1_handler) set_handler(SIGUSR1, usr1_handler, flags, -1);
+       if(usr1_handler){
+               struct sigaction sa;
+
+               sa.sa_handler = usr1_handler;
+               sigemptyset(&sa.sa_mask);
+               sa.sa_flags = flags;
+               sa.sa_restorer = NULL;
+               if(sigaction(SIGUSR1, &sa, NULL) < 0)
+                       panic("init_new_thread_stack - sigaction failed - "
+                             "errno = %d\n", errno);
+       }
 }
 
 void init_new_thread_signals(void)
@@ -273,12 +280,12 @@ void init_new_thread_signals(void)
 int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr)
 {
        jmp_buf buf;
-       int n, enable;
+       int n;
 
        *jmp_ptr = &buf;
-       n = UML_SETJMP(&buf, enable);
+       n = UML_SETJMP(&buf);
        if(n != 0)
-               return(n);
+               return n;
        (*fn)(arg);
-       return(0);
+       return 0;
 }