Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __UML_LONGJMP_H
0003 #define __UML_LONGJMP_H
0004 
0005 #include <sysdep/archsetjmp.h>
0006 #include <os.h>
0007 
0008 extern int signals_enabled;
0009 extern int setjmp(jmp_buf);
0010 extern void longjmp(jmp_buf, int);
0011 
0012 #define UML_LONGJMP(buf, val) do { \
0013     longjmp(*buf, val); \
0014 } while(0)
0015 
0016 #define UML_SETJMP(buf) ({              \
0017     int n, enable;                  \
0018     enable = *(volatile int *)&signals_enabled; \
0019     n = setjmp(*buf);               \
0020     if(n != 0)                  \
0021         um_set_signals_trace(enable);       \
0022     n; })
0023 
0024 #endif