From b025cf269d2e07e179be4a0e34d936862dc640c2 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 2 Jan 2025 20:29:55 -0500 Subject: Use `holding` blocks for mutexed data instead of lambdas --- stdlib/stdlib.c | 30 ------------------------------ 1 file changed, 30 deletions(-) (limited to 'stdlib/stdlib.c') diff --git a/stdlib/stdlib.c b/stdlib/stdlib.c index 0266e788..cb9d2213 100644 --- a/stdlib/stdlib.c +++ b/stdlib/stdlib.c @@ -621,34 +621,4 @@ public void sleep_num(double seconds) nanosleep(&ts, NULL); } -static void use_mutexed(Closure_t fn, void *userdata) -{ - void (*call)(void*, void*) = fn.fn; - struct data_t { - pthread_mutex_t mutex; - char item[0] __attribute__ ((aligned (8))); - }; - pthread_mutex_t *mutex = &((struct data_t*)userdata)->mutex; - pthread_mutex_lock(mutex); - void *mutexed_item = (void*)((struct data_t*)userdata)->item; - call(mutexed_item, fn.userdata); - pthread_mutex_unlock(mutex); -} - -public Closure_t _mutexed(const void *item, size_t size) -{ - struct data_t { - pthread_mutex_t mutex; - char item[size] __attribute__ ((aligned (8))); - }; - struct data_t *userdata = GC_MALLOC(sizeof(struct data_t)); - - pthread_mutex_init(&userdata->mutex, NULL); - memcpy(userdata->item, item, size); - return (Closure_t){ - .fn=(void*)use_mutexed, - .userdata=(void*)userdata, - }; -} - // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 -- cgit v1.2.3