4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file declares a type and two functions and defines several
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync macros, for handling various signals (conditions that may be reported during
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync program execution).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync For historical reasons; programs expect signal to be declared
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in <sys/signal.h>. The signal function is documented in <sys/signal.h>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The signal function is declared in the C Standard as:<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync void (*signal(int sig, void (*func)(int)))(int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The EDK II implementation of the library or base firmware does not generate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync any of these signals, except as a result of explicit calls to the raise function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _SIGNAL_H
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _SIGNAL_H
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <sys/EfiCdefs.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <sys/signal.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* The type sig_atomic_t is the (possibly volatile-qualified) integer type of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync an object that can be accessed as an atomic entity, even in the presence
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of asynchronous interrupts.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This, possibly machine specific, type is defined in <machine/signal.h>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The following three macros expand to constant expressions with distinct
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync values that have type compatible with the second argument to, and the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return value of, the signal function, and whose values compare unequal to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the address of any declarable function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIG_IGN ((__sighandler_t *) 0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIG_DFL ((__sighandler_t *) 1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIG_ERR ((__sighandler_t *) 3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*@}*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The following macros expand to positive integer constant expressions with
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync type int and distinct values that are the signal numbers, each
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync corresponding to the specified condition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The C95 specification requires these to be macros.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGINT __SigInt ///< receipt of an interactive attention signal
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGILL __SigIll ///< detection of an invalid function image, such as an invalid instruction
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGABRT __SigAbrt ///< abnormal termination, such as is initiated by the abort function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGFPE __SigFpe ///< an erroneous arithmetic operation, such as zero divide or an operation resulting in overflow
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGSEGV __SigSegv ///< an invalid access to storage
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGTERM __SigTerm ///< a termination request sent to the program
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGBREAK __SigBreak ///< added for Python
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGALRM __SigAlrm ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGVTALRM __SigVtAlrm ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGPROF __SigProf ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGUSR1 __SigUsr1 ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGUSR2 __SigUsr2 ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGWINCH __SigWinch ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGPIPE __SigPipe ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIGQUIT __SigQuit ///< Added for Posix timer functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIG_LAST __Sig_Last ///< One more than the largest signal number
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*@}*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync__BEGIN_DECLS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** Send a signal.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The raise function carries out the actions described for signal,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in <sys/signal.h>, for the signal sig. If a signal handler is called, the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync raise function does not return until after the signal handler does.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The raise function returns zero if successful,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or nonzero if unsuccessful.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint raise(int sig);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync__END_DECLS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* _SIGNAL_H */