3 proc \- running processes
31 device serves a two-level directory structure.
32 The first level contains the
34 file (see below) and numbered directories
35 corresponding to pids of live processes;
36 each such directory contains a set of files
37 representing the corresponding process.
41 file contains the current memory image of the process.
42 A read or write at offset
44 which must be a valid virtual address,
45 accesses bytes from address
47 up to the end of the memory segment containing
49 Kernel virtual memory, including the kernel stack for the process and
50 saved user registers (whose addresses are machine-dependent),
51 can be accessed through
53 Writes are permitted only while the process is in the
55 state and only to user addresses or registers.
59 file contains the kernel per-process
61 Its main use is to recover the kernel stack and program counter
69 hold representations of the user-level registers, floating-point registers,
70 and kernel registers in machine-dependent form.
77 file lists the open file descriptors of the process.
78 The first line of the file is its current directory; subsequent lines list, one per line,
79 the open files, giving the decimal file descriptor number; whether the file is open for read
85 the type, device number, and qid of the file; its I/O unit (the amount of data
86 that may be transferred on the file as a contiguous piece; see
88 its I/O offset; and its name at the time it was opened.
92 file contains a textual representation of the process's file name space, in the format of
98 The last line of the file identifies the current working directory of the process, in the form of a
103 The information in this file is based on the names files had when the name space was assembled,
104 so the names it contains may be inaccessible if the files have been subsequently renamed or rearranged.
108 file contains a textual display of the memory segments
109 attached to the process. Each line has multiple fields:
110 the type of segment (\c
115 etc.); one-letter flags such as
117 for read-only, if any;
118 starting virtual address, in hexadecimal;
119 ending virtual address, and reference count.
123 file contains a string with twelve fields, each followed by a space.
126 the process name and user name, each 27 characters left justified
128 the process state, 11 characters left justified (see
131 the six 11-character numbers also held in the process's
135 the amount of memory used by the process in units of 1024 bytes
137 the base and current scheduling priority, each 11 character numbers
141 file contains the arguments of the program when it was created by
145 file will overwrite its contents.
146 If the program was not created by
153 The format of the file is a list of quoted strings suitable for
160 file is a pseudonym for the file
161 from which the process was executed;
162 its main use is to recover the symbol table of the process.
166 file may be read to recover
167 records from the exiting children of the process in the format of
171 If the process has no extant children, living or exited,
175 It is an error for a process to attempt to read its own
177 file when it has no children.
181 the process will draw an error
184 system call; similarly, if a process is in an
188 file cannot be read by any process.
192 file contains the instruction frequency count information used for multiprocess profiling; see
196 The information is gleaned by sampling the program's user-level program counter
199 Strings written to the
201 file will be posted as a note to the process
204 The note should be less than
207 the last character is reserved for a terminating NUL character.
210 characters will retrieve the oldest note posted to the
211 process and prevent its delivery to the process.
214 file is similar, but the note will be delivered to all the
215 processes in the target process's
219 However, if the process doing the write is in the group,
220 it will not receive the note.
227 file may be read to recover an integer identifying the note group of the process
232 The file may be written to cause the process to change to another note group,
233 provided the group exists and is owned by the same user.
237 can be opened once and read to see trace events from processes that have
243 Each event produces, in native machine format, the
250 .B /sys/include/trace.h
252 .BR /sys/src/cmd/trace.c ).
255 The \fLwatchpt\fR file contains a list of the watchpoints set for the process.
256 If supported by the hardware, watchpoints can be used to trap accesses to specific addresses.
257 Each line in the file has the form "\fItype\fR \fIaddress\fR \fIlength\fR",
258 where \fItype\fR consists of the characters \fLr\fR (read), \fLw\fR (write), \fLx\fR (execute) or \fL-\fR (padding character).
259 The watchpoint triggers on an access to the \fIlength\fR bytes starting at \fIaddress\fR if the type of the access must match one of the characters in the \fItype\fR field.
261 Writing to the file either replaces (offset zero) or adds to (offset non-zero) the list of watchpoints.
262 Each line written must be terminated by a newline.
263 If and only if all lines written comply with the (usually rather idiosyncratic) hardware restrictions, the list is updated; otherwise all changes are discarded.
264 Watchpoints can also be cleared by opening the file with \fLOTRUNC\fR (see
267 A triggered watchpoint will deliver a \fLsys: watchpoint\fR note which includes a comma-separated list of the watchpoints that were triggered, where 0 corresponds to the first line in the
269 file, 1 to the second and so forth.
271 Textual messages written to the
273 file control the execution of the process.
274 Some require that the process is in a particular state
275 and return an error if it is not.
278 Suspend execution of the process, putting it in the
283 Resume execution of a
288 Do not affect the process directly but, like all other messages ending with
290 block the process writing the
292 file until the target process is in the
298 if the target process would receive a note while the message is pending,
299 it is instead stopped and the debugging process is resumed.
304 process to resume, and then do a
309 Set a bit in the process so that,
312 system call, it will enter the
314 state before returning to user mode.
315 This bit is inherited across
324 Make it impossible to read the process's user memory.
325 This property is inherited on
329 and is not otherwise resettable.
332 Don't allow this process to be swapped out. This should
333 be used carefully and sparingly or the system could run
334 out of memory. It is meant for processes that can't be
335 swapped, like the local fileserver implementing the swap
336 device and for processes containing sensitive data.
337 This property is inherited on
341 and is not otherwise resettable.
344 Kill the process the next time it crosses the user/kernel boundary.
347 Close file descriptor
352 Close all open file descriptors in the process.
355 Set the base priority for the process to the integer
359 Wire the process to processor
363 Without an argument, toggle trace event generation for this process into
366 With a zero argument, tracing for the proc is turned off, with a non-zero numeric
367 argument, it is turned on.
370 Interrupt a blocking system call. If no blocking call was in progress,
371 the interrupt will be pending and the next attempt to block will be interrupted.
372 This is similar to posting a note but, unlike notes, a pending interrupt is not
373 cleared when crossing the user/kernel boundary.
376 Clear a pending interrupt.
379 Set the real-time scheduling period of the process to
383 is an optionally signed number containing an optional decimal point and
392 empty. The time is interpreted, respectively, as
398 or, in the case of an absent units specifier, as
400 If the time specifier is signed, it is interpreted as an increment or decrement
401 from a previously set value. See also the
406 Set the real-time deadline interval of the process to
412 are interpreted as for
417 Set the real-time cost (maximum CPU time per period) of the process to
423 are interpreted as for
428 Use sporadic scheduling for the real-time process. The description of the
430 command below contains further details.
433 Make the real-time process yield on blocking I/O.
434 The description of the
436 command below contains further details.
450 perform a schedulability test and start scheduling the process as a real-time
451 process if the test succeeds. If the test fails, the
453 will fail with error set to the reason for failure.
456 Add a user event to the
461 .SS Real-time scheduling
463 processes are periodically
465 giving them a higher priority than non-real-time processes until they either
466 give up the processor voluntarily, they exhaust their CPU allocation, or they reach their
468 The moment of release is dictated by the
470 and whether the process is
473 Non-sporadic processes are called
475 and they are released precisely at intervals of their period (but periods can be skipped
476 if the process blocks on I/O).
477 Sporadic processes are released whenever they become
478 runnable (after being blocked by
480 or I/O), but always at least an interval of
482 after the previous release.
486 of a real-time process specifies that the process must complete within the first
490 The dealine must be less than or equal to the period.
491 If it is not specified, it is set to the period.
495 of a real-time process describes the maximum CPU time the process may use per period.
497 A real-time process can give up the CPU before its deadline is reached
498 or its allocation is exhausted.
499 It does this by calling
503 is specified, it also does it by executing any blocking system call.
509 Of the released processes,
510 the one with the earliest deadline has the highest priority.
511 Care should be taken using spin locks (see
513 because a real-time process spinning on a lock will not give up the processor until
514 its CPU allocation is exhausted; this is unlikely to be the desired behavior.
516 When a real-time process reaches its deadline or exhausts its CPU allocation, it remains
517 schedulable, but at a very low priority.
519 The priority is interpreted by Plan 9's multilevel process scheduler.
520 Priorities run from 0 to 19, with higher
521 numbers representing higher priorities.
522 A process has a base priority and
523 a running priority which is less than or equal to the base priority.
524 As a process uses up more of its allocated time, its priority is lowered.
526 explicitly set, user processes have base priority 10, kernel processes
528 Children inherit the parent's base priority.
531 .B /sys/src/9/*/mem.h
532 .B /sys/src/9/*/dat.h
533 .B /sys/include/trace.h
541 .B /sys/src/9/port/devproc.c