about summary refs log tree commit diff
path: root/src/signal/siglongjmp.c
blob: 53789b23959ed3544deb4fd2ffc766fffcc49605 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <setjmp.h>
#include <signal.h>
#include "syscall.h"
#include "pthread_impl.h"

_Noreturn void siglongjmp(sigjmp_buf buf, int ret)
{
	/* If sigsetjmp was called with nonzero savemask flag, the address
	 * longjmp will return to is inside of sigsetjmp. The signal mask
	 * will then be restored in the returned-to context instead of here,
	 * which matters if the context we are returning from may not have
	 * sufficient stack space for signal delivery. */
	longjmp(buf, ret);
}