ke: add lock warden

This commit is contained in:
Loïc Grégoire
2026-10-04 11:10:35 -04:00
parent dd2161179d
commit b802919fc2
23 changed files with 496 additions and 49 deletions
+7 -15
View File
@@ -7,7 +7,7 @@ const ke = r.ke;
const kep = ke.private;
const bv = r.bv;
var out_lock: ke.SpinLock = .init();
var out_lock: ke.SpinLock = undefined;
const DebugWriter = struct {
interface: std.Io.Writer,
@@ -48,25 +48,17 @@ pub var ringbuffer = kep.log_ring.RingBuffer(
avg_msg_size_bits,
).init();
// Initialize manually because we need this ASAP.
pub var event: ke.Event = .{
.hdr = .{
.lock = .init(),
.signaled = 0,
.type = .Notification,
.waitblocks = .{
.head = .{
.next = &event.hdr.waitblocks.head,
.prev = &event.hdr.waitblocks.head,
},
},
},
};
pub var event: ke.Event = undefined;
pub fn init() void {
out_lock = ke.SpinLock.init("");
event.init(.Notification);
}
pub fn force_release_lock() void {
out_lock.release_no_ipl();
}
pub fn log(
comptime level: std.log.Level,
comptime scope: @EnumLiteral(),