Skip to content

Commit

Permalink
Hide ev_thread_key_t
Browse files Browse the repository at this point in the history
  • Loading branch information
qgymib committed Dec 27, 2024
1 parent 006873a commit 078679e
Show file tree
Hide file tree
Showing 11 changed files with 178 additions and 142 deletions.
113 changes: 69 additions & 44 deletions ev.c
Original file line number Diff line number Diff line change
Expand Up @@ -3865,14 +3865,14 @@ EV_LOCAL void ev__backend_shutdown(void)
// #line 40 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/win/mutex_win.c
// SIZE: 746
// SHA-256: bc8cb146ca579cc8031f31da769da05062f2cdfec1c32a1af706c5b22710e99a
// SIZE: 749
// SHA-256: 83538d7b70959dee0d4d12a8bf40a1a58f5fff4b9d9fbef69194393529c968a1
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/win/mutex_win.c"

struct ev_mutex
{
ev_os_mutex_t r; /**< Real mutex */
CRITICAL_SECTION r; /**< Real mutex */
};

void ev_mutex_init(ev_mutex_t **handle, int recursive)
Expand Down Expand Up @@ -6175,14 +6175,14 @@ ssize_t ev_exepath(char* buffer, size_t size)
// #line 44 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/win/sem_win.c
// SIZE: 1363
// SHA-256: d4efbaacb95cc460d97ffd3a1be565951b87bf55fa5108c7873f8a2071f5848b
// SIZE: 1358
// SHA-256: 38e4841db4ec5e96c9ced518157f7483af2335ad868bd216bb2b9c1505fc1e87
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/win/sem_win.c"

struct ev_sem_s
{
ev_os_sem_t r;
HANDLE r;
};

void ev_sem_init(ev_sem_t **sem, unsigned value)
Expand Down Expand Up @@ -7319,8 +7319,8 @@ EV_LOCAL int ev__tcp_open_win(ev_tcp_t *tcp, SOCKET fd)
// #line 48 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/win/thread_win.c
// SIZE: 4302
// SHA-256: 2f8464e209bc4e625247d3fd40002771ad68a3321766f18ade8d65bc22c63cf8
// SIZE: 4563
// SHA-256: 0d9d67e3fd8d0adf3189314d46966150cfa2c14fa8534b20e9f790e7b7e0c904
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/win/thread_win.c"
#include <process.h>
Expand All @@ -7330,6 +7330,11 @@ struct ev_thread
HANDLE thread;
};

struct ev_thread_key
{
DWORD tls; /**< Thread local storage */
};

typedef struct ev_thread_helper_win
{
ev_thread_cb cb; /**< User thread body */
Expand Down Expand Up @@ -7467,46 +7472,51 @@ void ev_thread_sleep(uint32_t timeout)
Sleep(timeout);
}

int ev_tls_init(ev_tls_t *tls)
int ev_thread_key_init(ev_thread_key_t **key)
{
int err;
if ((tls->tls = TlsAlloc()) == TLS_OUT_OF_INDEXES)
ev_thread_key_t *new_key = ev_malloc(sizeof(ev_thread_key_t));
if (new_key == NULL)
{
err = GetLastError();
return EV_ENOMEM;
}

if ((new_key->tls = TlsAlloc()) == TLS_OUT_OF_INDEXES)
{
DWORD err = GetLastError();
ev_free(new_key);
return ev__translate_sys_error(err);
}

*key = new_key;
return 0;
}

void ev_tls_exit(ev_tls_t *tls)
void ev_thread_key_exit(ev_thread_key_t *key)
{
DWORD errcode;
if (TlsFree(tls->tls) == FALSE)
if (TlsFree(key->tls) == FALSE)
{
errcode = GetLastError();
DWORD errcode = GetLastError();
EV_ABORT("GetLastError:%lu", errcode);
}
tls->tls = TLS_OUT_OF_INDEXES;
ev_free(key);
}

void ev_tls_set(ev_tls_t *tls, void *val)
void ev_thread_key_set(ev_thread_key_t *key, void *val)
{
DWORD errcode;
if (TlsSetValue(tls->tls, val) == FALSE)
if (TlsSetValue(key->tls, val) == FALSE)
{
errcode = GetLastError();
DWORD errcode = GetLastError();
EV_ABORT("GetLastError:%lu", errcode);
}
}

void *ev_tls_get(ev_tls_t *tls)
void *ev_thread_key_get(ev_thread_key_t *key)
{
DWORD errcode;
void *val = TlsGetValue(tls->tls);
void *val = TlsGetValue(key->tls);
if (val == NULL)
{
if ((errcode = GetLastError()) != ERROR_SUCCESS)
DWORD errcode = GetLastError();
if (errcode != ERROR_SUCCESS)
{
EV_ABORT("GetLastError:%lu", errcode);
}
Expand Down Expand Up @@ -11004,14 +11014,14 @@ EV_LOCAL int ev__random(void* buf, size_t len)
// #line 71 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/unix/mutex_unix.c
// SIZE: 2023
// SHA-256: 0bfe750223ef4f1e677414bb24694ca7700a497713d43d927ade733e3546622f
// SIZE: 2025
// SHA-256: 2fc701d76616e1d7e7f329e135c59e8e4e5f47e340e1f63def9feabfc93bf000
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/unix/mutex_unix.c"

struct ev_mutex
{
ev_os_mutex_t r; /**< Real mutex */
pthread_mutex_t r; /**< Real mutex */
};

static void _ev_mutex_init_unix(ev_os_mutex_t *handle)
Expand Down Expand Up @@ -12894,14 +12904,14 @@ ssize_t ev_exepath(char *buffer, size_t size)
// #line 75 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/unix/sem_unix.c
// SIZE: 969
// SHA-256: e74ab232fd73fad192840b3c17bf96cafe08f59c003f200236e8eba9b006d2d7
// SIZE: 963
// SHA-256: 001d29bb77aac9adb412d764e0f2d46fde5e33d5fbc0de29f63d763b6eff9904
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/unix/sem_unix.c"

struct ev_sem_s
{
ev_os_sem_t r;
sem_t r;
};

void ev_sem_init(ev_sem_t **sem, unsigned value)
Expand Down Expand Up @@ -13993,8 +14003,8 @@ EV_LOCAL int ev__tcp_open(ev_tcp_t *tcp, int fd)
// #line 80 "ev.c"
////////////////////////////////////////////////////////////////////////////////
// FILE: ev/unix/thread_unix.c
// SIZE: 4160
// SHA-256: d50db492b3c005c0e428bbf5dbcfabeb5207c2a15751f2f4f4319000852529bf
// SIZE: 4496
// SHA-256: 13b9aee2aa71d4bdf5bb081742e23eb63fe086866e1565ec37b028d1f83e50b9
////////////////////////////////////////////////////////////////////////////////
// #line 1 "ev/unix/thread_unix.c"
#define _GNU_SOURCE
Expand All @@ -14008,6 +14018,11 @@ struct ev_thread
pthread_t thr;
};

struct ev_thread_key
{
pthread_key_t tls; /**< Thread local storage */
};

typedef struct ev_thread_helper_unix
{
ev_thread_cb cb;
Expand Down Expand Up @@ -14172,37 +14187,47 @@ void ev_thread_sleep(uint32_t timeout)
}
}

int ev_tls_init(ev_tls_t *tls)
int ev_thread_key_init(ev_thread_key_t **key)
{
int ret = pthread_key_create(&tls->tls, NULL);
if (ret == 0)
ev_thread_key_t *new_key = ev_malloc(sizeof(ev_thread_key_t));
if (new_key == NULL)
{
return 0;
return EV_ENOMEM;
}
return ev__translate_sys_error(ret);

int ret = pthread_key_create(&new_key->tls, NULL);
if (ret != 0)
{
ev_free(new_key);
return ev__translate_sys_error(ret);
}

*key = new_key;
return 0;
}

void ev_tls_exit(ev_tls_t *tls)
void ev_thread_key_exit(ev_thread_key_t *key)
{
int ret = pthread_key_delete(tls->tls);
int ret = pthread_key_delete(key->tls);
if (ret != 0)
{
EV_ABORT();
}
ev_free(key);
}

void ev_tls_set(ev_tls_t *tls, void *val)
void ev_thread_key_set(ev_thread_key_t *key, void *val)
{
int ret = pthread_setspecific(tls->tls, val);
int ret = pthread_setspecific(key->tls, val);
if (ret != 0)
{
EV_ABORT();
}
}

void *ev_tls_get(ev_tls_t *tls)
void *ev_thread_key_get(ev_thread_key_t *key)
{
return pthread_getspecific(tls->tls);
return pthread_getspecific(key->tls);
}

// #line 81 "ev.c"
Expand Down
Loading

0 comments on commit 078679e

Please sign in to comment.