pthread_cleanup_push.c raw

   1  #include "pthread_impl.h"
   2  
   3  static void dummy(struct __ptcb *cb)
   4  {
   5  }
   6  weak_alias(dummy, __do_cleanup_push);
   7  weak_alias(dummy, __do_cleanup_pop);
   8  
   9  void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
  10  {
  11  	cb->__f = f;
  12  	cb->__x = x;
  13  	__do_cleanup_push(cb);
  14  }
  15  
  16  void _pthread_cleanup_pop(struct __ptcb *cb, int run)
  17  {
  18  	__do_cleanup_pop(cb);
  19  	if (run) cb->__f(cb->__x);
  20  }
  21