io-event 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/IO_Event.so +0 -0
- data/ext/Makefile +29 -30
- data/ext/epoll.o +0 -0
- data/ext/event.o +0 -0
- data/ext/extconf.h +3 -1
- data/ext/interrupt.o +0 -0
- data/ext/io/event/interrupt.c +6 -6
- data/ext/io/event/interrupt.h +4 -0
- data/ext/io/event/selector/epoll.c +19 -14
- data/ext/io/event/selector/kqueue.c +15 -1
- data/ext/io/event/selector/selector.h +2 -0
- data/ext/io/event/selector/uring.c +8 -10
- data/ext/mkmf.log +83 -60
- data/ext/selector.o +0 -0
- data/ext/uring.o +0 -0
- data/lib/io/event/selector/select.rb +6 -1
- data/lib/io/event/version.rb +1 -1
- metadata +8 -7
- data/ext/IO_Event.bundle +0 -0
- data/ext/kqueue.o +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42c3a881e6ec0701f4801997d37fb0db726b8be237113e1d18216124b3780696
|
4
|
+
data.tar.gz: bed05a684ba79871945e6d89752dafb39a04d46e1423bc22736f270995c6777a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf07851ef3309a9dc0d8dde93f4ef7f7ccab6c5757ddae1d713cccca5f3b3990d167c83847f991752a4c2627895404aebc4d605287a6e2db7cf44e5176f0205b
|
7
|
+
data.tar.gz: b5aa5dabb62b5ca20e0feb6918e5f6683a0e234fcda431ff527cf884c4d0aacc026f60c534fd66a07fe963bb4acee802bd93f355aec98d96cccdd47e0aafb8af
|
data/ext/IO_Event.so
ADDED
Binary file
|
data/ext/Makefile
CHANGED
@@ -12,12 +12,12 @@ NULLCMD = :
|
|
12
12
|
#### Start of system configuration section. ####
|
13
13
|
|
14
14
|
srcdir = .
|
15
|
-
topdir = /
|
15
|
+
topdir = /home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0
|
16
16
|
hdrdir = $(topdir)
|
17
|
-
arch_hdrdir = /
|
17
|
+
arch_hdrdir = /home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux
|
18
18
|
PATH_SEPARATOR = :
|
19
19
|
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir)/io/event:$(srcdir)/io/event/selector
|
20
|
-
prefix = $(DESTDIR)/
|
20
|
+
prefix = $(DESTDIR)/home/samuel/.rubies/ruby-3.0.3
|
21
21
|
rubysitearchprefix = $(rubylibprefix)/$(sitearch)
|
22
22
|
rubyarchprefix = $(rubylibprefix)/$(arch)
|
23
23
|
rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
|
@@ -50,7 +50,7 @@ dvidir = $(docdir)
|
|
50
50
|
htmldir = $(docdir)
|
51
51
|
infodir = $(datarootdir)/info
|
52
52
|
docdir = $(datarootdir)/doc/$(PACKAGE)
|
53
|
-
oldincludedir = $(
|
53
|
+
oldincludedir = $(DESTDIR)/usr/include
|
54
54
|
includedir = $(prefix)/include
|
55
55
|
runstatedir = $(localstatedir)/run
|
56
56
|
localstatedir = $(prefix)/var
|
@@ -65,12 +65,12 @@ archdir = $(rubyarchdir)
|
|
65
65
|
|
66
66
|
|
67
67
|
CC_WRAPPER =
|
68
|
-
CC =
|
69
|
-
CXX =
|
68
|
+
CC = gcc
|
69
|
+
CXX = g++
|
70
70
|
LIBRUBY = $(LIBRUBY_A)
|
71
71
|
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
72
|
-
LIBRUBYARG_SHARED =
|
73
|
-
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
72
|
+
LIBRUBYARG_SHARED = -Wl,-rpath,$(libdir) -L$(libdir)
|
73
|
+
LIBRUBYARG_STATIC = -Wl,-rpath,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)-static $(MAINLIBS)
|
74
74
|
empty =
|
75
75
|
OUTFLAG = -o $(empty)
|
76
76
|
COUTFLAG = -o $(empty)
|
@@ -81,31 +81,31 @@ cflags = $(optflags) $(debugflags) $(warnflags)
|
|
81
81
|
cxxflags =
|
82
82
|
optflags = -O3
|
83
83
|
debugflags = -ggdb3
|
84
|
-
warnflags = -Wall -Wextra -Wdeprecated-declarations -
|
84
|
+
warnflags = -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable
|
85
85
|
cppflags =
|
86
|
-
CCDLFLAGS = -
|
87
|
-
CFLAGS = $(CCDLFLAGS) $(cflags) -
|
86
|
+
CCDLFLAGS = -fPIC
|
87
|
+
CFLAGS = $(CCDLFLAGS) $(cflags) -Wall $(ARCH_FLAG)
|
88
88
|
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
|
89
89
|
DEFS =
|
90
|
-
CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\"
|
90
|
+
CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\" $(DEFS) $(cppflags)
|
91
91
|
CXXFLAGS = $(CCDLFLAGS) $(ARCH_FLAG)
|
92
|
-
ldflags = -L. -fstack-protector-strong -
|
93
|
-
dldflags = -Wl
|
94
|
-
ARCH_FLAG =
|
92
|
+
ldflags = -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic
|
93
|
+
dldflags = -Wl,--compress-debug-sections=zlib
|
94
|
+
ARCH_FLAG =
|
95
95
|
DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
|
96
|
-
LDSHARED = $(CC) -
|
97
|
-
LDSHAREDXX = $(CXX) -
|
98
|
-
AR = ar
|
96
|
+
LDSHARED = $(CC) -shared
|
97
|
+
LDSHAREDXX = $(CXX) -shared
|
98
|
+
AR = gcc-ar
|
99
99
|
EXEEXT =
|
100
100
|
|
101
101
|
RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
|
102
|
-
RUBY_SO_NAME = ruby
|
102
|
+
RUBY_SO_NAME = ruby
|
103
103
|
RUBYW_INSTALL_NAME =
|
104
104
|
RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
|
105
105
|
RUBYW_BASE_NAME = rubyw
|
106
106
|
RUBY_BASE_NAME = ruby
|
107
107
|
|
108
|
-
arch =
|
108
|
+
arch = x86_64-linux
|
109
109
|
sitearch = $(arch)
|
110
110
|
ruby_version = 3.0.0
|
111
111
|
ruby = $(bindir)/$(RUBY_BASE_NAME)
|
@@ -114,9 +114,9 @@ ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h
|
|
114
114
|
|
115
115
|
RM = rm -f
|
116
116
|
RM_RF = $(RUBY) -run -e rm -- -rf
|
117
|
-
RMDIRS = rmdir -p
|
118
|
-
MAKEDIRS = /
|
119
|
-
INSTALL = /
|
117
|
+
RMDIRS = rmdir --ignore-fail-on-non-empty -p
|
118
|
+
MAKEDIRS = /usr/bin/mkdir -p
|
119
|
+
INSTALL = /usr/bin/install -c
|
120
120
|
INSTALL_PROG = $(INSTALL) -m 0755
|
121
121
|
INSTALL_DATA = $(INSTALL) -m 644
|
122
122
|
COPY = cp
|
@@ -125,8 +125,8 @@ TOUCH = exit >
|
|
125
125
|
#### End of system configuration section. ####
|
126
126
|
|
127
127
|
preload =
|
128
|
-
libpath = . $(libdir)
|
129
|
-
LIBPATH = -L. -L$(libdir) -
|
128
|
+
libpath = . $(libdir)
|
129
|
+
LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir)
|
130
130
|
DEFFILE =
|
131
131
|
|
132
132
|
CLEANFILES = mkmf.log
|
@@ -137,16 +137,16 @@ extout =
|
|
137
137
|
extout_prefix =
|
138
138
|
target_prefix =
|
139
139
|
LOCAL_LIBS =
|
140
|
-
LIBS =
|
140
|
+
LIBS = -luring -lm -lc
|
141
141
|
ORIG_SRCS =
|
142
|
-
SRCS = $(ORIG_SRCS) event.c selector.c
|
143
|
-
OBJS = event.o selector.o
|
142
|
+
SRCS = $(ORIG_SRCS) event.c selector.c uring.c epoll.c interrupt.c
|
143
|
+
OBJS = event.o selector.o uring.o epoll.o interrupt.o
|
144
144
|
HDRS = $(srcdir)/extconf.h
|
145
145
|
LOCAL_HDRS =
|
146
146
|
TARGET = IO_Event
|
147
147
|
TARGET_NAME = IO_Event
|
148
148
|
TARGET_ENTRY = Init_$(TARGET_NAME)
|
149
|
-
DLLIB = $(TARGET).
|
149
|
+
DLLIB = $(TARGET).so
|
150
150
|
EXTSTATIC =
|
151
151
|
STATIC_LIB =
|
152
152
|
|
@@ -260,7 +260,6 @@ $(TARGET_SO): $(OBJS) Makefile
|
|
260
260
|
$(ECHO) linking shared-object $(DLLIB)
|
261
261
|
-$(Q)$(RM) $(@)
|
262
262
|
$(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
263
|
-
$(Q) $(POSTLINK)
|
264
263
|
|
265
264
|
|
266
265
|
|
data/ext/epoll.o
ADDED
Binary file
|
data/ext/event.o
CHANGED
Binary file
|
data/ext/extconf.h
CHANGED
data/ext/interrupt.o
CHANGED
Binary file
|
data/ext/io/event/interrupt.c
CHANGED
@@ -21,19 +21,16 @@
|
|
21
21
|
// static const int DEBUG = 0;
|
22
22
|
|
23
23
|
#include "interrupt.h"
|
24
|
-
#include <fcntl.h>
|
25
24
|
#include <unistd.h>
|
26
25
|
|
27
|
-
#ifdef HAVE_SYS_EVENTFD_H
|
28
|
-
#include <sys/eventfd.h>
|
29
|
-
#endif
|
30
|
-
|
31
26
|
#include "selector/selector.h"
|
32
27
|
|
33
28
|
#ifdef HAVE_SYS_EVENTFD_H
|
29
|
+
#include <sys/eventfd.h>
|
30
|
+
|
34
31
|
void IO_Event_Interrupt_open(struct IO_Event_Interrupt *interrupt)
|
35
32
|
{
|
36
|
-
interrupt->descriptor =
|
33
|
+
interrupt->descriptor = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
|
37
34
|
rb_update_max_fd(interrupt->descriptor);
|
38
35
|
}
|
39
36
|
|
@@ -63,6 +60,9 @@ void IO_Event_Interrupt_open(struct IO_Event_Interrupt *interrupt)
|
|
63
60
|
IO_Event_Selector_nonblock_set(interrupt->descriptor[0]);
|
64
61
|
IO_Event_Selector_nonblock_set(interrupt->descriptor[1]);
|
65
62
|
#endif
|
63
|
+
|
64
|
+
rb_update_max_fd(interrupt->descriptor[0]);
|
65
|
+
rb_update_max_fd(interrupt->descriptor[1]);
|
66
66
|
}
|
67
67
|
|
68
68
|
void IO_Event_Interrupt_close(struct IO_Event_Interrupt *interrupt)
|
data/ext/io/event/interrupt.h
CHANGED
@@ -28,6 +28,8 @@
|
|
28
28
|
#include "pidfd.c"
|
29
29
|
#include "../interrupt.h"
|
30
30
|
|
31
|
+
static const int DEBUG = 0;
|
32
|
+
|
31
33
|
static VALUE IO_Event_Selector_EPoll = Qnil;
|
32
34
|
|
33
35
|
enum {EPOLL_MAX_EVENTS = 64};
|
@@ -36,7 +38,7 @@ struct IO_Event_Selector_EPoll {
|
|
36
38
|
struct IO_Event_Selector backend;
|
37
39
|
int descriptor;
|
38
40
|
int blocked;
|
39
|
-
IO_Event_Interrupt interrupt;
|
41
|
+
struct IO_Event_Interrupt interrupt;
|
40
42
|
};
|
41
43
|
|
42
44
|
void IO_Event_Selector_EPoll_Type_mark(void *_data)
|
@@ -90,12 +92,12 @@ VALUE IO_Event_Selector_EPoll_allocate(VALUE self) {
|
|
90
92
|
return instance;
|
91
93
|
}
|
92
94
|
|
93
|
-
void IO_Event_Interrupt_add(IO_Event_Interrupt *interrupt, struct IO_Event_Selector_EPoll *data) {
|
95
|
+
void IO_Event_Interrupt_add(struct IO_Event_Interrupt *interrupt, struct IO_Event_Selector_EPoll *data) {
|
94
96
|
int descriptor = IO_Event_Interrupt_descriptor(interrupt);
|
95
97
|
|
96
98
|
struct epoll_event event = {
|
97
99
|
.events = EPOLLIN|EPOLLRDHUP,
|
98
|
-
.data = {.ptr = NULL
|
100
|
+
.data = {.ptr = NULL},
|
99
101
|
};
|
100
102
|
|
101
103
|
int result = epoll_ctl(data->descriptor, EPOLL_CTL_ADD, descriptor, &event);
|
@@ -557,40 +559,43 @@ VALUE IO_Event_Selector_EPoll_select(VALUE self, VALUE duration) {
|
|
557
559
|
.timeout = 0
|
558
560
|
};
|
559
561
|
|
562
|
+
// Process any currently pending events:
|
560
563
|
select_internal_with_gvl(&arguments);
|
561
|
-
|
562
|
-
// If the ready list was empty and no events were processed:
|
564
|
+
|
565
|
+
// If the ready list was empty and no events were processed:
|
563
566
|
if (!ready && arguments.count == 0) {
|
564
567
|
arguments.timeout = make_timeout(duration);
|
565
568
|
|
566
569
|
if (arguments.timeout != 0) {
|
570
|
+
// Wait for events to occur
|
567
571
|
select_internal_without_gvl(&arguments);
|
568
572
|
}
|
569
573
|
}
|
570
574
|
|
571
575
|
for (int i = 0; i < arguments.count; i += 1) {
|
572
|
-
|
573
|
-
|
576
|
+
const struct epoll_event *event = &arguments.events[i];
|
577
|
+
if (DEBUG) fprintf(stderr, "-> ptr=%p events=%d\n", event->data.ptr, event->events);
|
574
578
|
|
575
|
-
if (
|
579
|
+
if (event->data.ptr) {
|
580
|
+
VALUE fiber = (VALUE)event->data.ptr;
|
581
|
+
VALUE result = INT2NUM(event->events);
|
582
|
+
|
583
|
+
IO_Event_Selector_fiber_transfer(fiber, 1, &result);
|
584
|
+
} else {
|
576
585
|
IO_Event_Interrupt_clear(&data->interrupt);
|
577
586
|
}
|
578
|
-
|
579
|
-
// fprintf(stderr, "-> fiber=%p descriptor=%d\n", (void*)fiber, events[i].data.fd);
|
580
|
-
|
581
|
-
IO_Event_Selector_fiber_transfer(fiber, 1, &result);
|
582
587
|
}
|
583
588
|
|
584
589
|
return INT2NUM(arguments.count);
|
585
590
|
}
|
586
591
|
|
587
|
-
VALUE
|
592
|
+
VALUE IO_Event_Selector_EPoll_wakeup(VALUE self) {
|
588
593
|
struct IO_Event_Selector_EPoll *data = NULL;
|
589
594
|
TypedData_Get_Struct(self, struct IO_Event_Selector_EPoll, &IO_Event_Selector_EPoll_Type, data);
|
590
595
|
|
591
596
|
// If we are blocking, we can schedule a nop event to wake up the selector:
|
592
597
|
if (data->blocked) {
|
593
|
-
IO_Event_Interrupt_signal(data->interrupt);
|
598
|
+
IO_Event_Interrupt_signal(&data->interrupt);
|
594
599
|
|
595
600
|
return Qtrue;
|
596
601
|
}
|
@@ -35,6 +35,7 @@ struct IO_Event_Selector_KQueue {
|
|
35
35
|
int descriptor;
|
36
36
|
|
37
37
|
int blocked;
|
38
|
+
int wakeup;
|
38
39
|
};
|
39
40
|
|
40
41
|
void IO_Event_Selector_KQueue_Type_mark(void *_data)
|
@@ -572,6 +573,13 @@ void * select_internal(void *_arguments) {
|
|
572
573
|
static
|
573
574
|
void select_internal_without_gvl(struct select_arguments *arguments) {
|
574
575
|
arguments->data->blocked = 1;
|
576
|
+
|
577
|
+
if (arguments->data->wakeup) {
|
578
|
+
arguments->data->wakeup = 0;
|
579
|
+
arguments->count = 0;
|
580
|
+
return;
|
581
|
+
}
|
582
|
+
|
575
583
|
rb_thread_call_without_gvl(select_internal, (void *)arguments, RUBY_UBF_IO, 0);
|
576
584
|
arguments->data->blocked = 0;
|
577
585
|
|
@@ -604,12 +612,13 @@ VALUE IO_Event_Selector_KQueue_select(VALUE self, VALUE duration) {
|
|
604
612
|
}
|
605
613
|
};
|
606
614
|
|
615
|
+
arguments.timeout = &arguments.storage;
|
616
|
+
|
607
617
|
// We break this implementation into two parts.
|
608
618
|
// (1) count = kevent(..., timeout = 0)
|
609
619
|
// (2) without gvl: kevent(..., timeout = 0) if count == 0 and timeout != 0
|
610
620
|
// This allows us to avoid releasing and reacquiring the GVL.
|
611
621
|
// Non-comprehensive testing shows this gives a 1.5x speedup.
|
612
|
-
arguments.timeout = &arguments.storage;
|
613
622
|
|
614
623
|
// First do the syscall with no timeout to get any immediately available events:
|
615
624
|
select_internal_with_gvl(&arguments);
|
@@ -641,6 +650,11 @@ VALUE IO_Event_Selector_KQueue_wakeup(VALUE self) {
|
|
641
650
|
struct IO_Event_Selector_KQueue *data = NULL;
|
642
651
|
TypedData_Get_Struct(self, struct IO_Event_Selector_KQueue, &IO_Event_Selector_KQueue_Type, data);
|
643
652
|
|
653
|
+
// If we are already schduled to wake up, don't bother doing it again!
|
654
|
+
if (data->wakeup) return Qfalse;
|
655
|
+
|
656
|
+
data->wakeup = 1;
|
657
|
+
|
644
658
|
if (data->blocked) {
|
645
659
|
struct kevent trigger = {0};
|
646
660
|
|
@@ -26,7 +26,6 @@
|
|
26
26
|
#include <time.h>
|
27
27
|
|
28
28
|
#include "pidfd.c"
|
29
|
-
#include "../interrupt.h"
|
30
29
|
|
31
30
|
static const int DEBUG = 0;
|
32
31
|
|
@@ -561,7 +560,7 @@ int select_internal_without_gvl(struct select_arguments *arguments) {
|
|
561
560
|
return arguments->result;
|
562
561
|
}
|
563
562
|
|
564
|
-
#define IO_EVENT_SELECTOR_URING_UDATA_INTERRUPT ((__u64) -2)
|
563
|
+
// #define IO_EVENT_SELECTOR_URING_UDATA_INTERRUPT ((__u64) -2)
|
565
564
|
|
566
565
|
static inline
|
567
566
|
unsigned select_process_completions(struct io_uring *ring) {
|
@@ -578,10 +577,9 @@ unsigned select_process_completions(struct io_uring *ring) {
|
|
578
577
|
continue;
|
579
578
|
}
|
580
579
|
|
581
|
-
if (cqe->user_data == IO_EVENT_SELECTOR_URING_UDATA_INTERRUPT) {
|
582
|
-
|
583
|
-
|
584
|
-
}
|
580
|
+
// if (cqe->user_data == IO_EVENT_SELECTOR_URING_UDATA_INTERRUPT) {
|
581
|
+
// io_uring_cq_advance(ring, 1);
|
582
|
+
// }
|
585
583
|
|
586
584
|
VALUE fiber = (VALUE)cqe->user_data;
|
587
585
|
VALUE result = RB_INT2NUM(cqe->res);
|
@@ -634,8 +632,8 @@ VALUE IO_Event_Selector_URing_select(VALUE self, VALUE duration) {
|
|
634
632
|
}
|
635
633
|
|
636
634
|
VALUE IO_Event_Selector_URing_wakeup(VALUE self) {
|
637
|
-
struct
|
638
|
-
TypedData_Get_Struct(self, struct
|
635
|
+
struct IO_Event_Selector_URing *data = NULL;
|
636
|
+
TypedData_Get_Struct(self, struct IO_Event_Selector_URing, &IO_Event_Selector_URing_Type, data);
|
639
637
|
|
640
638
|
// If we are blocking, we can schedule a nop event to wake up the selector:
|
641
639
|
if (data->blocked) {
|
@@ -652,7 +650,7 @@ VALUE IO_Event_Selector_URing_wakeup(VALUE self) {
|
|
652
650
|
}
|
653
651
|
|
654
652
|
io_uring_prep_nop(sqe);
|
655
|
-
io_uring_submit(&
|
653
|
+
io_uring_submit(&data->ring);
|
656
654
|
|
657
655
|
return Qtrue;
|
658
656
|
}
|
@@ -667,7 +665,7 @@ void Init_IO_Event_Selector_URing(VALUE IO_Event_Selector) {
|
|
667
665
|
rb_define_alloc_func(IO_Event_Selector_URing, IO_Event_Selector_URing_allocate);
|
668
666
|
rb_define_method(IO_Event_Selector_URing, "initialize", IO_Event_Selector_URing_initialize, 1);
|
669
667
|
|
670
|
-
rb_define_method(IO_Event_Selector_URing, "loop", IO_Event_Selector_URing_loop,
|
668
|
+
rb_define_method(IO_Event_Selector_URing, "loop", IO_Event_Selector_URing_loop, 0);
|
671
669
|
|
672
670
|
rb_define_method(IO_Event_Selector_URing, "transfer", IO_Event_Selector_URing_transfer, 0);
|
673
671
|
rb_define_method(IO_Event_Selector_URing, "resume", IO_Event_Selector_URing_resume, -1);
|
data/ext/mkmf.log
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
have_func: checking for rb_ext_ractor_safe()... -------------------- yes
|
2
2
|
|
3
|
-
"
|
3
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
|
4
4
|
checked program was:
|
5
5
|
/* begin */
|
6
6
|
1: #include "ruby.h"
|
@@ -11,7 +11,7 @@ checked program was:
|
|
11
11
|
6: }
|
12
12
|
/* end */
|
13
13
|
|
14
|
-
"
|
14
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
|
15
15
|
checked program was:
|
16
16
|
/* begin */
|
17
17
|
1: #include "ruby.h"
|
@@ -34,11 +34,17 @@ checked program was:
|
|
34
34
|
|
35
35
|
have_func: checking for &rb_fiber_transfer()... -------------------- no
|
36
36
|
|
37
|
-
"
|
38
|
-
conftest.c:
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
|
38
|
+
conftest.c: In function ‘t’:
|
39
|
+
conftest.c:14:76: error: ‘rb_fiber_transfer’ undeclared (first use in this function); did you mean ‘rb_fiber_resume’?
|
40
|
+
14 | int t(void) { const volatile void *volatile p; p = (const volatile void *)&rb_fiber_transfer; return !p; }
|
41
|
+
| ^~~~~~~~~~~~~~~~~
|
42
|
+
| rb_fiber_resume
|
43
|
+
conftest.c:14:76: note: each undeclared identifier is reported only once for each function it appears in
|
44
|
+
conftest.c: At top level:
|
45
|
+
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
|
46
|
+
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
|
47
|
+
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
|
42
48
|
checked program was:
|
43
49
|
/* begin */
|
44
50
|
1: #include "ruby.h"
|
@@ -59,11 +65,9 @@ checked program was:
|
|
59
65
|
|
60
66
|
--------------------
|
61
67
|
|
62
|
-
have_library: checking for -luring... --------------------
|
68
|
+
have_library: checking for -luring... -------------------- yes
|
63
69
|
|
64
|
-
"
|
65
|
-
ld: library not found for -luring
|
66
|
-
clang: error: linker command failed with exit code 1 (use -v to see invocation)
|
70
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
67
71
|
checked program was:
|
68
72
|
/* begin */
|
69
73
|
1: #include "ruby.h"
|
@@ -85,13 +89,21 @@ checked program was:
|
|
85
89
|
|
86
90
|
--------------------
|
87
91
|
|
88
|
-
have_header: checking for
|
92
|
+
have_header: checking for liburing.h... -------------------- yes
|
89
93
|
|
90
|
-
"
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
94
|
+
"gcc -E -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -o conftest.i"
|
95
|
+
checked program was:
|
96
|
+
/* begin */
|
97
|
+
1: #include "ruby.h"
|
98
|
+
2:
|
99
|
+
3: #include <liburing.h>
|
100
|
+
/* end */
|
101
|
+
|
102
|
+
--------------------
|
103
|
+
|
104
|
+
have_header: checking for sys/epoll.h... -------------------- yes
|
105
|
+
|
106
|
+
"gcc -E -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -o conftest.i"
|
95
107
|
checked program was:
|
96
108
|
/* begin */
|
97
109
|
1: #include "ruby.h"
|
@@ -101,9 +113,13 @@ checked program was:
|
|
101
113
|
|
102
114
|
--------------------
|
103
115
|
|
104
|
-
have_header: checking for sys/event.h... --------------------
|
116
|
+
have_header: checking for sys/event.h... -------------------- no
|
105
117
|
|
106
|
-
"
|
118
|
+
"gcc -E -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -o conftest.i"
|
119
|
+
conftest.c:3:10: fatal error: sys/event.h: No such file or directory
|
120
|
+
3 | #include <sys/event.h>
|
121
|
+
| ^~~~~~~~~~~~~
|
122
|
+
compilation terminated.
|
107
123
|
checked program was:
|
108
124
|
/* begin */
|
109
125
|
1: #include "ruby.h"
|
@@ -113,13 +129,9 @@ checked program was:
|
|
113
129
|
|
114
130
|
--------------------
|
115
131
|
|
116
|
-
have_header: checking for sys/eventfd.h... --------------------
|
132
|
+
have_header: checking for sys/eventfd.h... -------------------- yes
|
117
133
|
|
118
|
-
"
|
119
|
-
conftest.c:3:10: fatal error: 'sys/eventfd.h' file not found
|
120
|
-
#include <sys/eventfd.h>
|
121
|
-
^~~~~~~~~~~~~~~
|
122
|
-
1 error generated.
|
134
|
+
"gcc -E -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -o conftest.i"
|
123
135
|
checked program was:
|
124
136
|
/* begin */
|
125
137
|
1: #include "ruby.h"
|
@@ -131,11 +143,16 @@ checked program was:
|
|
131
143
|
|
132
144
|
have_func: checking for rb_io_descriptor()... -------------------- no
|
133
145
|
|
134
|
-
"
|
135
|
-
conftest.c:
|
136
|
-
|
137
|
-
|
138
|
-
|
146
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -luring -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
147
|
+
conftest.c: In function ‘t’:
|
148
|
+
conftest.c:14:57: error: ‘rb_io_descriptor’ undeclared (first use in this function)
|
149
|
+
14 | int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_io_descriptor; return !p; }
|
150
|
+
| ^~~~~~~~~~~~~~~~
|
151
|
+
conftest.c:14:57: note: each undeclared identifier is reported only once for each function it appears in
|
152
|
+
conftest.c: At top level:
|
153
|
+
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
|
154
|
+
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
|
155
|
+
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
|
139
156
|
checked program was:
|
140
157
|
/* begin */
|
141
158
|
1: #include "ruby.h"
|
@@ -154,12 +171,10 @@ checked program was:
|
|
154
171
|
14: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_io_descriptor; return !p; }
|
155
172
|
/* end */
|
156
173
|
|
157
|
-
"
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
ld: symbol(s) not found for architecture arm64
|
162
|
-
clang: error: linker command failed with exit code 1 (use -v to see invocation)
|
174
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -luring -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
175
|
+
/usr/bin/ld: /tmp/cc0gnp4R.o: in function `t':
|
176
|
+
/home/samuel/Projects/socketry/io-event/ext/conftest.c:15: undefined reference to `rb_io_descriptor'
|
177
|
+
collect2: error: ld returned 1 exit status
|
163
178
|
checked program was:
|
164
179
|
/* begin */
|
165
180
|
1: #include "ruby.h"
|
@@ -183,11 +198,16 @@ checked program was:
|
|
183
198
|
|
184
199
|
have_func: checking for &rb_process_status_wait()... -------------------- no
|
185
200
|
|
186
|
-
"
|
187
|
-
conftest.c:
|
188
|
-
|
189
|
-
|
190
|
-
|
201
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -luring -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
202
|
+
conftest.c: In function ‘t’:
|
203
|
+
conftest.c:14:76: error: ‘rb_process_status_wait’ undeclared (first use in this function)
|
204
|
+
14 | int t(void) { const volatile void *volatile p; p = (const volatile void *)&rb_process_status_wait; return !p; }
|
205
|
+
| ^~~~~~~~~~~~~~~~~~~~~~
|
206
|
+
conftest.c:14:76: note: each undeclared identifier is reported only once for each function it appears in
|
207
|
+
conftest.c: At top level:
|
208
|
+
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
|
209
|
+
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
|
210
|
+
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
|
191
211
|
checked program was:
|
192
212
|
/* begin */
|
193
213
|
1: #include "ruby.h"
|
@@ -210,7 +230,7 @@ checked program was:
|
|
210
230
|
|
211
231
|
have_func: checking for rb_fiber_current()... -------------------- yes
|
212
232
|
|
213
|
-
"
|
233
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -luring -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
214
234
|
checked program was:
|
215
235
|
/* begin */
|
216
236
|
1: #include "ruby.h"
|
@@ -233,15 +253,17 @@ checked program was:
|
|
233
253
|
|
234
254
|
have_func: checking for &rb_fiber_raise()... -------------------- no
|
235
255
|
|
236
|
-
"
|
237
|
-
conftest.c:
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
256
|
+
"gcc -o conftest -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -L. -L/home/samuel/.rubies/ruby-3.0.3/lib -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -luring -Wl,-rpath,/home/samuel/.rubies/ruby-3.0.3/lib -L/home/samuel/.rubies/ruby-3.0.3/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -luring -lm -lc"
|
257
|
+
conftest.c: In function ‘t’:
|
258
|
+
conftest.c:14:76: error: ‘rb_fiber_raise’ undeclared (first use in this function); did you mean ‘rb_fiber_resume’?
|
259
|
+
14 | int t(void) { const volatile void *volatile p; p = (const volatile void *)&rb_fiber_raise; return !p; }
|
260
|
+
| ^~~~~~~~~~~~~~
|
261
|
+
| rb_fiber_resume
|
262
|
+
conftest.c:14:76: note: each undeclared identifier is reported only once for each function it appears in
|
263
|
+
conftest.c: At top level:
|
264
|
+
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
|
265
|
+
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
|
266
|
+
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
|
245
267
|
checked program was:
|
246
268
|
/* begin */
|
247
269
|
1: #include "ruby.h"
|
@@ -264,12 +286,11 @@ checked program was:
|
|
264
286
|
|
265
287
|
have_header: checking for ruby/io/buffer.h... -------------------- no
|
266
288
|
|
267
|
-
"
|
268
|
-
conftest.c:3:10: fatal error:
|
269
|
-
#include <ruby/io/buffer.h>
|
270
|
-
|
271
|
-
|
272
|
-
1 error generated.
|
289
|
+
"gcc -E -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/x86_64-linux -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0/ruby/backward -I/home/samuel/.rubies/ruby-3.0.3/include/ruby-3.0.0 -I. -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wall conftest.c -o conftest.i"
|
290
|
+
conftest.c:3:10: fatal error: ruby/io/buffer.h: No such file or directory
|
291
|
+
3 | #include <ruby/io/buffer.h>
|
292
|
+
| ^~~~~~~~~~~~~~~~~~
|
293
|
+
compilation terminated.
|
273
294
|
checked program was:
|
274
295
|
/* begin */
|
275
296
|
1: #include "ruby.h"
|
@@ -284,8 +305,10 @@ extconf.h is:
|
|
284
305
|
1: #ifndef EXTCONF_H
|
285
306
|
2: #define EXTCONF_H
|
286
307
|
3: #define HAVE_RB_EXT_RACTOR_SAFE 1
|
287
|
-
4: #define
|
288
|
-
5: #define
|
289
|
-
6: #
|
308
|
+
4: #define HAVE_LIBURING_H 1
|
309
|
+
5: #define HAVE_SYS_EPOLL_H 1
|
310
|
+
6: #define HAVE_SYS_EVENTFD_H 1
|
311
|
+
7: #define HAVE_RB_FIBER_CURRENT 1
|
312
|
+
8: #endif
|
290
313
|
/* end */
|
291
314
|
|
data/ext/selector.o
CHANGED
Binary file
|
data/ext/uring.o
ADDED
Binary file
|
@@ -37,10 +37,15 @@ module IO::Event
|
|
37
37
|
|
38
38
|
attr :loop
|
39
39
|
|
40
|
+
# If the event loop is currently blocked,
|
40
41
|
def wakeup
|
41
42
|
if @blocked
|
42
43
|
@interrupt.signal
|
44
|
+
|
45
|
+
return true
|
43
46
|
end
|
47
|
+
|
48
|
+
return false
|
44
49
|
end
|
45
50
|
|
46
51
|
def close
|
@@ -212,8 +217,8 @@ module IO::Event
|
|
212
217
|
duration = 0
|
213
218
|
end
|
214
219
|
|
215
|
-
# The GVL ensures this is sufficiently synchronised for `#wakeup` to work correctly.
|
216
220
|
@blocked = true
|
221
|
+
duration = 0 unless @ready.empty?
|
217
222
|
readable, writable, _ = ::IO.select(@readable.keys, @writable.keys, nil, duration)
|
218
223
|
@blocked = false
|
219
224
|
|
data/lib/io/event/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: io-event
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bake
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: sus
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0.5'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0.5'
|
69
69
|
description:
|
70
70
|
email:
|
71
71
|
executables: []
|
@@ -73,8 +73,9 @@ extensions:
|
|
73
73
|
- ext/extconf.rb
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- ext/IO_Event.
|
76
|
+
- ext/IO_Event.so
|
77
77
|
- ext/Makefile
|
78
|
+
- ext/epoll.o
|
78
79
|
- ext/event.o
|
79
80
|
- ext/extconf.h
|
80
81
|
- ext/extconf.rb
|
@@ -92,9 +93,9 @@ files:
|
|
92
93
|
- ext/io/event/selector/selector.h
|
93
94
|
- ext/io/event/selector/uring.c
|
94
95
|
- ext/io/event/selector/uring.h
|
95
|
-
- ext/kqueue.o
|
96
96
|
- ext/mkmf.log
|
97
97
|
- ext/selector.o
|
98
|
+
- ext/uring.o
|
98
99
|
- lib/io/event.rb
|
99
100
|
- lib/io/event/debug/selector.rb
|
100
101
|
- lib/io/event/interrupt.rb
|
data/ext/IO_Event.bundle
DELETED
Binary file
|
data/ext/kqueue.o
DELETED
Binary file
|