Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libevent/epolltable-internal.h
39475 views
1
/*
2
* Copyright (c) 2000-2007 Niels Provos <[email protected]>
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
( (((c)->close_change&(EV_CHANGE_ADD|EV_CHANGE_DEL))) | \
126
(((c)->read_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 2) | \
127
(((c)->write_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 4) | \
128
(((c)->old_events&(EV_READ|EV_WRITE)) << 5) | \
129
(((c)->old_events&(EV_CLOSED)) << 1) \
130
)
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
1167
1168