Commit 29e619b1e8b1b79255009451e26c1bdbd9338fa6

Authored by bellard
1 parent 6f28fb86

uname + sysctl fix (Paul Brook)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1065 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 14 additions and 1 deletions
linux-user/syscall.c
... ... @@ -2392,6 +2392,17 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2392 2392 break;
2393 2393 case TARGET_NR_uname:
2394 2394 /* no need to transcode because we use the linux syscall */
  2395 + {
  2396 + struct new_utsname * buf;
  2397 +
  2398 + buf = (struct new_utsname *)arg1;
  2399 + ret = get_errno(sys_uname(buf));
  2400 + if (!is_error(ret)) {
  2401 + /* Overrite the native machine name with whatever is being
  2402 + emulated. */
  2403 + strcpy (buf->machine, UNAME_MACHINE);
  2404 + }
  2405 + }
2395 2406 ret = get_errno(sys_uname((struct new_utsname *)arg1));
2396 2407 break;
2397 2408 #ifdef TARGET_I386
... ... @@ -2600,7 +2611,9 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2600 2611 ret = get_errno(fdatasync(arg1));
2601 2612 break;
2602 2613 case TARGET_NR__sysctl:
2603   - goto unimplemented;
  2614 + /* We don't implement this, but ENODIR is always a safe
  2615 + return value. */
  2616 + return -ENOTDIR;
2604 2617 case TARGET_NR_sched_setparam:
2605 2618 {
2606 2619 struct sched_param *target_schp = (void *)arg2;
... ...