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

📄 setjmp.h

📁 基于sip协议的网络电话源码
💻 H
字号:
/* $Id: setjmp.h 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#ifndef __PJ_COMPAT_SETJMP_H__#define __PJ_COMPAT_SETJMP_H__/** * @file setjmp.h * @brief Provides setjmp.h functionality. */#if defined(PJ_HAS_SETJMP_H) && PJ_HAS_SETJMP_H != 0#  include <setjmp.h>   typedef jmp_buf pj_jmp_buf;#  ifndef pj_setjmp#    define pj_setjmp(buf)	setjmp(buf)#  endif#  ifndef pj_longjmp#    define pj_longjmp(buf,d)	longjmp(buf,d)#  endif#elif defined(PJ_LINUX_KERNEL) && PJ_LINUX_KERNEL != 0 && \      defined(PJ_M_I386) && PJ_M_I386 != 0    /*     * These are taken from uClibc.     * Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org>     */#   if defined __USE_MISC || defined _ASM#	define JB_BX	0#	define JB_SI	1#	define JB_DI	2#	define JB_BP	3#	define JB_SP	4#	define JB_PC	5#	define JB_SIZE 24#   endif# ifndef _ASM	typedef int __jmp_buf[6];    /* A `sigset_t' has a bit for each signal.  */#   define _SIGSET_NWORDS	(1024 / (8 * sizeof (unsigned long int)))    typedef struct __sigset_t_tag    {	unsigned long int __val[_SIGSET_NWORDS];    } __sigset_t;    /* Calling environment, plus possibly a saved signal mask.  */    typedef struct __jmp_buf_tag    /* C++ doesn't like tagless structs.  */    {	/* NOTE: The machine-dependent definitions of `__sigsetjmp'	   assume that a `jmp_buf' begins with a `__jmp_buf' and that	   `__mask_was_saved' follows it.  Do not move these members	   or add others before it.  */	__jmp_buf __jmpbuf;		/* Calling environment.  */	int __mask_was_saved;		/* Saved the signal mask?  */	// we never saved the mask.	__sigset_t __saved_mask;	/* Saved signal mask.  */    } jmp_buf[1];    typedef jmp_buf sigjmp_buf;    typedef jmp_buf pj_jmp_buf;    PJ_DECL(int) pj_setjmp(pj_jmp_buf env);    PJ_DECL(void) pj_longjmp(pj_jmp_buf env, int val) __attribute__((noreturn));# endif   /* _ASM */#else#  warning "setjmp()/longjmp() is not implemented"   typedef int pj_jmp_buf[1];#  define pj_setjmp(buf)	0#  define pj_longjmp(buf,d)	0#endif#endif	/* __PJ_COMPAT_SETJMP_H__ */

⌨️ 快捷键说明

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