version 1.152, 2022/12/20 21:44:19 |
version 1.153, 2022/12/29 01:36:36 |
|
|
showbuf(dp, datalen); |
showbuf(dp, datalen); |
} |
} |
|
|
static void |
void |
ktrpsig(struct ktr_psig *psig) |
siginfo(const siginfo_t *si, int show_signo) |
{ |
{ |
signame(psig->signo); |
if (show_signo) { |
printf(" "); |
printf("signo="); |
if (psig->action == SIG_DFL) |
signame(si->si_signo); |
(void)printf("SIG_DFL"); |
|
else { |
|
(void)printf("caught handler=0x%lx mask=", |
|
(u_long)psig->action); |
|
sigset(psig->mask); |
|
} |
} |
if (psig->code) { |
if (si->si_code) { |
printf(" code "); |
printf(" code="); |
if (fancy) { |
if (!fancy) |
switch (psig->signo) { |
printf("<%d>", si->si_code); |
|
else { |
|
switch (si->si_signo) { |
case SIGILL: |
case SIGILL: |
sigill_name(psig->code); |
sigill_name(si->si_code); |
break; |
break; |
case SIGTRAP: |
case SIGTRAP: |
sigtrap_name(psig->code); |
sigtrap_name(si->si_code); |
break; |
break; |
case SIGEMT: |
case SIGEMT: |
sigemt_name(psig->code); |
sigemt_name(si->si_code); |
break; |
break; |
case SIGFPE: |
case SIGFPE: |
sigfpe_name(psig->code); |
sigfpe_name(si->si_code); |
break; |
break; |
case SIGBUS: |
case SIGBUS: |
sigbus_name(psig->code); |
sigbus_name(si->si_code); |
break; |
break; |
case SIGSEGV: |
case SIGSEGV: |
sigsegv_name(psig->code); |
sigsegv_name(si->si_code); |
break; |
break; |
case SIGCHLD: |
case SIGCHLD: |
sigchld_name(psig->code); |
sigchld_name(si->si_code); |
break; |
break; |
|
default: |
|
printf("<%d>", si->si_code); |
|
break; |
} |
} |
} |
} |
printf("<%d>", psig->code); |
|
} |
} |
|
|
switch (psig->signo) { |
switch (si->si_signo) { |
case SIGSEGV: |
case SIGSEGV: |
case SIGILL: |
case SIGILL: |
case SIGBUS: |
case SIGBUS: |
case SIGFPE: |
case SIGFPE: |
printf(" addr=%p trapno=%d", psig->si.si_addr, |
printf(" addr=%p trapno=%d", si->si_addr, si->si_trapno); |
psig->si.si_trapno); |
|
break; |
break; |
|
case SIGCHLD: |
|
if (si->si_code == CLD_EXITED) { |
|
printf(" status=%d", si->si_status); |
|
if (si->si_status < 0 || si->si_status > 9) |
|
(void)printf("/%#x", si->si_status); |
|
} else { |
|
printf(" status="); |
|
signame(si->si_status); |
|
} |
|
printf(" pid=%d uid=", si->si_pid); |
|
uidname(si->si_uid); |
|
break; |
default: |
default: |
break; |
break; |
} |
} |
printf("\n"); |
} |
|
|
|
static void |
|
ktrpsig(struct ktr_psig *psig) |
|
{ |
|
signame(psig->signo); |
|
printf(" "); |
|
if (psig->action == SIG_DFL) |
|
printf("SIG_DFL"); |
|
else { |
|
printf("caught handler=0x%lx mask=", (u_long)psig->action); |
|
sigset(psig->mask); |
|
} |
|
siginfo(&psig->si, 0); |
|
putchar('\n'); |
} |
} |
|
|
static void |
static void |