xref: /aosp_15_r20/external/musl/src/thread/pthread_cleanup_push.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h"
2*c9945492SAndroid Build Coastguard Worker 
dummy(struct __ptcb * cb)3*c9945492SAndroid Build Coastguard Worker static void dummy(struct __ptcb *cb)
4*c9945492SAndroid Build Coastguard Worker {
5*c9945492SAndroid Build Coastguard Worker }
6*c9945492SAndroid Build Coastguard Worker weak_alias(dummy, __do_cleanup_push);
7*c9945492SAndroid Build Coastguard Worker weak_alias(dummy, __do_cleanup_pop);
8*c9945492SAndroid Build Coastguard Worker 
_pthread_cleanup_push(struct __ptcb * cb,void (* f)(void *),void * x)9*c9945492SAndroid Build Coastguard Worker void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
10*c9945492SAndroid Build Coastguard Worker {
11*c9945492SAndroid Build Coastguard Worker 	cb->__f = f;
12*c9945492SAndroid Build Coastguard Worker 	cb->__x = x;
13*c9945492SAndroid Build Coastguard Worker 	__do_cleanup_push(cb);
14*c9945492SAndroid Build Coastguard Worker }
15*c9945492SAndroid Build Coastguard Worker 
_pthread_cleanup_pop(struct __ptcb * cb,int run)16*c9945492SAndroid Build Coastguard Worker void _pthread_cleanup_pop(struct __ptcb *cb, int run)
17*c9945492SAndroid Build Coastguard Worker {
18*c9945492SAndroid Build Coastguard Worker 	__do_cleanup_pop(cb);
19*c9945492SAndroid Build Coastguard Worker 	if (run) cb->__f(cb->__x);
20*c9945492SAndroid Build Coastguard Worker }
21