authorgravatar for bill@axzez.comBill Nagel <bill@axzez.com> 2022-09-17 06:57:58-04:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-10-13 13:33:45+02:00
logea23217751c474140c7b46cbffa796a2f93f3ffb
tree9ff18713c1b49568f677010426c6e909a0deaadf
parentfb366f3cd4a8a28a2a66753acc53d06a0d88c838

enable event loop for ios, tvos, and watchos


1 files changed, 14 insertions(+), 11 deletions(-)

lib/std/event/loop.zig+14-11
......@@ -69,7 +69,7 @@ pub const Loop = struct {
6969 };
7070
7171 pub const EventFd = switch (builtin.os.tag) {
72 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventFd,
72 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventFd,
7373 .linux => struct {
7474 base: ResumeNode,
7575 epoll_op: u32,
......@@ -88,7 +88,7 @@ pub const Loop = struct {
8888 };
8989
9090 pub const Basic = switch (builtin.os.tag) {
91 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventBasic,
91 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventBasic,
9292 .linux => struct {
9393 base: ResumeNode,
9494 },
......@@ -269,7 +269,7 @@ pub const Loop = struct {
269269 self.extra_threads[extra_thread_index] = try Thread.spawn(.{}, workerRun, .{self});
270270 }
271271 },
272 .macos, .freebsd, .netbsd, .dragonfly => {
272 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly => {
273273 self.os_data.kqfd = try os.kqueue();
274274 errdefer os.close(self.os_data.kqfd);
275275
......@@ -457,7 +457,7 @@ pub const Loop = struct {
457457 while (self.available_eventfd_resume_nodes.pop()) |node| os.close(node.data.eventfd);
458458 os.close(self.os_data.epollfd);
459459 },
460 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
460 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
461461 os.close(self.os_data.kqfd);
462462 },
463463 .windows => {
......@@ -552,7 +552,7 @@ pub const Loop = struct {
552552 .linux => {
553553 self.linuxWaitFd(fd, os.linux.EPOLL.ET | os.linux.EPOLL.ONESHOT | os.linux.EPOLL.IN);
554554 },
555 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
555 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
556556 self.bsdWaitKev(@intCast(usize, fd), os.system.EVFILT_READ, os.system.EV_ONESHOT);
557557 },
558558 else => @compileError("Unsupported OS"),
......@@ -564,7 +564,7 @@ pub const Loop = struct {
564564 .linux => {
565565 self.linuxWaitFd(fd, os.linux.EPOLL.ET | os.linux.EPOLL.ONESHOT | os.linux.EPOLL.OUT);
566566 },
567 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
567 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
568568 self.bsdWaitKev(@intCast(usize, fd), os.system.EVFILT_WRITE, os.system.EV_ONESHOT);
569569 },
570570 else => @compileError("Unsupported OS"),
......@@ -576,7 +576,7 @@ pub const Loop = struct {
576576 .linux => {
577577 self.linuxWaitFd(fd, os.linux.EPOLL.ET | os.linux.EPOLL.ONESHOT | os.linux.EPOLL.OUT | os.linux.EPOLL.IN);
578578 },
579 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
579 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
580580 self.bsdWaitKev(@intCast(usize, fd), os.system.EVFILT_READ, os.system.EV_ONESHOT);
581581 self.bsdWaitKev(@intCast(usize, fd), os.system.EVFILT_WRITE, os.system.EV_ONESHOT);
582582 },
......@@ -645,7 +645,7 @@ pub const Loop = struct {
645645 const eventfd_node = &resume_stack_node.data;
646646 eventfd_node.base.handle = next_tick_node.data;
647647 switch (builtin.os.tag) {
648 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
648 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
649649 const kevent_array = @as(*const [1]os.Kevent, &eventfd_node.kevent);
650650 const empty_kevs = &[0]os.Kevent{};
651651 _ = os.kevent(self.os_data.kqfd, kevent_array, empty_kevs, null) catch {
......@@ -708,6 +708,9 @@ pub const Loop = struct {
708708 switch (builtin.os.tag) {
709709 .linux,
710710 .macos,
711 .ios,
712 .tvos,
713 .watchos,
711714 .freebsd,
712715 .netbsd,
713716 .dragonfly,
......@@ -802,7 +805,7 @@ pub const Loop = struct {
802805 }
803806 return;
804807 },
805 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
808 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
806809 const final_kevent = @as(*const [1]os.Kevent, &self.os_data.final_kevent);
807810 const empty_kevs = &[0]os.Kevent{};
808811 // cannot fail because we already added it and this just enables it
......@@ -1428,7 +1431,7 @@ pub const Loop = struct {
14281431 }
14291432 }
14301433 },
1431 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => {
1434 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => {
14321435 var eventlist: [1]os.Kevent = undefined;
14331436 const empty_kevs = &[0]os.Kevent{};
14341437 const count = os.kevent(self.os_data.kqfd, empty_kevs, eventlist[0..], null) catch unreachable;
......@@ -1554,7 +1557,7 @@ pub const Loop = struct {
15541557
15551558 const OsData = switch (builtin.os.tag) {
15561559 .linux => LinuxOsData,
1557 .macos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventData,
1560 .macos, .ios, .tvos, .watchos, .freebsd, .netbsd, .dragonfly, .openbsd => KEventData,
15581561 .windows => struct {
15591562 io_port: windows.HANDLE,
15601563 extra_thread_count: usize,