1290001Sglebius/*
2290001Sglebius * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3290001Sglebius * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4290001Sglebius *
5290001Sglebius * Redistribution and use in source and binary forms, with or without
6290001Sglebius * modification, are permitted provided that the following conditions
7290001Sglebius * are met:
8290001Sglebius * 1. Redistributions of source code must retain the above copyright
9290001Sglebius *    notice, this list of conditions and the following disclaimer.
10290001Sglebius * 2. Redistributions in binary form must reproduce the above copyright
11290001Sglebius *    notice, this list of conditions and the following disclaimer in the
12290001Sglebius *    documentation and/or other materials provided with the distribution.
13290001Sglebius * 3. The name of the author may not be used to endorse or promote products
14290001Sglebius *    derived from this software without specific prior written permission.
15290001Sglebius *
16290001Sglebius * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17290001Sglebius * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18290001Sglebius * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19290001Sglebius * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20290001Sglebius * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21290001Sglebius * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22290001Sglebius * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23290001Sglebius * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24290001Sglebius * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25290001Sglebius * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26290001Sglebius */
27290001Sglebius#ifndef EPOLLTABLE_INTERNAL_H_INCLUDED_
28290001Sglebius#define EPOLLTABLE_INTERNAL_H_INCLUDED_
29290001Sglebius
30290001Sglebius/*
31290001Sglebius  Here are the values we're masking off to decide what operations to do.
32290001Sglebius  Note that since EV_READ|EV_WRITE.
33290001Sglebius
34290001Sglebius  Note also that this table is a little sparse, since ADD+DEL is
35290001Sglebius  nonsensical ("xxx" in the list below.)
36290001Sglebius
37290001Sglebius  Note also also that we are shifting old_events by only 5 bits, since
38290001Sglebius  EV_READ is 2 and EV_WRITE is 4.
39290001Sglebius
40290001Sglebius  The table was auto-generated with a python script, according to this
41290001Sglebius  pseudocode:[*0]
42290001Sglebius
43290001Sglebius      If either the read or the write change is add+del:
44290001Sglebius	 This is impossible; Set op==-1, events=0.
45290001Sglebius      Else, if either the read or the write change is add:
46290001Sglebius	 Set events to 0.
47290001Sglebius	 If the read change is add, or
48290001Sglebius	    (the read change is not del, and ev_read is in old_events):
49290001Sglebius	       Add EPOLLIN to events.
50290001Sglebius	 If the write change is add, or
51290001Sglebius	    (the write change is not del, and ev_write is in old_events):
52290001Sglebius	       Add EPOLLOUT to events.
53290001Sglebius
54290001Sglebius	 If old_events is set:
55290001Sglebius	       Set op to EPOLL_CTL_MOD [*1,*2]
56290001Sglebius	Else:
57290001Sglebius	       Set op to EPOLL_CTL_ADD [*3]
58290001Sglebius
59290001Sglebius      Else, if the read or the write change is del:
60290001Sglebius	 Set op to EPOLL_CTL_DEL.
61290001Sglebius	 If the read change is del:
62290001Sglebius	     If the write change is del:
63290001Sglebius		 Set events to EPOLLIN|EPOLLOUT
64290001Sglebius	     Else if ev_write is in old_events:
65290001Sglebius		 Set events to EPOLLOUT
66290001Sglebius		Set op to EPOLL_CTL_MOD
67290001Sglebius	     Else
68290001Sglebius		 Set events to EPOLLIN
69290001Sglebius	 Else:
70290001Sglebius	     {The write change is del.}
71290001Sglebius	    If ev_read is in old_events:
72290001Sglebius		 Set events to EPOLLIN
73290001Sglebius		Set op to EPOLL_CTL_MOD
74290001Sglebius	    Else:
75290001Sglebius		Set the events to EPOLLOUT
76290001Sglebius
77290001Sglebius      Else:
78290001Sglebius	   There is no read or write change; set op to 0 and events to 0.
79290001Sglebius
80290001Sglebius      The logic is a little tricky, since we had no events set on the fd before,
81290001Sglebius      we need to set op="ADD" and set events=the events we want to add.	 If we
82290001Sglebius      had any events set on the fd before, and we want any events to remain on
83290001Sglebius      the fd, we need to say op="MOD" and set events=the events we want to
84290001Sglebius      remain.  But if we want to delete the last event, we say op="DEL" and
85290001Sglebius      set events=(any non-null pointer).
86290001Sglebius
87290001Sglebius  [*0] Actually, the Python script has gotten a bit more complicated, to
88290001Sglebius       support EPOLLRDHUP.
89290001Sglebius
90290001Sglebius  [*1] This MOD is only a guess.  MOD might fail with ENOENT if the file was
91290001Sglebius       closed and a new file was opened with the same fd.  If so, we'll retry
92290001Sglebius       with ADD.
93290001Sglebius
94290001Sglebius  [*2] We can't replace this with a no-op even if old_events is the same as
95290001Sglebius       the new events: if the file was closed and reopened, we need to retry
96290001Sglebius       with an ADD.  (We do a MOD in this case since "no change" is more
97290001Sglebius       common than "close and reopen", so we'll usually wind up doing 1
98290001Sglebius       syscalls instead of 2.)
99290001Sglebius
100290001Sglebius  [*3] This ADD is only a guess.  There is a fun Linux kernel issue where if
101290001Sglebius       you have two fds for the same file (via dup) and you ADD one to an
102290001Sglebius       epfd, then close it, then re-create it with the same fd (via dup2 or an
103290001Sglebius       unlucky dup), then try to ADD it again, you'll get an EEXIST, since the
104290001Sglebius       struct epitem is not actually removed from the struct eventpoll until
105290001Sglebius       the file itself is closed.
106290001Sglebius
107290001Sglebius  EV_CHANGE_ADD==1
108290001Sglebius  EV_CHANGE_DEL==2
109290001Sglebius  EV_READ      ==2
110290001Sglebius  EV_WRITE     ==4
111290001Sglebius  EV_CLOSED    ==0x80
112290001Sglebius
113290001Sglebius  Bit 0: close change is add
114290001Sglebius  Bit 1: close change is del
115290001Sglebius  Bit 2: read change is add
116290001Sglebius  Bit 3: read change is del
117290001Sglebius  Bit 4: write change is add
118290001Sglebius  Bit 5: write change is del
119290001Sglebius  Bit 6: old events had EV_READ
120290001Sglebius  Bit 7: old events had EV_WRITE
121290001Sglebius  Bit 8: old events had EV_CLOSED
122290001Sglebius*/
123290001Sglebius
124290001Sglebius#define EPOLL_OP_TABLE_INDEX(c) \
125290001Sglebius	(   (((c)->close_change&(EV_CHANGE_ADD|EV_CHANGE_DEL))) |		\
126290001Sglebius	    (((c)->read_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 2) |	\
127290001Sglebius	    (((c)->write_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 4) |	\
128290001Sglebius	    (((c)->old_events&(EV_READ|EV_WRITE)) << 5) |		\
129290001Sglebius	    (((c)->old_events&(EV_CLOSED)) << 1)				\
130290001Sglebius	    )
131290001Sglebius
132290001Sglebius#if EV_READ != 2 || EV_WRITE != 4 || EV_CLOSED != 0x80 || EV_CHANGE_ADD != 1 || EV_CHANGE_DEL != 2
133290001Sglebius#error "Libevent's internals changed!  Regenerate the op_table in epolltable-internal.h"
134290001Sglebius#endif
135290001Sglebius
136290001Sglebiusstatic const struct operation {
137290001Sglebius	int events;
138290001Sglebius	int op;
139290001Sglebius} epoll_op_table[] = {
140290001Sglebius	/* old=  0, write:  0, read:  0, close:  0 */
141290001Sglebius	{ 0, 0 },
142290001Sglebius	/* old=  0, write:  0, read:  0, close:add */
143290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_ADD },
144290001Sglebius	/* old=  0, write:  0, read:  0, close:del */
145290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_DEL },
146290001Sglebius	/* old=  0, write:  0, read:  0, close:xxx */
147290001Sglebius	{ 0, 255 },
148290001Sglebius	/* old=  0, write:  0, read:add, close:  0 */
149290001Sglebius	{ EPOLLIN, EPOLL_CTL_ADD },
150290001Sglebius	/* old=  0, write:  0, read:add, close:add */
151290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD },
152290001Sglebius	/* old=  0, write:  0, read:add, close:del */
153290001Sglebius	{ EPOLLIN, EPOLL_CTL_ADD },
154290001Sglebius	/* old=  0, write:  0, read:add, close:xxx */
155290001Sglebius	{ 0, 255 },
156290001Sglebius	/* old=  0, write:  0, read:del, close:  0 */
157290001Sglebius	{ EPOLLIN, EPOLL_CTL_DEL },
158290001Sglebius	/* old=  0, write:  0, read:del, close:add */
159290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_ADD },
160290001Sglebius	/* old=  0, write:  0, read:del, close:del */
161290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
162290001Sglebius	/* old=  0, write:  0, read:del, close:xxx */
163290001Sglebius	{ 0, 255 },
164290001Sglebius	/* old=  0, write:  0, read:xxx, close:  0 */
165290001Sglebius	{ 0, 255 },
166290001Sglebius	/* old=  0, write:  0, read:xxx, close:add */
167290001Sglebius	{ 0, 255 },
168290001Sglebius	/* old=  0, write:  0, read:xxx, close:del */
169290001Sglebius	{ 0, 255 },
170290001Sglebius	/* old=  0, write:  0, read:xxx, close:xxx */
171290001Sglebius	{ 0, 255 },
172290001Sglebius	/* old=  0, write:add, read:  0, close:  0 */
173290001Sglebius	{ EPOLLOUT, EPOLL_CTL_ADD },
174290001Sglebius	/* old=  0, write:add, read:  0, close:add */
175290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
176290001Sglebius	/* old=  0, write:add, read:  0, close:del */
177290001Sglebius	{ EPOLLOUT, EPOLL_CTL_ADD },
178290001Sglebius	/* old=  0, write:add, read:  0, close:xxx */
179290001Sglebius	{ 0, 255 },
180290001Sglebius	/* old=  0, write:add, read:add, close:  0 */
181290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD },
182290001Sglebius	/* old=  0, write:add, read:add, close:add */
183290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
184290001Sglebius	/* old=  0, write:add, read:add, close:del */
185290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD },
186290001Sglebius	/* old=  0, write:add, read:add, close:xxx */
187290001Sglebius	{ 0, 255 },
188290001Sglebius	/* old=  0, write:add, read:del, close:  0 */
189290001Sglebius	{ EPOLLOUT, EPOLL_CTL_ADD },
190290001Sglebius	/* old=  0, write:add, read:del, close:add */
191290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
192290001Sglebius	/* old=  0, write:add, read:del, close:del */
193290001Sglebius	{ EPOLLOUT, EPOLL_CTL_ADD },
194290001Sglebius	/* old=  0, write:add, read:del, close:xxx */
195290001Sglebius	{ 0, 255 },
196290001Sglebius	/* old=  0, write:add, read:xxx, close:  0 */
197290001Sglebius	{ 0, 255 },
198290001Sglebius	/* old=  0, write:add, read:xxx, close:add */
199290001Sglebius	{ 0, 255 },
200290001Sglebius	/* old=  0, write:add, read:xxx, close:del */
201290001Sglebius	{ 0, 255 },
202290001Sglebius	/* old=  0, write:add, read:xxx, close:xxx */
203290001Sglebius	{ 0, 255 },
204290001Sglebius	/* old=  0, write:del, read:  0, close:  0 */
205290001Sglebius	{ EPOLLOUT, EPOLL_CTL_DEL },
206290001Sglebius	/* old=  0, write:del, read:  0, close:add */
207290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_ADD },
208290001Sglebius	/* old=  0, write:del, read:  0, close:del */
209290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
210290001Sglebius	/* old=  0, write:del, read:  0, close:xxx */
211290001Sglebius	{ 0, 255 },
212290001Sglebius	/* old=  0, write:del, read:add, close:  0 */
213290001Sglebius	{ EPOLLIN, EPOLL_CTL_ADD },
214290001Sglebius	/* old=  0, write:del, read:add, close:add */
215290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD },
216290001Sglebius	/* old=  0, write:del, read:add, close:del */
217290001Sglebius	{ EPOLLIN, EPOLL_CTL_ADD },
218290001Sglebius	/* old=  0, write:del, read:add, close:xxx */
219290001Sglebius	{ 0, 255 },
220290001Sglebius	/* old=  0, write:del, read:del, close:  0 */
221290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
222290001Sglebius	/* old=  0, write:del, read:del, close:add */
223290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_ADD },
224290001Sglebius	/* old=  0, write:del, read:del, close:del */
225290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
226290001Sglebius	/* old=  0, write:del, read:del, close:xxx */
227290001Sglebius	{ 0, 255 },
228290001Sglebius	/* old=  0, write:del, read:xxx, close:  0 */
229290001Sglebius	{ 0, 255 },
230290001Sglebius	/* old=  0, write:del, read:xxx, close:add */
231290001Sglebius	{ 0, 255 },
232290001Sglebius	/* old=  0, write:del, read:xxx, close:del */
233290001Sglebius	{ 0, 255 },
234290001Sglebius	/* old=  0, write:del, read:xxx, close:xxx */
235290001Sglebius	{ 0, 255 },
236290001Sglebius	/* old=  0, write:xxx, read:  0, close:  0 */
237290001Sglebius	{ 0, 255 },
238290001Sglebius	/* old=  0, write:xxx, read:  0, close:add */
239290001Sglebius	{ 0, 255 },
240290001Sglebius	/* old=  0, write:xxx, read:  0, close:del */
241290001Sglebius	{ 0, 255 },
242290001Sglebius	/* old=  0, write:xxx, read:  0, close:xxx */
243290001Sglebius	{ 0, 255 },
244290001Sglebius	/* old=  0, write:xxx, read:add, close:  0 */
245290001Sglebius	{ 0, 255 },
246290001Sglebius	/* old=  0, write:xxx, read:add, close:add */
247290001Sglebius	{ 0, 255 },
248290001Sglebius	/* old=  0, write:xxx, read:add, close:del */
249290001Sglebius	{ 0, 255 },
250290001Sglebius	/* old=  0, write:xxx, read:add, close:xxx */
251290001Sglebius	{ 0, 255 },
252290001Sglebius	/* old=  0, write:xxx, read:del, close:  0 */
253290001Sglebius	{ 0, 255 },
254290001Sglebius	/* old=  0, write:xxx, read:del, close:add */
255290001Sglebius	{ 0, 255 },
256290001Sglebius	/* old=  0, write:xxx, read:del, close:del */
257290001Sglebius	{ 0, 255 },
258290001Sglebius	/* old=  0, write:xxx, read:del, close:xxx */
259290001Sglebius	{ 0, 255 },
260290001Sglebius	/* old=  0, write:xxx, read:xxx, close:  0 */
261290001Sglebius	{ 0, 255 },
262290001Sglebius	/* old=  0, write:xxx, read:xxx, close:add */
263290001Sglebius	{ 0, 255 },
264290001Sglebius	/* old=  0, write:xxx, read:xxx, close:del */
265290001Sglebius	{ 0, 255 },
266290001Sglebius	/* old=  0, write:xxx, read:xxx, close:xxx */
267290001Sglebius	{ 0, 255 },
268290001Sglebius	/* old=  r, write:  0, read:  0, close:  0 */
269290001Sglebius	{ 0, 0 },
270290001Sglebius	/* old=  r, write:  0, read:  0, close:add */
271290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
272290001Sglebius	/* old=  r, write:  0, read:  0, close:del */
273290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
274290001Sglebius	/* old=  r, write:  0, read:  0, close:xxx */
275290001Sglebius	{ 0, 255 },
276290001Sglebius	/* old=  r, write:  0, read:add, close:  0 */
277290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
278290001Sglebius	/* old=  r, write:  0, read:add, close:add */
279290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
280290001Sglebius	/* old=  r, write:  0, read:add, close:del */
281290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
282290001Sglebius	/* old=  r, write:  0, read:add, close:xxx */
283290001Sglebius	{ 0, 255 },
284290001Sglebius	/* old=  r, write:  0, read:del, close:  0 */
285290001Sglebius	{ EPOLLIN, EPOLL_CTL_DEL },
286290001Sglebius	/* old=  r, write:  0, read:del, close:add */
287290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
288290001Sglebius	/* old=  r, write:  0, read:del, close:del */
289290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
290290001Sglebius	/* old=  r, write:  0, read:del, close:xxx */
291290001Sglebius	{ 0, 255 },
292290001Sglebius	/* old=  r, write:  0, read:xxx, close:  0 */
293290001Sglebius	{ 0, 255 },
294290001Sglebius	/* old=  r, write:  0, read:xxx, close:add */
295290001Sglebius	{ 0, 255 },
296290001Sglebius	/* old=  r, write:  0, read:xxx, close:del */
297290001Sglebius	{ 0, 255 },
298290001Sglebius	/* old=  r, write:  0, read:xxx, close:xxx */
299290001Sglebius	{ 0, 255 },
300290001Sglebius	/* old=  r, write:add, read:  0, close:  0 */
301290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
302290001Sglebius	/* old=  r, write:add, read:  0, close:add */
303290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
304290001Sglebius	/* old=  r, write:add, read:  0, close:del */
305290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
306290001Sglebius	/* old=  r, write:add, read:  0, close:xxx */
307290001Sglebius	{ 0, 255 },
308290001Sglebius	/* old=  r, write:add, read:add, close:  0 */
309290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
310290001Sglebius	/* old=  r, write:add, read:add, close:add */
311290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
312290001Sglebius	/* old=  r, write:add, read:add, close:del */
313290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
314290001Sglebius	/* old=  r, write:add, read:add, close:xxx */
315290001Sglebius	{ 0, 255 },
316290001Sglebius	/* old=  r, write:add, read:del, close:  0 */
317290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
318290001Sglebius	/* old=  r, write:add, read:del, close:add */
319290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
320290001Sglebius	/* old=  r, write:add, read:del, close:del */
321290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
322290001Sglebius	/* old=  r, write:add, read:del, close:xxx */
323290001Sglebius	{ 0, 255 },
324290001Sglebius	/* old=  r, write:add, read:xxx, close:  0 */
325290001Sglebius	{ 0, 255 },
326290001Sglebius	/* old=  r, write:add, read:xxx, close:add */
327290001Sglebius	{ 0, 255 },
328290001Sglebius	/* old=  r, write:add, read:xxx, close:del */
329290001Sglebius	{ 0, 255 },
330290001Sglebius	/* old=  r, write:add, read:xxx, close:xxx */
331290001Sglebius	{ 0, 255 },
332290001Sglebius	/* old=  r, write:del, read:  0, close:  0 */
333290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
334290001Sglebius	/* old=  r, write:del, read:  0, close:add */
335290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
336290001Sglebius	/* old=  r, write:del, read:  0, close:del */
337290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
338290001Sglebius	/* old=  r, write:del, read:  0, close:xxx */
339290001Sglebius	{ 0, 255 },
340290001Sglebius	/* old=  r, write:del, read:add, close:  0 */
341290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
342290001Sglebius	/* old=  r, write:del, read:add, close:add */
343290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
344290001Sglebius	/* old=  r, write:del, read:add, close:del */
345290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
346290001Sglebius	/* old=  r, write:del, read:add, close:xxx */
347290001Sglebius	{ 0, 255 },
348290001Sglebius	/* old=  r, write:del, read:del, close:  0 */
349290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
350290001Sglebius	/* old=  r, write:del, read:del, close:add */
351290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
352290001Sglebius	/* old=  r, write:del, read:del, close:del */
353290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
354290001Sglebius	/* old=  r, write:del, read:del, close:xxx */
355290001Sglebius	{ 0, 255 },
356290001Sglebius	/* old=  r, write:del, read:xxx, close:  0 */
357290001Sglebius	{ 0, 255 },
358290001Sglebius	/* old=  r, write:del, read:xxx, close:add */
359290001Sglebius	{ 0, 255 },
360290001Sglebius	/* old=  r, write:del, read:xxx, close:del */
361290001Sglebius	{ 0, 255 },
362290001Sglebius	/* old=  r, write:del, read:xxx, close:xxx */
363290001Sglebius	{ 0, 255 },
364290001Sglebius	/* old=  r, write:xxx, read:  0, close:  0 */
365290001Sglebius	{ 0, 255 },
366290001Sglebius	/* old=  r, write:xxx, read:  0, close:add */
367290001Sglebius	{ 0, 255 },
368290001Sglebius	/* old=  r, write:xxx, read:  0, close:del */
369290001Sglebius	{ 0, 255 },
370290001Sglebius	/* old=  r, write:xxx, read:  0, close:xxx */
371290001Sglebius	{ 0, 255 },
372290001Sglebius	/* old=  r, write:xxx, read:add, close:  0 */
373290001Sglebius	{ 0, 255 },
374290001Sglebius	/* old=  r, write:xxx, read:add, close:add */
375290001Sglebius	{ 0, 255 },
376290001Sglebius	/* old=  r, write:xxx, read:add, close:del */
377290001Sglebius	{ 0, 255 },
378290001Sglebius	/* old=  r, write:xxx, read:add, close:xxx */
379290001Sglebius	{ 0, 255 },
380290001Sglebius	/* old=  r, write:xxx, read:del, close:  0 */
381290001Sglebius	{ 0, 255 },
382290001Sglebius	/* old=  r, write:xxx, read:del, close:add */
383290001Sglebius	{ 0, 255 },
384290001Sglebius	/* old=  r, write:xxx, read:del, close:del */
385290001Sglebius	{ 0, 255 },
386290001Sglebius	/* old=  r, write:xxx, read:del, close:xxx */
387290001Sglebius	{ 0, 255 },
388290001Sglebius	/* old=  r, write:xxx, read:xxx, close:  0 */
389290001Sglebius	{ 0, 255 },
390290001Sglebius	/* old=  r, write:xxx, read:xxx, close:add */
391290001Sglebius	{ 0, 255 },
392290001Sglebius	/* old=  r, write:xxx, read:xxx, close:del */
393290001Sglebius	{ 0, 255 },
394290001Sglebius	/* old=  r, write:xxx, read:xxx, close:xxx */
395290001Sglebius	{ 0, 255 },
396290001Sglebius	/* old=  w, write:  0, read:  0, close:  0 */
397290001Sglebius	{ 0, 0 },
398290001Sglebius	/* old=  w, write:  0, read:  0, close:add */
399290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
400290001Sglebius	/* old=  w, write:  0, read:  0, close:del */
401290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
402290001Sglebius	/* old=  w, write:  0, read:  0, close:xxx */
403290001Sglebius	{ 0, 255 },
404290001Sglebius	/* old=  w, write:  0, read:add, close:  0 */
405290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
406290001Sglebius	/* old=  w, write:  0, read:add, close:add */
407290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
408290001Sglebius	/* old=  w, write:  0, read:add, close:del */
409290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
410290001Sglebius	/* old=  w, write:  0, read:add, close:xxx */
411290001Sglebius	{ 0, 255 },
412290001Sglebius	/* old=  w, write:  0, read:del, close:  0 */
413290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
414290001Sglebius	/* old=  w, write:  0, read:del, close:add */
415290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
416290001Sglebius	/* old=  w, write:  0, read:del, close:del */
417290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
418290001Sglebius	/* old=  w, write:  0, read:del, close:xxx */
419290001Sglebius	{ 0, 255 },
420290001Sglebius	/* old=  w, write:  0, read:xxx, close:  0 */
421290001Sglebius	{ 0, 255 },
422290001Sglebius	/* old=  w, write:  0, read:xxx, close:add */
423290001Sglebius	{ 0, 255 },
424290001Sglebius	/* old=  w, write:  0, read:xxx, close:del */
425290001Sglebius	{ 0, 255 },
426290001Sglebius	/* old=  w, write:  0, read:xxx, close:xxx */
427290001Sglebius	{ 0, 255 },
428290001Sglebius	/* old=  w, write:add, read:  0, close:  0 */
429290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
430290001Sglebius	/* old=  w, write:add, read:  0, close:add */
431290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
432290001Sglebius	/* old=  w, write:add, read:  0, close:del */
433290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
434290001Sglebius	/* old=  w, write:add, read:  0, close:xxx */
435290001Sglebius	{ 0, 255 },
436290001Sglebius	/* old=  w, write:add, read:add, close:  0 */
437290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
438290001Sglebius	/* old=  w, write:add, read:add, close:add */
439290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
440290001Sglebius	/* old=  w, write:add, read:add, close:del */
441290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
442290001Sglebius	/* old=  w, write:add, read:add, close:xxx */
443290001Sglebius	{ 0, 255 },
444290001Sglebius	/* old=  w, write:add, read:del, close:  0 */
445290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
446290001Sglebius	/* old=  w, write:add, read:del, close:add */
447290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
448290001Sglebius	/* old=  w, write:add, read:del, close:del */
449290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
450290001Sglebius	/* old=  w, write:add, read:del, close:xxx */
451290001Sglebius	{ 0, 255 },
452290001Sglebius	/* old=  w, write:add, read:xxx, close:  0 */
453290001Sglebius	{ 0, 255 },
454290001Sglebius	/* old=  w, write:add, read:xxx, close:add */
455290001Sglebius	{ 0, 255 },
456290001Sglebius	/* old=  w, write:add, read:xxx, close:del */
457290001Sglebius	{ 0, 255 },
458290001Sglebius	/* old=  w, write:add, read:xxx, close:xxx */
459290001Sglebius	{ 0, 255 },
460290001Sglebius	/* old=  w, write:del, read:  0, close:  0 */
461290001Sglebius	{ EPOLLOUT, EPOLL_CTL_DEL },
462290001Sglebius	/* old=  w, write:del, read:  0, close:add */
463290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
464290001Sglebius	/* old=  w, write:del, read:  0, close:del */
465290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
466290001Sglebius	/* old=  w, write:del, read:  0, close:xxx */
467290001Sglebius	{ 0, 255 },
468290001Sglebius	/* old=  w, write:del, read:add, close:  0 */
469290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
470290001Sglebius	/* old=  w, write:del, read:add, close:add */
471290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
472290001Sglebius	/* old=  w, write:del, read:add, close:del */
473290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
474290001Sglebius	/* old=  w, write:del, read:add, close:xxx */
475290001Sglebius	{ 0, 255 },
476290001Sglebius	/* old=  w, write:del, read:del, close:  0 */
477290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
478290001Sglebius	/* old=  w, write:del, read:del, close:add */
479290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
480290001Sglebius	/* old=  w, write:del, read:del, close:del */
481290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
482290001Sglebius	/* old=  w, write:del, read:del, close:xxx */
483290001Sglebius	{ 0, 255 },
484290001Sglebius	/* old=  w, write:del, read:xxx, close:  0 */
485290001Sglebius	{ 0, 255 },
486290001Sglebius	/* old=  w, write:del, read:xxx, close:add */
487290001Sglebius	{ 0, 255 },
488290001Sglebius	/* old=  w, write:del, read:xxx, close:del */
489290001Sglebius	{ 0, 255 },
490290001Sglebius	/* old=  w, write:del, read:xxx, close:xxx */
491290001Sglebius	{ 0, 255 },
492290001Sglebius	/* old=  w, write:xxx, read:  0, close:  0 */
493290001Sglebius	{ 0, 255 },
494290001Sglebius	/* old=  w, write:xxx, read:  0, close:add */
495290001Sglebius	{ 0, 255 },
496290001Sglebius	/* old=  w, write:xxx, read:  0, close:del */
497290001Sglebius	{ 0, 255 },
498290001Sglebius	/* old=  w, write:xxx, read:  0, close:xxx */
499290001Sglebius	{ 0, 255 },
500290001Sglebius	/* old=  w, write:xxx, read:add, close:  0 */
501290001Sglebius	{ 0, 255 },
502290001Sglebius	/* old=  w, write:xxx, read:add, close:add */
503290001Sglebius	{ 0, 255 },
504290001Sglebius	/* old=  w, write:xxx, read:add, close:del */
505290001Sglebius	{ 0, 255 },
506290001Sglebius	/* old=  w, write:xxx, read:add, close:xxx */
507290001Sglebius	{ 0, 255 },
508290001Sglebius	/* old=  w, write:xxx, read:del, close:  0 */
509290001Sglebius	{ 0, 255 },
510290001Sglebius	/* old=  w, write:xxx, read:del, close:add */
511290001Sglebius	{ 0, 255 },
512290001Sglebius	/* old=  w, write:xxx, read:del, close:del */
513290001Sglebius	{ 0, 255 },
514290001Sglebius	/* old=  w, write:xxx, read:del, close:xxx */
515290001Sglebius	{ 0, 255 },
516290001Sglebius	/* old=  w, write:xxx, read:xxx, close:  0 */
517290001Sglebius	{ 0, 255 },
518290001Sglebius	/* old=  w, write:xxx, read:xxx, close:add */
519290001Sglebius	{ 0, 255 },
520290001Sglebius	/* old=  w, write:xxx, read:xxx, close:del */
521290001Sglebius	{ 0, 255 },
522290001Sglebius	/* old=  w, write:xxx, read:xxx, close:xxx */
523290001Sglebius	{ 0, 255 },
524290001Sglebius	/* old= rw, write:  0, read:  0, close:  0 */
525290001Sglebius	{ 0, 0 },
526290001Sglebius	/* old= rw, write:  0, read:  0, close:add */
527290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
528290001Sglebius	/* old= rw, write:  0, read:  0, close:del */
529290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
530290001Sglebius	/* old= rw, write:  0, read:  0, close:xxx */
531290001Sglebius	{ 0, 255 },
532290001Sglebius	/* old= rw, write:  0, read:add, close:  0 */
533290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
534290001Sglebius	/* old= rw, write:  0, read:add, close:add */
535290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
536290001Sglebius	/* old= rw, write:  0, read:add, close:del */
537290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
538290001Sglebius	/* old= rw, write:  0, read:add, close:xxx */
539290001Sglebius	{ 0, 255 },
540290001Sglebius	/* old= rw, write:  0, read:del, close:  0 */
541290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
542290001Sglebius	/* old= rw, write:  0, read:del, close:add */
543290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
544290001Sglebius	/* old= rw, write:  0, read:del, close:del */
545290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
546290001Sglebius	/* old= rw, write:  0, read:del, close:xxx */
547290001Sglebius	{ 0, 255 },
548290001Sglebius	/* old= rw, write:  0, read:xxx, close:  0 */
549290001Sglebius	{ 0, 255 },
550290001Sglebius	/* old= rw, write:  0, read:xxx, close:add */
551290001Sglebius	{ 0, 255 },
552290001Sglebius	/* old= rw, write:  0, read:xxx, close:del */
553290001Sglebius	{ 0, 255 },
554290001Sglebius	/* old= rw, write:  0, read:xxx, close:xxx */
555290001Sglebius	{ 0, 255 },
556290001Sglebius	/* old= rw, write:add, read:  0, close:  0 */
557290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
558290001Sglebius	/* old= rw, write:add, read:  0, close:add */
559290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
560290001Sglebius	/* old= rw, write:add, read:  0, close:del */
561290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
562290001Sglebius	/* old= rw, write:add, read:  0, close:xxx */
563290001Sglebius	{ 0, 255 },
564290001Sglebius	/* old= rw, write:add, read:add, close:  0 */
565290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
566290001Sglebius	/* old= rw, write:add, read:add, close:add */
567290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
568290001Sglebius	/* old= rw, write:add, read:add, close:del */
569290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
570290001Sglebius	/* old= rw, write:add, read:add, close:xxx */
571290001Sglebius	{ 0, 255 },
572290001Sglebius	/* old= rw, write:add, read:del, close:  0 */
573290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
574290001Sglebius	/* old= rw, write:add, read:del, close:add */
575290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
576290001Sglebius	/* old= rw, write:add, read:del, close:del */
577290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
578290001Sglebius	/* old= rw, write:add, read:del, close:xxx */
579290001Sglebius	{ 0, 255 },
580290001Sglebius	/* old= rw, write:add, read:xxx, close:  0 */
581290001Sglebius	{ 0, 255 },
582290001Sglebius	/* old= rw, write:add, read:xxx, close:add */
583290001Sglebius	{ 0, 255 },
584290001Sglebius	/* old= rw, write:add, read:xxx, close:del */
585290001Sglebius	{ 0, 255 },
586290001Sglebius	/* old= rw, write:add, read:xxx, close:xxx */
587290001Sglebius	{ 0, 255 },
588290001Sglebius	/* old= rw, write:del, read:  0, close:  0 */
589290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
590290001Sglebius	/* old= rw, write:del, read:  0, close:add */
591290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
592290001Sglebius	/* old= rw, write:del, read:  0, close:del */
593290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
594290001Sglebius	/* old= rw, write:del, read:  0, close:xxx */
595290001Sglebius	{ 0, 255 },
596290001Sglebius	/* old= rw, write:del, read:add, close:  0 */
597290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
598290001Sglebius	/* old= rw, write:del, read:add, close:add */
599290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
600290001Sglebius	/* old= rw, write:del, read:add, close:del */
601290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
602290001Sglebius	/* old= rw, write:del, read:add, close:xxx */
603290001Sglebius	{ 0, 255 },
604290001Sglebius	/* old= rw, write:del, read:del, close:  0 */
605290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
606290001Sglebius	/* old= rw, write:del, read:del, close:add */
607290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
608290001Sglebius	/* old= rw, write:del, read:del, close:del */
609290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
610290001Sglebius	/* old= rw, write:del, read:del, close:xxx */
611290001Sglebius	{ 0, 255 },
612290001Sglebius	/* old= rw, write:del, read:xxx, close:  0 */
613290001Sglebius	{ 0, 255 },
614290001Sglebius	/* old= rw, write:del, read:xxx, close:add */
615290001Sglebius	{ 0, 255 },
616290001Sglebius	/* old= rw, write:del, read:xxx, close:del */
617290001Sglebius	{ 0, 255 },
618290001Sglebius	/* old= rw, write:del, read:xxx, close:xxx */
619290001Sglebius	{ 0, 255 },
620290001Sglebius	/* old= rw, write:xxx, read:  0, close:  0 */
621290001Sglebius	{ 0, 255 },
622290001Sglebius	/* old= rw, write:xxx, read:  0, close:add */
623290001Sglebius	{ 0, 255 },
624290001Sglebius	/* old= rw, write:xxx, read:  0, close:del */
625290001Sglebius	{ 0, 255 },
626290001Sglebius	/* old= rw, write:xxx, read:  0, close:xxx */
627290001Sglebius	{ 0, 255 },
628290001Sglebius	/* old= rw, write:xxx, read:add, close:  0 */
629290001Sglebius	{ 0, 255 },
630290001Sglebius	/* old= rw, write:xxx, read:add, close:add */
631290001Sglebius	{ 0, 255 },
632290001Sglebius	/* old= rw, write:xxx, read:add, close:del */
633290001Sglebius	{ 0, 255 },
634290001Sglebius	/* old= rw, write:xxx, read:add, close:xxx */
635290001Sglebius	{ 0, 255 },
636290001Sglebius	/* old= rw, write:xxx, read:del, close:  0 */
637290001Sglebius	{ 0, 255 },
638290001Sglebius	/* old= rw, write:xxx, read:del, close:add */
639290001Sglebius	{ 0, 255 },
640290001Sglebius	/* old= rw, write:xxx, read:del, close:del */
641290001Sglebius	{ 0, 255 },
642290001Sglebius	/* old= rw, write:xxx, read:del, close:xxx */
643290001Sglebius	{ 0, 255 },
644290001Sglebius	/* old= rw, write:xxx, read:xxx, close:  0 */
645290001Sglebius	{ 0, 255 },
646290001Sglebius	/* old= rw, write:xxx, read:xxx, close:add */
647290001Sglebius	{ 0, 255 },
648290001Sglebius	/* old= rw, write:xxx, read:xxx, close:del */
649290001Sglebius	{ 0, 255 },
650290001Sglebius	/* old= rw, write:xxx, read:xxx, close:xxx */
651290001Sglebius	{ 0, 255 },
652290001Sglebius	/* old=  c, write:  0, read:  0, close:  0 */
653290001Sglebius	{ 0, 0 },
654290001Sglebius	/* old=  c, write:  0, read:  0, close:add */
655290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
656290001Sglebius	/* old=  c, write:  0, read:  0, close:del */
657290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_DEL },
658290001Sglebius	/* old=  c, write:  0, read:  0, close:xxx */
659290001Sglebius	{ 0, 255 },
660290001Sglebius	/* old=  c, write:  0, read:add, close:  0 */
661290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
662290001Sglebius	/* old=  c, write:  0, read:add, close:add */
663290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
664290001Sglebius	/* old=  c, write:  0, read:add, close:del */
665290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
666290001Sglebius	/* old=  c, write:  0, read:add, close:xxx */
667290001Sglebius	{ 0, 255 },
668290001Sglebius	/* old=  c, write:  0, read:del, close:  0 */
669290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
670290001Sglebius	/* old=  c, write:  0, read:del, close:add */
671290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
672290001Sglebius	/* old=  c, write:  0, read:del, close:del */
673290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
674290001Sglebius	/* old=  c, write:  0, read:del, close:xxx */
675290001Sglebius	{ 0, 255 },
676290001Sglebius	/* old=  c, write:  0, read:xxx, close:  0 */
677290001Sglebius	{ 0, 255 },
678290001Sglebius	/* old=  c, write:  0, read:xxx, close:add */
679290001Sglebius	{ 0, 255 },
680290001Sglebius	/* old=  c, write:  0, read:xxx, close:del */
681290001Sglebius	{ 0, 255 },
682290001Sglebius	/* old=  c, write:  0, read:xxx, close:xxx */
683290001Sglebius	{ 0, 255 },
684290001Sglebius	/* old=  c, write:add, read:  0, close:  0 */
685290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
686290001Sglebius	/* old=  c, write:add, read:  0, close:add */
687290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
688290001Sglebius	/* old=  c, write:add, read:  0, close:del */
689290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
690290001Sglebius	/* old=  c, write:add, read:  0, close:xxx */
691290001Sglebius	{ 0, 255 },
692290001Sglebius	/* old=  c, write:add, read:add, close:  0 */
693290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
694290001Sglebius	/* old=  c, write:add, read:add, close:add */
695290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
696290001Sglebius	/* old=  c, write:add, read:add, close:del */
697290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
698290001Sglebius	/* old=  c, write:add, read:add, close:xxx */
699290001Sglebius	{ 0, 255 },
700290001Sglebius	/* old=  c, write:add, read:del, close:  0 */
701290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
702290001Sglebius	/* old=  c, write:add, read:del, close:add */
703290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
704290001Sglebius	/* old=  c, write:add, read:del, close:del */
705290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
706290001Sglebius	/* old=  c, write:add, read:del, close:xxx */
707290001Sglebius	{ 0, 255 },
708290001Sglebius	/* old=  c, write:add, read:xxx, close:  0 */
709290001Sglebius	{ 0, 255 },
710290001Sglebius	/* old=  c, write:add, read:xxx, close:add */
711290001Sglebius	{ 0, 255 },
712290001Sglebius	/* old=  c, write:add, read:xxx, close:del */
713290001Sglebius	{ 0, 255 },
714290001Sglebius	/* old=  c, write:add, read:xxx, close:xxx */
715290001Sglebius	{ 0, 255 },
716290001Sglebius	/* old=  c, write:del, read:  0, close:  0 */
717290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
718290001Sglebius	/* old=  c, write:del, read:  0, close:add */
719290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
720290001Sglebius	/* old=  c, write:del, read:  0, close:del */
721290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
722290001Sglebius	/* old=  c, write:del, read:  0, close:xxx */
723290001Sglebius	{ 0, 255 },
724290001Sglebius	/* old=  c, write:del, read:add, close:  0 */
725290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
726290001Sglebius	/* old=  c, write:del, read:add, close:add */
727290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
728290001Sglebius	/* old=  c, write:del, read:add, close:del */
729290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
730290001Sglebius	/* old=  c, write:del, read:add, close:xxx */
731290001Sglebius	{ 0, 255 },
732290001Sglebius	/* old=  c, write:del, read:del, close:  0 */
733290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
734290001Sglebius	/* old=  c, write:del, read:del, close:add */
735290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
736290001Sglebius	/* old=  c, write:del, read:del, close:del */
737290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
738290001Sglebius	/* old=  c, write:del, read:del, close:xxx */
739290001Sglebius	{ 0, 255 },
740290001Sglebius	/* old=  c, write:del, read:xxx, close:  0 */
741290001Sglebius	{ 0, 255 },
742290001Sglebius	/* old=  c, write:del, read:xxx, close:add */
743290001Sglebius	{ 0, 255 },
744290001Sglebius	/* old=  c, write:del, read:xxx, close:del */
745290001Sglebius	{ 0, 255 },
746290001Sglebius	/* old=  c, write:del, read:xxx, close:xxx */
747290001Sglebius	{ 0, 255 },
748290001Sglebius	/* old=  c, write:xxx, read:  0, close:  0 */
749290001Sglebius	{ 0, 255 },
750290001Sglebius	/* old=  c, write:xxx, read:  0, close:add */
751290001Sglebius	{ 0, 255 },
752290001Sglebius	/* old=  c, write:xxx, read:  0, close:del */
753290001Sglebius	{ 0, 255 },
754290001Sglebius	/* old=  c, write:xxx, read:  0, close:xxx */
755290001Sglebius	{ 0, 255 },
756290001Sglebius	/* old=  c, write:xxx, read:add, close:  0 */
757290001Sglebius	{ 0, 255 },
758290001Sglebius	/* old=  c, write:xxx, read:add, close:add */
759290001Sglebius	{ 0, 255 },
760290001Sglebius	/* old=  c, write:xxx, read:add, close:del */
761290001Sglebius	{ 0, 255 },
762290001Sglebius	/* old=  c, write:xxx, read:add, close:xxx */
763290001Sglebius	{ 0, 255 },
764290001Sglebius	/* old=  c, write:xxx, read:del, close:  0 */
765290001Sglebius	{ 0, 255 },
766290001Sglebius	/* old=  c, write:xxx, read:del, close:add */
767290001Sglebius	{ 0, 255 },
768290001Sglebius	/* old=  c, write:xxx, read:del, close:del */
769290001Sglebius	{ 0, 255 },
770290001Sglebius	/* old=  c, write:xxx, read:del, close:xxx */
771290001Sglebius	{ 0, 255 },
772290001Sglebius	/* old=  c, write:xxx, read:xxx, close:  0 */
773290001Sglebius	{ 0, 255 },
774290001Sglebius	/* old=  c, write:xxx, read:xxx, close:add */
775290001Sglebius	{ 0, 255 },
776290001Sglebius	/* old=  c, write:xxx, read:xxx, close:del */
777290001Sglebius	{ 0, 255 },
778290001Sglebius	/* old=  c, write:xxx, read:xxx, close:xxx */
779290001Sglebius	{ 0, 255 },
780290001Sglebius	/* old= cr, write:  0, read:  0, close:  0 */
781290001Sglebius	{ 0, 0 },
782290001Sglebius	/* old= cr, write:  0, read:  0, close:add */
783290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
784290001Sglebius	/* old= cr, write:  0, read:  0, close:del */
785290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
786290001Sglebius	/* old= cr, write:  0, read:  0, close:xxx */
787290001Sglebius	{ 0, 255 },
788290001Sglebius	/* old= cr, write:  0, read:add, close:  0 */
789290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
790290001Sglebius	/* old= cr, write:  0, read:add, close:add */
791290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
792290001Sglebius	/* old= cr, write:  0, read:add, close:del */
793290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
794290001Sglebius	/* old= cr, write:  0, read:add, close:xxx */
795290001Sglebius	{ 0, 255 },
796290001Sglebius	/* old= cr, write:  0, read:del, close:  0 */
797290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
798290001Sglebius	/* old= cr, write:  0, read:del, close:add */
799290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
800290001Sglebius	/* old= cr, write:  0, read:del, close:del */
801290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
802290001Sglebius	/* old= cr, write:  0, read:del, close:xxx */
803290001Sglebius	{ 0, 255 },
804290001Sglebius	/* old= cr, write:  0, read:xxx, close:  0 */
805290001Sglebius	{ 0, 255 },
806290001Sglebius	/* old= cr, write:  0, read:xxx, close:add */
807290001Sglebius	{ 0, 255 },
808290001Sglebius	/* old= cr, write:  0, read:xxx, close:del */
809290001Sglebius	{ 0, 255 },
810290001Sglebius	/* old= cr, write:  0, read:xxx, close:xxx */
811290001Sglebius	{ 0, 255 },
812290001Sglebius	/* old= cr, write:add, read:  0, close:  0 */
813290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
814290001Sglebius	/* old= cr, write:add, read:  0, close:add */
815290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
816290001Sglebius	/* old= cr, write:add, read:  0, close:del */
817290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
818290001Sglebius	/* old= cr, write:add, read:  0, close:xxx */
819290001Sglebius	{ 0, 255 },
820290001Sglebius	/* old= cr, write:add, read:add, close:  0 */
821290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
822290001Sglebius	/* old= cr, write:add, read:add, close:add */
823290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
824290001Sglebius	/* old= cr, write:add, read:add, close:del */
825290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
826290001Sglebius	/* old= cr, write:add, read:add, close:xxx */
827290001Sglebius	{ 0, 255 },
828290001Sglebius	/* old= cr, write:add, read:del, close:  0 */
829290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
830290001Sglebius	/* old= cr, write:add, read:del, close:add */
831290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
832290001Sglebius	/* old= cr, write:add, read:del, close:del */
833290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
834290001Sglebius	/* old= cr, write:add, read:del, close:xxx */
835290001Sglebius	{ 0, 255 },
836290001Sglebius	/* old= cr, write:add, read:xxx, close:  0 */
837290001Sglebius	{ 0, 255 },
838290001Sglebius	/* old= cr, write:add, read:xxx, close:add */
839290001Sglebius	{ 0, 255 },
840290001Sglebius	/* old= cr, write:add, read:xxx, close:del */
841290001Sglebius	{ 0, 255 },
842290001Sglebius	/* old= cr, write:add, read:xxx, close:xxx */
843290001Sglebius	{ 0, 255 },
844290001Sglebius	/* old= cr, write:del, read:  0, close:  0 */
845290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
846290001Sglebius	/* old= cr, write:del, read:  0, close:add */
847290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
848290001Sglebius	/* old= cr, write:del, read:  0, close:del */
849290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
850290001Sglebius	/* old= cr, write:del, read:  0, close:xxx */
851290001Sglebius	{ 0, 255 },
852290001Sglebius	/* old= cr, write:del, read:add, close:  0 */
853290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
854290001Sglebius	/* old= cr, write:del, read:add, close:add */
855290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
856290001Sglebius	/* old= cr, write:del, read:add, close:del */
857290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
858290001Sglebius	/* old= cr, write:del, read:add, close:xxx */
859290001Sglebius	{ 0, 255 },
860290001Sglebius	/* old= cr, write:del, read:del, close:  0 */
861290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
862290001Sglebius	/* old= cr, write:del, read:del, close:add */
863290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
864290001Sglebius	/* old= cr, write:del, read:del, close:del */
865290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
866290001Sglebius	/* old= cr, write:del, read:del, close:xxx */
867290001Sglebius	{ 0, 255 },
868290001Sglebius	/* old= cr, write:del, read:xxx, close:  0 */
869290001Sglebius	{ 0, 255 },
870290001Sglebius	/* old= cr, write:del, read:xxx, close:add */
871290001Sglebius	{ 0, 255 },
872290001Sglebius	/* old= cr, write:del, read:xxx, close:del */
873290001Sglebius	{ 0, 255 },
874290001Sglebius	/* old= cr, write:del, read:xxx, close:xxx */
875290001Sglebius	{ 0, 255 },
876290001Sglebius	/* old= cr, write:xxx, read:  0, close:  0 */
877290001Sglebius	{ 0, 255 },
878290001Sglebius	/* old= cr, write:xxx, read:  0, close:add */
879290001Sglebius	{ 0, 255 },
880290001Sglebius	/* old= cr, write:xxx, read:  0, close:del */
881290001Sglebius	{ 0, 255 },
882290001Sglebius	/* old= cr, write:xxx, read:  0, close:xxx */
883290001Sglebius	{ 0, 255 },
884290001Sglebius	/* old= cr, write:xxx, read:add, close:  0 */
885290001Sglebius	{ 0, 255 },
886290001Sglebius	/* old= cr, write:xxx, read:add, close:add */
887290001Sglebius	{ 0, 255 },
888290001Sglebius	/* old= cr, write:xxx, read:add, close:del */
889290001Sglebius	{ 0, 255 },
890290001Sglebius	/* old= cr, write:xxx, read:add, close:xxx */
891290001Sglebius	{ 0, 255 },
892290001Sglebius	/* old= cr, write:xxx, read:del, close:  0 */
893290001Sglebius	{ 0, 255 },
894290001Sglebius	/* old= cr, write:xxx, read:del, close:add */
895290001Sglebius	{ 0, 255 },
896290001Sglebius	/* old= cr, write:xxx, read:del, close:del */
897290001Sglebius	{ 0, 255 },
898290001Sglebius	/* old= cr, write:xxx, read:del, close:xxx */
899290001Sglebius	{ 0, 255 },
900290001Sglebius	/* old= cr, write:xxx, read:xxx, close:  0 */
901290001Sglebius	{ 0, 255 },
902290001Sglebius	/* old= cr, write:xxx, read:xxx, close:add */
903290001Sglebius	{ 0, 255 },
904290001Sglebius	/* old= cr, write:xxx, read:xxx, close:del */
905290001Sglebius	{ 0, 255 },
906290001Sglebius	/* old= cr, write:xxx, read:xxx, close:xxx */
907290001Sglebius	{ 0, 255 },
908290001Sglebius	/* old= cw, write:  0, read:  0, close:  0 */
909290001Sglebius	{ 0, 0 },
910290001Sglebius	/* old= cw, write:  0, read:  0, close:add */
911290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
912290001Sglebius	/* old= cw, write:  0, read:  0, close:del */
913290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
914290001Sglebius	/* old= cw, write:  0, read:  0, close:xxx */
915290001Sglebius	{ 0, 255 },
916290001Sglebius	/* old= cw, write:  0, read:add, close:  0 */
917290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
918290001Sglebius	/* old= cw, write:  0, read:add, close:add */
919290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
920290001Sglebius	/* old= cw, write:  0, read:add, close:del */
921290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
922290001Sglebius	/* old= cw, write:  0, read:add, close:xxx */
923290001Sglebius	{ 0, 255 },
924290001Sglebius	/* old= cw, write:  0, read:del, close:  0 */
925290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
926290001Sglebius	/* old= cw, write:  0, read:del, close:add */
927290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
928290001Sglebius	/* old= cw, write:  0, read:del, close:del */
929290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
930290001Sglebius	/* old= cw, write:  0, read:del, close:xxx */
931290001Sglebius	{ 0, 255 },
932290001Sglebius	/* old= cw, write:  0, read:xxx, close:  0 */
933290001Sglebius	{ 0, 255 },
934290001Sglebius	/* old= cw, write:  0, read:xxx, close:add */
935290001Sglebius	{ 0, 255 },
936290001Sglebius	/* old= cw, write:  0, read:xxx, close:del */
937290001Sglebius	{ 0, 255 },
938290001Sglebius	/* old= cw, write:  0, read:xxx, close:xxx */
939290001Sglebius	{ 0, 255 },
940290001Sglebius	/* old= cw, write:add, read:  0, close:  0 */
941290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
942290001Sglebius	/* old= cw, write:add, read:  0, close:add */
943290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
944290001Sglebius	/* old= cw, write:add, read:  0, close:del */
945290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
946290001Sglebius	/* old= cw, write:add, read:  0, close:xxx */
947290001Sglebius	{ 0, 255 },
948290001Sglebius	/* old= cw, write:add, read:add, close:  0 */
949290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
950290001Sglebius	/* old= cw, write:add, read:add, close:add */
951290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
952290001Sglebius	/* old= cw, write:add, read:add, close:del */
953290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
954290001Sglebius	/* old= cw, write:add, read:add, close:xxx */
955290001Sglebius	{ 0, 255 },
956290001Sglebius	/* old= cw, write:add, read:del, close:  0 */
957290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
958290001Sglebius	/* old= cw, write:add, read:del, close:add */
959290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
960290001Sglebius	/* old= cw, write:add, read:del, close:del */
961290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
962290001Sglebius	/* old= cw, write:add, read:del, close:xxx */
963290001Sglebius	{ 0, 255 },
964290001Sglebius	/* old= cw, write:add, read:xxx, close:  0 */
965290001Sglebius	{ 0, 255 },
966290001Sglebius	/* old= cw, write:add, read:xxx, close:add */
967290001Sglebius	{ 0, 255 },
968290001Sglebius	/* old= cw, write:add, read:xxx, close:del */
969290001Sglebius	{ 0, 255 },
970290001Sglebius	/* old= cw, write:add, read:xxx, close:xxx */
971290001Sglebius	{ 0, 255 },
972290001Sglebius	/* old= cw, write:del, read:  0, close:  0 */
973290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
974290001Sglebius	/* old= cw, write:del, read:  0, close:add */
975290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
976290001Sglebius	/* old= cw, write:del, read:  0, close:del */
977290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
978290001Sglebius	/* old= cw, write:del, read:  0, close:xxx */
979290001Sglebius	{ 0, 255 },
980290001Sglebius	/* old= cw, write:del, read:add, close:  0 */
981290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
982290001Sglebius	/* old= cw, write:del, read:add, close:add */
983290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
984290001Sglebius	/* old= cw, write:del, read:add, close:del */
985290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
986290001Sglebius	/* old= cw, write:del, read:add, close:xxx */
987290001Sglebius	{ 0, 255 },
988290001Sglebius	/* old= cw, write:del, read:del, close:  0 */
989290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
990290001Sglebius	/* old= cw, write:del, read:del, close:add */
991290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
992290001Sglebius	/* old= cw, write:del, read:del, close:del */
993290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
994290001Sglebius	/* old= cw, write:del, read:del, close:xxx */
995290001Sglebius	{ 0, 255 },
996290001Sglebius	/* old= cw, write:del, read:xxx, close:  0 */
997290001Sglebius	{ 0, 255 },
998290001Sglebius	/* old= cw, write:del, read:xxx, close:add */
999290001Sglebius	{ 0, 255 },
1000290001Sglebius	/* old= cw, write:del, read:xxx, close:del */
1001290001Sglebius	{ 0, 255 },
1002290001Sglebius	/* old= cw, write:del, read:xxx, close:xxx */
1003290001Sglebius	{ 0, 255 },
1004290001Sglebius	/* old= cw, write:xxx, read:  0, close:  0 */
1005290001Sglebius	{ 0, 255 },
1006290001Sglebius	/* old= cw, write:xxx, read:  0, close:add */
1007290001Sglebius	{ 0, 255 },
1008290001Sglebius	/* old= cw, write:xxx, read:  0, close:del */
1009290001Sglebius	{ 0, 255 },
1010290001Sglebius	/* old= cw, write:xxx, read:  0, close:xxx */
1011290001Sglebius	{ 0, 255 },
1012290001Sglebius	/* old= cw, write:xxx, read:add, close:  0 */
1013290001Sglebius	{ 0, 255 },
1014290001Sglebius	/* old= cw, write:xxx, read:add, close:add */
1015290001Sglebius	{ 0, 255 },
1016290001Sglebius	/* old= cw, write:xxx, read:add, close:del */
1017290001Sglebius	{ 0, 255 },
1018290001Sglebius	/* old= cw, write:xxx, read:add, close:xxx */
1019290001Sglebius	{ 0, 255 },
1020290001Sglebius	/* old= cw, write:xxx, read:del, close:  0 */
1021290001Sglebius	{ 0, 255 },
1022290001Sglebius	/* old= cw, write:xxx, read:del, close:add */
1023290001Sglebius	{ 0, 255 },
1024290001Sglebius	/* old= cw, write:xxx, read:del, close:del */
1025290001Sglebius	{ 0, 255 },
1026290001Sglebius	/* old= cw, write:xxx, read:del, close:xxx */
1027290001Sglebius	{ 0, 255 },
1028290001Sglebius	/* old= cw, write:xxx, read:xxx, close:  0 */
1029290001Sglebius	{ 0, 255 },
1030290001Sglebius	/* old= cw, write:xxx, read:xxx, close:add */
1031290001Sglebius	{ 0, 255 },
1032290001Sglebius	/* old= cw, write:xxx, read:xxx, close:del */
1033290001Sglebius	{ 0, 255 },
1034290001Sglebius	/* old= cw, write:xxx, read:xxx, close:xxx */
1035290001Sglebius	{ 0, 255 },
1036290001Sglebius	/* old=crw, write:  0, read:  0, close:  0 */
1037290001Sglebius	{ 0, 0 },
1038290001Sglebius	/* old=crw, write:  0, read:  0, close:add */
1039290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1040290001Sglebius	/* old=crw, write:  0, read:  0, close:del */
1041290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
1042290001Sglebius	/* old=crw, write:  0, read:  0, close:xxx */
1043290001Sglebius	{ 0, 255 },
1044290001Sglebius	/* old=crw, write:  0, read:add, close:  0 */
1045290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1046290001Sglebius	/* old=crw, write:  0, read:add, close:add */
1047290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1048290001Sglebius	/* old=crw, write:  0, read:add, close:del */
1049290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
1050290001Sglebius	/* old=crw, write:  0, read:add, close:xxx */
1051290001Sglebius	{ 0, 255 },
1052290001Sglebius	/* old=crw, write:  0, read:del, close:  0 */
1053290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1054290001Sglebius	/* old=crw, write:  0, read:del, close:add */
1055290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1056290001Sglebius	/* old=crw, write:  0, read:del, close:del */
1057290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
1058290001Sglebius	/* old=crw, write:  0, read:del, close:xxx */
1059290001Sglebius	{ 0, 255 },
1060290001Sglebius	/* old=crw, write:  0, read:xxx, close:  0 */
1061290001Sglebius	{ 0, 255 },
1062290001Sglebius	/* old=crw, write:  0, read:xxx, close:add */
1063290001Sglebius	{ 0, 255 },
1064290001Sglebius	/* old=crw, write:  0, read:xxx, close:del */
1065290001Sglebius	{ 0, 255 },
1066290001Sglebius	/* old=crw, write:  0, read:xxx, close:xxx */
1067290001Sglebius	{ 0, 255 },
1068290001Sglebius	/* old=crw, write:add, read:  0, close:  0 */
1069290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1070290001Sglebius	/* old=crw, write:add, read:  0, close:add */
1071290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1072290001Sglebius	/* old=crw, write:add, read:  0, close:del */
1073290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
1074290001Sglebius	/* old=crw, write:add, read:  0, close:xxx */
1075290001Sglebius	{ 0, 255 },
1076290001Sglebius	/* old=crw, write:add, read:add, close:  0 */
1077290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1078290001Sglebius	/* old=crw, write:add, read:add, close:add */
1079290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1080290001Sglebius	/* old=crw, write:add, read:add, close:del */
1081290001Sglebius	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
1082290001Sglebius	/* old=crw, write:add, read:add, close:xxx */
1083290001Sglebius	{ 0, 255 },
1084290001Sglebius	/* old=crw, write:add, read:del, close:  0 */
1085290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1086290001Sglebius	/* old=crw, write:add, read:del, close:add */
1087290001Sglebius	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
1088290001Sglebius	/* old=crw, write:add, read:del, close:del */
1089290001Sglebius	{ EPOLLOUT, EPOLL_CTL_MOD },
1090290001Sglebius	/* old=crw, write:add, read:del, close:xxx */
1091290001Sglebius	{ 0, 255 },
1092290001Sglebius	/* old=crw, write:add, read:xxx, close:  0 */
1093290001Sglebius	{ 0, 255 },
1094290001Sglebius	/* old=crw, write:add, read:xxx, close:add */
1095290001Sglebius	{ 0, 255 },
1096290001Sglebius	/* old=crw, write:add, read:xxx, close:del */
1097290001Sglebius	{ 0, 255 },
1098290001Sglebius	/* old=crw, write:add, read:xxx, close:xxx */
1099290001Sglebius	{ 0, 255 },
1100290001Sglebius	/* old=crw, write:del, read:  0, close:  0 */
1101290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
1102290001Sglebius	/* old=crw, write:del, read:  0, close:add */
1103290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
1104290001Sglebius	/* old=crw, write:del, read:  0, close:del */
1105290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
1106290001Sglebius	/* old=crw, write:del, read:  0, close:xxx */
1107290001Sglebius	{ 0, 255 },
1108290001Sglebius	/* old=crw, write:del, read:add, close:  0 */
1109290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
1110290001Sglebius	/* old=crw, write:del, read:add, close:add */
1111290001Sglebius	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
1112290001Sglebius	/* old=crw, write:del, read:add, close:del */
1113290001Sglebius	{ EPOLLIN, EPOLL_CTL_MOD },
1114290001Sglebius	/* old=crw, write:del, read:add, close:xxx */
1115290001Sglebius	{ 0, 255 },
1116290001Sglebius	/* old=crw, write:del, read:del, close:  0 */
1117290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
1118290001Sglebius	/* old=crw, write:del, read:del, close:add */
1119290001Sglebius	{ EPOLLRDHUP, EPOLL_CTL_MOD },
1120290001Sglebius	/* old=crw, write:del, read:del, close:del */
1121290001Sglebius	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
1122290001Sglebius	/* old=crw, write:del, read:del, close:xxx */
1123290001Sglebius	{ 0, 255 },
1124290001Sglebius	/* old=crw, write:del, read:xxx, close:  0 */
1125290001Sglebius	{ 0, 255 },
1126290001Sglebius	/* old=crw, write:del, read:xxx, close:add */
1127290001Sglebius	{ 0, 255 },
1128290001Sglebius	/* old=crw, write:del, read:xxx, close:del */
1129290001Sglebius	{ 0, 255 },
1130290001Sglebius	/* old=crw, write:del, read:xxx, close:xxx */
1131290001Sglebius	{ 0, 255 },
1132290001Sglebius	/* old=crw, write:xxx, read:  0, close:  0 */
1133290001Sglebius	{ 0, 255 },
1134290001Sglebius	/* old=crw, write:xxx, read:  0, close:add */
1135290001Sglebius	{ 0, 255 },
1136290001Sglebius	/* old=crw, write:xxx, read:  0, close:del */
1137290001Sglebius	{ 0, 255 },
1138290001Sglebius	/* old=crw, write:xxx, read:  0, close:xxx */
1139290001Sglebius	{ 0, 255 },
1140290001Sglebius	/* old=crw, write:xxx, read:add, close:  0 */
1141290001Sglebius	{ 0, 255 },
1142290001Sglebius	/* old=crw, write:xxx, read:add, close:add */
1143290001Sglebius	{ 0, 255 },
1144290001Sglebius	/* old=crw, write:xxx, read:add, close:del */
1145290001Sglebius	{ 0, 255 },
1146290001Sglebius	/* old=crw, write:xxx, read:add, close:xxx */
1147290001Sglebius	{ 0, 255 },
1148290001Sglebius	/* old=crw, write:xxx, read:del, close:  0 */
1149290001Sglebius	{ 0, 255 },
1150290001Sglebius	/* old=crw, write:xxx, read:del, close:add */
1151290001Sglebius	{ 0, 255 },
1152290001Sglebius	/* old=crw, write:xxx, read:del, close:del */
1153290001Sglebius	{ 0, 255 },
1154290001Sglebius	/* old=crw, write:xxx, read:del, close:xxx */
1155290001Sglebius	{ 0, 255 },
1156290001Sglebius	/* old=crw, write:xxx, read:xxx, close:  0 */
1157290001Sglebius	{ 0, 255 },
1158290001Sglebius	/* old=crw, write:xxx, read:xxx, close:add */
1159290001Sglebius	{ 0, 255 },
1160290001Sglebius	/* old=crw, write:xxx, read:xxx, close:del */
1161290001Sglebius	{ 0, 255 },
1162290001Sglebius	/* old=crw, write:xxx, read:xxx, close:xxx */
1163290001Sglebius	{ 0, 255 },
1164290001Sglebius};
1165290001Sglebius
1166290001Sglebius#endif
1167