Mercurial > flash_v2
view packages/language/c/libc/current/include/signal.h @ 64:c38311975d4f ecos-sw-2000-01-28
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
| author | jlarmour |
|---|---|
| date | Fri, 28 Jan 2000 04:59:39 +0000 |
| parents | 443894e2e912 |
| children | bf00f99aec69 |
line wrap: on
line source
#ifndef CYGONCE_LIBC_SIGNAL_H #define CYGONCE_LIBC_SIGNAL_H //======================================================================== // // signal.h // // Definitions for ISO C and POSIX 1003.1 signals // //======================================================================== //####COPYRIGHTBEGIN#### // // ------------------------------------------- // The contents of this file are subject to the Red Hat eCos Public License // Version 1.0 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // http://sourceware.cygnus.com/ecos // // Software distributed under the License is distributed on an // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations under // the License. // // The Original Code is eCos - Embedded Configurable Operating System, // released September 30, 1998. // // The Initial Developer of the Original Code is Red Hat. // Portions created by Red Hat are // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. // All Rights Reserved. // ------------------------------------------- // //####COPYRIGHTEND#### //======================================================================== //#####DESCRIPTIONBEGIN#### // // Author(s): jlarmour // Contributors: jlarmour // Date: 1999-02-03 // Purpose: Provides description of interface to ISO C and POSIX 1003.1 // signal functionality // Description: // Usage: #include <signal.h> // //####DESCRIPTIONEND#### // //======================================================================== // CONFIGURATION #include <pkgconf/libc.h> // C library configuration #ifdef CYGPKG_LIBC_SIGNALS // INCLUDES #include <cyg/infra/cyg_type.h> // Common type definitions and support #ifdef CYGSEM_LIBC_SIGNALS_POSIX # include <unistd.h> // _POSIX_* macros #endif // TYPE DEFINITIONS // Integral type that can be accessed atomically - from ISO C 7.7 typedef cyg_atomic sig_atomic_t; // Type of signal handler functions typedef void (*__sighandler_t)(int); #ifdef CYGSEM_LIBC_SIGNALS_POSIX // Signal sets from POSIX 1003.1 chap 3.3.3 and other chaps typedef cyg_uint32 sigset_t; // POSIX 1003.1 chap 3.3.1.2 union sigval { int sival_int; // used when application-defined value is an int void *sival_ptr; // used when application-defined value is a pointer }; // Signal information structure passed to a __siginfoaction_t style handler // from POSIX 1003.1 chap 3.3.1.3 typedef struct { int si_signo; // signal number int si_code; // cause of signal union sigval si_value; // signal value } siginfo_t; // Type of signal handler used if SA_SIGINFO is set in flags to sigaction // from POSIX 1003.1 chap 3.3.1.3 typedef void (*__siginfoaction_t)(int __signo, siginfo_t *__info, void *__context); // struct sigaction describes the action to be taken when we get a signal // From POSIX 1003.1 chap. 3.3.4.2 struct sigaction { sigset_t sa_mask; // Additional signals to be blocked int sa_flags; // Special flags union { __sighandler_t sa_handler; // signal handler __siginfoaction_t sa_sigaction; // Function to call instead of // sa_handler if SA_SIGINFO is // set in sa_flags } __sigactionhandler; #define sa_handler __sigactionhandler.sa_handler #define sa_sigaction __sigactionhandler.sa_sigaction }; #endif // ifdef CYGSEM_LIBC_SIGNALS_POSIX // CONSTANTS // Signal handlers for use with signal(). We avoid 0 because in an embedded // system this may be e.g. start of ROM and thus a possible function pointer // for reset! #define SIG_DFL ((__sighandler_t) 1) // Default action #define SIG_IGN ((__sighandler_t) 2) // Ignore action #define SIG_ERR ((__sighandler_t)-1) // Error return // NB. We do not need to restrict SIG* definitions (e.g. by eliminating // POSIX signals) when using strict ISO C (permitted in 7.7) #define SIGNULL 0 // Reserved signal - do not use (POSIX 3.3.1.1) #define SIGHUP 1 // Hangup on controlling terminal (POSIX) #define SIGINT 2 // Interactive attention (ISO C) #define SIGQUIT 3 // Interactive termination (POSIX) #define SIGILL 4 // Illegal instruction (not reset when caught) (ISO C) #define SIGTRAP 5 // Trace trap (not reset when caught) #define SIGIOT 6 // IOT instruction #define SIGABRT 6 // Abnormal termination - used by abort() (ISO C) #define SIGEMT 7 // EMT instruction #define SIGFPE 8 // Floating Point Exception e.g. div by 0 (ISO C) #define SIGKILL 9 // Kill (cannot be caught or ignored) (POSIX) #if 1 // FIXME - should be #ifdef _POSIX_MEMORY_PROTECTION? # define SIGBUS 10 // Bus error (POSIX) #endif #define SIGSEGV 11 // Invalid memory reference (ISO C) #define SIGSYS 12 // Bad argument to system call (used by anything?) #define SIGPIPE 13 // Write on a pipe with no one to read it (POSIX) #define SIGALRM 14 // Alarm timeout (POSIX) #define SIGTERM 15 // Software termination request (ISO C) #define SIGUSR1 16 // Application-defined signal 1 (POSIX) #define SIGUSR2 17 // Application-defined signal 2 (POSIX) #define CYGNUM_LIBC_SIGNALS 18 // Maximum signal number + 1 #ifdef _POSIX_JOB_CONTROL # define SIGCHLD 18 // Child process terminated or stopped (POSIX) # define SIGCONT 19 // Continue if stopped (POSIX) # define SIGSTOP 20 // Stop (cannot be caught or ignored) (POSIX) # define SIGTSTP 21 // Interactive stop (POSIX) # define SIGTTIN 22 // Terminal read attempted by backgrounded // process (POSIX) # define SIGTTOU 23 // Terminal write attempted by backgrounded // process (POSIX) #undef CYGNUM_LIBC_SIGNALS #define CYGNUM_LIBC_SIGNALS 24 #endif // FIXME - strictly by POSIX in 3.3.1.1 we should define SIGRTMIN/SIGRTMAX // But if so, to what value if it _isn't_ supported?! #ifdef CYGSEM_LIBC_SIGNALS_POSIX // sa_flag bits in struct sigaction #define SA_NOCLDSTOP 1 // Don't generate SIGCHLD when children stop #define SA_SIGINFO 2 // Use the __siginfoaction_t style signal // handler, instead of the single argument handler #endif // ifdef CYGSEM_LIBC_SIGNALS_POSIX // FUNCTION PROTOTYPES #ifdef __cplusplus extern "C" { #endif //=========================================================================== // ISO C functions ////////////////////////////// // signal() - ISO C 7.7.1 // ////////////////////////////// // // Installs a new signal handler for the specified signal, and returns // the old handler // extern __sighandler_t signal(int __sig, __sighandler_t __handler); /////////////////////////// // raise() - ISO C 7.7.2 // /////////////////////////// // // Raises the signal, which will cause the current signal handler for // that signal to be called // extern int raise(int __sig); #ifdef __cplusplus } // extern "C" #endif #include <signal.inl> #endif // ifdef CYGPKG_LIBC_SIGNALS #endif // CYGONCE_LIBC_SIGNAL_H multiple inclusion protection // EOF signal.h
