Files
CgeThread/posix/Tss.c

37 lines
707 B
C
Raw Normal View History

2026-08-09 12:55:16 +03:00
#include "Internal.h"
#include "Codemap.h"
#include <stdlib.h>
#include <string.h>
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);
}