32 #ifndef ZYCORE_API_THREAD_H
33 #define ZYCORE_API_THREAD_H
48 #if defined(ZYAN_POSIX)
59 typedef pthread_t ZyanThread;
64 typedef ZyanU64 ZyanThreadId;
73 typedef pthread_key_t ZyanThreadTlsIndex;
78 typedef 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)
103 typedef HANDLE ZyanThread;
108 typedef DWORD ZyanThreadId;
117 typedef DWORD ZyanThreadTlsIndex;
122 typedef 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:221
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)