diff options
-rw-r--r-- | src/lib/paging.zig | 6 | ||||
-rw-r--r-- | src/lib/process.zig | 42 |
2 files changed, 0 insertions, 48 deletions
diff --git a/src/lib/paging.zig b/src/lib/paging.zig index 870e4f7..d2d9e1a 100644 --- a/src/lib/paging.zig +++ b/src/lib/paging.zig @@ -589,9 +589,3 @@ pub fn zeroedAlloc(n: usize) AllocError![]align(page_size) u8 { return ret; } - -pub fn setUserMemoryAccess(enable: bool) void { - var sstatus = instructions.sstatus.read(); - sstatus.supervisor_user_memory_access = @bitCast(enable); - instructions.sstatus.write(sstatus); -} diff --git a/src/lib/process.zig b/src/lib/process.zig index 2fbab11..70ac9a2 100644 --- a/src/lib/process.zig +++ b/src/lib/process.zig @@ -144,48 +144,6 @@ pub const Info = struct { fn shouldTerminateThread(self: *const Info, candidate: *const Info) bool { return candidate.thread_id == self.thread_id or self.thread_id == 0; } - - pub fn copyBytes(self: *const Info, bytes: []const u8) ![]align(paging.page_size) const u8 { - const aligned_len = std.mem.alignForward(usize, bytes.len, paging.page_size); - const num_pages = @divExact(aligned_len, paging.page_size); - - const copy = try paging.zeroedAlloc(num_pages); - errdefer paging.free(copy); - - var addr = @intFromPtr(copy.ptr); - const limit = addr + copy.len; - while (addr < limit) : (addr += paging.page_size) { - try self.page_table.map(addr, addr, paging.EntryFlags.userReadOnly, 0); - errdefer self.page_table.unmapEntry(addr); - } - - paging.setUserMemoryAccess(true); - defer paging.setUserMemoryAccess(false); - - @memcpy(copy[0..bytes.len], bytes); - return copy[0..bytes.len]; - } - - pub fn copyBuffer(self: *const Info, buffer: []u8) ![]align(paging.page_size) u8 { - const aligned_len = std.mem.alignForward(usize, buffer.len, paging.page_size); - const num_pages = @divExact(aligned_len, paging.page_size); - - const copy = try paging.zeroedAlloc(num_pages); - errdefer paging.free(copy); - - var addr = @intFromPtr(copy.ptr); - const limit = addr + copy.len; - while (addr < limit) : (addr += paging.page_size) { - try self.page_table.map(addr, addr, paging.EntryFlags.userReadWrite, 0); - errdefer self.page_table.unmapEntry(addr); - } - - paging.setUserMemoryAccess(true); - defer paging.setUserMemoryAccess(false); - - @memcpy(copy[0..buffer.len], buffer); - return copy[0..buffer.len]; - } }; pub fn next() ?*Info { |