xref: /aosp_15_r20/external/musl/src/signal/siglongjmp.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <setjmp.h>
2*c9945492SAndroid Build Coastguard Worker #include <signal.h>
3*c9945492SAndroid Build Coastguard Worker #include "syscall.h"
4*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h"
5*c9945492SAndroid Build Coastguard Worker 
siglongjmp(sigjmp_buf buf,int ret)6*c9945492SAndroid Build Coastguard Worker _Noreturn void siglongjmp(sigjmp_buf buf, int ret)
7*c9945492SAndroid Build Coastguard Worker {
8*c9945492SAndroid Build Coastguard Worker 	/* If sigsetjmp was called with nonzero savemask flag, the address
9*c9945492SAndroid Build Coastguard Worker 	 * longjmp will return to is inside of sigsetjmp. The signal mask
10*c9945492SAndroid Build Coastguard Worker 	 * will then be restored in the returned-to context instead of here,
11*c9945492SAndroid Build Coastguard Worker 	 * which matters if the context we are returning from may not have
12*c9945492SAndroid Build Coastguard Worker 	 * sufficient stack space for signal delivery. */
13*c9945492SAndroid Build Coastguard Worker 	longjmp(buf, ret);
14*c9945492SAndroid Build Coastguard Worker }
15