31 #define _STRUCTURED_PROC 1 33 #include <sys/types.h> 34 #include <sys/procfs.h> 87 { PCAGENT,
"PCAGENT",
"create agent lwp with regs from argument" },
88 { PCCFAULT,
"PCCFAULT",
"clear current fault" },
89 { PCCSIG,
"PCCSIG",
"clear current signal" },
90 { PCDSTOP,
"PCDSTOP",
"post stop request" },
91 { PCKILL,
"PCKILL",
"post a signal" },
92 { PCNICE,
"PCNICE",
"set nice priority" },
93 { PCREAD,
"PCREAD",
"read from the address space" },
94 { PCWRITE,
"PCWRITE",
"write to the address space" },
95 { PCRUN,
"PCRUN",
"make process/lwp runnable" },
96 { PCSASRS,
"PCSASRS",
"set ancillary state registers" },
97 { PCSCRED,
"PCSCRED",
"set process credentials" },
98 { PCSENTRY,
"PCSENTRY",
"set traced syscall entry set" },
99 { PCSET,
"PCSET",
"set modes" },
100 { PCSEXIT,
"PCSEXIT",
"set traced syscall exit set" },
101 { PCSFAULT,
"PCSFAULT",
"set traced fault set" },
102 { PCSFPREG,
"PCSFPREG",
"set floating point registers" },
103 { PCSHOLD,
"PCSHOLD",
"set signal mask" },
104 { PCSREG,
"PCSREG",
"set general registers" },
105 { PCSSIG,
"PCSSIG",
"set current signal" },
106 { PCSTOP,
"PCSTOP",
"post stop request and wait" },
107 { PCSTRACE,
"PCSTRACE",
"set traced signal set" },
108 { PCSVADDR,
"PCSVADDR",
"set pc virtual address" },
109 { PCSXREG,
"PCSXREG",
"set extra registers" },
110 { PCTWSTOP,
"PCTWSTOP",
"wait for stop, with timeout arg" },
111 { PCUNKILL,
"PCUNKILL",
"delete a pending signal" },
112 { PCUNSET,
"PCUNSET",
"unset modes" },
113 { PCWATCH,
"PCWATCH",
"set/unset watched memory area" },
114 { PCWSTOP,
"PCWSTOP",
"wait for process/lwp to stop, no timeout" },
137 "%s:%d -- ", file, line);
141 "write (PCSET, %s) %s\n",
142 arg[1] == PR_FORK ?
"PR_FORK" :
143 arg[1] == PR_RLC ?
"PR_RLC" :
144 arg[1] == PR_ASYNC ?
"PR_ASYNC" :
150 "write (PCRESET, %s) %s\n",
151 arg[1] == PR_FORK ?
"PR_FORK" :
152 arg[1] == PR_RLC ?
"PR_RLC" :
153 arg[1] == PR_ASYNC ?
"PR_ASYNC" :
159 "write (PCSTRACE) ");
161 (sigset_t *) &arg[1], 0);
165 "write (PCSFAULT) ");
167 (fltset_t *) &arg[1], 0);
171 "write (PCSENTRY) ");
173 (sysset_t *) &arg[1], 0);
179 (sysset_t *) &arg[1], 0);
185 (sigset_t *) &arg[1], 0);
191 arg[1] ? ((siginfo_t *) &arg[1])->si_signo
201 if (arg[1] & PRCFAULT)
205 if (arg[1] & PRSABORT)
230 "write (<unknown>, %lud bytes at 0x%08lx) \n",
234 "write (<unknown>, %lud bytes) \n",
235 (
unsigned long) len);
244 ret = write (fd, (
void *) arg, len);
248 "[write (%s) FAILED! (%s)]\n",
267 ret = lseek (fd,
offset, whence);
272 "[lseek (0x%08lx) FAILED! (%s)]\n",
288 ret = open (filename, mode);
293 "%s:%d -- ", file, line);
298 "[open FAILED! (%s) line %d]\\n",
304 "%d = open (%s, ", ret, filename);
305 if (mode == O_RDONLY)
308 else if (mode == O_WRONLY)
311 else if (mode == O_RDWR)
334 "%s:%d -- ", file, line);
340 "%d = close (%d)\n", ret, fd);
358 "%s:%d -- ", file, line);
360 "wait (line %d) ", line);
373 "returned pid %d, status 0x%x\n", ret, lstat);
391 "%s:%d -- ", file, line);
406 "Thread %d: ", thread);
411 if (
flags & (PR_STOPPED | PR_ISTOP))
425 Set tracing for /proc api calls."),
_(
"\ 426 Show tracing for /proc api calls."), NULL,
433 Set filename for /proc tracefile."),
_(
"\ 434 Show filename for /proc tracefile."), NULL,
void add_setshow_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void procfs_note(const char *msg, const char *file, int line)
int close_with_trace(int fd, char *file, int line)
static void prepare_to_trace(void)
static off_t lseek_offset
static void set_procfs_file_cmd(const char *args, int from_tty, struct cmd_list_element *c)
off_t lseek_with_trace(int fd, off_t offset, int whence, char *file, int line)
int write_with_trace(int fd, void *varg, size_t len, char *file, int line)
static void set_procfs_trace_cmd(const char *args, int from_tty, struct cmd_list_element *c)
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
struct cmd_list_element * setlist
static char * procfs_filename
struct cmd_list_element * showlist
void proc_prettyfprint_faultset(FILE *file, fltset_t *fltset, int verbose)
pid_t wait_with_trace(int *wstat, char *file, int line)
static FILE * procfs_file
void _initialize_proc_api(void)
void proc_prettyfprint_why(FILE *file, unsigned long why, unsigned long what, int verbose)
void proc_prettyfprint_syscalls(FILE *file, sysset_t *sysset, int verbose)
char * safe_strerror(int)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void proc_prettyfprint_signal(FILE *file, int signo, int verbose)
int open_with_trace(char *filename, int mode, char *file, int line)
static struct trans rw_table[]
void proc_prettyfprint_signalset(FILE *file, sigset_t *sigset, int verbose)
void proc_prettyfprint_status(long flags, int why, int what, int thread)
void proc_prettyfprint_flags(FILE *file, unsigned long flags, int verbose)