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

📄 setjmp.h

📁 linux内核
💻 H
字号:
/* * setjmp.h */#ifndef _SETJMP_H#define _SETJMP_H#include <klibc/extern.h>#include <klibc/compiler.h>#include <stddef.h>#include <signal.h>#include <klibc/archsetjmp.h>__extern int setjmp(jmp_buf);__extern __noreturn longjmp(jmp_buf, int);/*  Whose bright idea was it to add unrelated functionality to just about  the only function in the standard C library (setjmp) which cannot be  wrapped by an ordinary function wrapper?  Anyway, the damage is done,  and therefore, this wrapper *must* be inline.  However, gcc will  complain if this is an inline function for unknown reason, and  therefore sigsetjmp() needs to be a macro.*/struct __sigjmp_buf {  jmp_buf __jmpbuf;  sigset_t __sigs;};typedef struct __sigjmp_buf sigjmp_buf[1];#define sigsetjmp(__env, __save) \({ \  struct __sigjmp_buf *__e = (__env); \  sigprocmask(0, NULL, &__e->__sigs); \  setjmp(__e->__jmpbuf); \})__extern __noreturn siglongjmp(sigjmp_buf, int);#endif /* _SETJMP_H */

⌨️ 快捷键说明

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