/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef _SETJMP_H_ #define _SETJMP_H_ 1 #ifdef CONFIG_HAVE_SETJMP #include #else struct jmp_buf_data { }; #endif /** * typedef jmp_buf - information needed to restore a calling environment */ typedef struct jmp_buf_data jmp_buf[1]; /** * setjmp() - prepare for a long jump * * Registers, the stack pointer, and the return address are saved in the * jump bufffer. The function returns zero afterwards. When longjmp() is * executed the function returns a second time with a non-zero value. * * @env: jump buffer used to store register values * Return: 0 after setting up jump buffer, non-zero after longjmp() */ int setjmp(jmp_buf env); /** * longjmp() - long jump * * Jump back to the address and the register state saved by setjmp(). * * @env: jump buffer * @val: value to be returned by setjmp(), 0 is replaced by 1 */ void longjmp(jmp_buf env, int val); #endif /* _SETJMP_H_ */