summaryrefslogblamecommitdiff
path: root/src/thread/pthread_cleanup_push.c
blob: 9b21764b56b0bea71300b30dedaf950248135112 (plain) (tree)
1
2
3
4
5
6
7
8
9

                         




                                     
 
                                                                         
 

                    
                              

 
                                                     
 
                             
                                  
 
#include "pthread_impl.h"

static void dummy(struct __ptcb *cb)
{
}
weak_alias(dummy, __do_cleanup_push);
weak_alias(dummy, __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);
}

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