Annotation of cci/usr/src/man/man2/sigvec.2, revision 1.1

1.1     ! root        1: .TH SIGVEC 2 "7 July 1983"
        !             2: .UC 4
        !             3: .ie t .ds d \(dg
        !             4: .el .ds d \z'|+'
        !             5: .ie t .ds b \(bu
        !             6: .el .ds b @
        !             7: .SH NAME
        !             8: sigvec \- software signal facilities
        !             9: .SH SYNOPSIS
        !            10: .nf
        !            11: .B #include <signal.h>
        !            12: .PP
        !            13: .B struct sigvec {
        !            14: .B     int     (*sv_handler)();
        !            15: .B     int     sv_mask;
        !            16: .B     int     sv_onstack;
        !            17: .B };
        !            18: .PP
        !            19: .B sigvec(sig, vec, ovec)
        !            20: .B int sig;
        !            21: .B struct sigvec *vec, *ovec;
        !            22: .fi
        !            23: .SH DESCRIPTION
        !            24: The system defines a set of signals that may be delivered to a process.
        !            25: Signal delivery resembles the occurence of a hardware interrupt:
        !            26: the signal is blocked from further occurrence, the current process 
        !            27: context is saved, and a new one is built.  A process may specify a
        !            28: .I handler
        !            29: to which a signal is delivered, or specify that a signal is to be 
        !            30: .I blocked
        !            31: or
        !            32: .IR ignored .
        !            33: A process may also specify that a default action is to be taken
        !            34: by the system when a signal occurs.
        !            35: Normally, signal handlers execute on the current stack
        !            36: of the process.  This may be changed, on a per-handler basis,
        !            37: so that signals are taken on a special
        !            38: .IR "signal stack" .
        !            39: .PP
        !            40: All signals have the same
        !            41: .IR priority .
        !            42: Signal routines execute with the signal that caused their
        !            43: invocation
        !            44: .IR blocked ,
        !            45: but other signals may yet occur.
        !            46: A global 
        !            47: .I "signal mask"
        !            48: defines the set of signals currently blocked from delivery
        !            49: to a process.  The signal mask for a process is initilized
        !            50: from that of its parent (normally 0).  It
        !            51: may be changed with a
        !            52: .IR sigblock (2)
        !            53: or
        !            54: .IR sigsetmask (2)
        !            55: call, or when a signal is delivered to the process.
        !            56: .PP
        !            57: When a signal
        !            58: condition arises for a process, the signal is added to a set of
        !            59: signals pending for the process.  If the signal is not currently
        !            60: .I blocked
        !            61: by the process then it is delivered to the process.  When a signal
        !            62: is delivered, the current state of the process is saved,
        !            63: a new signal mask is calculated (as described below), 
        !            64: and the signal handler is invoked.  The call to the handler
        !            65: is arranged so that if the signal handling routine returns
        !            66: normally the process will resume execution in the context
        !            67: from before the signal's delivery.
        !            68: If the process wishes to resume in a different context, then it
        !            69: must arrange to restore the previous context itself.
        !            70: .PP
        !            71: When a signal is delivered to a process a new signal mask is
        !            72: installed for the duration of the process' signal handler
        !            73: (or until a
        !            74: .I sigblock
        !            75: or
        !            76: .I sigsetmask
        !            77: call is made).
        !            78: This mask is formed by taking the current signal mask,
        !            79: adding the signal to be delivered, and 
        !            80: .IR or 'ing
        !            81: in the signal mask associated with the handler to be invoked.
        !            82: .PP
        !            83: .I Sigvec
        !            84: assigns a handler for a specific signal.  If
        !            85: .I vec
        !            86: is non-zero, it
        !            87: specifies a handler routine and mask
        !            88: to be used when delivering the specified signal.  Further, if
        !            89: .I sv_onstack
        !            90: is 1, the system will deliver the signal to the process on a
        !            91: .IR "signal stack" ,
        !            92: specified with
        !            93: .IR sigstack (2).
        !            94: If 
        !            95: .I ovec
        !            96: is non-zero, the previous handling information for the signal
        !            97: is returned to the user.
        !            98: .PP
        !            99: The following is a list of all signals
        !           100: with names as in the include file
        !           101: .RI < signal.h >:
        !           102: .LP
        !           103: .nf
        !           104: .ta \w'SIGVTALRM 'u +\w'15*  'u
        !           105: SIGHUP 1       hangup
        !           106: SIGINT 2       interrupt
        !           107: SIGQUIT        3*      quit
        !           108: SIGILL 4*      illegal instruction
        !           109: SIGTRAP        5*      trace trap
        !           110: SIGIOT 6*      IOT instruction
        !           111: SIGEMT 7*      EMT instruction
        !           112: SIGFPE 8*      floating point exception
        !           113: SIGKILL        9       kill (cannot be caught, blocked, or ignored)
        !           114: SIGBUS 10*     bus error
        !           115: SIGSEGV        11*     segmentation violation
        !           116: SIGSYS 12*     bad argument to system call
        !           117: SIGPIPE        13      write on a pipe with no one to read it
        !           118: SIGALRM        14      alarm clock
        !           119: SIGTERM        15      software termination signal
        !           120: SIGURG 16\*b   urgent condition present on socket
        !           121: SIGSTOP        17\*d   stop (cannot be caught, blocked, or ignored)
        !           122: SIGTSTP        18\*d   stop signal generated from keyboard
        !           123: SIGCONT        19\*b   continue after stop (cannot be blocked)
        !           124: SIGCHLD        20\*b   child status has changed
        !           125: SIGTTIN        21\*d   background read attempted from control terminal
        !           126: SIGTTOU        22\*d   background write attempted to control terminal
        !           127: SIGIO  23\*b   i/o is possible on a descriptor (see \fIfcntl\fP(2))
        !           128: SIGXCPU        24      cpu time limit exceeded (see \fIsetrlimit\fP(2))
        !           129: SIGXFSZ        25      file size limit exceeded (see \fIsetrlimit\fP(2))
        !           130: SIGVTALRM      26      virtual time alarm (see \fIsetitimer\fP(2))
        !           131: SIGPROF        27      profiling timer alarm (see \fIsetitimer\fP(2))
        !           132: .fi
        !           133: .PP
        !           134: The starred signals in the list above cause a core image
        !           135: if not caught or ignored.
        !           136: .PP
        !           137: Once a signal handler is installed, it remains installed
        !           138: until another
        !           139: .I sigvec
        !           140: call is made, or an 
        !           141: .IR execve (2)
        !           142: is performed.
        !           143: The default action for a signal may be reinstated by setting
        !           144: .I sv_handler
        !           145: to SIG_DFL; this default is termination
        !           146: (with a core image for starred signals)
        !           147: except for signals marked with \*b or \*d.
        !           148: Signals marked with \*b are discarded if the action
        !           149: is SIG_DFL; signals marked
        !           150: with \*d cause the process to stop.
        !           151: If
        !           152: .I sv_handler
        !           153: is SIG_IGN the signal is subsequently ignored,
        !           154: and pending instances of the signal are discarded.
        !           155: .PP
        !           156: If a caught signal occurs
        !           157: during certain system calls, causing
        !           158: the call to terminate prematurely, the call
        !           159: is automatically restarted.  In particular this can occur
        !           160: during a
        !           161: .I read
        !           162: or
        !           163: .IR write (2)
        !           164: on a slow device (such as a terminal; but not a file)
        !           165: and during a
        !           166: .IR wait (2).
        !           167: .PP
        !           168: After a
        !           169: .IR fork (2)
        !           170: or
        !           171: .IR vfork (2)
        !           172: the child inherits
        !           173: all signals, the signal mask, and the signal stack.
        !           174: .PP
        !           175: .IR  Execve (2)
        !           176: resets all
        !           177: caught signals to default action; ignored signals remain ignored;
        !           178: the signal mask remains the same; the signal stack state is reset.
        !           179: .SH NOTES
        !           180: The mask specified in 
        !           181: .I vec
        !           182: is not allowed to block SIGKILL, SIGSTOP, or SIGCONT.  This
        !           183: is done silently by the system.
        !           184: .SH "RETURN VALUE
        !           185: A 0 value indicated that the call succeeded.  A \-1 return value
        !           186: indicates an error occured and
        !           187: .I errno
        !           188: is set to indicated the reason.
        !           189: .SH ERRORS
        !           190: .I Sigvec
        !           191: will fail and no new signal handler will be installed if one
        !           192: of the following occurs:
        !           193: .TP 15
        !           194: [EFAULT]
        !           195: Either
        !           196: .I vec
        !           197: or 
        !           198: .I ovec
        !           199: points to memory which is not a valid part of the process
        !           200: address space.
        !           201: .TP 15
        !           202: [EINVAL]
        !           203: .I Sig
        !           204: is not a valid signal number.
        !           205: .TP 15
        !           206: [EINVAL]
        !           207: An attempt is made to ignore or supply a handler for SIGKILL
        !           208: or SIGSTOP.
        !           209: .TP 15
        !           210: [EINVAL]
        !           211: An attempt is made to ignore SIGCONT (by default SIGCONT
        !           212: is ignored).
        !           213: .SH "SEE ALSO"
        !           214: kill(1),
        !           215: ptrace(2), kill(2),
        !           216: sigblock(2), sigsetmask(2), sigpause(2)
        !           217: sigstack(2), sigvec(2), setjmp(3), tty(4)
        !           218: .PP
        !           219:     handler(sig, code, scp)
        !           220:     int sig, code;
        !           221:     struct sigcontext *scp;
        !           222: .PP
        !           223: Here
        !           224: .I sig
        !           225: is the signal number, into which the hardware faults and traps are
        !           226: mapped as defined below. 
        !           227: .I Code
        !           228: is a parameter which is either a constant
        !           229: as given below or, for compatibility mode faults, the code provided by
        !           230: the hardware (Compatibility mode faults are distinguished from the
        !           231: other SIGILL traps by having PSL_CM set in the psl).
        !           232: .I Scp
        !           233: is a pointer to the
        !           234: .I sigcontext
        !           235: structure (defined in
        !           236: .RI < signal.h >),
        !           237: used to restore the context from before the signal.
        !           238: .PP
        !           239: The following defines the mapping of hardware traps to signals
        !           240: and codes.  All of these symbols are defined in
        !           241: .RI < signal.h >:
        !           242: .LP
        !           243: .ta \w'     Floating/decimal divide by zero   'u +\w'15*  'u +8n
        !           244: .nf
        !           245:    Hardware condition  Signal  Code
        !           246: 
        !           247: Arithmetic traps:
        !           248:    Integer overflow    SIGFPE  FPE_INTOVF_TRAP
        !           249:    Integer division by zero    SIGFPE  FPE_INTDIV_TRAP
        !           250:    Floating overflow trap      SIGFPE  FPE_FLTOVF_TRAP
        !           251:    Floating/decimal division by zero   SIGFPE  FPE_FLTDIV_TRAP
        !           252:    Floating underflow trap     SIGFPE  FPE_FLTUND_TRAP
        !           253:    Decimal overflow trap       SIGFPE  FPE_DECOVF_TRAP
        !           254:    Subscript-range     SIGFPE  FPE_SUBRNG_TRAP
        !           255:    Floating overflow fault     SIGFPE  FPE_FLTOVF_FAULT
        !           256:    Floating divide by zero fault       SIGFPE  FPE_FLTDIV_FAULT
        !           257:    Floating underflow fault    SIGFPE  FPE_FLTUND_FAULT
        !           258: Length access control  SIGSEGV
        !           259: Protection violation   SIGBUS
        !           260: Reserved instruction   SIGILL  ILL_RESAD_FAULT
        !           261: Customer-reserved instr.       SIGEMT
        !           262: Reserved operand       SIGILL  ILL_PRIVIN_FAULT
        !           263: Reserved addressing    SIGILL  ILL_RESOP_FAULT
        !           264: Trace pending  SIGTRAP
        !           265: Bpt instruction        SIGTRAP
        !           266: Compatibility-mode     SIGILL  hardware supplied code
        !           267: Chme   SIGSEGV
        !           268: Chms   SIGSEGV
        !           269: Chmu   SIGSEGV
        !           270: .fi
        !           271: .SH BUGS
        !           272: This manual page is confusing.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.