* Copyright 2008, Axel DΓΆrfler, axeld@pinc-software.de. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#include "pthread_private.h"
void
__pthread_cleanup_push_handler(__pthread_cleanup_handler* handler)
{
pthread_thread* thread = pthread_self();
if (thread == NULL)
return;
handler->previous = thread->cleanup_handlers;
thread->cleanup_handlers = handler;
}
__pthread_cleanup_handler*
__pthread_cleanup_pop_handler(void)
{
pthread_thread* thread = pthread_self();
if (thread == NULL)
return NULL;
__pthread_cleanup_handler* handler = thread->cleanup_handlers;
if (handler == NULL)
return NULL;
thread->cleanup_handlers = handler->previous;
return handler;
}