From 0d65b692e1ff592b6848cfd73ca3c4f2f0a09814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Dee=20=28J=C5=8Dshin=29?= Date: Sun, 1 Dec 2024 22:33:11 -0500 Subject: [PATCH] cross-process mutexes --- tool/net/redbean.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tool/net/redbean.c b/tool/net/redbean.c index a2f815e55..19ea17d1b 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -7376,6 +7376,14 @@ void RedBean(int argc, char *argv[]) { (shared = mmap(NULL, ROUNDUP(sizeof(struct Shared), getgransize()), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0))); + pthread_mutexattr_t attr; + unassert(pthread_mutexattr_init(&attr)); + unassert(pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED)); + unassert(pthread_mutex_init(&shared->datetime_mu, &attr)); + unassert(pthread_mutex_init(&shared->server_mu, &attr)); + unassert(pthread_mutex_init(&shared->children_mu, &attr)); + unassert(pthread_mutex_init(&shared->lastmeltdown_mu, &attr)); + unassert(pthread_mutexattr_destroy(&attr)); if (daemonize) { for (int i = 0; i < 256; ++i) { close(i);