From 72e306e63740a51a1c82f39cabb65df65ce2c215 Mon Sep 17 00:00:00 2001 From: Ulrich Hecht Date: Tue, 14 Apr 2009 16:30:16 +0200 Subject: [PATCH 10/33] qemu-cvs-sched_getaffinity Implements sched_getaffinity syscall. Signed-off-by: Ulrich Hecht --- linux-user/syscall.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index b7230c7..faf41b1 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -152,6 +152,7 @@ static type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, \ } +#define __NR_sys_sched_getaffinity __NR_sched_getaffinity #define __NR_sys_uname __NR_uname #define __NR_sys_faccessat __NR_faccessat #define __NR_sys_fchmodat __NR_fchmodat @@ -213,6 +214,9 @@ _syscall3(int,sys_tgkill,int,tgid,int,pid,int,sig) #if defined(TARGET_NR_tkill) && defined(__NR_tkill) _syscall2(int,sys_tkill,int,tid,int,sig) #endif +#ifdef __NR_sys_sched_getaffinity +_syscall3(int,sys_sched_getaffinity,pid_t,pid,unsigned int,cpusetsize,void*,mask) +#endif #ifdef __NR_exit_group _syscall1(int,exit_group,int,error_code) #endif @@ -6979,6 +6983,18 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, break; #endif #endif /* CONFIG_SPLICE */ + +#ifdef TARGET_NR_sched_getaffinity + case TARGET_NR_sched_getaffinity: + { + cpu_set_t *mask; + lock_user_struct(VERIFY_READ, mask, arg3, 1); + ret = get_errno(sys_sched_getaffinity((pid_t)arg1, (unsigned int)arg2, mask)); + unlock_user_struct(mask, arg3, 0); + break; + } +#endif + default: unimplemented: gemu_log("qemu: Unsupported syscall: %d\n", num); -- 1.6.2.1