⛏️ index : haiku.git

/*
 * 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;
}