Implement sys_rt_tgsigqueueinfo syscall decoder
* linux/dummy.h (sys_rt_tgsigqueueinfo): Remove. * linux/syscall.h (sys_rt_tgsigqueueinfo): New prototype. * signal.c (print_sigqueueinfo): New function, based on sys_rt_sigqueueinfo. (sys_rt_sigqueueinfo): Use print_sigqueueinfo. (sys_rt_tgsigqueueinfo): New function.
This commit is contained in:
@ -44,7 +44,6 @@
|
||||
#define sys_perf_event_open printargs
|
||||
#define sys_prlimit64 printargs
|
||||
#define sys_request_key printargs
|
||||
#define sys_rt_tgsigqueueinfo printargs
|
||||
#define sys_sync_file_range printargs
|
||||
#define sys_sysfs printargs
|
||||
#define sys_vm86old printargs
|
||||
|
@ -204,6 +204,7 @@ int sys_rt_sigprocmask();
|
||||
int sys_rt_sigqueueinfo();
|
||||
int sys_rt_sigsuspend();
|
||||
int sys_rt_sigtimedwait();
|
||||
int sys_rt_tgsigqueueinfo();
|
||||
int sys_sched_get_priority_min();
|
||||
int sys_sched_getaffinity();
|
||||
int sys_sched_getparam();
|
||||
|
31
signal.c
31
signal.c
@ -1437,18 +1437,35 @@ sys_rt_sigsuspend(struct tcb *tcp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
print_sigqueueinfo(struct tcb *tcp, int sig, unsigned long uinfo)
|
||||
{
|
||||
siginfo_t si;
|
||||
|
||||
printsignal(sig);
|
||||
tprints(", ");
|
||||
if (umove(tcp, uinfo, &si) < 0)
|
||||
tprintf("%#lx", uinfo);
|
||||
else
|
||||
printsiginfo(&si, verbose(tcp));
|
||||
}
|
||||
|
||||
int
|
||||
sys_rt_sigqueueinfo(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
siginfo_t si;
|
||||
tprintf("%lu, ", tcp->u_arg[0]);
|
||||
printsignal(tcp->u_arg[1]);
|
||||
tprints(", ");
|
||||
if (umove(tcp, tcp->u_arg[2], &si) < 0)
|
||||
tprintf("%#lx", tcp->u_arg[2]);
|
||||
else
|
||||
printsiginfo(&si, verbose(tcp));
|
||||
print_sigqueueinfo(tcp, tcp->u_arg[1], tcp->u_arg[2]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_rt_tgsigqueueinfo(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
tprintf("%lu, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
|
||||
print_sigqueueinfo(tcp, tcp->u_arg[2], tcp->u_arg[3]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user