summaryrefslogblamecommitdiff
path: root/src/thread/pthread_setcancelstate.c
blob: 6722541a27e73e190b00973997432c5d4fcc375c (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13



                                             
                                    







                                                        

                 
#include "pthread_impl.h"

int pthread_setcancelstate(int new, int *old)
{
	if (new > 1U) return EINVAL;
	if (libc.lock) {
		struct pthread *self = __pthread_self();
		if (old) *old = self->canceldisable;
		self->canceldisable = new;
	} else {
		if (old) *old = libc.canceldisable;
		libc.canceldisable = new;
	}
	return 0;
}