OSDN Git Service

Userland mount syscall emulation, by Kirill A. Shutemov.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 17 Feb 2007 22:25:41 +0000 (22:25 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 17 Feb 2007 22:25:41 +0000 (22:25 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2428 c046a42c-6fe2-441c-8c8c-71466251a162

linux-user/syscall.c

index 3506ece..f3f97b0 100644 (file)
@@ -2163,8 +2163,18 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
         ret = get_errno(getpid());
         break;
     case TARGET_NR_mount:
-        /* need to look at the data field */
-        goto unimplemented;
+               {
+                       /* need to look at the data field */
+                       void *p2, *p3;
+                       p = lock_user_string(arg1);
+                       p2 = lock_user_string(arg2);
+                       p3 = lock_user_string(arg3);
+                       ret = get_errno(mount(p, p2, p3, (unsigned long)arg4, (const void *)arg5));
+                       unlock_user(p, arg1, 0);
+                       unlock_user(p2, arg2, 0);
+                       unlock_user(p3, arg3, 0);
+                       break;
+               }
     case TARGET_NR_umount:
         p = lock_user_string(arg1);
         ret = get_errno(umount(p));