Add support for rt_tgsigqueueinfo system call based on patch

from Dodji Seketeli. Part fix for #215973.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10947
This commit is contained in:
Tom Hughes 2009-11-24 16:08:40 +00:00
parent 0d0f835353
commit 40fa55a53b
6 changed files with 20 additions and 4 deletions

View File

@ -242,6 +242,7 @@ DECL_TEMPLATE(linux, sys_rt_sigprocmask);
DECL_TEMPLATE(linux, sys_rt_sigpending);
DECL_TEMPLATE(linux, sys_rt_sigtimedwait);
DECL_TEMPLATE(linux, sys_rt_sigqueueinfo);
DECL_TEMPLATE(linux, sys_rt_tgsigqueueinfo);
DECL_TEMPLATE(linux, sys_rt_sigsuspend);
// Linux-specific?

View File

@ -1379,7 +1379,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
LINXY(__NR_preadv, sys_preadv), // 295
LINX_(__NR_pwritev, sys_pwritev), // 296
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 297
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 297
LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 298
};

View File

@ -2761,6 +2761,21 @@ POST(sys_rt_sigqueueinfo)
SET_STATUS_Failure( VKI_EINVAL );
}
PRE(sys_rt_tgsigqueueinfo)
{
PRINT("sys_rt_tgsigqueueinfo(%ld, %ld, %ld, %#lx)", ARG1, ARG2, ARG3, ARG4);
PRE_REG_READ4(long, "rt_tgsigqueueinfo",
int, tgid, int, pid, int, sig, vki_siginfo_t *, uinfo);
if (ARG3 != 0)
PRE_MEM_READ( "rt_tgsigqueueinfo(uinfo)", ARG4, VKI_SI_MAX_SIZE );
}
POST(sys_rt_tgsigqueueinfo)
{
if (!ML_(client_signal_OK)(ARG3))
SET_STATUS_Failure( VKI_EINVAL );
}
// XXX: x86-specific? The kernel prototypes for the different archs are
// hard to decipher.
PRE(sys_rt_sigsuspend)

View File

@ -1871,7 +1871,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
LINXY(__NR_preadv, sys_preadv), // 320
LINX_(__NR_pwritev, sys_pwritev), // 321
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 322
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) // 322
};
const UInt ML_(syscall_table_size) =

View File

@ -1511,7 +1511,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
LINXY(__NR_preadv, sys_preadv), // 320
LINX_(__NR_pwritev, sys_pwritev), // 321
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 322
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) // 322
};
const UInt ML_(syscall_table_size) =

View File

@ -2258,7 +2258,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
LINXY(__NR_preadv, sys_preadv), // 333
LINX_(__NR_pwritev, sys_pwritev), // 334
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 335
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 335
LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 336
};