xref: /dragonfly/share/man/man5/procfs.5 (revision 279dd846)
1.\" $FreeBSD: src/share/man/man5/procfs.5,v 1.14.2.5 2001/08/17 13:08:47 ru Exp $
2.\" $DragonFly: src/share/man/man5/procfs.5,v 1.3 2006/05/26 19:39:40 swildner Exp $
3.\" Written by Garrett Wollman
4.\" This file is in the public domain.
5.\"
6.Dd August 10, 1994
7.Dt PROCFS 5
8.Os
9.Sh NAME
10.Nm procfs
11.Nd process file system
12.Sh SYNOPSIS
13.Bd -literal
14proc		/proc	procfs	rw 0 0
15.Ed
16.Sh DESCRIPTION
17The process file system, or
18.Nm ,
19implements a view of the system process table inside the file system.
20It is normally mounted on
21.Pa /proc ,
22and is required for the complete operation of programs such as
23.Xr ps 1
24and
25.Xr w 1 .
26.Pp
27The
28.Nm
29provides a two-level view of process space, unlike the previous
30.Fx 1.1
31.Nm
32implementation.
33At the highest level, processes themselves are named, according to
34their process ids in decimal, with no leading zeros.  There is also a
35special node called
36.Pa curproc
37which always refers to the process making the lookup request.
38.Pp
39Each node is a directory which contains the following entries:
40.Pp
41Each directory contains several files:
42.Bl -tag -width status
43.It Pa ctl
44a write-only file which supports a variety
45of control operations.
46Control commands are written as strings to the
47.Pa ctl
48file.
49The control commands are:
50.Bl -tag -width detach -compact
51.It attach
52stops the target process and arranges for the sending
53process to become the debug control process.
54.It detach
55continue execution of the target process and
56remove it from control by the debug process (which
57need not be the sending process).
58.It run
59continue running the target process until
60a signal is delivered, a breakpoint is hit, or the
61target process exits.
62.It step
63single step the target process, with no signal delivery.
64.It wait
65wait for the target process to come to a steady
66state ready for debugging.
67The target process must be in this state before
68any of the other commands are allowed.
69.El
70.Pp
71The string can also be the name of a signal, lower case
72and without the
73.Dv SIG
74prefix,
75in which case that signal is delivered to the process
76(see
77.Xr sigaction 2 ) .
78.It Pa dbregs
79The debug registers as defined by
80.Dv "struct dbregs"
81in
82.In machine/reg.h .
83.Pa dbregs
84is currently only implemented on the i386 architecture.
85.It Pa etype
86The type of the executable referenced by the
87.Pa file
88entry.
89.It Pa file
90A reference to the vnode from which the process text was read.
91This can be used to gain access to the process' symbol table,
92or to start another copy of the process.
93.It Pa fpregs
94The floating point registers as defined by
95.Dv "struct fpregs"
96in
97.In machine/reg.h .
98.Pa fpregs
99is only implemented on machines which have distinct general
100purpose and floating point register sets.
101.It Pa map
102A map of the process' virtual memory.
103.It Pa mem
104The complete virtual memory image of the process.
105Only those address which exist in the process can be accessed.
106Reads and writes to this file modify the process.
107Writes to the text segment remain private to the process.
108.It Pa note
109Used for sending signals to the process.  Not implemented.
110.It Pa notepg
111Used for sending signal to the process group.  Not implemented.
112.It Pa regs
113Allows read and write access to the process' register set.
114This file contains a binary data structure
115.Dv "struct regs"
116defined in
117.In machine/reg.h .
118.Pa regs
119can only be written when the process is stopped.
120.It Pa rlimit
121This is a read-only file containing the process current and maximum
122limits.
123Each line is of the format
124.Ar rlimit current max ,
125with -1
126indicating infinity.
127.It Pa status
128The process status.
129This file is read-only and returns a single line containing
130multiple space-separated fields as follows:
131.Pp
132.Bl -bullet -compact
133.It
134command name
135.It
136process id
137.It
138parent process id
139.It
140process group id
141.It
142session id
143.It
144.Ar major , Ns Ar minor
145of the controlling terminal, or
146.Dv -1,-1
147if there is no controlling terminal.
148.It
149a list of process flags:
150.Dv ctty
151if there is a controlling terminal,
152.Dv sldr
153if the process is a session leader,
154.Dv noflags
155if neither of the other two flags are set.
156.It
157the process start time in seconds and microseconds,
158comma separated.
159.It
160the user time in seconds and microseconds,
161comma separated.
162.It
163the system time in seconds and microseconds,
164comma separated.
165.It
166the wait channel message
167.It
168the process credentials consisting of
169the effective user id
170and the list of groups (whose first member
171is the effective group id)
172all comma separated.
173.El
174.El
175.Pp
176In a normal debugging environment,
177where the target is fork/exec'd by the debugger,
178the debugger should fork and the child should stop
179itself (with a self-inflicted
180.Dv SIGSTOP
181for example).
182The parent should issue a
183.Dv wait
184and then an
185.Dv attach
186command via the appropriate
187.Pa ctl
188file.
189The child process will receive a
190.Dv SIGTRAP
191immediately after the call to exec (see
192.Xr execve 2 ) .
193.Pp
194Each node is owned by the process's user, and belongs to that user's
195primary group, except for the
196.Pa mem
197node, which belongs to the
198.Li kmem
199group.
200.Sh FILES
201.Bl -tag -width /proc/curproc/XXXXXXX -compact
202.It Pa /proc
203normal mount point for the
204.Nm .
205.It Pa /proc/pid
206directory containing process information for process
207.Pa pid .
208.It Pa /proc/curproc
209directory containing process information for the current process
210.It Pa /proc/curproc/cmdline
211the process executable name
212.It Pa /proc/curproc/ctl
213used to send control messages to the process
214.It Pa /proc/curproc/etype
215executable type
216.It Pa /proc/curproc/file
217executable image
218.It Pa /proc/curproc/fpregs
219the process floating point register set
220.It Pa /proc/curproc/map
221virtual memory map of the process
222.It Pa /proc/curproc/mem
223the complete virtual address space of the process
224.It Pa /proc/curproc/note
225used for signaling the process
226.It Pa /proc/curproc/notepg
227used for signaling the process group
228.It Pa /proc/curproc/regs
229the process register set
230.It Pa /proc/curproc/rlimit
231the process current and maximum rlimit
232.It Pa /proc/curproc/status
233the process' current status
234.El
235.Sh SEE ALSO
236.Xr mount 2 ,
237.Xr sigaction 2 ,
238.Xr unmount 2 ,
239.Xr mount_procfs 8
240.Sh AUTHORS
241.An -nosplit
242This manual page written by
243.An Garrett Wollman ,
244based on the description
245provided by
246.An Jan-Simon Pendry ,
247and revamped later by
248.An Mike Pritchard .
249