⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 signal.h

📁 ecos为实时嵌入式操作系统
💻 H
字号:
#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 Cygnus 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 "AS IS"// 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 Cygnus Operating System, released// September 30, 1998.// // The Initial Developer of the Original Code is Cygnus.  Portions created// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  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.7typedef cyg_atomic sig_atomic_t;// Type of signal handler functionstypedef void (*__sighandler_t)(int);#ifdef CYGSEM_LIBC_SIGNALS_POSIX// Signal sets from POSIX 1003.1 chap 3.3.3 and other chapstypedef cyg_uint32 sigset_t;// POSIX 1003.1 chap 3.3.1.2union 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.3typedef 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.3typedef 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.2struct 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 __cplusplusextern "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_tsignal(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 intraise(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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -