siginfo
struct siginfo;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo info;
struct siginfo info;
struct siginfo;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo info;
struct siginfo;
struct siginfo info;
struct siginfo info;
struct siginfo info;
struct siginfo rs_info;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo;
struct siginfo __user *pinfo;
struct siginfo info;
struct siginfo info;
struct siginfo rs_info;
struct siginfo info;
struct siginfo info;
struct siginfo info;
struct siginfo;
struct siginfo info;
struct siginfo __user *pinfo;
struct siginfo info;
#define compat_siginfo_t struct siginfo
struct siginfo *pinfo;
struct siginfo info;
struct siginfo info;
struct siginfo;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo info;
struct siginfo info;
struct siginfo;
extern void (*sig_info[])(int, struct siginfo *si, struct uml_pt_regs *, void *);
struct siginfo;
extern void sigio_handler(int sig, struct siginfo *unused_si,
extern void sigchld_handler(int sig, struct siginfo *unused_si,
struct siginfo;
extern void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs,
extern void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);
extern void segv_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
extern void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
void sigchld_handler(int sig, struct siginfo *unused_si,
void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
void segv_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs,
void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
static void timer_alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
static void sigusr1_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
static void (*handlers[_NSIG])(int sig, struct siginfo *si, mcontext_t *mc) = {
(*handlers[sig])(sig, (struct siginfo *)si, mc);
void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *, void *mc) = {
static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc)
static void sig_handler(int sig, struct siginfo *si, mcontext_t *mc)
(struct siginfo *)&si_local);
(struct siginfo *)si,
relay_signal(SIGTRAP, (struct siginfo *)si, regs, NULL);
(*sig_info[sig])(sig, (struct siginfo *)si, regs, NULL);
struct siginfo info;
struct siginfo info;
struct siginfo;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo;
void (*_sa_sigaction)(int, struct siginfo *, void *);
struct siginfo info;
const kernel_siginfo_t *siginfo)
copy_siginfo_to_external(csigdata, siginfo);
if (!fill_thread_core_info(t, view, cprm->siginfo->si_signo, info))
fill_siginfo_note(&info->signote, &info->csigdata, cprm->siginfo);
tmp = elf_dump_thread_status(cprm->siginfo->si_signo,
tmp = elf_dump_thread_status(cprm->siginfo->si_signo,
void vfs_coredump(const kernel_siginfo_t *siginfo)
.siginfo = siginfo,
audit_core_dumps(siginfo->si_signo);
if (coredump_wait(siginfo->si_signo, &core_state) < 0)
cprm->siginfo->si_signo);
attr->coredump_signal = cprm->siginfo->si_signo;
const kernel_siginfo_t *siginfo;
extern void vfs_coredump(const kernel_siginfo_t *siginfo);
static inline void vfs_coredump(const kernel_siginfo_t *siginfo) {}
#define SI_EXPANSION_SIZE (sizeof(struct siginfo) - sizeof(struct kernel_siginfo))
struct siginfo __user *infop,
struct siginfo __user *infop;
SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
kernel_siginfo_t siginfo, *si;
ret = ptrace_getsiginfo(child, &siginfo);
ret = copy_siginfo_to_user(datavp, &siginfo);
ret = copy_siginfo_from_user(&siginfo, datavp);
ret = ptrace_setsiginfo(child, &siginfo);
kernel_siginfo_t siginfo;
ret = ptrace_getsiginfo(child, &siginfo);
&siginfo);
&siginfo, (struct compat_siginfo __user *) datap);
ret = ptrace_setsiginfo(child, &siginfo);
BUILD_BUG_ON(sizeof(struct siginfo) != SI_MAX_SIZE);
BUILD_BUG_ON(offsetof(struct siginfo, si_pid) !=
offsetof(struct siginfo, si_addr));
BUILD_BUG_ON(sizeof_field(struct siginfo, si_pid) !=
BUILD_BUG_ON((sizeof_field(struct siginfo, si_pid) +
sizeof_field(struct siginfo, si_uid)) !=
BUILD_BUG_ON(offsetofend(struct siginfo, si_pid) !=
offsetof(struct siginfo, si_uid));
sizeof_field(struct siginfo, si_pid));
struct kernel_siginfo *siginfo;
siginfo = work->has_siginfo ? &work->info : SEND_SIG_PRIV;
group_send_sig_info(work->sig, siginfo, work->task, work->type);
struct kernel_siginfo *siginfo;
siginfo = SEND_SIG_PRIV;
siginfo = &info;
work->has_siginfo = siginfo == &info;
return group_send_sig_info(sig, siginfo, task, type);
siginfo_t siginfo;
if (ptrace(PTRACE_GETSIGINFO, pid, NULL, &siginfo) != 0) {
if (siginfo.si_code != TRAP_HWBKPT) {
"Unexpected si_code %d\n", siginfo.si_code);
siginfo_t siginfo;
if (ptrace(PTRACE_GETSIGINFO, pid, NULL, &siginfo))
siginfo_t siginfo;
if (ptrace(PTRACE_GETSIGINFO, pid, NULL, &siginfo))
memset(&siginfo, 0, sizeof(siginfo));
ASSERT_EQ(siginfo.si_signo, SIGBUS);
ASSERT_EQ(siginfo.si_code, BUS_MCEERR_AR);
ASSERT_EQ(1UL << siginfo.si_addr_lsb, self->page_size);
ASSERT_EQ(siginfo.si_addr, vaddr);
static siginfo_t siginfo;
memcpy(&siginfo, si, sizeof(siginfo_t));
memcpy(&siginfo, info, sizeof(siginfo_t));
memcpy(&siginfo, info, sizeof(siginfo_t));
memset(&siginfo, 0, sizeof(siginfo));
while (siginfo.si_signo == 0)
ksft_test_result(siginfo.si_signo == SIGSEGV &&
siginfo.si_code == SEGV_MAPERR &&
siginfo.si_addr == NULL,
memset(&siginfo, 0, sizeof(siginfo));
while (siginfo.si_signo == 0)
ksft_test_result(siginfo.si_signo == SIGSEGV &&
siginfo.si_code == SEGV_PKUERR,
memset(&siginfo, 0, sizeof(siginfo));
while (siginfo.si_signo == 0)
ksft_test_result(siginfo.si_signo == SIGSEGV &&
siginfo.si_code == SEGV_MAPERR &&
siginfo.si_addr == NULL,
static siginfo_t siginfo = {0};
memset(&siginfo, 0, sizeof(siginfo));
while (siginfo.si_signo == 0)
siginfo.si_signo == SIGUSR1,
static void sighndl(int sig, siginfo_t *siginfo, void *ptr)
ret = read(self->signal_fd, &siginfo, sizeof(siginfo));
struct signalfd_siginfo siginfo = {};
bytes = read(self->signal_fd, &siginfo, sizeof(siginfo));
ASSERT_EQ(bytes, sizeof(siginfo));
ASSERT_EQ(siginfo.ssi_signo, SIGURG);
bytes = read(self->signal_fd, &siginfo, sizeof(siginfo));
struct signalfd_siginfo siginfo;
siginfo_t siginfo;
ptrace(PTRACE_GETSIGINFO, child_pid, NULL, &siginfo);
(unsigned long)siginfo.si_addr < saddr ||
(unsigned long)siginfo.si_addr > eaddr) {
siginfo_t siginfo[SIGNR];
ret = sys_ptrace(PTRACE_PEEKSIGINFO, child, &arg, siginfo);
if (siginfo[j].si_code == si_code &&
siginfo[j].si_int == i)
shared, i, siginfo[j].si_code, siginfo[j].si_int);
siginfo_t siginfo;
siginfo.si_code = TEST_SICODE_SHARE;
siginfo.si_int = i;
sys_rt_sigqueueinfo(child, SIGRTMIN, &siginfo);
siginfo.si_code = TEST_SICODE_PRIV;
siginfo.si_int = i;
sys_rt_tgsigqueueinfo(child, child, SIGRTMIN, &siginfo);