from Dodji Seketeli. Part fix for #215973.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10947
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?
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
};
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)
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) =
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) =
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
};