3 procfs supports two levels of directory. the filesystem root
4 directory contains a representation of the system process table.
5 this consists of an entry for each active and zombie process, and
6 an additional entry "curproc" which always represents the process
7 making the lookup request.
9 each of the sub-directories contains several files. these files
10 are used to control and interrogate processes. the files implemented
13 file - xxx. the exec'ed file.
15 status - r/o. returns process status.
17 ctl - w/o. sends a control message to the process.
19 echo hup > /proc/curproc/note
20 will send a SIGHUP to the shell.
22 echo attach > /proc/1293/ctl
23 would set up process 1293 for debugging.
24 see below for more details.
26 mem - r/w. virtual memory image of the process.
27 parts of the address space are readable
28 only if they exist in the target process.
29 a more reasonable alternative might be
30 to return zero pages instead of an error.
33 note - w/o. writing a string here sends the
34 equivalent note to the process.
37 notepg - w/o. the same as note, but sends to all
38 members of the process group.
41 regs - r/w. process register set. this can be read
42 or written any time even if the process
43 is not stopped. since the bsd kernel
44 is single-processor, this implementation
45 will get the "right" register values.
46 a multi-proc kernel would need to do some
53 9 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 0
54 17 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 1
55 89 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 10
56 25 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 2
57 2065 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 257
58 2481 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 309
59 265 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 32
60 3129 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 390
61 3209 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 400
62 3217 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 401
63 3273 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 408
64 393 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 48
65 409 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 50
66 465 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 57
67 481 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 59
68 537 dr-xr-xr-x 2 root kmem 0 Sep 21 15:06 66
69 545 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 67
70 657 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 81
71 665 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 82
72 673 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 83
73 681 dr-xr-xr-x 2 root wheel 0 Sep 21 15:06 84
74 3273 dr-xr-xr-x 2 jsp staff 0 Sep 21 15:06 curproc
75 % ls -li /proc/curproc
77 3341 --w------- 1 jsp staff 0 Sep 21 15:06 ctl
78 1554 -r-xr-xr-x 1 bin bin 90112 Mar 29 04:52 file
79 3339 -rw------- 1 jsp staff 118784 Sep 21 15:06 mem
80 3343 --w------- 1 jsp staff 0 Sep 21 15:06 note
81 3344 --w------- 1 jsp staff 0 Sep 21 15:06 notepg
82 3340 -rw------- 1 jsp staff 0 Sep 21 15:06 regs
83 3342 -r--r--r-- 1 jsp staff 0 Sep 21 15:06 status
84 % df /proc/curproc /proc/curproc/file
85 Filesystem 512-blocks Used Avail Capacity Mounted on
87 /dev/ad0s1a 254063 102444 131294 44% /
88 % cat /proc/curproc/status
89 cat 446 439 400 81 12,0 ctty 748620684 270000 0 0 0 20000 nochan 11 20 20 20 0 21 117
93 the basic sequence of commands written to "ctl" would be
95 attach - this stops the target process and
96 arranges for the sending process
97 to become the debug control process
98 wait - wait for the target process to come to
99 a steady state ready for debugging.
100 step - single step, with no signal delivery.
101 run - continue running, with no signal delivery,
102 until next trap or breakpoint.
103 <signame> - deliver signal <signame> and continue running.
104 detach - continue execution of the target process
105 and remove it from control by the debug process
107 in a normal debugging environment, where the target is fork/exec'd by
108 the debugger, the debugger should fork and the child should stop itself
109 (with a self-inflicted SIGSTOP). the parent should do a "wait" then an
110 "attach". as before, the child will hit a breakpoint on the first
111 instruction in any newly exec'd image.
113 $FreeBSD: src/sys/miscfs/procfs/README,v 1.4 1999/08/28 00:46:53 peter Exp $
114 $DragonFly: src/sys/vfs/procfs/README,v 1.3 2005/02/26 12:00:55 swildner Exp $