Commit b827c3ed authored by Samuel Thibault's avatar Samuel Thibault Committed by Laurent Vivier
Browse files

linux-user: Add getcpu() support



Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: default avatarLaurent Vivier <laurent@vivier.eu>
Message-Id: <20180112081435.21299-1-samuel.thibault@ens-lyon.org>
Signed-off-by: default avatarLaurent Vivier <laurent@vivier.eu>
parent 444cd5c3
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -296,6 +296,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len,
#define __NR_sys_sched_setaffinity __NR_sched_setaffinity
_syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len,
          unsigned long *, user_mask_ptr);
#define __NR_sys_getcpu __NR_getcpu
_syscall3(int, sys_getcpu, unsigned *, cpu, unsigned *, node, void *, tcache);
_syscall4(int, reboot, int, magic1, int, magic2, unsigned int, cmd,
          void *, arg);
_syscall2(int, capget, struct __user_cap_header_struct *, header,
@@ -10491,6 +10493,23 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
            ret = get_errno(sys_sched_setaffinity(arg1, mask_size, mask));
        }
        break;
    case TARGET_NR_getcpu:
        {
            unsigned cpu, node;
            ret = get_errno(sys_getcpu(arg1 ? &cpu : NULL,
                                       arg2 ? &node : NULL,
                                       NULL));
            if (is_error(ret)) {
                goto fail;
            }
            if (arg1 && put_user_u32(cpu, arg1)) {
                goto efault;
            }
            if (arg2 && put_user_u32(node, arg2)) {
                goto efault;
            }
        }
        break;
    case TARGET_NR_sched_setparam:
        {
            struct sched_param *target_schp;