simulator: Add PRNG field

This commit is contained in:
2026-06-08 10:11:00 +02:00
parent 92f301ea40
commit bad44c36f1
13 changed files with 18 additions and 14 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ const programC = @import("projectC/main.zig").main;
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
// Associate executable names to zig entry functions // Associate executable names to zig entry functions
+1 -1
View File
@@ -32,7 +32,7 @@ fn deleteDirProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("delete_dir", deleteDirProgram); try sim.addExecutable("delete_dir", deleteDirProgram);
+1 -1
View File
@@ -25,7 +25,7 @@ fn deleteFileProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("delete_file", deleteFileProgram); try sim.addExecutable("delete_file", deleteFileProgram);
+1 -1
View File
@@ -28,7 +28,7 @@ fn directoriesProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("directories", directoriesProgram); try sim.addExecutable("directories", directoriesProgram);
+1 -1
View File
@@ -29,7 +29,7 @@ fn programC(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
// Associate executable names to zig entry functions // Associate executable names to zig entry functions
+1 -1
View File
@@ -23,7 +23,7 @@ fn listDirProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("list_dir", listDirProgram); try sim.addExecutable("list_dir", listDirProgram);
+1 -1
View File
@@ -13,7 +13,7 @@ fn createFileProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("create_file", createFileProgram); try sim.addExecutable("create_file", createFileProgram);
+1 -1
View File
@@ -23,7 +23,7 @@ fn readFileProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("read_file", readFileProgram); try sim.addExecutable("read_file", readFileProgram);
+1 -1
View File
@@ -26,7 +26,7 @@ fn program(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("select_group_async", program); try sim.addExecutable("select_group_async", program);
+1 -1
View File
@@ -21,7 +21,7 @@ fn fastProgram(init: std.process.Init) anyerror!void {
pub fn main(init: std.process.Init) !void { pub fn main(init: std.process.Init) !void {
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("slow", slowProgram); try sim.addExecutable("slow", slowProgram);
+1 -1
View File
@@ -63,7 +63,7 @@ pub fn main(init: std.process.Init) !void {
const server_addresses = [_]u32{std.mem.readInt(u32, &server_ip.bytes, .big)}; const server_addresses = [_]u32{std.mem.readInt(u32, &server_ip.bytes, .big)};
var sim: Simulator = undefined; var sim: Simulator = undefined;
sim.init(std.heap.page_allocator, init.io); sim.init(std.heap.page_allocator, init.io, 0);
defer sim.deinit(); defer sim.deinit();
try sim.addExecutable("server", serverProgram); try sim.addExecutable("server", serverProgram);
+3 -1
View File
@@ -70,14 +70,16 @@ const Task = struct {
}; };
gpa: Allocator, gpa: Allocator,
prng: *std.Random.DefaultPrng,
tasks: std.ArrayList(Task), tasks: std.ArrayList(Task),
regs: Registers, regs: Registers,
current_id: ?TaskID, current_id: ?TaskID,
current_time: u64, current_time: u64,
next_task_id: u64, next_task_id: u64,
pub fn init(self: *Scheduler, gpa: Allocator) void { pub fn init(self: *Scheduler, gpa: Allocator, prng: *std.Random.DefaultPrng) void {
self.gpa = gpa; self.gpa = gpa;
self.prng = prng;
self.tasks = .empty; self.tasks = .empty;
self.current_id = null; self.current_id = null;
self.current_time = 0; self.current_time = 0;
+4 -2
View File
@@ -25,15 +25,17 @@ const ExecutableName = struct {
}; };
gpa: Allocator, gpa: Allocator,
prng: std.Random.DefaultPrng,
scheduler: Scheduler, scheduler: Scheduler,
network: Network, network: Network,
nodes: std.ArrayList(*Node), nodes: std.ArrayList(*Node),
executables: std.ArrayList(ExecutableName), executables: std.ArrayList(ExecutableName),
real_io: std.Io, real_io: std.Io,
pub fn init(self: *Simulator, gpa: Allocator, real_io: std.Io) void { pub fn init(self: *Simulator, gpa: Allocator, real_io: std.Io, seed: u64) void {
self.gpa = gpa; self.gpa = gpa;
self.scheduler.init(gpa); self.prng = std.Random.DefaultPrng.init(seed);
self.scheduler.init(gpa, &self.prng);
self.network.init(gpa); self.network.init(gpa);
self.nodes = .empty; self.nodes = .empty;
self.executables = .empty; self.executables = .empty;