summaryrefslogtreecommitdiff
path: root/static/unix-v10/man4/proc.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/unix-v10/man4/proc.4')
-rw-r--r--static/unix-v10/man4/proc.4243
1 files changed, 243 insertions, 0 deletions
diff --git a/static/unix-v10/man4/proc.4 b/static/unix-v10/man4/proc.4
new file mode 100644
index 00000000..1d0de279
--- /dev/null
+++ b/static/unix-v10/man4/proc.4
@@ -0,0 +1,243 @@
+.TH PROC 4
+.CT 2 proc_man
+.SH NAME
+proc \- process file system
+.SH SYNOPSIS
+.B #include <sys/proc.h>
+.br
+.B #include <sys/pioctl.h>
+.SH DESCRIPTION
+.I Proc
+is a file-system mount point that provides access to the image of each
+running process in the system.
+The name of each entry in the
+.F /proc
+directory is a five-digit decimal number corresponding to the process
+id.
+The owner of each file is the userid of the process;
+the group is \-1.
+If the process's text file is readable, the owner is granted
+read-write permission and the group is granted read permission.
+The size of a file is
+the total virtual memory size of the process.
+The security label is shared with the process, unless the
+process has had capability
+.B T_NOCHK
+(see
+.IR getplab (2))
+since last
+.IR exec (2),
+in which case the lattice value of the label is lattice
+top and the privilege fields contain some past value of the
+process' privilege fields.
+.PP
+The standard system-call interface is used to access
+.I proc.
+.I Open
+and
+.IR close (2)
+behave as usual.
+The object process is unaffected, except that setuid bits
+will be ignored if it does an
+.IR exec (2).
+(Setuid bits are also ignored if the
+.IR exec "ing"
+process has traced signals, or stops on
+.IR exec ;
+see the description of
+.B PIOCSMASK
+and
+.B PIOCSEXEC
+below.)
+Data may be transferred
+from or to any locations in the object's address space through
+.I lseek,
+.I read,
+and
+.IR write (2).
+The
+.I text segment
+begins at virtual address 0; the
+.I data segment
+starts above the text.
+The
+.I user area
+extends downward below virtual address 0x80000000, and is
+.B UPAGES*NBPG
+bytes long; the
+.I stack segment
+grows downward below the user area.
+Between the end of the data and
+the beginning of the stack lies no-man's land.
+The text, data, and stack sizes
+may be determined from the process's
+.L proc
+structure (see below).
+There are two differences from reading and writing ordinary files:
+(1) no I/O transfer may span a segment boundary;
+(2) the user area is writable only in the locations of saved user registers.
+.PP
+Several process control actions are available through an
+.IR ioctl (2)
+of the form
+.IP
+.L
+union { struct proc p; long i; } buffer;
+.br
+.L retval = ioctl(fildes, code, &buffer);
+.LP
+The possible
+.I codes
+are as follows:
+.TF PIOCSMASK
+.TP
+.B PIOCGETPR
+copies the object's proc structure from the kernel process table
+into
+.BR buffer.p .
+Since this information resides in system space, it is not accessible
+via a normal read.
+.PD
+.TP
+.B PIOCSTOP
+sends the signal
+.B SIGSTOP
+to the object, and waits for it to
+enter the stopped state.
+.TP
+.B PIOCWSTOP
+simply waits for the object to stop.
+.TP
+.B PIOCRUN
+makes the object runnable again after a stop.
+.TP
+.B PIOCSMASK
+defines (via the bit mask
+.BR buffer.i )
+a set of signals to be traced;
+i.e., the arrival of such a signal will cause the object to stop.
+(The signal numbered
+.I n
+is specified by the bit
+.BI "1<<(" n "-1)\fR.)"
+A mask of zeroes turns off the trace.
+The traced state and mask bits are inherited by the child of a
+.IR fork (2).
+When the object is closed, the mask bits are lost, but
+the traced state is retained for side effects.
+.TP
+.B PIOCSEXEC
+causes the object to stop after
+.IR exec "ing."
+This condition is inherited by children and is retained when the
+object is closed.
+.TP
+.B PIOCREXEC
+reverses the effect of
+.BR PIOCSEXEC .
+.TP
+.B PIOCCSIG
+clears the object's currently pending signal (if any).
+.TP
+.B PIOCKILL
+sends a signal to the process.
+.TP
+.B PIOCOPENT
+provides, in
+.BR retval ,
+a read-only file descriptor
+for the object process's text file.
+This allows a debugger to find the
+symbol table without having to know any path names.
+.TP
+.B PIOCNICE
+increments the object's
+.IR nice (2)
+priority by the amount
+.BR buffer.i .
+Only the super user may better a process's priority in this way, but any
+user may make the priority worse.
+.PP
+All system calls are interruptible by signals, so that, for example,
+an
+.IR alarm (2)
+may be set to avoid waiting forever for a process that may never stop.
+Any system call is guaranteed to be atomic with respect to the object,
+but, as with ordinary files, there is nothing to prevent more than one
+process from trying to control the same object.
+.PP
+The following header files are useful in analyzing
+.I proc
+files:
+.PP
+.TF <sys/param.h>
+.TP
+.B <signal.h>
+list of signal numbers
+.TP
+.B <sys/param.h>
+size parameters
+.TP
+.B <sys/types.h>
+special system types
+.TP
+.B <sys/user.h>
+user structure
+.TP
+.B <sys/proc.h>
+proc structure
+.TP
+.B <sys/reg.h>
+locations of saved user registers
+.TP
+.B <sys/pioctl.h>
+ioctl codes
+.PD
+.SH FILES
+.F /proc/*
+.SH SEE ALSO
+.IR ps (1),
+.IR hang (1),
+.IR fmount (2),
+.IR signal (2),
+.IR mount (8),
+.IR pi (9.1)
+.SH DIAGNOSTICS
+This is a list of errors which can occur in addition to the
+errors normally associated with the file system; see
+.IR intro (2):
+.TF ENOENT
+.TP
+.B ENOENT
+is returned if the object process has exited after being opened.
+.TP
+.B EIO
+is returned if I/O is attempted at an illegal address in the object.
+.TP
+.B EBUSY
+is returned if the object is in the midst of changing virtual memory
+attributes, or has pages locked for physical I/O.
+.TP
+.B ENOSPC
+is returned if a write is attempted on a shared text segment, but there
+is no room on the swap space to make a copy.
+.TP
+.B EPERM
+is returned if someone other than the super user attempts to better
+a process's priority by issuing a
+.BR PIOCNICE .
+.SH BUGS
+A process must be swapped in for reading and writing (but not
+.IR ioctl );
+this consumes minimal system resources, but may involve a noticeable
+delay.
+.br
+The spectrum of states which result in the
+.B EBUSY
+error is too conservative.
+.br
+A process loaded from a text file with magic number 0407 does not have as
+a read-only text segment; in this (presumably rare) case
+.B PIOCOPENT
+does not work, and the process is accessible even if the
+text file is read-only.