Changeset View
Changeset View
Standalone View
Standalone View
usr.bin/kdump/kdump.c
Show First 20 Lines • Show All 97 Lines • ▼ Show 20 Lines | |||||
#include <casper/cap_grp.h> | #include <casper/cap_grp.h> | ||||
#include <casper/cap_pwd.h> | #include <casper/cap_pwd.h> | ||||
#endif | #endif | ||||
int fetchprocinfo(struct ktr_header *, u_int *); | int fetchprocinfo(struct ktr_header *, u_int *); | ||||
u_int findabi(struct ktr_header *); | u_int findabi(struct ktr_header *); | ||||
int fread_tail(void *, int, int); | int fread_tail(void *, int, int); | ||||
void dumpheader(struct ktr_header *, u_int); | void dumpheader(struct ktr_header *, u_int); | ||||
void ktrsyscall(struct ktr_syscall *, u_int); | void ktrsyscall(struct ktr_syscall *, u_int); | ||||
emaste: minor point, these could be `#elif` | |||||
void ktrsysret(struct ktr_sysret *, u_int); | void ktrsysret(struct ktr_sysret *, u_int); | ||||
void ktrnamei(char *, int); | void ktrnamei(char *, int); | ||||
void hexdump(char *, int, int); | void hexdump(char *, int, int); | ||||
void visdump(char *, int, int); | void visdump(char *, int, int); | ||||
void ktrgenio(struct ktr_genio *, int); | void ktrgenio(struct ktr_genio *, int); | ||||
void ktrpsig(struct ktr_psig *); | void ktrpsig(struct ktr_psig *); | ||||
void ktrcsw(struct ktr_csw *); | void ktrcsw(struct ktr_csw *); | ||||
void ktrcsw_old(struct ktr_csw_old *); | void ktrcsw_old(struct ktr_csw_old *); | ||||
void ktruser(int, void *); | void ktruser(int, void *); | ||||
void ktrcaprights(cap_rights_t *); | void ktrcaprights(cap_rights_t *); | ||||
void ktritimerval(struct itimerval *it); | void ktritimerval(struct itimerval *it); | ||||
void ktrsockaddr(struct sockaddr *); | void ktrsockaddr(struct sockaddr *); | ||||
void ktrstat(struct stat *); | void ktrstat(struct stat *); | ||||
void ktrstruct(char *, size_t); | void ktrstruct(char *, size_t); | ||||
void ktrcapfail(struct ktr_cap_fail *); | void ktrcapfail(struct ktr_cap_fail *); | ||||
void ktrfault(struct ktr_fault *); | void ktrfault(struct ktr_fault *); | ||||
void ktrfaultend(struct ktr_faultend *); | void ktrfaultend(struct ktr_faultend *); | ||||
void ktrkevent(struct kevent *); | void ktrkevent(struct kevent *); | ||||
void ktrstructarray(struct ktr_struct_array *, size_t); | void ktrstructarray(struct ktr_struct_array *, size_t); | ||||
void ktrbitset(char *, struct bitset *, size_t); | void ktrbitset(char *, struct bitset *, size_t); | ||||
void ktrsyscall_freebsd(struct ktr_syscall *ktr, register_t **resip, | |||||
int *resnarg, char *resc, u_int sv_flags); | |||||
void usage(void); | void usage(void); | ||||
#define TIMESTAMP_NONE 0x0 | #define TIMESTAMP_NONE 0x0 | ||||
#define TIMESTAMP_ABSOLUTE 0x1 | #define TIMESTAMP_ABSOLUTE 0x1 | ||||
#define TIMESTAMP_ELAPSED 0x2 | #define TIMESTAMP_ELAPSED 0x2 | ||||
#define TIMESTAMP_RELATIVE 0x4 | #define TIMESTAMP_RELATIVE 0x4 | ||||
bool decimal, fancy = true, resolv; | bool decimal, fancy = true, resolv; | ||||
▲ Show 20 Lines • Show All 628 Lines • ▼ Show 20 Lines | print_signal(int signo) | ||||
else | else | ||||
printf("SIG %d", signo); | printf("SIG %d", signo); | ||||
} | } | ||||
void | void | ||||
ktrsyscall(struct ktr_syscall *ktr, u_int sv_flags) | ktrsyscall(struct ktr_syscall *ktr, u_int sv_flags) | ||||
{ | { | ||||
int narg = ktr->ktr_narg; | int narg = ktr->ktr_narg; | ||||
register_t *ip; | |||||
syscallname(ktr->ktr_code, sv_flags); | |||||
ip = &ktr->ktr_args[0]; | |||||
if (narg) { | |||||
char c = '('; | |||||
if (fancy) { | |||||
switch (sv_flags & SV_ABI_MASK) { | |||||
case SV_ABI_FREEBSD: | |||||
ktrsyscall_freebsd(ktr, &ip, &narg, &c, | |||||
sv_flags); | |||||
break; | |||||
#ifdef SYSDECODE_HAVE_LINUX | |||||
case SV_ABI_LINUX: | |||||
#ifdef __amd64__ | |||||
if (sv_flags & SV_ILP32) | |||||
ktrsyscall_linux32(ktr, &ip, | |||||
&narg, &c); | |||||
else | |||||
#endif | |||||
ktrsyscall_linux(ktr, &ip, &narg, &c); | |||||
break; | |||||
#endif /* SYSDECODE_HAVE_LINUX */ | |||||
} | |||||
} | |||||
while (narg > 0) | |||||
print_number(ip, narg, c); | |||||
putchar(')'); | |||||
} | |||||
putchar('\n'); | |||||
} | |||||
void | |||||
ktrsyscall_freebsd(struct ktr_syscall *ktr, register_t **resip, | |||||
int *resnarg, char *resc, u_int sv_flags) | |||||
{ | |||||
int narg = ktr->ktr_narg; | |||||
register_t *ip, *first; | register_t *ip, *first; | ||||
intmax_t arg; | intmax_t arg; | ||||
int quad_align, quad_slots; | int quad_align, quad_slots; | ||||
syscallname(ktr->ktr_code, sv_flags); | |||||
ip = first = &ktr->ktr_args[0]; | ip = first = &ktr->ktr_args[0]; | ||||
if (narg) { | char c = *resc; | ||||
char c = '('; | |||||
if (fancy && | |||||
(sv_flags == 0 || | |||||
(sv_flags & SV_ABI_MASK) == SV_ABI_FREEBSD)) { | |||||
quad_align = 0; | quad_align = 0; | ||||
if (sv_flags & SV_ILP32) { | if (sv_flags & SV_ILP32) { | ||||
#ifdef __powerpc__ | #ifdef __powerpc__ | ||||
quad_align = 1; | quad_align = 1; | ||||
#endif | #endif | ||||
quad_slots = 2; | quad_slots = 2; | ||||
} else | } else | ||||
quad_slots = 1; | quad_slots = 1; | ||||
▲ Show 20 Lines • Show All 715 Lines • ▼ Show 20 Lines | #endif | ||||
case SYS_unlinkat: | case SYS_unlinkat: | ||||
case SYS_utimensat: | case SYS_utimensat: | ||||
putchar(','); | putchar(','); | ||||
print_mask_arg0(sysdecode_atflags, *ip); | print_mask_arg0(sysdecode_atflags, *ip); | ||||
ip++; | ip++; | ||||
narg--; | narg--; | ||||
break; | break; | ||||
} | } | ||||
} | *resc = c; | ||||
while (narg > 0) { | *resip = ip; | ||||
print_number(ip, narg, c); | *resnarg = narg; | ||||
} | |||||
putchar(')'); | |||||
} | |||||
putchar('\n'); | |||||
} | } | ||||
void | void | ||||
ktrsysret(struct ktr_sysret *ktr, u_int sv_flags) | ktrsysret(struct ktr_sysret *ktr, u_int sv_flags) | ||||
{ | { | ||||
register_t ret = ktr->ktr_retval; | register_t ret = ktr->ktr_retval; | ||||
int error = ktr->ktr_error; | int error = ktr->ktr_error; | ||||
▲ Show 20 Lines • Show All 703 Lines • Show Last 20 Lines |
minor point, these could be #elif