libev_scheduler 0.1 → 0.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.
@@ -118,6 +118,35 @@ VARx(int, linuxaio_submitmax)
118
118
  VARx(ev_io, linuxaio_epoll_w)
119
119
  #endif
120
120
 
121
+ #if EV_USE_IOURING || EV_GENWRAP
122
+ VARx(int, iouring_fd)
123
+ VARx(unsigned, iouring_to_submit);
124
+ VARx(int, iouring_entries)
125
+ VARx(int, iouring_max_entries)
126
+ VARx(void *, iouring_sq_ring)
127
+ VARx(void *, iouring_cq_ring)
128
+ VARx(void *, iouring_sqes)
129
+ VARx(uint32_t, iouring_sq_ring_size)
130
+ VARx(uint32_t, iouring_cq_ring_size)
131
+ VARx(uint32_t, iouring_sqes_size)
132
+ VARx(uint32_t, iouring_sq_head)
133
+ VARx(uint32_t, iouring_sq_tail)
134
+ VARx(uint32_t, iouring_sq_ring_mask)
135
+ VARx(uint32_t, iouring_sq_ring_entries)
136
+ VARx(uint32_t, iouring_sq_flags)
137
+ VARx(uint32_t, iouring_sq_dropped)
138
+ VARx(uint32_t, iouring_sq_array)
139
+ VARx(uint32_t, iouring_cq_head)
140
+ VARx(uint32_t, iouring_cq_tail)
141
+ VARx(uint32_t, iouring_cq_ring_mask)
142
+ VARx(uint32_t, iouring_cq_ring_entries)
143
+ VARx(uint32_t, iouring_cq_overflow)
144
+ VARx(uint32_t, iouring_cq_cqes)
145
+ VARx(ev_tstamp, iouring_tfd_to)
146
+ VARx(int, iouring_tfd)
147
+ VARx(ev_io, iouring_tfd_w)
148
+ #endif
149
+
121
150
  #if EV_USE_KQUEUE || EV_GENWRAP
122
151
  VARx(pid_t, kqueue_fd_pid)
123
152
  VARx(struct kevent *, kqueue_changes)
@@ -198,6 +227,11 @@ VARx(ev_io, sigfd_w)
198
227
  VARx(sigset_t, sigfd_set)
199
228
  #endif
200
229
 
230
+ #if EV_USE_TIMERFD || EV_GENWRAP
231
+ VARx(int, timerfd) /* timerfd for time jump detection */
232
+ VARx(ev_io, timerfd_w)
233
+ #endif
234
+
201
235
  VARx(unsigned int, origflags) /* original loop flags */
202
236
 
203
237
  #if EV_FEATURE_API || EV_GENWRAP
@@ -154,8 +154,8 @@ ev_time (void)
154
154
  ui.u.LowPart = ft.dwLowDateTime;
155
155
  ui.u.HighPart = ft.dwHighDateTime;
156
156
 
157
- /* msvc cannot convert ulonglong to double... yes, it is that sucky */
158
- return (LONGLONG)(ui.QuadPart - 116444736000000000) * 1e-7;
157
+ /* also, msvc cannot convert ulonglong to double... yes, it is that sucky */
158
+ return EV_TS_FROM_USEC (((LONGLONG)(ui.QuadPart - 116444736000000000) * 1e-1));
159
159
  }
160
160
 
161
161
  #endif
@@ -44,6 +44,32 @@
44
44
  #define invoke_cb ((loop)->invoke_cb)
45
45
  #define io_blocktime ((loop)->io_blocktime)
46
46
  #define iocp ((loop)->iocp)
47
+ #define iouring_cq_cqes ((loop)->iouring_cq_cqes)
48
+ #define iouring_cq_head ((loop)->iouring_cq_head)
49
+ #define iouring_cq_overflow ((loop)->iouring_cq_overflow)
50
+ #define iouring_cq_ring ((loop)->iouring_cq_ring)
51
+ #define iouring_cq_ring_entries ((loop)->iouring_cq_ring_entries)
52
+ #define iouring_cq_ring_mask ((loop)->iouring_cq_ring_mask)
53
+ #define iouring_cq_ring_size ((loop)->iouring_cq_ring_size)
54
+ #define iouring_cq_tail ((loop)->iouring_cq_tail)
55
+ #define iouring_entries ((loop)->iouring_entries)
56
+ #define iouring_fd ((loop)->iouring_fd)
57
+ #define iouring_max_entries ((loop)->iouring_max_entries)
58
+ #define iouring_sq_array ((loop)->iouring_sq_array)
59
+ #define iouring_sq_dropped ((loop)->iouring_sq_dropped)
60
+ #define iouring_sq_flags ((loop)->iouring_sq_flags)
61
+ #define iouring_sq_head ((loop)->iouring_sq_head)
62
+ #define iouring_sq_ring ((loop)->iouring_sq_ring)
63
+ #define iouring_sq_ring_entries ((loop)->iouring_sq_ring_entries)
64
+ #define iouring_sq_ring_mask ((loop)->iouring_sq_ring_mask)
65
+ #define iouring_sq_ring_size ((loop)->iouring_sq_ring_size)
66
+ #define iouring_sq_tail ((loop)->iouring_sq_tail)
67
+ #define iouring_sqes ((loop)->iouring_sqes)
68
+ #define iouring_sqes_size ((loop)->iouring_sqes_size)
69
+ #define iouring_tfd ((loop)->iouring_tfd)
70
+ #define iouring_tfd_to ((loop)->iouring_tfd_to)
71
+ #define iouring_tfd_w ((loop)->iouring_tfd_w)
72
+ #define iouring_to_submit ((loop)->iouring_to_submit)
47
73
  #define kqueue_changecnt ((loop)->kqueue_changecnt)
48
74
  #define kqueue_changemax ((loop)->kqueue_changemax)
49
75
  #define kqueue_changes ((loop)->kqueue_changes)
@@ -97,6 +123,8 @@
97
123
  #define sigfd_w ((loop)->sigfd_w)
98
124
  #define timeout_blocktime ((loop)->timeout_blocktime)
99
125
  #define timercnt ((loop)->timercnt)
126
+ #define timerfd ((loop)->timerfd)
127
+ #define timerfd_w ((loop)->timerfd_w)
100
128
  #define timermax ((loop)->timermax)
101
129
  #define timers ((loop)->timers)
102
130
  #define userdata ((loop)->userdata)
@@ -151,6 +179,32 @@
151
179
  #undef invoke_cb
152
180
  #undef io_blocktime
153
181
  #undef iocp
182
+ #undef iouring_cq_cqes
183
+ #undef iouring_cq_head
184
+ #undef iouring_cq_overflow
185
+ #undef iouring_cq_ring
186
+ #undef iouring_cq_ring_entries
187
+ #undef iouring_cq_ring_mask
188
+ #undef iouring_cq_ring_size
189
+ #undef iouring_cq_tail
190
+ #undef iouring_entries
191
+ #undef iouring_fd
192
+ #undef iouring_max_entries
193
+ #undef iouring_sq_array
194
+ #undef iouring_sq_dropped
195
+ #undef iouring_sq_flags
196
+ #undef iouring_sq_head
197
+ #undef iouring_sq_ring
198
+ #undef iouring_sq_ring_entries
199
+ #undef iouring_sq_ring_mask
200
+ #undef iouring_sq_ring_size
201
+ #undef iouring_sq_tail
202
+ #undef iouring_sqes
203
+ #undef iouring_sqes_size
204
+ #undef iouring_tfd
205
+ #undef iouring_tfd_to
206
+ #undef iouring_tfd_w
207
+ #undef iouring_to_submit
154
208
  #undef kqueue_changecnt
155
209
  #undef kqueue_changemax
156
210
  #undef kqueue_changes
@@ -204,6 +258,8 @@
204
258
  #undef sigfd_w
205
259
  #undef timeout_blocktime
206
260
  #undef timercnt
261
+ #undef timerfd
262
+ #undef timerfd_w
207
263
  #undef timermax
208
264
  #undef timers
209
265
  #undef userdata
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Libev
4
- VERSION = '0.1'
4
+ VERSION = '0.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libev_scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-04 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -60,7 +60,7 @@ extensions:
60
60
  extra_rdoc_files:
61
61
  - README.md
62
62
  files:
63
- - ".github/test.yml"
63
+ - ".github/workflows/test.yml"
64
64
  - ".gitignore"
65
65
  - CHANGELOG.md
66
66
  - Gemfile
@@ -78,6 +78,7 @@ files:
78
78
  - ext/libev/ev.c
79
79
  - ext/libev/ev.h
80
80
  - ext/libev/ev_epoll.c
81
+ - ext/libev/ev_iouring.c
81
82
  - ext/libev/ev_kqueue.c
82
83
  - ext/libev/ev_linuxaio.c
83
84
  - ext/libev/ev_poll.c
@@ -1,31 +0,0 @@
1
- name: Tests
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- strategy:
8
- fail-fast: false
9
- matrix:
10
- os: [ubuntu-latest]
11
- ruby: [3.0]
12
-
13
- name: >-
14
- ${{matrix.os}}, ${{matrix.ruby}}
15
-
16
- runs-on: ${{matrix.os}}
17
- steps:
18
- - uses: actions/checkout@v1
19
- - uses: actions/setup-ruby@v1
20
- with:
21
- ruby-version: ${{matrix.ruby}}
22
- - name: Install dependencies
23
- run: |
24
- gem install bundler
25
- bundle install
26
- - name: Show Linux kernel version
27
- run: uname -r
28
- - name: Compile C-extension
29
- run: bundle exec rake compile
30
- - name: Run tests
31
- run: bundle exec rake test