cross-process mutexes

This commit is contained in:
Steven Dee (Jōshin) 2024-12-01 22:33:11 -05:00
parent 11ec93ce17
commit 0d65b692e1
No known key found for this signature in database

View file

@ -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);