linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / um / os-Linux / process.c
index 233be2f..a0afd10 100644 (file)
@@ -11,7 +11,7 @@
 #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"
@@ -21,7 +21,6 @@
 #include "kern_util.h"
 #include "longjmp.h"
 #include "skas_ptrace.h"
-#include "kern_constants.h"
 
 #define ARBITRARY_ADDR -1
 #define FAILURE_PID    -1
@@ -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)
@@ -189,55 +186,6 @@ int os_unmap_memory(void *addr, int len)
         return(0);
 }
 
-#ifndef MADV_REMOVE
-#define MADV_REMOVE KERNEL_MADV_REMOVE
-#endif
-
-int os_drop_memory(void *addr, int length)
-{
-       int err;
-
-       err = madvise(addr, length, MADV_REMOVE);
-       if(err < 0)
-               err = -errno;
-       return err;
-}
-
-int can_drop_memory(void)
-{
-       void *addr;
-       int fd, ok = 0;
-
-       printk("Checking host MADV_REMOVE support...");
-       fd = create_mem_file(UM_KERN_PAGE_SIZE);
-       if(fd < 0){
-               printk("Creating test memory file failed, err = %d\n", -fd);
-               goto out;
-       }
-
-       addr = mmap64(NULL, UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE,
-                     MAP_SHARED, fd, 0);
-       if(addr == MAP_FAILED){
-               printk("Mapping test memory file failed, err = %d\n", -errno);
-               goto out_close;
-       }
-
-       if(madvise(addr, UM_KERN_PAGE_SIZE, MADV_REMOVE) != 0){
-               printk("MADV_REMOVE failed, err = %d\n", -errno);
-               goto out_unmap;
-       }
-
-       printk("OK\n");
-       ok = 1;
-
-out_unmap:
-       munmap(addr, UM_KERN_PAGE_SIZE);
-out_close:
-       close(fd);
-out:
-       return ok;
-}
-
 void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int))
 {
        int flags = 0, pages;
@@ -273,11 +221,11 @@ void init_new_thread_signals(int altstack)
 
 int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr)
 {
-       jmp_buf buf;
+       sigjmp_buf buf;
        int n, enable;
 
        *jmp_ptr = &buf;
-       n = UML_SETJMP(&buf, enable);
+       n = UML_SIGSETJMP(&buf, enable);
        if(n != 0)
                return(n);
        (*fn)(arg);