summaryrefslogblamecommitdiff
path: root/src/signal/sigsetjmp.c
blob: 1bbe1a0b53baf1b4f675d9379b0161a59ac63515 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11

                   
                 







                                                               

                                                                       
                           
 

                                   
#include <setjmp.h>
#include <signal.h>
#include "libc.h"

/* !!! This function will not work unless the compiler performs
 * tail call optimization. Machine-specific asm versions should
 * be created instead even though the workaround (tail call)
 * is entirely non-machine-specific... */

int sigsetjmp(sigjmp_buf buf, int save)
{
	if ((buf->__fl = save))
		pthread_sigmask(SIG_SETMASK, 0, (sigset_t *)buf->__ss);
	return setjmp(buf);
}

weak_alias(sigsetjmp, __sigsetjmp);