summaryrefslogtreecommitdiff
path: root/src/deque.c
diff options
context:
space:
mode:
authorsteven-na <noreply.github@stvnc.dev>2026-08-14 04:04:18 -0700
committersteven-na <noreply.github@stvnc.dev>2026-08-14 04:04:18 -0700
commitabc88dd876c9aab0690074fc29802ca99060b7a7 (patch)
tree940869f98246bc6e2d6617b0f783fb2608e2265d /src/deque.c
parent0a8bbe0ac3a45f2ff3975d4de07332b25649ba9f (diff)
Allocate on arena
Diffstat (limited to 'src/deque.c')
-rw-r--r--src/deque.c11
1 files changed, 5 insertions, 6 deletions
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) {