/bitcoin/depends/work/build/x86_64-pc-linux-gnu/libevent/2.1.12-stable-7656baec08e/epolltable-internal.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> |
3 | | * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson |
4 | | * |
5 | | * Redistribution and use in source and binary forms, with or without |
6 | | * modification, are permitted provided that the following conditions |
7 | | * are met: |
8 | | * 1. Redistributions of source code must retain the above copyright |
9 | | * notice, this list of conditions and the following disclaimer. |
10 | | * 2. Redistributions in binary form must reproduce the above copyright |
11 | | * notice, this list of conditions and the following disclaimer in the |
12 | | * documentation and/or other materials provided with the distribution. |
13 | | * 3. The name of the author may not be used to endorse or promote products |
14 | | * derived from this software without specific prior written permission. |
15 | | * |
16 | | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
17 | | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
18 | | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
19 | | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
20 | | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
21 | | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
22 | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
23 | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | | */ |
27 | | #ifndef EPOLLTABLE_INTERNAL_H_INCLUDED_ |
28 | | #define EPOLLTABLE_INTERNAL_H_INCLUDED_ |
29 | | |
30 | | /* |
31 | | Here are the values we're masking off to decide what operations to do. |
32 | | Note that since EV_READ|EV_WRITE. |
33 | | |
34 | | Note also that this table is a little sparse, since ADD+DEL is |
35 | | nonsensical ("xxx" in the list below.) |
36 | | |
37 | | Note also that we are shifting old_events by only 5 bits, since |
38 | | EV_READ is 2 and EV_WRITE is 4. |
39 | | |
40 | | The table was auto-generated with a python script, according to this |
41 | | pseudocode:[*0] |
42 | | |
43 | | If either the read or the write change is add+del: |
44 | | This is impossible; Set op==-1, events=0. |
45 | | Else, if either the read or the write change is add: |
46 | | Set events to 0. |
47 | | If the read change is add, or |
48 | | (the read change is not del, and ev_read is in old_events): |
49 | | Add EPOLLIN to events. |
50 | | If the write change is add, or |
51 | | (the write change is not del, and ev_write is in old_events): |
52 | | Add EPOLLOUT to events. |
53 | | |
54 | | If old_events is set: |
55 | | Set op to EPOLL_CTL_MOD [*1,*2] |
56 | | Else: |
57 | | Set op to EPOLL_CTL_ADD [*3] |
58 | | |
59 | | Else, if the read or the write change is del: |
60 | | Set op to EPOLL_CTL_DEL. |
61 | | If the read change is del: |
62 | | If the write change is del: |
63 | | Set events to EPOLLIN|EPOLLOUT |
64 | | Else if ev_write is in old_events: |
65 | | Set events to EPOLLOUT |
66 | | Set op to EPOLL_CTL_MOD |
67 | | Else |
68 | | Set events to EPOLLIN |
69 | | Else: |
70 | | {The write change is del.} |
71 | | If ev_read is in old_events: |
72 | | Set events to EPOLLIN |
73 | | Set op to EPOLL_CTL_MOD |
74 | | Else: |
75 | | Set the events to EPOLLOUT |
76 | | |
77 | | Else: |
78 | | There is no read or write change; set op to 0 and events to 0. |
79 | | |
80 | | The logic is a little tricky, since we had no events set on the fd before, |
81 | | we need to set op="ADD" and set events=the events we want to add. If we |
82 | | had any events set on the fd before, and we want any events to remain on |
83 | | the fd, we need to say op="MOD" and set events=the events we want to |
84 | | remain. But if we want to delete the last event, we say op="DEL" and |
85 | | set events=(any non-null pointer). |
86 | | |
87 | | [*0] Actually, the Python script has gotten a bit more complicated, to |
88 | | support EPOLLRDHUP. |
89 | | |
90 | | [*1] This MOD is only a guess. MOD might fail with ENOENT if the file was |
91 | | closed and a new file was opened with the same fd. If so, we'll retry |
92 | | with ADD. |
93 | | |
94 | | [*2] We can't replace this with a no-op even if old_events is the same as |
95 | | the new events: if the file was closed and reopened, we need to retry |
96 | | with an ADD. (We do a MOD in this case since "no change" is more |
97 | | common than "close and reopen", so we'll usually wind up doing 1 |
98 | | syscalls instead of 2.) |
99 | | |
100 | | [*3] This ADD is only a guess. There is a fun Linux kernel issue where if |
101 | | you have two fds for the same file (via dup) and you ADD one to an |
102 | | epfd, then close it, then re-create it with the same fd (via dup2 or an |
103 | | unlucky dup), then try to ADD it again, you'll get an EEXIST, since the |
104 | | struct epitem is not actually removed from the struct eventpoll until |
105 | | the file itself is closed. |
106 | | |
107 | | EV_CHANGE_ADD==1 |
108 | | EV_CHANGE_DEL==2 |
109 | | EV_READ ==2 |
110 | | EV_WRITE ==4 |
111 | | EV_CLOSED ==0x80 |
112 | | |
113 | | Bit 0: close change is add |
114 | | Bit 1: close change is del |
115 | | Bit 2: read change is add |
116 | | Bit 3: read change is del |
117 | | Bit 4: write change is add |
118 | | Bit 5: write change is del |
119 | | Bit 6: old events had EV_READ |
120 | | Bit 7: old events had EV_WRITE |
121 | | Bit 8: old events had EV_CLOSED |
122 | | */ |
123 | | |
124 | | #define EPOLL_OP_TABLE_INDEX(c) \ |
125 | 18.9M | ( (((c)->close_change&(EV_CHANGE_ADD|EV_CHANGE_DEL))) | \ |
126 | 18.9M | (((c)->read_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 2) | \ |
127 | 18.9M | (((c)->write_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 4) | \ |
128 | 18.9M | (((c)->old_events&(EV_READ|EV_WRITE)) << 5) | \ |
129 | 18.9M | (((c)->old_events&(EV_CLOSED)) << 1) \ |
130 | 18.9M | ) |
131 | | |
132 | | #if EV_READ != 2 || EV_WRITE != 4 || EV_CLOSED != 0x80 || EV_CHANGE_ADD != 1 || EV_CHANGE_DEL != 2 |
133 | | #error "Libevent's internals changed! Regenerate the op_table in epolltable-internal.h" |
134 | | #endif |
135 | | |
136 | | static const struct operation { |
137 | | int events; |
138 | | int op; |
139 | | } epoll_op_table[] = { |
140 | | /* old= 0, write: 0, read: 0, close: 0 */ |
141 | | { 0, 0 }, |
142 | | /* old= 0, write: 0, read: 0, close:add */ |
143 | | { EPOLLRDHUP, EPOLL_CTL_ADD }, |
144 | | /* old= 0, write: 0, read: 0, close:del */ |
145 | | { EPOLLRDHUP, EPOLL_CTL_DEL }, |
146 | | /* old= 0, write: 0, read: 0, close:xxx */ |
147 | | { 0, 255 }, |
148 | | /* old= 0, write: 0, read:add, close: 0 */ |
149 | | { EPOLLIN, EPOLL_CTL_ADD }, |
150 | | /* old= 0, write: 0, read:add, close:add */ |
151 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD }, |
152 | | /* old= 0, write: 0, read:add, close:del */ |
153 | | { EPOLLIN, EPOLL_CTL_ADD }, |
154 | | /* old= 0, write: 0, read:add, close:xxx */ |
155 | | { 0, 255 }, |
156 | | /* old= 0, write: 0, read:del, close: 0 */ |
157 | | { EPOLLIN, EPOLL_CTL_DEL }, |
158 | | /* old= 0, write: 0, read:del, close:add */ |
159 | | { EPOLLRDHUP, EPOLL_CTL_ADD }, |
160 | | /* old= 0, write: 0, read:del, close:del */ |
161 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, |
162 | | /* old= 0, write: 0, read:del, close:xxx */ |
163 | | { 0, 255 }, |
164 | | /* old= 0, write: 0, read:xxx, close: 0 */ |
165 | | { 0, 255 }, |
166 | | /* old= 0, write: 0, read:xxx, close:add */ |
167 | | { 0, 255 }, |
168 | | /* old= 0, write: 0, read:xxx, close:del */ |
169 | | { 0, 255 }, |
170 | | /* old= 0, write: 0, read:xxx, close:xxx */ |
171 | | { 0, 255 }, |
172 | | /* old= 0, write:add, read: 0, close: 0 */ |
173 | | { EPOLLOUT, EPOLL_CTL_ADD }, |
174 | | /* old= 0, write:add, read: 0, close:add */ |
175 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, |
176 | | /* old= 0, write:add, read: 0, close:del */ |
177 | | { EPOLLOUT, EPOLL_CTL_ADD }, |
178 | | /* old= 0, write:add, read: 0, close:xxx */ |
179 | | { 0, 255 }, |
180 | | /* old= 0, write:add, read:add, close: 0 */ |
181 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD }, |
182 | | /* old= 0, write:add, read:add, close:add */ |
183 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, |
184 | | /* old= 0, write:add, read:add, close:del */ |
185 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD }, |
186 | | /* old= 0, write:add, read:add, close:xxx */ |
187 | | { 0, 255 }, |
188 | | /* old= 0, write:add, read:del, close: 0 */ |
189 | | { EPOLLOUT, EPOLL_CTL_ADD }, |
190 | | /* old= 0, write:add, read:del, close:add */ |
191 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, |
192 | | /* old= 0, write:add, read:del, close:del */ |
193 | | { EPOLLOUT, EPOLL_CTL_ADD }, |
194 | | /* old= 0, write:add, read:del, close:xxx */ |
195 | | { 0, 255 }, |
196 | | /* old= 0, write:add, read:xxx, close: 0 */ |
197 | | { 0, 255 }, |
198 | | /* old= 0, write:add, read:xxx, close:add */ |
199 | | { 0, 255 }, |
200 | | /* old= 0, write:add, read:xxx, close:del */ |
201 | | { 0, 255 }, |
202 | | /* old= 0, write:add, read:xxx, close:xxx */ |
203 | | { 0, 255 }, |
204 | | /* old= 0, write:del, read: 0, close: 0 */ |
205 | | { EPOLLOUT, EPOLL_CTL_DEL }, |
206 | | /* old= 0, write:del, read: 0, close:add */ |
207 | | { EPOLLRDHUP, EPOLL_CTL_ADD }, |
208 | | /* old= 0, write:del, read: 0, close:del */ |
209 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
210 | | /* old= 0, write:del, read: 0, close:xxx */ |
211 | | { 0, 255 }, |
212 | | /* old= 0, write:del, read:add, close: 0 */ |
213 | | { EPOLLIN, EPOLL_CTL_ADD }, |
214 | | /* old= 0, write:del, read:add, close:add */ |
215 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD }, |
216 | | /* old= 0, write:del, read:add, close:del */ |
217 | | { EPOLLIN, EPOLL_CTL_ADD }, |
218 | | /* old= 0, write:del, read:add, close:xxx */ |
219 | | { 0, 255 }, |
220 | | /* old= 0, write:del, read:del, close: 0 */ |
221 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, |
222 | | /* old= 0, write:del, read:del, close:add */ |
223 | | { EPOLLRDHUP, EPOLL_CTL_ADD }, |
224 | | /* old= 0, write:del, read:del, close:del */ |
225 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
226 | | /* old= 0, write:del, read:del, close:xxx */ |
227 | | { 0, 255 }, |
228 | | /* old= 0, write:del, read:xxx, close: 0 */ |
229 | | { 0, 255 }, |
230 | | /* old= 0, write:del, read:xxx, close:add */ |
231 | | { 0, 255 }, |
232 | | /* old= 0, write:del, read:xxx, close:del */ |
233 | | { 0, 255 }, |
234 | | /* old= 0, write:del, read:xxx, close:xxx */ |
235 | | { 0, 255 }, |
236 | | /* old= 0, write:xxx, read: 0, close: 0 */ |
237 | | { 0, 255 }, |
238 | | /* old= 0, write:xxx, read: 0, close:add */ |
239 | | { 0, 255 }, |
240 | | /* old= 0, write:xxx, read: 0, close:del */ |
241 | | { 0, 255 }, |
242 | | /* old= 0, write:xxx, read: 0, close:xxx */ |
243 | | { 0, 255 }, |
244 | | /* old= 0, write:xxx, read:add, close: 0 */ |
245 | | { 0, 255 }, |
246 | | /* old= 0, write:xxx, read:add, close:add */ |
247 | | { 0, 255 }, |
248 | | /* old= 0, write:xxx, read:add, close:del */ |
249 | | { 0, 255 }, |
250 | | /* old= 0, write:xxx, read:add, close:xxx */ |
251 | | { 0, 255 }, |
252 | | /* old= 0, write:xxx, read:del, close: 0 */ |
253 | | { 0, 255 }, |
254 | | /* old= 0, write:xxx, read:del, close:add */ |
255 | | { 0, 255 }, |
256 | | /* old= 0, write:xxx, read:del, close:del */ |
257 | | { 0, 255 }, |
258 | | /* old= 0, write:xxx, read:del, close:xxx */ |
259 | | { 0, 255 }, |
260 | | /* old= 0, write:xxx, read:xxx, close: 0 */ |
261 | | { 0, 255 }, |
262 | | /* old= 0, write:xxx, read:xxx, close:add */ |
263 | | { 0, 255 }, |
264 | | /* old= 0, write:xxx, read:xxx, close:del */ |
265 | | { 0, 255 }, |
266 | | /* old= 0, write:xxx, read:xxx, close:xxx */ |
267 | | { 0, 255 }, |
268 | | /* old= r, write: 0, read: 0, close: 0 */ |
269 | | { 0, 0 }, |
270 | | /* old= r, write: 0, read: 0, close:add */ |
271 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
272 | | /* old= r, write: 0, read: 0, close:del */ |
273 | | { EPOLLIN, EPOLL_CTL_MOD }, |
274 | | /* old= r, write: 0, read: 0, close:xxx */ |
275 | | { 0, 255 }, |
276 | | /* old= r, write: 0, read:add, close: 0 */ |
277 | | { EPOLLIN, EPOLL_CTL_MOD }, |
278 | | /* old= r, write: 0, read:add, close:add */ |
279 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
280 | | /* old= r, write: 0, read:add, close:del */ |
281 | | { EPOLLIN, EPOLL_CTL_MOD }, |
282 | | /* old= r, write: 0, read:add, close:xxx */ |
283 | | { 0, 255 }, |
284 | | /* old= r, write: 0, read:del, close: 0 */ |
285 | | { EPOLLIN, EPOLL_CTL_DEL }, |
286 | | /* old= r, write: 0, read:del, close:add */ |
287 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
288 | | /* old= r, write: 0, read:del, close:del */ |
289 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, |
290 | | /* old= r, write: 0, read:del, close:xxx */ |
291 | | { 0, 255 }, |
292 | | /* old= r, write: 0, read:xxx, close: 0 */ |
293 | | { 0, 255 }, |
294 | | /* old= r, write: 0, read:xxx, close:add */ |
295 | | { 0, 255 }, |
296 | | /* old= r, write: 0, read:xxx, close:del */ |
297 | | { 0, 255 }, |
298 | | /* old= r, write: 0, read:xxx, close:xxx */ |
299 | | { 0, 255 }, |
300 | | /* old= r, write:add, read: 0, close: 0 */ |
301 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
302 | | /* old= r, write:add, read: 0, close:add */ |
303 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
304 | | /* old= r, write:add, read: 0, close:del */ |
305 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
306 | | /* old= r, write:add, read: 0, close:xxx */ |
307 | | { 0, 255 }, |
308 | | /* old= r, write:add, read:add, close: 0 */ |
309 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
310 | | /* old= r, write:add, read:add, close:add */ |
311 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
312 | | /* old= r, write:add, read:add, close:del */ |
313 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
314 | | /* old= r, write:add, read:add, close:xxx */ |
315 | | { 0, 255 }, |
316 | | /* old= r, write:add, read:del, close: 0 */ |
317 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
318 | | /* old= r, write:add, read:del, close:add */ |
319 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
320 | | /* old= r, write:add, read:del, close:del */ |
321 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
322 | | /* old= r, write:add, read:del, close:xxx */ |
323 | | { 0, 255 }, |
324 | | /* old= r, write:add, read:xxx, close: 0 */ |
325 | | { 0, 255 }, |
326 | | /* old= r, write:add, read:xxx, close:add */ |
327 | | { 0, 255 }, |
328 | | /* old= r, write:add, read:xxx, close:del */ |
329 | | { 0, 255 }, |
330 | | /* old= r, write:add, read:xxx, close:xxx */ |
331 | | { 0, 255 }, |
332 | | /* old= r, write:del, read: 0, close: 0 */ |
333 | | { EPOLLIN, EPOLL_CTL_MOD }, |
334 | | /* old= r, write:del, read: 0, close:add */ |
335 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
336 | | /* old= r, write:del, read: 0, close:del */ |
337 | | { EPOLLIN, EPOLL_CTL_MOD }, |
338 | | /* old= r, write:del, read: 0, close:xxx */ |
339 | | { 0, 255 }, |
340 | | /* old= r, write:del, read:add, close: 0 */ |
341 | | { EPOLLIN, EPOLL_CTL_MOD }, |
342 | | /* old= r, write:del, read:add, close:add */ |
343 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
344 | | /* old= r, write:del, read:add, close:del */ |
345 | | { EPOLLIN, EPOLL_CTL_MOD }, |
346 | | /* old= r, write:del, read:add, close:xxx */ |
347 | | { 0, 255 }, |
348 | | /* old= r, write:del, read:del, close: 0 */ |
349 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, |
350 | | /* old= r, write:del, read:del, close:add */ |
351 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
352 | | /* old= r, write:del, read:del, close:del */ |
353 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
354 | | /* old= r, write:del, read:del, close:xxx */ |
355 | | { 0, 255 }, |
356 | | /* old= r, write:del, read:xxx, close: 0 */ |
357 | | { 0, 255 }, |
358 | | /* old= r, write:del, read:xxx, close:add */ |
359 | | { 0, 255 }, |
360 | | /* old= r, write:del, read:xxx, close:del */ |
361 | | { 0, 255 }, |
362 | | /* old= r, write:del, read:xxx, close:xxx */ |
363 | | { 0, 255 }, |
364 | | /* old= r, write:xxx, read: 0, close: 0 */ |
365 | | { 0, 255 }, |
366 | | /* old= r, write:xxx, read: 0, close:add */ |
367 | | { 0, 255 }, |
368 | | /* old= r, write:xxx, read: 0, close:del */ |
369 | | { 0, 255 }, |
370 | | /* old= r, write:xxx, read: 0, close:xxx */ |
371 | | { 0, 255 }, |
372 | | /* old= r, write:xxx, read:add, close: 0 */ |
373 | | { 0, 255 }, |
374 | | /* old= r, write:xxx, read:add, close:add */ |
375 | | { 0, 255 }, |
376 | | /* old= r, write:xxx, read:add, close:del */ |
377 | | { 0, 255 }, |
378 | | /* old= r, write:xxx, read:add, close:xxx */ |
379 | | { 0, 255 }, |
380 | | /* old= r, write:xxx, read:del, close: 0 */ |
381 | | { 0, 255 }, |
382 | | /* old= r, write:xxx, read:del, close:add */ |
383 | | { 0, 255 }, |
384 | | /* old= r, write:xxx, read:del, close:del */ |
385 | | { 0, 255 }, |
386 | | /* old= r, write:xxx, read:del, close:xxx */ |
387 | | { 0, 255 }, |
388 | | /* old= r, write:xxx, read:xxx, close: 0 */ |
389 | | { 0, 255 }, |
390 | | /* old= r, write:xxx, read:xxx, close:add */ |
391 | | { 0, 255 }, |
392 | | /* old= r, write:xxx, read:xxx, close:del */ |
393 | | { 0, 255 }, |
394 | | /* old= r, write:xxx, read:xxx, close:xxx */ |
395 | | { 0, 255 }, |
396 | | /* old= w, write: 0, read: 0, close: 0 */ |
397 | | { 0, 0 }, |
398 | | /* old= w, write: 0, read: 0, close:add */ |
399 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
400 | | /* old= w, write: 0, read: 0, close:del */ |
401 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
402 | | /* old= w, write: 0, read: 0, close:xxx */ |
403 | | { 0, 255 }, |
404 | | /* old= w, write: 0, read:add, close: 0 */ |
405 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
406 | | /* old= w, write: 0, read:add, close:add */ |
407 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
408 | | /* old= w, write: 0, read:add, close:del */ |
409 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
410 | | /* old= w, write: 0, read:add, close:xxx */ |
411 | | { 0, 255 }, |
412 | | /* old= w, write: 0, read:del, close: 0 */ |
413 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
414 | | /* old= w, write: 0, read:del, close:add */ |
415 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
416 | | /* old= w, write: 0, read:del, close:del */ |
417 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
418 | | /* old= w, write: 0, read:del, close:xxx */ |
419 | | { 0, 255 }, |
420 | | /* old= w, write: 0, read:xxx, close: 0 */ |
421 | | { 0, 255 }, |
422 | | /* old= w, write: 0, read:xxx, close:add */ |
423 | | { 0, 255 }, |
424 | | /* old= w, write: 0, read:xxx, close:del */ |
425 | | { 0, 255 }, |
426 | | /* old= w, write: 0, read:xxx, close:xxx */ |
427 | | { 0, 255 }, |
428 | | /* old= w, write:add, read: 0, close: 0 */ |
429 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
430 | | /* old= w, write:add, read: 0, close:add */ |
431 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
432 | | /* old= w, write:add, read: 0, close:del */ |
433 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
434 | | /* old= w, write:add, read: 0, close:xxx */ |
435 | | { 0, 255 }, |
436 | | /* old= w, write:add, read:add, close: 0 */ |
437 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
438 | | /* old= w, write:add, read:add, close:add */ |
439 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
440 | | /* old= w, write:add, read:add, close:del */ |
441 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
442 | | /* old= w, write:add, read:add, close:xxx */ |
443 | | { 0, 255 }, |
444 | | /* old= w, write:add, read:del, close: 0 */ |
445 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
446 | | /* old= w, write:add, read:del, close:add */ |
447 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
448 | | /* old= w, write:add, read:del, close:del */ |
449 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
450 | | /* old= w, write:add, read:del, close:xxx */ |
451 | | { 0, 255 }, |
452 | | /* old= w, write:add, read:xxx, close: 0 */ |
453 | | { 0, 255 }, |
454 | | /* old= w, write:add, read:xxx, close:add */ |
455 | | { 0, 255 }, |
456 | | /* old= w, write:add, read:xxx, close:del */ |
457 | | { 0, 255 }, |
458 | | /* old= w, write:add, read:xxx, close:xxx */ |
459 | | { 0, 255 }, |
460 | | /* old= w, write:del, read: 0, close: 0 */ |
461 | | { EPOLLOUT, EPOLL_CTL_DEL }, |
462 | | /* old= w, write:del, read: 0, close:add */ |
463 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
464 | | /* old= w, write:del, read: 0, close:del */ |
465 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
466 | | /* old= w, write:del, read: 0, close:xxx */ |
467 | | { 0, 255 }, |
468 | | /* old= w, write:del, read:add, close: 0 */ |
469 | | { EPOLLIN, EPOLL_CTL_MOD }, |
470 | | /* old= w, write:del, read:add, close:add */ |
471 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
472 | | /* old= w, write:del, read:add, close:del */ |
473 | | { EPOLLIN, EPOLL_CTL_MOD }, |
474 | | /* old= w, write:del, read:add, close:xxx */ |
475 | | { 0, 255 }, |
476 | | /* old= w, write:del, read:del, close: 0 */ |
477 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, |
478 | | /* old= w, write:del, read:del, close:add */ |
479 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
480 | | /* old= w, write:del, read:del, close:del */ |
481 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
482 | | /* old= w, write:del, read:del, close:xxx */ |
483 | | { 0, 255 }, |
484 | | /* old= w, write:del, read:xxx, close: 0 */ |
485 | | { 0, 255 }, |
486 | | /* old= w, write:del, read:xxx, close:add */ |
487 | | { 0, 255 }, |
488 | | /* old= w, write:del, read:xxx, close:del */ |
489 | | { 0, 255 }, |
490 | | /* old= w, write:del, read:xxx, close:xxx */ |
491 | | { 0, 255 }, |
492 | | /* old= w, write:xxx, read: 0, close: 0 */ |
493 | | { 0, 255 }, |
494 | | /* old= w, write:xxx, read: 0, close:add */ |
495 | | { 0, 255 }, |
496 | | /* old= w, write:xxx, read: 0, close:del */ |
497 | | { 0, 255 }, |
498 | | /* old= w, write:xxx, read: 0, close:xxx */ |
499 | | { 0, 255 }, |
500 | | /* old= w, write:xxx, read:add, close: 0 */ |
501 | | { 0, 255 }, |
502 | | /* old= w, write:xxx, read:add, close:add */ |
503 | | { 0, 255 }, |
504 | | /* old= w, write:xxx, read:add, close:del */ |
505 | | { 0, 255 }, |
506 | | /* old= w, write:xxx, read:add, close:xxx */ |
507 | | { 0, 255 }, |
508 | | /* old= w, write:xxx, read:del, close: 0 */ |
509 | | { 0, 255 }, |
510 | | /* old= w, write:xxx, read:del, close:add */ |
511 | | { 0, 255 }, |
512 | | /* old= w, write:xxx, read:del, close:del */ |
513 | | { 0, 255 }, |
514 | | /* old= w, write:xxx, read:del, close:xxx */ |
515 | | { 0, 255 }, |
516 | | /* old= w, write:xxx, read:xxx, close: 0 */ |
517 | | { 0, 255 }, |
518 | | /* old= w, write:xxx, read:xxx, close:add */ |
519 | | { 0, 255 }, |
520 | | /* old= w, write:xxx, read:xxx, close:del */ |
521 | | { 0, 255 }, |
522 | | /* old= w, write:xxx, read:xxx, close:xxx */ |
523 | | { 0, 255 }, |
524 | | /* old= rw, write: 0, read: 0, close: 0 */ |
525 | | { 0, 0 }, |
526 | | /* old= rw, write: 0, read: 0, close:add */ |
527 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
528 | | /* old= rw, write: 0, read: 0, close:del */ |
529 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
530 | | /* old= rw, write: 0, read: 0, close:xxx */ |
531 | | { 0, 255 }, |
532 | | /* old= rw, write: 0, read:add, close: 0 */ |
533 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
534 | | /* old= rw, write: 0, read:add, close:add */ |
535 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
536 | | /* old= rw, write: 0, read:add, close:del */ |
537 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
538 | | /* old= rw, write: 0, read:add, close:xxx */ |
539 | | { 0, 255 }, |
540 | | /* old= rw, write: 0, read:del, close: 0 */ |
541 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
542 | | /* old= rw, write: 0, read:del, close:add */ |
543 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
544 | | /* old= rw, write: 0, read:del, close:del */ |
545 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
546 | | /* old= rw, write: 0, read:del, close:xxx */ |
547 | | { 0, 255 }, |
548 | | /* old= rw, write: 0, read:xxx, close: 0 */ |
549 | | { 0, 255 }, |
550 | | /* old= rw, write: 0, read:xxx, close:add */ |
551 | | { 0, 255 }, |
552 | | /* old= rw, write: 0, read:xxx, close:del */ |
553 | | { 0, 255 }, |
554 | | /* old= rw, write: 0, read:xxx, close:xxx */ |
555 | | { 0, 255 }, |
556 | | /* old= rw, write:add, read: 0, close: 0 */ |
557 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
558 | | /* old= rw, write:add, read: 0, close:add */ |
559 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
560 | | /* old= rw, write:add, read: 0, close:del */ |
561 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
562 | | /* old= rw, write:add, read: 0, close:xxx */ |
563 | | { 0, 255 }, |
564 | | /* old= rw, write:add, read:add, close: 0 */ |
565 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
566 | | /* old= rw, write:add, read:add, close:add */ |
567 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
568 | | /* old= rw, write:add, read:add, close:del */ |
569 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
570 | | /* old= rw, write:add, read:add, close:xxx */ |
571 | | { 0, 255 }, |
572 | | /* old= rw, write:add, read:del, close: 0 */ |
573 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
574 | | /* old= rw, write:add, read:del, close:add */ |
575 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
576 | | /* old= rw, write:add, read:del, close:del */ |
577 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
578 | | /* old= rw, write:add, read:del, close:xxx */ |
579 | | { 0, 255 }, |
580 | | /* old= rw, write:add, read:xxx, close: 0 */ |
581 | | { 0, 255 }, |
582 | | /* old= rw, write:add, read:xxx, close:add */ |
583 | | { 0, 255 }, |
584 | | /* old= rw, write:add, read:xxx, close:del */ |
585 | | { 0, 255 }, |
586 | | /* old= rw, write:add, read:xxx, close:xxx */ |
587 | | { 0, 255 }, |
588 | | /* old= rw, write:del, read: 0, close: 0 */ |
589 | | { EPOLLIN, EPOLL_CTL_MOD }, |
590 | | /* old= rw, write:del, read: 0, close:add */ |
591 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
592 | | /* old= rw, write:del, read: 0, close:del */ |
593 | | { EPOLLIN, EPOLL_CTL_MOD }, |
594 | | /* old= rw, write:del, read: 0, close:xxx */ |
595 | | { 0, 255 }, |
596 | | /* old= rw, write:del, read:add, close: 0 */ |
597 | | { EPOLLIN, EPOLL_CTL_MOD }, |
598 | | /* old= rw, write:del, read:add, close:add */ |
599 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
600 | | /* old= rw, write:del, read:add, close:del */ |
601 | | { EPOLLIN, EPOLL_CTL_MOD }, |
602 | | /* old= rw, write:del, read:add, close:xxx */ |
603 | | { 0, 255 }, |
604 | | /* old= rw, write:del, read:del, close: 0 */ |
605 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, |
606 | | /* old= rw, write:del, read:del, close:add */ |
607 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
608 | | /* old= rw, write:del, read:del, close:del */ |
609 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
610 | | /* old= rw, write:del, read:del, close:xxx */ |
611 | | { 0, 255 }, |
612 | | /* old= rw, write:del, read:xxx, close: 0 */ |
613 | | { 0, 255 }, |
614 | | /* old= rw, write:del, read:xxx, close:add */ |
615 | | { 0, 255 }, |
616 | | /* old= rw, write:del, read:xxx, close:del */ |
617 | | { 0, 255 }, |
618 | | /* old= rw, write:del, read:xxx, close:xxx */ |
619 | | { 0, 255 }, |
620 | | /* old= rw, write:xxx, read: 0, close: 0 */ |
621 | | { 0, 255 }, |
622 | | /* old= rw, write:xxx, read: 0, close:add */ |
623 | | { 0, 255 }, |
624 | | /* old= rw, write:xxx, read: 0, close:del */ |
625 | | { 0, 255 }, |
626 | | /* old= rw, write:xxx, read: 0, close:xxx */ |
627 | | { 0, 255 }, |
628 | | /* old= rw, write:xxx, read:add, close: 0 */ |
629 | | { 0, 255 }, |
630 | | /* old= rw, write:xxx, read:add, close:add */ |
631 | | { 0, 255 }, |
632 | | /* old= rw, write:xxx, read:add, close:del */ |
633 | | { 0, 255 }, |
634 | | /* old= rw, write:xxx, read:add, close:xxx */ |
635 | | { 0, 255 }, |
636 | | /* old= rw, write:xxx, read:del, close: 0 */ |
637 | | { 0, 255 }, |
638 | | /* old= rw, write:xxx, read:del, close:add */ |
639 | | { 0, 255 }, |
640 | | /* old= rw, write:xxx, read:del, close:del */ |
641 | | { 0, 255 }, |
642 | | /* old= rw, write:xxx, read:del, close:xxx */ |
643 | | { 0, 255 }, |
644 | | /* old= rw, write:xxx, read:xxx, close: 0 */ |
645 | | { 0, 255 }, |
646 | | /* old= rw, write:xxx, read:xxx, close:add */ |
647 | | { 0, 255 }, |
648 | | /* old= rw, write:xxx, read:xxx, close:del */ |
649 | | { 0, 255 }, |
650 | | /* old= rw, write:xxx, read:xxx, close:xxx */ |
651 | | { 0, 255 }, |
652 | | /* old= c, write: 0, read: 0, close: 0 */ |
653 | | { 0, 0 }, |
654 | | /* old= c, write: 0, read: 0, close:add */ |
655 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
656 | | /* old= c, write: 0, read: 0, close:del */ |
657 | | { EPOLLRDHUP, EPOLL_CTL_DEL }, |
658 | | /* old= c, write: 0, read: 0, close:xxx */ |
659 | | { 0, 255 }, |
660 | | /* old= c, write: 0, read:add, close: 0 */ |
661 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
662 | | /* old= c, write: 0, read:add, close:add */ |
663 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
664 | | /* old= c, write: 0, read:add, close:del */ |
665 | | { EPOLLIN, EPOLL_CTL_MOD }, |
666 | | /* old= c, write: 0, read:add, close:xxx */ |
667 | | { 0, 255 }, |
668 | | /* old= c, write: 0, read:del, close: 0 */ |
669 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
670 | | /* old= c, write: 0, read:del, close:add */ |
671 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
672 | | /* old= c, write: 0, read:del, close:del */ |
673 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, |
674 | | /* old= c, write: 0, read:del, close:xxx */ |
675 | | { 0, 255 }, |
676 | | /* old= c, write: 0, read:xxx, close: 0 */ |
677 | | { 0, 255 }, |
678 | | /* old= c, write: 0, read:xxx, close:add */ |
679 | | { 0, 255 }, |
680 | | /* old= c, write: 0, read:xxx, close:del */ |
681 | | { 0, 255 }, |
682 | | /* old= c, write: 0, read:xxx, close:xxx */ |
683 | | { 0, 255 }, |
684 | | /* old= c, write:add, read: 0, close: 0 */ |
685 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
686 | | /* old= c, write:add, read: 0, close:add */ |
687 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
688 | | /* old= c, write:add, read: 0, close:del */ |
689 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
690 | | /* old= c, write:add, read: 0, close:xxx */ |
691 | | { 0, 255 }, |
692 | | /* old= c, write:add, read:add, close: 0 */ |
693 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
694 | | /* old= c, write:add, read:add, close:add */ |
695 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
696 | | /* old= c, write:add, read:add, close:del */ |
697 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
698 | | /* old= c, write:add, read:add, close:xxx */ |
699 | | { 0, 255 }, |
700 | | /* old= c, write:add, read:del, close: 0 */ |
701 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
702 | | /* old= c, write:add, read:del, close:add */ |
703 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
704 | | /* old= c, write:add, read:del, close:del */ |
705 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
706 | | /* old= c, write:add, read:del, close:xxx */ |
707 | | { 0, 255 }, |
708 | | /* old= c, write:add, read:xxx, close: 0 */ |
709 | | { 0, 255 }, |
710 | | /* old= c, write:add, read:xxx, close:add */ |
711 | | { 0, 255 }, |
712 | | /* old= c, write:add, read:xxx, close:del */ |
713 | | { 0, 255 }, |
714 | | /* old= c, write:add, read:xxx, close:xxx */ |
715 | | { 0, 255 }, |
716 | | /* old= c, write:del, read: 0, close: 0 */ |
717 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
718 | | /* old= c, write:del, read: 0, close:add */ |
719 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
720 | | /* old= c, write:del, read: 0, close:del */ |
721 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
722 | | /* old= c, write:del, read: 0, close:xxx */ |
723 | | { 0, 255 }, |
724 | | /* old= c, write:del, read:add, close: 0 */ |
725 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
726 | | /* old= c, write:del, read:add, close:add */ |
727 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
728 | | /* old= c, write:del, read:add, close:del */ |
729 | | { EPOLLIN, EPOLL_CTL_MOD }, |
730 | | /* old= c, write:del, read:add, close:xxx */ |
731 | | { 0, 255 }, |
732 | | /* old= c, write:del, read:del, close: 0 */ |
733 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
734 | | /* old= c, write:del, read:del, close:add */ |
735 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
736 | | /* old= c, write:del, read:del, close:del */ |
737 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
738 | | /* old= c, write:del, read:del, close:xxx */ |
739 | | { 0, 255 }, |
740 | | /* old= c, write:del, read:xxx, close: 0 */ |
741 | | { 0, 255 }, |
742 | | /* old= c, write:del, read:xxx, close:add */ |
743 | | { 0, 255 }, |
744 | | /* old= c, write:del, read:xxx, close:del */ |
745 | | { 0, 255 }, |
746 | | /* old= c, write:del, read:xxx, close:xxx */ |
747 | | { 0, 255 }, |
748 | | /* old= c, write:xxx, read: 0, close: 0 */ |
749 | | { 0, 255 }, |
750 | | /* old= c, write:xxx, read: 0, close:add */ |
751 | | { 0, 255 }, |
752 | | /* old= c, write:xxx, read: 0, close:del */ |
753 | | { 0, 255 }, |
754 | | /* old= c, write:xxx, read: 0, close:xxx */ |
755 | | { 0, 255 }, |
756 | | /* old= c, write:xxx, read:add, close: 0 */ |
757 | | { 0, 255 }, |
758 | | /* old= c, write:xxx, read:add, close:add */ |
759 | | { 0, 255 }, |
760 | | /* old= c, write:xxx, read:add, close:del */ |
761 | | { 0, 255 }, |
762 | | /* old= c, write:xxx, read:add, close:xxx */ |
763 | | { 0, 255 }, |
764 | | /* old= c, write:xxx, read:del, close: 0 */ |
765 | | { 0, 255 }, |
766 | | /* old= c, write:xxx, read:del, close:add */ |
767 | | { 0, 255 }, |
768 | | /* old= c, write:xxx, read:del, close:del */ |
769 | | { 0, 255 }, |
770 | | /* old= c, write:xxx, read:del, close:xxx */ |
771 | | { 0, 255 }, |
772 | | /* old= c, write:xxx, read:xxx, close: 0 */ |
773 | | { 0, 255 }, |
774 | | /* old= c, write:xxx, read:xxx, close:add */ |
775 | | { 0, 255 }, |
776 | | /* old= c, write:xxx, read:xxx, close:del */ |
777 | | { 0, 255 }, |
778 | | /* old= c, write:xxx, read:xxx, close:xxx */ |
779 | | { 0, 255 }, |
780 | | /* old= cr, write: 0, read: 0, close: 0 */ |
781 | | { 0, 0 }, |
782 | | /* old= cr, write: 0, read: 0, close:add */ |
783 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
784 | | /* old= cr, write: 0, read: 0, close:del */ |
785 | | { EPOLLIN, EPOLL_CTL_MOD }, |
786 | | /* old= cr, write: 0, read: 0, close:xxx */ |
787 | | { 0, 255 }, |
788 | | /* old= cr, write: 0, read:add, close: 0 */ |
789 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
790 | | /* old= cr, write: 0, read:add, close:add */ |
791 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
792 | | /* old= cr, write: 0, read:add, close:del */ |
793 | | { EPOLLIN, EPOLL_CTL_MOD }, |
794 | | /* old= cr, write: 0, read:add, close:xxx */ |
795 | | { 0, 255 }, |
796 | | /* old= cr, write: 0, read:del, close: 0 */ |
797 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
798 | | /* old= cr, write: 0, read:del, close:add */ |
799 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
800 | | /* old= cr, write: 0, read:del, close:del */ |
801 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, |
802 | | /* old= cr, write: 0, read:del, close:xxx */ |
803 | | { 0, 255 }, |
804 | | /* old= cr, write: 0, read:xxx, close: 0 */ |
805 | | { 0, 255 }, |
806 | | /* old= cr, write: 0, read:xxx, close:add */ |
807 | | { 0, 255 }, |
808 | | /* old= cr, write: 0, read:xxx, close:del */ |
809 | | { 0, 255 }, |
810 | | /* old= cr, write: 0, read:xxx, close:xxx */ |
811 | | { 0, 255 }, |
812 | | /* old= cr, write:add, read: 0, close: 0 */ |
813 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
814 | | /* old= cr, write:add, read: 0, close:add */ |
815 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
816 | | /* old= cr, write:add, read: 0, close:del */ |
817 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
818 | | /* old= cr, write:add, read: 0, close:xxx */ |
819 | | { 0, 255 }, |
820 | | /* old= cr, write:add, read:add, close: 0 */ |
821 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
822 | | /* old= cr, write:add, read:add, close:add */ |
823 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
824 | | /* old= cr, write:add, read:add, close:del */ |
825 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
826 | | /* old= cr, write:add, read:add, close:xxx */ |
827 | | { 0, 255 }, |
828 | | /* old= cr, write:add, read:del, close: 0 */ |
829 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
830 | | /* old= cr, write:add, read:del, close:add */ |
831 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
832 | | /* old= cr, write:add, read:del, close:del */ |
833 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
834 | | /* old= cr, write:add, read:del, close:xxx */ |
835 | | { 0, 255 }, |
836 | | /* old= cr, write:add, read:xxx, close: 0 */ |
837 | | { 0, 255 }, |
838 | | /* old= cr, write:add, read:xxx, close:add */ |
839 | | { 0, 255 }, |
840 | | /* old= cr, write:add, read:xxx, close:del */ |
841 | | { 0, 255 }, |
842 | | /* old= cr, write:add, read:xxx, close:xxx */ |
843 | | { 0, 255 }, |
844 | | /* old= cr, write:del, read: 0, close: 0 */ |
845 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
846 | | /* old= cr, write:del, read: 0, close:add */ |
847 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
848 | | /* old= cr, write:del, read: 0, close:del */ |
849 | | { EPOLLIN, EPOLL_CTL_MOD }, |
850 | | /* old= cr, write:del, read: 0, close:xxx */ |
851 | | { 0, 255 }, |
852 | | /* old= cr, write:del, read:add, close: 0 */ |
853 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
854 | | /* old= cr, write:del, read:add, close:add */ |
855 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
856 | | /* old= cr, write:del, read:add, close:del */ |
857 | | { EPOLLIN, EPOLL_CTL_MOD }, |
858 | | /* old= cr, write:del, read:add, close:xxx */ |
859 | | { 0, 255 }, |
860 | | /* old= cr, write:del, read:del, close: 0 */ |
861 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
862 | | /* old= cr, write:del, read:del, close:add */ |
863 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
864 | | /* old= cr, write:del, read:del, close:del */ |
865 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
866 | | /* old= cr, write:del, read:del, close:xxx */ |
867 | | { 0, 255 }, |
868 | | /* old= cr, write:del, read:xxx, close: 0 */ |
869 | | { 0, 255 }, |
870 | | /* old= cr, write:del, read:xxx, close:add */ |
871 | | { 0, 255 }, |
872 | | /* old= cr, write:del, read:xxx, close:del */ |
873 | | { 0, 255 }, |
874 | | /* old= cr, write:del, read:xxx, close:xxx */ |
875 | | { 0, 255 }, |
876 | | /* old= cr, write:xxx, read: 0, close: 0 */ |
877 | | { 0, 255 }, |
878 | | /* old= cr, write:xxx, read: 0, close:add */ |
879 | | { 0, 255 }, |
880 | | /* old= cr, write:xxx, read: 0, close:del */ |
881 | | { 0, 255 }, |
882 | | /* old= cr, write:xxx, read: 0, close:xxx */ |
883 | | { 0, 255 }, |
884 | | /* old= cr, write:xxx, read:add, close: 0 */ |
885 | | { 0, 255 }, |
886 | | /* old= cr, write:xxx, read:add, close:add */ |
887 | | { 0, 255 }, |
888 | | /* old= cr, write:xxx, read:add, close:del */ |
889 | | { 0, 255 }, |
890 | | /* old= cr, write:xxx, read:add, close:xxx */ |
891 | | { 0, 255 }, |
892 | | /* old= cr, write:xxx, read:del, close: 0 */ |
893 | | { 0, 255 }, |
894 | | /* old= cr, write:xxx, read:del, close:add */ |
895 | | { 0, 255 }, |
896 | | /* old= cr, write:xxx, read:del, close:del */ |
897 | | { 0, 255 }, |
898 | | /* old= cr, write:xxx, read:del, close:xxx */ |
899 | | { 0, 255 }, |
900 | | /* old= cr, write:xxx, read:xxx, close: 0 */ |
901 | | { 0, 255 }, |
902 | | /* old= cr, write:xxx, read:xxx, close:add */ |
903 | | { 0, 255 }, |
904 | | /* old= cr, write:xxx, read:xxx, close:del */ |
905 | | { 0, 255 }, |
906 | | /* old= cr, write:xxx, read:xxx, close:xxx */ |
907 | | { 0, 255 }, |
908 | | /* old= cw, write: 0, read: 0, close: 0 */ |
909 | | { 0, 0 }, |
910 | | /* old= cw, write: 0, read: 0, close:add */ |
911 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
912 | | /* old= cw, write: 0, read: 0, close:del */ |
913 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
914 | | /* old= cw, write: 0, read: 0, close:xxx */ |
915 | | { 0, 255 }, |
916 | | /* old= cw, write: 0, read:add, close: 0 */ |
917 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
918 | | /* old= cw, write: 0, read:add, close:add */ |
919 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
920 | | /* old= cw, write: 0, read:add, close:del */ |
921 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
922 | | /* old= cw, write: 0, read:add, close:xxx */ |
923 | | { 0, 255 }, |
924 | | /* old= cw, write: 0, read:del, close: 0 */ |
925 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
926 | | /* old= cw, write: 0, read:del, close:add */ |
927 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
928 | | /* old= cw, write: 0, read:del, close:del */ |
929 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
930 | | /* old= cw, write: 0, read:del, close:xxx */ |
931 | | { 0, 255 }, |
932 | | /* old= cw, write: 0, read:xxx, close: 0 */ |
933 | | { 0, 255 }, |
934 | | /* old= cw, write: 0, read:xxx, close:add */ |
935 | | { 0, 255 }, |
936 | | /* old= cw, write: 0, read:xxx, close:del */ |
937 | | { 0, 255 }, |
938 | | /* old= cw, write: 0, read:xxx, close:xxx */ |
939 | | { 0, 255 }, |
940 | | /* old= cw, write:add, read: 0, close: 0 */ |
941 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
942 | | /* old= cw, write:add, read: 0, close:add */ |
943 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
944 | | /* old= cw, write:add, read: 0, close:del */ |
945 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
946 | | /* old= cw, write:add, read: 0, close:xxx */ |
947 | | { 0, 255 }, |
948 | | /* old= cw, write:add, read:add, close: 0 */ |
949 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
950 | | /* old= cw, write:add, read:add, close:add */ |
951 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
952 | | /* old= cw, write:add, read:add, close:del */ |
953 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
954 | | /* old= cw, write:add, read:add, close:xxx */ |
955 | | { 0, 255 }, |
956 | | /* old= cw, write:add, read:del, close: 0 */ |
957 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
958 | | /* old= cw, write:add, read:del, close:add */ |
959 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
960 | | /* old= cw, write:add, read:del, close:del */ |
961 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
962 | | /* old= cw, write:add, read:del, close:xxx */ |
963 | | { 0, 255 }, |
964 | | /* old= cw, write:add, read:xxx, close: 0 */ |
965 | | { 0, 255 }, |
966 | | /* old= cw, write:add, read:xxx, close:add */ |
967 | | { 0, 255 }, |
968 | | /* old= cw, write:add, read:xxx, close:del */ |
969 | | { 0, 255 }, |
970 | | /* old= cw, write:add, read:xxx, close:xxx */ |
971 | | { 0, 255 }, |
972 | | /* old= cw, write:del, read: 0, close: 0 */ |
973 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
974 | | /* old= cw, write:del, read: 0, close:add */ |
975 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
976 | | /* old= cw, write:del, read: 0, close:del */ |
977 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
978 | | /* old= cw, write:del, read: 0, close:xxx */ |
979 | | { 0, 255 }, |
980 | | /* old= cw, write:del, read:add, close: 0 */ |
981 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
982 | | /* old= cw, write:del, read:add, close:add */ |
983 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
984 | | /* old= cw, write:del, read:add, close:del */ |
985 | | { EPOLLIN, EPOLL_CTL_MOD }, |
986 | | /* old= cw, write:del, read:add, close:xxx */ |
987 | | { 0, 255 }, |
988 | | /* old= cw, write:del, read:del, close: 0 */ |
989 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
990 | | /* old= cw, write:del, read:del, close:add */ |
991 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
992 | | /* old= cw, write:del, read:del, close:del */ |
993 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
994 | | /* old= cw, write:del, read:del, close:xxx */ |
995 | | { 0, 255 }, |
996 | | /* old= cw, write:del, read:xxx, close: 0 */ |
997 | | { 0, 255 }, |
998 | | /* old= cw, write:del, read:xxx, close:add */ |
999 | | { 0, 255 }, |
1000 | | /* old= cw, write:del, read:xxx, close:del */ |
1001 | | { 0, 255 }, |
1002 | | /* old= cw, write:del, read:xxx, close:xxx */ |
1003 | | { 0, 255 }, |
1004 | | /* old= cw, write:xxx, read: 0, close: 0 */ |
1005 | | { 0, 255 }, |
1006 | | /* old= cw, write:xxx, read: 0, close:add */ |
1007 | | { 0, 255 }, |
1008 | | /* old= cw, write:xxx, read: 0, close:del */ |
1009 | | { 0, 255 }, |
1010 | | /* old= cw, write:xxx, read: 0, close:xxx */ |
1011 | | { 0, 255 }, |
1012 | | /* old= cw, write:xxx, read:add, close: 0 */ |
1013 | | { 0, 255 }, |
1014 | | /* old= cw, write:xxx, read:add, close:add */ |
1015 | | { 0, 255 }, |
1016 | | /* old= cw, write:xxx, read:add, close:del */ |
1017 | | { 0, 255 }, |
1018 | | /* old= cw, write:xxx, read:add, close:xxx */ |
1019 | | { 0, 255 }, |
1020 | | /* old= cw, write:xxx, read:del, close: 0 */ |
1021 | | { 0, 255 }, |
1022 | | /* old= cw, write:xxx, read:del, close:add */ |
1023 | | { 0, 255 }, |
1024 | | /* old= cw, write:xxx, read:del, close:del */ |
1025 | | { 0, 255 }, |
1026 | | /* old= cw, write:xxx, read:del, close:xxx */ |
1027 | | { 0, 255 }, |
1028 | | /* old= cw, write:xxx, read:xxx, close: 0 */ |
1029 | | { 0, 255 }, |
1030 | | /* old= cw, write:xxx, read:xxx, close:add */ |
1031 | | { 0, 255 }, |
1032 | | /* old= cw, write:xxx, read:xxx, close:del */ |
1033 | | { 0, 255 }, |
1034 | | /* old= cw, write:xxx, read:xxx, close:xxx */ |
1035 | | { 0, 255 }, |
1036 | | /* old=crw, write: 0, read: 0, close: 0 */ |
1037 | | { 0, 0 }, |
1038 | | /* old=crw, write: 0, read: 0, close:add */ |
1039 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1040 | | /* old=crw, write: 0, read: 0, close:del */ |
1041 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
1042 | | /* old=crw, write: 0, read: 0, close:xxx */ |
1043 | | { 0, 255 }, |
1044 | | /* old=crw, write: 0, read:add, close: 0 */ |
1045 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1046 | | /* old=crw, write: 0, read:add, close:add */ |
1047 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1048 | | /* old=crw, write: 0, read:add, close:del */ |
1049 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
1050 | | /* old=crw, write: 0, read:add, close:xxx */ |
1051 | | { 0, 255 }, |
1052 | | /* old=crw, write: 0, read:del, close: 0 */ |
1053 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1054 | | /* old=crw, write: 0, read:del, close:add */ |
1055 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1056 | | /* old=crw, write: 0, read:del, close:del */ |
1057 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
1058 | | /* old=crw, write: 0, read:del, close:xxx */ |
1059 | | { 0, 255 }, |
1060 | | /* old=crw, write: 0, read:xxx, close: 0 */ |
1061 | | { 0, 255 }, |
1062 | | /* old=crw, write: 0, read:xxx, close:add */ |
1063 | | { 0, 255 }, |
1064 | | /* old=crw, write: 0, read:xxx, close:del */ |
1065 | | { 0, 255 }, |
1066 | | /* old=crw, write: 0, read:xxx, close:xxx */ |
1067 | | { 0, 255 }, |
1068 | | /* old=crw, write:add, read: 0, close: 0 */ |
1069 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1070 | | /* old=crw, write:add, read: 0, close:add */ |
1071 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1072 | | /* old=crw, write:add, read: 0, close:del */ |
1073 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
1074 | | /* old=crw, write:add, read: 0, close:xxx */ |
1075 | | { 0, 255 }, |
1076 | | /* old=crw, write:add, read:add, close: 0 */ |
1077 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1078 | | /* old=crw, write:add, read:add, close:add */ |
1079 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1080 | | /* old=crw, write:add, read:add, close:del */ |
1081 | | { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, |
1082 | | /* old=crw, write:add, read:add, close:xxx */ |
1083 | | { 0, 255 }, |
1084 | | /* old=crw, write:add, read:del, close: 0 */ |
1085 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1086 | | /* old=crw, write:add, read:del, close:add */ |
1087 | | { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1088 | | /* old=crw, write:add, read:del, close:del */ |
1089 | | { EPOLLOUT, EPOLL_CTL_MOD }, |
1090 | | /* old=crw, write:add, read:del, close:xxx */ |
1091 | | { 0, 255 }, |
1092 | | /* old=crw, write:add, read:xxx, close: 0 */ |
1093 | | { 0, 255 }, |
1094 | | /* old=crw, write:add, read:xxx, close:add */ |
1095 | | { 0, 255 }, |
1096 | | /* old=crw, write:add, read:xxx, close:del */ |
1097 | | { 0, 255 }, |
1098 | | /* old=crw, write:add, read:xxx, close:xxx */ |
1099 | | { 0, 255 }, |
1100 | | /* old=crw, write:del, read: 0, close: 0 */ |
1101 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1102 | | /* old=crw, write:del, read: 0, close:add */ |
1103 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1104 | | /* old=crw, write:del, read: 0, close:del */ |
1105 | | { EPOLLIN, EPOLL_CTL_MOD }, |
1106 | | /* old=crw, write:del, read: 0, close:xxx */ |
1107 | | { 0, 255 }, |
1108 | | /* old=crw, write:del, read:add, close: 0 */ |
1109 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1110 | | /* old=crw, write:del, read:add, close:add */ |
1111 | | { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, |
1112 | | /* old=crw, write:del, read:add, close:del */ |
1113 | | { EPOLLIN, EPOLL_CTL_MOD }, |
1114 | | /* old=crw, write:del, read:add, close:xxx */ |
1115 | | { 0, 255 }, |
1116 | | /* old=crw, write:del, read:del, close: 0 */ |
1117 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
1118 | | /* old=crw, write:del, read:del, close:add */ |
1119 | | { EPOLLRDHUP, EPOLL_CTL_MOD }, |
1120 | | /* old=crw, write:del, read:del, close:del */ |
1121 | | { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, |
1122 | | /* old=crw, write:del, read:del, close:xxx */ |
1123 | | { 0, 255 }, |
1124 | | /* old=crw, write:del, read:xxx, close: 0 */ |
1125 | | { 0, 255 }, |
1126 | | /* old=crw, write:del, read:xxx, close:add */ |
1127 | | { 0, 255 }, |
1128 | | /* old=crw, write:del, read:xxx, close:del */ |
1129 | | { 0, 255 }, |
1130 | | /* old=crw, write:del, read:xxx, close:xxx */ |
1131 | | { 0, 255 }, |
1132 | | /* old=crw, write:xxx, read: 0, close: 0 */ |
1133 | | { 0, 255 }, |
1134 | | /* old=crw, write:xxx, read: 0, close:add */ |
1135 | | { 0, 255 }, |
1136 | | /* old=crw, write:xxx, read: 0, close:del */ |
1137 | | { 0, 255 }, |
1138 | | /* old=crw, write:xxx, read: 0, close:xxx */ |
1139 | | { 0, 255 }, |
1140 | | /* old=crw, write:xxx, read:add, close: 0 */ |
1141 | | { 0, 255 }, |
1142 | | /* old=crw, write:xxx, read:add, close:add */ |
1143 | | { 0, 255 }, |
1144 | | /* old=crw, write:xxx, read:add, close:del */ |
1145 | | { 0, 255 }, |
1146 | | /* old=crw, write:xxx, read:add, close:xxx */ |
1147 | | { 0, 255 }, |
1148 | | /* old=crw, write:xxx, read:del, close: 0 */ |
1149 | | { 0, 255 }, |
1150 | | /* old=crw, write:xxx, read:del, close:add */ |
1151 | | { 0, 255 }, |
1152 | | /* old=crw, write:xxx, read:del, close:del */ |
1153 | | { 0, 255 }, |
1154 | | /* old=crw, write:xxx, read:del, close:xxx */ |
1155 | | { 0, 255 }, |
1156 | | /* old=crw, write:xxx, read:xxx, close: 0 */ |
1157 | | { 0, 255 }, |
1158 | | /* old=crw, write:xxx, read:xxx, close:add */ |
1159 | | { 0, 255 }, |
1160 | | /* old=crw, write:xxx, read:xxx, close:del */ |
1161 | | { 0, 255 }, |
1162 | | /* old=crw, write:xxx, read:xxx, close:xxx */ |
1163 | | { 0, 255 }, |
1164 | | }; |
1165 | | |
1166 | | #endif |