aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/vfs.zig20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/lib/vfs.zig b/src/lib/vfs.zig
index 22cba72..dc5194c 100644
--- a/src/lib/vfs.zig
+++ b/src/lib/vfs.zig
@@ -26,8 +26,8 @@ pub const Stream = struct {
readFn: ?ReadFn,
writeFn: ?WriteFn,
- pub const ReadFn = *const fn (buffer: []u8) sysexchange.Result(usize);
- pub const WriteFn = *const fn (bytes: []const u8) sysexchange.Result(usize);
+ pub const ReadFn = *const fn (ptr: [*]u8, len: usize) callconv(.C) sysexchange.Result(usize);
+ pub const WriteFn = *const fn (ptr: [*]const u8, len: usize) callconv(.C) sysexchange.Result(usize);
};
// A file is a resource that creates a unique data stream with a driver.
@@ -37,10 +37,10 @@ pub const File = struct {
writeFn: ?WriteFn,
closeFn: ?CloseFn,
- pub const OpenFn = *allowzero const fn (pid: u16) sysexchange.Result(*anyopaque);
- pub const ReadFn = *const fn (context: *anyopaque, buffer: []u8) sysexchange.Result(usize);
- pub const WriteFn = *const fn (context: *anyopaque, bytes: []const u8) sysexchange.Result(usize);
- pub const CloseFn = *const fn (context: *anyopaque) void;
+ pub const OpenFn = *allowzero const fn (pid: u16) callconv(.C) sysexchange.Result(*anyopaque);
+ pub const ReadFn = *const fn (context: *anyopaque, ptr: [*]u8, len: usize) callconv(.C) sysexchange.Result(usize);
+ pub const WriteFn = *const fn (context: *anyopaque, ptr: [*]const u8, len: usize) callconv(.C) sysexchange.Result(usize);
+ pub const CloseFn = *const fn (context: *anyopaque) callconv(.C) void;
};
// A hook is a resource that invokes raw driver callbacks when interacted with.
@@ -62,8 +62,8 @@ pub const DirHook = struct {
removeFn: RemoveFn,
pub const ProvideFn = *allowzero const fn (inode: Inode) sysexchange.Result(void);
- pub const FindFn = *allowzero const fn (name: []const u8) ?Inode;
- pub const RemoveFn = *allowzero const fn (name: []const u8) sysexchange.Result(void);
+ pub const FindFn = *allowzero const fn (name: [*:0]const u8) ?Inode;
+ pub const RemoveFn = *allowzero const fn (name: [*:0]const u8) sysexchange.Result(void);
};
pub const Resource = union(enum) {
@@ -137,7 +137,7 @@ pub const ResourceDescriptor = struct {
.stream => |stream| {
const readFn = stream.readFn orelse return Error.ReadNotSupported;
proc.state = .suspended;
- try call(self.inode.pid, readFn, .{buffer}, .{
+ try call(self.inode.pid, readFn, .{ buffer.ptr, buffer.len }, .{
.hookFn = crossProcessReturn,
.context = proc,
});
@@ -152,7 +152,7 @@ pub const ResourceDescriptor = struct {
.stream => |stream| {
const writeFn = stream.writeFn orelse return Error.WriteNotSupported;
proc.state = .suspended;
- try call(self.inode.pid, writeFn, .{bytes}, .{
+ try call(self.inode.pid, writeFn, .{ bytes.ptr, bytes.len }, .{
.hookFn = crossProcessReturn,
.context = proc,
});