|
|
1.1 ! root 1: .TH PROC 3 ! 2: .SH NAME ! 3: proc \- running processes ! 4: .SH SYNOPSIS ! 5: .nf ! 6: .B bind #p /proc ! 7: ! 8: .BI /proc/ n /ctl ! 9: .BI /proc/ n /mem ! 10: .BI /proc/ n /note ! 11: .BI /proc/ n /noteid ! 12: .BI /proc/ n /notepg ! 13: .BI /proc/ n /proc ! 14: .BI /proc/ n /segment ! 15: .BI /proc/ n /status ! 16: .BI /proc/ n /text ! 17: .BI /proc/ n /wait ! 18: \&... ! 19: .fi ! 20: .SH DESCRIPTION ! 21: The ! 22: .I proc ! 23: device serves a two-level directory structure. ! 24: The first level contains numbered directories ! 25: corresponding to pids of live processes; ! 26: each such directory contains a set of files ! 27: representing the corresponding process. ! 28: .PP ! 29: The ! 30: .B mem ! 31: file contains the current memory image of the process. ! 32: A read or write at offset ! 33: .IR o , ! 34: which must be a valid virtual address, ! 35: accesses bytes from address ! 36: .IR o ! 37: up to the end of the memory segment containing ! 38: .IR o . ! 39: Kernel virtual memory, including the kernel stack for the process and ! 40: saved user registers (whose addresses are machine-dependent), ! 41: can be accessed through ! 42: .BR mem . ! 43: Writes are permitted only while the process is in the ! 44: .B Stopped ! 45: state and only to user addresses or registers. ! 46: .PP ! 47: The read-only ! 48: .B proc ! 49: file contains the kernel per-process ! 50: structure. ! 51: Its main use is to recover the kernel stack and program counter ! 52: for kernel debugging. ! 53: .PP ! 54: The read-only ! 55: .B segment ! 56: file contains a textual display of the memory segments ! 57: attached to the process. Each line has multiple fields: ! 58: the type of segment (\c ! 59: .BR Stack , ! 60: .BR Text , ! 61: .BR Data , ! 62: .BR Bss , ! 63: etc.); one-letter flags such as ! 64: .B R ! 65: for read-only, if any; ! 66: starting virtual address, in hexadecimal; ! 67: ending virtual address, and reference count. ! 68: .PP ! 69: The read-only ! 70: .B status ! 71: file contains a string with eight fields, each followed by a space. ! 72: The fields are: the process name and user name, each 27 characters left justified; ! 73: the process state, 11 characters left justified (see ! 74: .IR ps (1)); ! 75: the six 11-character numbers also held in the process's ! 76: .B #c/cputime ! 77: file, ! 78: and the amount of memory used by the process, except its stack, ! 79: in units of 1024 bytes. ! 80: .PP ! 81: The ! 82: .B text ! 83: file is a pseudonym for the file ! 84: from which the process was executed; ! 85: its main use is to recover the symbol table of the process. ! 86: .PP ! 87: The ! 88: .B wait ! 89: file may be read to recover ! 90: .B Waitmsg ! 91: records from the exiting children of the process. ! 92: If the process has no extant children, living or exited, ! 93: a read of ! 94: .B wait ! 95: will block. ! 96: It is an error for a process to attempt to read its own ! 97: .B wait ! 98: file when it has no children. ! 99: When a process's ! 100: .B wait ! 101: file is being read, ! 102: the process will draw an error ! 103: if it attempts a ! 104: .B wait ! 105: system call; similarly, if a process is in a ! 106: .B wait ! 107: system call, its ! 108: .B wait ! 109: file cannot be read by any process. ! 110: .PP ! 111: Textual messages written to the ! 112: .B ctl ! 113: file control the execution of the process. ! 114: Some require that the process is in a particular state ! 115: and return an error if it is not. ! 116: .TP 10n ! 117: .B stop ! 118: Suspend execution of the process, putting it in the ! 119: .B Stopped ! 120: state. ! 121: .TP 10n ! 122: .B start ! 123: Resume execution of a ! 124: .B Stopped ! 125: process. ! 126: .TP 10n ! 127: .B waitstop ! 128: Do not affect the process directly but, like all other messages ending with ! 129: .BR stop , ! 130: block the process writing the ! 131: .B ctl ! 132: file until the target process is in the ! 133: .B Stopped ! 134: state or exits. ! 135: Also like other ! 136: .B stop ! 137: control messages, ! 138: if the target process would receive a note while the message is pending, ! 139: it is instead stopped and the debugging process is resumed. ! 140: .TP 10n ! 141: .B startstop ! 142: Allow a ! 143: .B Stopped ! 144: process to resume, and then do a ! 145: .B waitstop ! 146: action. ! 147: .TP 10n ! 148: .B hang ! 149: Set a bit in the process so that, ! 150: when it completes an ! 151: .IR exec (2) ! 152: system call, it will enter the ! 153: .B Stopped ! 154: state before returning to user mode. ! 155: This bit is inherited across a ! 156: .IR fork (2). ! 157: .TP 10n ! 158: .B nohang ! 159: Clear the hang bit. ! 160: .TP 10n ! 161: .B kill ! 162: Kill the process the next time it crosses the user/kernel boundary. ! 163: .PP ! 164: Strings written to the ! 165: .B note ! 166: file will be posted as a note to the process ! 167: (see ! 168: .IR notify (2)). ! 169: The note should be less than ! 170: .L ERRLEN-1 ! 171: characters long; ! 172: the last character is reserved for a terminating NUL character. ! 173: A read of at least ! 174: .L ERRLEN ! 175: characters will retrieve the oldest note posted to the ! 176: process and prevent its delivery to the process. ! 177: The ! 178: .B notepg ! 179: file is similar, but the note will be delivered to all the ! 180: processes in the target process's ! 181: .I note group ! 182: (see ! 183: .IR fork (2)). ! 184: However, if the process doing the write is in the group, ! 185: it will not receive the note. ! 186: The ! 187: .B notepg ! 188: file is write-only. ! 189: .PP ! 190: The textual ! 191: .B noteid ! 192: file may be read to recover an integer identifying the note group of the process ! 193: (see ! 194: .B RFNOTEG ! 195: in ! 196: .IR fork (2)). ! 197: The file may be written to cause the process to change to another note group, ! 198: provided the group exists and is owned by the same user. ! 199: .SH FILES ! 200: .nf ! 201: .B /sys/src/9/*/mem.h ! 202: .B /sys/src/9/*/dat.h ! 203: .fi ! 204: .SH SEE ALSO ! 205: .IR debugger (2), ! 206: .IR mach (2), ! 207: .IR cons (3) ! 208: .SH SOURCE ! 209: .B /sys/src/9/port/devproc.c
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.