diff options
Diffstat (limited to 'src/lib/process.zig')
-rw-r--r-- | src/lib/process.zig | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/src/lib/process.zig b/src/lib/process.zig index b59d255..b5afade 100644 --- a/src/lib/process.zig +++ b/src/lib/process.zig @@ -318,27 +318,8 @@ pub fn create(allocator: Allocator, elf_buf: []align(@alignOf(elf.Elf64_Ehdr)) c return &proc_node.data; } -pub fn runInit(allocator: Allocator, reader: anytype) !noreturn { - var file_name_buffer: [4096]u8 = undefined; - var link_name_buffer: [4096]u8 = undefined; - - var it = std.tar.iterator(reader, .{ - .file_name_buffer = file_name_buffer[0..], - .link_name_buffer = link_name_buffer[0..], - }); - const exe = while (try it.next()) |file| { - if (std.mem.eql(u8, file.name, "./init")) { - break file; - } - } else return Error.NoInit; - - const alignment = @alignOf(elf.Elf64_Ehdr); - - var exe_list = std.ArrayListAligned(u8, alignment).init(allocator); - defer exe_list.deinit(); - try exe.reader().readAllArrayListAligned(alignment, &exe_list, exe.size); - - const proc = try create(allocator, exe_list.items); +pub fn run(allocator: Allocator, bytes: []align(@alignOf(elf.Elf64_Ehdr)) const u8) !noreturn { + const proc = try create(allocator, @alignCast(bytes[0..])); try time.interruptInMillis(schedule_interval_millis); switchTo(proc); |