linux-user: Add getcpu() support
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20180112081435.21299-1-samuel.thibault@ens-lyon.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
444cd5c3ae
commit
b827c3ed30
@ -296,6 +296,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len,
|
|||||||
#define __NR_sys_sched_setaffinity __NR_sched_setaffinity
|
#define __NR_sys_sched_setaffinity __NR_sched_setaffinity
|
||||||
_syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len,
|
_syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len,
|
||||||
unsigned long *, user_mask_ptr);
|
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,
|
_syscall4(int, reboot, int, magic1, int, magic2, unsigned int, cmd,
|
||||||
void *, arg);
|
void *, arg);
|
||||||
_syscall2(int, capget, struct __user_cap_header_struct *, header,
|
_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));
|
ret = get_errno(sys_sched_setaffinity(arg1, mask_size, mask));
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case TARGET_NR_sched_setparam:
|
||||||
{
|
{
|
||||||
struct sched_param *target_schp;
|
struct sched_param *target_schp;
|
||||||
|
Loading…
Reference in New Issue
Block a user