mirror of
https://github.com/rdmsr/zag.git
synced 2026-10-31 07:18:22 +00:00
ke: add lock warden
This commit is contained in:
+2
-1
@@ -22,7 +22,7 @@ pub var low_memory_event: ke.Event = undefined;
|
||||
|
||||
var memory_map: *r.BootInfo.MemMap = undefined;
|
||||
var early_allocs: usize = 0;
|
||||
var list_lock: ke.SpinLock = .init();
|
||||
var list_lock: ke.SpinLock = undefined;
|
||||
var free_list: rtl.List = undefined;
|
||||
|
||||
var free_page_event: ke.Event = undefined;
|
||||
@@ -155,6 +155,7 @@ pub fn init() linksection(r.init) void {
|
||||
free_list.init();
|
||||
free_page_event.init(.Notification);
|
||||
low_memory_event.init(.Notification);
|
||||
list_lock = ke.SpinLock.init("PageList");
|
||||
|
||||
var total_usable_memory: usize = memory_map.loader_memory_used;
|
||||
log.info("physical memory map:", .{});
|
||||
|
||||
+1
-1
@@ -37,5 +37,5 @@ pub const impl = switch (config.arch) {
|
||||
pub var kernel_space: Space = .{
|
||||
.pmap = undefined,
|
||||
.arena = undefined,
|
||||
.lock = .init(),
|
||||
.lock = undefined,
|
||||
};
|
||||
|
||||
+7
-5
@@ -193,7 +193,7 @@ var generic_zones: [generic_zones_num]Zone = undefined;
|
||||
|
||||
var magazines_initialized = false;
|
||||
var all_zones: ?*Zone = null;
|
||||
var zone_list_lock: ke.Mutex = .init();
|
||||
var zone_list_lock: ke.Mutex = undefined;
|
||||
|
||||
var magazine_zone: Zone = undefined;
|
||||
var cpu_zone: Zone = undefined;
|
||||
@@ -610,8 +610,8 @@ pub const Zone = struct {
|
||||
self.chunk_size = chunk_size;
|
||||
self.ctor = options.ctor;
|
||||
self.dtor = options.dtor;
|
||||
self.lock = .init();
|
||||
self.depot_lock = .init();
|
||||
self.lock = ke.Mutex.init("zone");
|
||||
self.depot_lock = ke.QSpinLock.init("zone_depot");
|
||||
self.use_magazines = options.magazines;
|
||||
|
||||
self.depot = std.mem.zeroes(Depot);
|
||||
@@ -659,7 +659,7 @@ pub const Zone = struct {
|
||||
self.cpus = cpus_alloc();
|
||||
|
||||
for (0..ke.ncpus) |i| {
|
||||
self.cpus[i].value.lock = .init();
|
||||
self.cpus[i].value.lock = ke.SpinLock.init("Depot");
|
||||
self.cpus[i].value.alloc = null;
|
||||
self.cpus[i].value.free = null;
|
||||
self.cpus[i].value.alloc_rounds = 0;
|
||||
@@ -1755,6 +1755,8 @@ pub fn TypedZone(comptime T: type) type {
|
||||
}
|
||||
|
||||
pub fn early_init() linksection(r.init) void {
|
||||
zone_list_lock = ke.Mutex.init("zone_list");
|
||||
|
||||
for (0..generic_zones.len, &generic_zones) |i, *zone| {
|
||||
zone.init(generic_zone_names[i], @as(usize, 1) << @intCast(i + 3), .{});
|
||||
}
|
||||
@@ -1786,7 +1788,7 @@ pub fn late_init() linksection(r.init) void {
|
||||
|
||||
for (0..ke.ncpus) |i| {
|
||||
z.cpus[i] = .init(.{
|
||||
.lock = .init(),
|
||||
.lock = ke.SpinLock.init("Magazine"),
|
||||
.alloc = null,
|
||||
.free = null,
|
||||
.alloc_rounds = 0,
|
||||
|
||||
Reference in New Issue
Block a user