authorgravatar for me@benkrieger.devBen Krieger <me@benkrieger.dev> 2025-12-31 16:38:10-05:00
committergravatar for me@benkrieger.devBen Krieger <me@benkrieger.dev> 2025-12-31 16:40:34-05:00
log4ad8bc341328e289744a0cc796043d0dd52bb32d
tree57150806289287918d890c7c969de0387ef83d3e
parent9d497d0d7746d819dc5454361a03637a22ebf972

Make Io.Mutex an extern struct


1 files changed, 7 insertions(+), 1 deletions(-)

lib/std/Io.zig+7-1
...@@ -1348,7 +1348,13 @@ pub fn futexWake(io: Io, comptime T: type, ptr: *align(@alignOf(u32)) const T, m...@@ -1348,7 +1348,13 @@ pub fn futexWake(io: Io, comptime T: type, ptr: *align(@alignOf(u32)) const T, m
1348 return io.vtable.futexWake(io.userdata, @ptrCast(ptr), max_waiters);1348 return io.vtable.futexWake(io.userdata, @ptrCast(ptr), max_waiters);
1349}1349}
13501350
1351pub const Mutex = struct {1351/// Mutex is a synchronization primitive which enforces atomic access to a
1352/// shared region of code known as the "critical section".
1353///
1354/// Mutex is an extern struct so that it may be used as a field inside another
1355/// extern struct. Having a guaranteed memory layout including mutexes is
1356/// important for IPC over shared memory (mmap).
1357pub const Mutex = extern struct {
1352 state: std.atomic.Value(State),1358 state: std.atomic.Value(State),
13531359
1354 pub const init: Mutex = .{ .state = .init(.unlocked) };1360 pub const init: Mutex = .{ .state = .init(.unlocked) };