[BACK]Return to README CVS log [TXT][DIR] Up to [local] / sys / miscfs / procfs

Annotation of sys/miscfs/procfs/README, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: README,v 1.6 2002/03/14 00:42:25 miod Exp $   */
                      2: /*     $NetBSD: README,v 1.4 1994/06/29 06:34:43 cgd Exp $     */
                      3:
                      4: saute procfs lyonnais
                      5:
                      6: procfs supports two levels of directory.  the filesystem root
                      7: directory contains a representation of the system process table.
                      8: this consists of an entry for each active and zombie process, and
                      9: an additional entry "curproc" which always represents the process
                     10: making the lookup request.
                     11:
                     12: each of the sub-directories contains several files.  these files
                     13: are used to control and interrogate processes.  the files implemented
                     14: are:
                     15:
                     16:        file    - xxx.  the exec'ed file.
                     17:
                     18:        status  - r/o.  returns process status.
                     19:
                     20:        ctl     - w/o.  sends a control message to the process.
                     21:                        for example:
                     22:                                echo hup > /proc/curproc/note
                     23:                        will send a SIGHUP to the shell.
                     24:                        whereas
                     25:                                echo attach > /proc/1293/ctl
                     26:                        would set up process 1293 for debugging.
                     27:                        see below for more details.
                     28:
                     29:        mem     - r/w.  virtual memory image of the process.
                     30:                        parts of the address space are readable
                     31:                        only if they exist in the target process.
                     32:                        a more reasonable alternative might be
                     33:                        to return zero pages instead of an error.
                     34:                        comments?
                     35:
                     36:        note    - w/o.  writing a string here sends the
                     37:                        equivalent note to the process.
                     38:                        [ not implemented. ]
                     39:
                     40:        notepg  - w/o.  the same as note, but sends to all
                     41:                        members of the process group.
                     42:                        [ not implemented. ]
                     43:
                     44:        regs    - r/w.  process register set.  this can be read
                     45:                        or written any time even if the process
                     46:                        is not stopped.  since the bsd kernel
                     47:                        is single-processor, this implementation
                     48:                        will get the "right" register values.
                     49:                        a multi-proc kernel would need to do some
                     50:                        synchronisation.
                     51:
                     52:        fpregs  - r/w.  same as regs, but for floating point registers
                     53:                        when available.
                     54:
                     55:        cmdline - r/o.  process command line parameters, separated
                     56:                        by NULs
                     57:
                     58: Note that regs and fpregs are not available if the kernel is compiled
                     59: without option PTRACE.
                     60:
                     61: this then looks like:
                     62:
                     63: % ls -li /proc
                     64: total 0
                     65:    9 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 0
                     66:   17 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 1
                     67:   89 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 10
                     68:   25 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 2
                     69: 2065 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 257
                     70: 2481 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 309
                     71:  265 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 32
                     72: 3129 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 390
                     73: 3209 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 400
                     74: 3217 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 401
                     75: 3273 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 408
                     76:  393 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 48
                     77:  409 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 50
                     78:  465 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 57
                     79:  481 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 59
                     80:  537 dr-xr-xr-x  2 root  kmem   0 Sep 21 15:06 66
                     81:  545 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 67
                     82:  657 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 81
                     83:  665 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 82
                     84:  673 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 83
                     85:  681 dr-xr-xr-x  2 root  wheel  0 Sep 21 15:06 84
                     86: 3273 dr-xr-xr-x  2 jsp   staff  0 Sep 21 15:06 curproc
                     87: % ls -li /proc/curproc
                     88: total 792
                     89: 135147 -r--r--r--  1 jason  staff       0 Aug 11 22:52 cmdline
                     90: 135143 --w-------  1 jason  staff       0 Aug 11 22:52 ctl
                     91:   3860 -r-xr-xr-x  1 root   bin    167936 Jul 30 14:23 file
                     92: 135142 -rw-------  1 jason  staff     108 Aug 11 22:52 fpregs
                     93: 135140 -rw-------  1 jason  staff  225280 Aug 11 22:52 mem
                     94: 135145 --w-------  1 jason  staff       0 Aug 11 22:52 note
                     95: 135146 --w-------  1 jason  staff       0 Aug 11 22:52 notepg
                     96: 135141 -rw-------  1 jason  staff      64 Aug 11 22:52 regs
                     97: 135144 -r--r--r--  1 jason  staff       0 Aug 11 22:52 status
                     98: % df /proc/curproc /proc/curproc/file
                     99: Filesystem  512-blocks    Used   Avail Capacity  Mounted on
                    100: proc                 2       2       0   100%    /proc
                    101: /dev/wd0a        16186   13548    1018    93%    /
                    102: % cat /proc/curproc/status
                    103: cat 446 439 400 81 12,0 ctty 748620684 270000 0 0 0 20000 nochan 11 20 20 20 0 21 117
                    104:
                    105:
                    106:
                    107: the basic sequence of commands written to "ctl" would be
                    108:
                    109:        attach          - this stops the target process and
                    110:                          arranges for the sending process
                    111:                          to become the debug control process
                    112:        wait            - wait for the target process to come to
                    113:                          a steady state ready for debugging.
                    114:        step            - single step, with no signal delivery.
                    115:        run             - continue running, with no signal delivery,
                    116:                          until next trap or breakpoint.
                    117:        <signame>       - deliver signal <signame> and continue running.
                    118:        detach          - continue execution of the target process
                    119:                          and remove it from control by the debug process
                    120:
                    121: Note that attach, wait, step, run and detach are not available if the
                    122: kernel is compiled without option PTRACE.
                    123:
                    124: in a normal debugging environment, where the target is fork/exec'd by
                    125: the debugger, the debugger should fork and the child should stop itself
                    126: (with a self-inflicted SIGSTOP).  the parent should do a "wait" then an
                    127: "attach".  as before, the child will hit a breakpoint on the first
                    128: instruction in any newly exec'd image.

CVSweb