haiku/headers/private/libroot/user_thread.h
2016-12-17 20:17:38 +01:00

42 lines
773 B
C

/*
* Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef _LIBROOT_USER_THREAD_H
#define _LIBROOT_USER_THREAD_H
#include <OS.h>
#include <TLS.h>
#include <tls.h>
#include <user_thread_defs.h>
static inline struct user_thread*
get_user_thread()
{
return (struct user_thread*)tls_get(TLS_USER_THREAD_SLOT);
}
static void inline
defer_signals()
{
get_user_thread()->defer_signals++;
}
static void inline
undefer_signals()
{
struct user_thread* thread = get_user_thread();
if (--thread->defer_signals == 0 && thread->pending_signals != 0) {
// signals shall no longer be deferred -- call a dummy syscall to handle
// the pending ones
is_computer_on();
}
}
#endif /* _LIBROOT_USER_THREAD_H */