32#ifndef ZYCORE_API_THREAD_H
33#define ZYCORE_API_THREAD_H
48#if defined(ZYAN_POSIX)
59typedef pthread_t ZyanThread;
64typedef ZyanU64 ZyanThreadId;
73typedef pthread_key_t ZyanThreadTlsIndex;
78typedef void(*ZyanThreadTlsCallback)(
void* data);
87#define ZYAN_THREAD_DECLARE_TLS_CALLBACK(name, param_type, param_name) \
88 void name(param_type* param_name)
92#elif defined(ZYAN_WINDOWS)
103typedef HANDLE ZyanThread;
108typedef DWORD ZyanThreadId;
117typedef DWORD ZyanThreadTlsIndex;
122typedef PFLS_CALLBACK_FUNCTION ZyanThreadTlsCallback;
131#define ZYAN_THREAD_DECLARE_TLS_CALLBACK(name, param_type, param_name) \
132 VOID NTAPI name(param_type* param_name)
137# error "Unsupported platform detected"
199 ZyanThreadTlsCallback destructor);
#define ZYCORE_EXPORT
Definition Defines.h:227
ZyanU32 ZyanStatus
Definition Status.h:48
ZYCORE_EXPORT ZyanStatus ZyanThreadTlsGetValue(ZyanThreadTlsIndex index, void **data)
ZYCORE_EXPORT ZyanStatus ZyanThreadTlsSetValue(ZyanThreadTlsIndex index, void *data)
ZYCORE_EXPORT ZyanStatus ZyanThreadTlsFree(ZyanThreadTlsIndex index)
ZYCORE_EXPORT ZyanStatus ZyanThreadTlsAlloc(ZyanThreadTlsIndex *index, ZyanThreadTlsCallback destructor)
ZYCORE_EXPORT ZyanStatus ZyanThreadGetCurrentThread(ZyanThread *thread)
ZYCORE_EXPORT ZyanStatus ZyanThreadGetCurrentThreadId(ZyanThreadId *thread_id)