|
@@ -238,6 +238,7 @@ static type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, \
|
|
|
#define __NR_sys_getdents64 __NR_getdents64
|
|
|
#define __NR_sys_getpriority __NR_getpriority
|
|
|
#define __NR_sys_rt_sigqueueinfo __NR_rt_sigqueueinfo
|
|
|
+#define __NR_sys_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo
|
|
|
#define __NR_sys_syslog __NR_syslog
|
|
|
#define __NR_sys_futex __NR_futex
|
|
|
#define __NR_sys_inotify_init __NR_inotify_init
|
|
@@ -275,6 +276,8 @@ _syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo,
|
|
|
loff_t *, res, uint, wh);
|
|
|
#endif
|
|
|
_syscall3(int, sys_rt_sigqueueinfo, pid_t, pid, int, sig, siginfo_t *, uinfo)
|
|
|
+_syscall4(int, sys_rt_tgsigqueueinfo, pid_t, pid, pid_t, tid, int, sig,
|
|
|
+ siginfo_t *, uinfo)
|
|
|
_syscall3(int,sys_syslog,int,type,char*,bufp,int,len)
|
|
|
#ifdef __NR_exit_group
|
|
|
_syscall1(int,exit_group,int,error_code)
|
|
@@ -8872,6 +8875,19 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|
|
ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
|
|
|
}
|
|
|
break;
|
|
|
+ case TARGET_NR_rt_tgsigqueueinfo:
|
|
|
+ {
|
|
|
+ siginfo_t uinfo;
|
|
|
+
|
|
|
+ p = lock_user(VERIFY_READ, arg4, sizeof(target_siginfo_t), 1);
|
|
|
+ if (!p) {
|
|
|
+ goto efault;
|
|
|
+ }
|
|
|
+ target_to_host_siginfo(&uinfo, p);
|
|
|
+ unlock_user(p, arg4, 0);
|
|
|
+ ret = get_errno(sys_rt_tgsigqueueinfo(arg1, arg2, arg3, &uinfo));
|
|
|
+ }
|
|
|
+ break;
|
|
|
#ifdef TARGET_NR_sigreturn
|
|
|
case TARGET_NR_sigreturn:
|
|
|
if (block_signals()) {
|