aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/paging.zig6
-rw-r--r--src/lib/process.zig42
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 {