summaryrefslogtreecommitdiff
path: root/src/thread/cancellation.c
blob: ab7eebcc02a43e5fc75b315acb98ac7f5b137f8f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "pthread_impl.h"

void __do_cleanup_push();
void __do_cleanup_pop();

void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
{
	cb->__f = f;
	cb->__x = x;
	__do_cleanup_push(cb, f, x);
}

void _pthread_cleanup_pop(struct __ptcb *cb, int run)
{
	__do_cleanup_pop(cb, run);
	if (run) cb->__f(cb->__x);
}

static void dummy()
{
}
weak_alias(dummy, __do_cleanup_push);
weak_alias(dummy, __do_cleanup_pop);