zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3ba451778fde48a5463180deea6d6539f91e1303 (tree)
parent 04d3da4bd1d5b8922d3f161c92c6185f33961523
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Mon,  9 Jul 2018 01:22:36 -0400

fix regressions on linux

Diffstat:
Mstd/event.zig | 30+++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/std/event.zig b/std/event.zig @@ -136,10 +136,7 @@ pub const Loop = struct { }; pub const EventFd = switch (builtin.os) { - builtin.Os.macosx => struct { - base: ResumeNode, - kevent: posix.Kevent, - }, + builtin.Os.macosx => MacOsEventFd, builtin.Os.linux => struct { base: ResumeNode, epoll_op: u32, @@ -147,6 +144,11 @@ pub const Loop = struct { }, else => @compileError("unsupported OS"), }; + + const MacOsEventFd = struct { + base: ResumeNode, + kevent: posix.Kevent, + }; }; /// After initialization, call run(). @@ -276,10 +278,10 @@ pub const Loop = struct { .handle = undefined, }, // this one is for sending events - .kevent = posix.Kevent { + .kevent = posix.Kevent{ .ident = i, .filter = posix.EVFILT_USER, - .flags = posix.EV_CLEAR|posix.EV_ADD|posix.EV_DISABLE, + .flags = posix.EV_CLEAR | posix.EV_ADD | posix.EV_DISABLE, .fflags = 0, .data = 0, .udata = @ptrToInt(&eventfd_node.data.base), @@ -290,10 +292,10 @@ pub const Loop = struct { self.available_eventfd_resume_nodes.push(eventfd_node); const kevent_array = (*[1]posix.Kevent)(&eventfd_node.data.kevent); _ = try std.os.bsdKEvent(self.os_data.kqfd, kevent_array, eventlist, null); - eventfd_node.data.kevent.flags = posix.EV_CLEAR|posix.EV_ENABLE; + eventfd_node.data.kevent.flags = posix.EV_CLEAR | posix.EV_ENABLE; eventfd_node.data.kevent.fflags = posix.NOTE_TRIGGER; // this one is for waiting for events - self.os_data.kevents[i] = posix.Kevent { + self.os_data.kevents[i] = posix.Kevent{ .ident = i, .filter = posix.EVFILT_USER, .flags = 0, @@ -542,13 +544,15 @@ pub const Loop = struct { final_eventfd: i32, final_eventfd_event: std.os.linux.epoll_event, }, - builtin.Os.macosx => struct { - kqfd: i32, - final_kevent: posix.Kevent, - kevents: []posix.Kevent, - }, + builtin.Os.macosx => MacOsData, else => struct {}, }; + + const MacOsData = struct { + kqfd: i32, + final_kevent: posix.Kevent, + kevents: posix.Kevent, + }; }; /// many producer, many consumer, thread-safe, lock-free, runtime configurable buffer size