From abc88dd876c9aab0690074fc29802ca99060b7a7 Mon Sep 17 00:00:00 2001 From: steven-na Date: Fri, 14 Aug 2026 04:04:18 -0700 Subject: Allocate on arena --- src/deque.c | 11 +++++------ src/deque.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/deque.c b/src/deque.c index 35f1907..9b63b55 100644 --- a/src/deque.c +++ b/src/deque.c @@ -37,11 +37,12 @@ void *ez_deque_pop(ez_deque_t *q) { return (u8*)q + pop_pos; } -ts_deque_t ts_deque_create(ez_deque_t *q) { - pthread_mutex_t *m = malloc(sizeof(pthread_mutex_t)); - *m = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; +// Sync constructs are allocated on arena +ts_deque_t ts_deque_create(smrt_arena_t *arena, ez_deque_t *q) { + pthread_mutex_t *m = smrt_arena_push(arena, sizeof(pthread_mutex_t), true); + pthread_mutex_init(m, NULL); - sem_t *s = malloc(sizeof(sem_t)); + sem_t *s = smrt_arena_push(arena, sizeof(sem_t), true); sem_init(s, 0, 0); return (ts_deque_t){ @@ -53,9 +54,7 @@ ts_deque_t ts_deque_create(ez_deque_t *q) { void ts_deque_destroy(ts_deque_t tsq) { sem_destroy(tsq.count_sem); - free(tsq.count_sem); pthread_mutex_destroy(tsq.write_lock); - free(tsq.write_lock); } b32 ts_deque_enqueue(ts_deque_t tsq, void *elem) { diff --git a/src/deque.h b/src/deque.h index e254bfb..65b1ca8 100644 --- a/src/deque.h +++ b/src/deque.h @@ -34,7 +34,7 @@ pthread_mutex_t *write_lock; sem_t * count_sem; } ts_deque_t; -ts_deque_t ts_deque_create(ez_deque_t * q); +ts_deque_t ts_deque_create(smrt_arena_t *arena, ez_deque_t * q); void ts_deque_destroy(ts_deque_t tsq); // Deal with re-enqueueing yourself -- cgit v1.2.3