#Trouble understanding compilation error

1 messages · Page 1 of 1 (latest)

quartz nacelle
#

Hello, I'm trying to read from a file descriptor into an array of C structs allocated on the stack. When compiling, I get the following error, can't figure out what it means.

Relevant piece of code:

while (true) {
    var ev = [_]c.input_event{undefined} ** 64;
    const events_one: std.os.linux.epoll_event = undefined;
    var events: [8]std.os.linux.epoll_event = .{events_one} ** 8;
    const res: usize = std.os.linux.epoll_wait(@as(i32, @intCast(epoll_fd)), &events, 8, -1);

    err = std.os.linux.E.init(res);
    if (err != std.os.linux.E.SUCCESS) {
        return error.EpollWait;
    }

    for (events) |event| {
        err = std.os.linux.read(event.data.fd, std.mem.asBytes(&ev), ev.len);
        if (err != std.os.linux.E.SUCCESS) {
            return error.ReadInput;
        }
    }
}

The error:

install
└─ install hardware
   └─ zig build-exe hardware Debug native 1 errors
src/main.zig:92:36: error: expected type 'os.linux.E__enum_3674', found 'usize'
            err = std.os.linux.read(event.data.fd, std.mem.asBytes(&ev), ev.len);
                  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/ataractic/.zig/zig-linux-x86_64/lib/std/os/linux.zig:2554:13: note: enum declared here
    else => enum(u16) {
            ^~~~
referenced by:
    main: /home/ataractic/.zig/zig-linux-x86_64/lib/std/start.zig:515:32
    remaining reference traces hidden; use '-freference-trace' to see all reference traces
blazing wagon
#

err is expected to be an usize

quartz nacelle