#include "Internal.h" #include "Codemap.h" #include #include CgeTss *CgeTssNew(CgeTssCallback callback, int *result) { CgeTss *tss; int code = CGE_THREAD_EOOM; tss = malloc(sizeof(*tss)); if (tss && (code = errorToErrorCode(pthread_key_create(&tss->handle, callback)))) { free(tss); tss = NULL; } if (result) *result = code; return tss; } void CgeTssFree(CgeTss *tss) { if (!tss) return; pthread_key_delete(tss->handle); free(tss); } void *CgeTssRead(CgeTss *tss) { return pthread_getspecific(tss->handle); } void CgeTssWrite(CgeTss *tss, void *value) { pthread_setspecific(tss->handle, value); }