xref: /freebsd/contrib/ntp/sntp/libevent/epolltable-internal.h (revision a466cc55373fc3cf86837f09da729535b57e69a1)
12b15cb3dSCy Schubert /*
22b15cb3dSCy Schubert  * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
32b15cb3dSCy Schubert  * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
42b15cb3dSCy Schubert  *
52b15cb3dSCy Schubert  * Redistribution and use in source and binary forms, with or without
62b15cb3dSCy Schubert  * modification, are permitted provided that the following conditions
72b15cb3dSCy Schubert  * are met:
82b15cb3dSCy Schubert  * 1. Redistributions of source code must retain the above copyright
92b15cb3dSCy Schubert  *    notice, this list of conditions and the following disclaimer.
102b15cb3dSCy Schubert  * 2. Redistributions in binary form must reproduce the above copyright
112b15cb3dSCy Schubert  *    notice, this list of conditions and the following disclaimer in the
122b15cb3dSCy Schubert  *    documentation and/or other materials provided with the distribution.
132b15cb3dSCy Schubert  * 3. The name of the author may not be used to endorse or promote products
142b15cb3dSCy Schubert  *    derived from this software without specific prior written permission.
152b15cb3dSCy Schubert  *
162b15cb3dSCy Schubert  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
172b15cb3dSCy Schubert  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
182b15cb3dSCy Schubert  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
192b15cb3dSCy Schubert  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
202b15cb3dSCy Schubert  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
212b15cb3dSCy Schubert  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
222b15cb3dSCy Schubert  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
232b15cb3dSCy Schubert  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
242b15cb3dSCy Schubert  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
252b15cb3dSCy Schubert  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
262b15cb3dSCy Schubert  */
272b15cb3dSCy Schubert #ifndef EPOLLTABLE_INTERNAL_H_INCLUDED_
282b15cb3dSCy Schubert #define EPOLLTABLE_INTERNAL_H_INCLUDED_
292b15cb3dSCy Schubert 
302b15cb3dSCy Schubert /*
312b15cb3dSCy Schubert   Here are the values we're masking off to decide what operations to do.
322b15cb3dSCy Schubert   Note that since EV_READ|EV_WRITE.
332b15cb3dSCy Schubert 
342b15cb3dSCy Schubert   Note also that this table is a little sparse, since ADD+DEL is
352b15cb3dSCy Schubert   nonsensical ("xxx" in the list below.)
362b15cb3dSCy Schubert 
37*a466cc55SCy Schubert   Note also that we are shifting old_events by only 5 bits, since
382b15cb3dSCy Schubert   EV_READ is 2 and EV_WRITE is 4.
392b15cb3dSCy Schubert 
402b15cb3dSCy Schubert   The table was auto-generated with a python script, according to this
412b15cb3dSCy Schubert   pseudocode:[*0]
422b15cb3dSCy Schubert 
432b15cb3dSCy Schubert       If either the read or the write change is add+del:
442b15cb3dSCy Schubert 	 This is impossible; Set op==-1, events=0.
452b15cb3dSCy Schubert       Else, if either the read or the write change is add:
462b15cb3dSCy Schubert 	 Set events to 0.
472b15cb3dSCy Schubert 	 If the read change is add, or
482b15cb3dSCy Schubert 	    (the read change is not del, and ev_read is in old_events):
492b15cb3dSCy Schubert 	       Add EPOLLIN to events.
502b15cb3dSCy Schubert 	 If the write change is add, or
512b15cb3dSCy Schubert 	    (the write change is not del, and ev_write is in old_events):
522b15cb3dSCy Schubert 	       Add EPOLLOUT to events.
532b15cb3dSCy Schubert 
542b15cb3dSCy Schubert 	 If old_events is set:
552b15cb3dSCy Schubert 	       Set op to EPOLL_CTL_MOD [*1,*2]
562b15cb3dSCy Schubert 	Else:
572b15cb3dSCy Schubert 	       Set op to EPOLL_CTL_ADD [*3]
582b15cb3dSCy Schubert 
592b15cb3dSCy Schubert       Else, if the read or the write change is del:
602b15cb3dSCy Schubert 	 Set op to EPOLL_CTL_DEL.
612b15cb3dSCy Schubert 	 If the read change is del:
622b15cb3dSCy Schubert 	     If the write change is del:
632b15cb3dSCy Schubert 		 Set events to EPOLLIN|EPOLLOUT
642b15cb3dSCy Schubert 	     Else if ev_write is in old_events:
652b15cb3dSCy Schubert 		 Set events to EPOLLOUT
662b15cb3dSCy Schubert 		Set op to EPOLL_CTL_MOD
672b15cb3dSCy Schubert 	     Else
682b15cb3dSCy Schubert 		 Set events to EPOLLIN
692b15cb3dSCy Schubert 	 Else:
702b15cb3dSCy Schubert 	     {The write change is del.}
712b15cb3dSCy Schubert 	    If ev_read is in old_events:
722b15cb3dSCy Schubert 		 Set events to EPOLLIN
732b15cb3dSCy Schubert 		Set op to EPOLL_CTL_MOD
742b15cb3dSCy Schubert 	    Else:
752b15cb3dSCy Schubert 		Set the events to EPOLLOUT
762b15cb3dSCy Schubert 
772b15cb3dSCy Schubert       Else:
782b15cb3dSCy Schubert 	   There is no read or write change; set op to 0 and events to 0.
792b15cb3dSCy Schubert 
802b15cb3dSCy Schubert       The logic is a little tricky, since we had no events set on the fd before,
812b15cb3dSCy Schubert       we need to set op="ADD" and set events=the events we want to add.	 If we
822b15cb3dSCy Schubert       had any events set on the fd before, and we want any events to remain on
832b15cb3dSCy Schubert       the fd, we need to say op="MOD" and set events=the events we want to
842b15cb3dSCy Schubert       remain.  But if we want to delete the last event, we say op="DEL" and
852b15cb3dSCy Schubert       set events=(any non-null pointer).
862b15cb3dSCy Schubert 
872b15cb3dSCy Schubert   [*0] Actually, the Python script has gotten a bit more complicated, to
882b15cb3dSCy Schubert        support EPOLLRDHUP.
892b15cb3dSCy Schubert 
902b15cb3dSCy Schubert   [*1] This MOD is only a guess.  MOD might fail with ENOENT if the file was
912b15cb3dSCy Schubert        closed and a new file was opened with the same fd.  If so, we'll retry
922b15cb3dSCy Schubert        with ADD.
932b15cb3dSCy Schubert 
942b15cb3dSCy Schubert   [*2] We can't replace this with a no-op even if old_events is the same as
952b15cb3dSCy Schubert        the new events: if the file was closed and reopened, we need to retry
962b15cb3dSCy Schubert        with an ADD.  (We do a MOD in this case since "no change" is more
972b15cb3dSCy Schubert        common than "close and reopen", so we'll usually wind up doing 1
982b15cb3dSCy Schubert        syscalls instead of 2.)
992b15cb3dSCy Schubert 
1002b15cb3dSCy Schubert   [*3] This ADD is only a guess.  There is a fun Linux kernel issue where if
1012b15cb3dSCy Schubert        you have two fds for the same file (via dup) and you ADD one to an
1022b15cb3dSCy Schubert        epfd, then close it, then re-create it with the same fd (via dup2 or an
1032b15cb3dSCy Schubert        unlucky dup), then try to ADD it again, you'll get an EEXIST, since the
1042b15cb3dSCy Schubert        struct epitem is not actually removed from the struct eventpoll until
1052b15cb3dSCy Schubert        the file itself is closed.
1062b15cb3dSCy Schubert 
1072b15cb3dSCy Schubert   EV_CHANGE_ADD==1
1082b15cb3dSCy Schubert   EV_CHANGE_DEL==2
1092b15cb3dSCy Schubert   EV_READ      ==2
1102b15cb3dSCy Schubert   EV_WRITE     ==4
1112b15cb3dSCy Schubert   EV_CLOSED    ==0x80
1122b15cb3dSCy Schubert 
1132b15cb3dSCy Schubert   Bit 0: close change is add
1142b15cb3dSCy Schubert   Bit 1: close change is del
1152b15cb3dSCy Schubert   Bit 2: read change is add
1162b15cb3dSCy Schubert   Bit 3: read change is del
1172b15cb3dSCy Schubert   Bit 4: write change is add
1182b15cb3dSCy Schubert   Bit 5: write change is del
1192b15cb3dSCy Schubert   Bit 6: old events had EV_READ
1202b15cb3dSCy Schubert   Bit 7: old events had EV_WRITE
1212b15cb3dSCy Schubert   Bit 8: old events had EV_CLOSED
1222b15cb3dSCy Schubert */
1232b15cb3dSCy Schubert 
1242b15cb3dSCy Schubert #define EPOLL_OP_TABLE_INDEX(c) \
1252b15cb3dSCy Schubert 	(   (((c)->close_change&(EV_CHANGE_ADD|EV_CHANGE_DEL))) |		\
1262b15cb3dSCy Schubert 	    (((c)->read_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 2) |	\
1272b15cb3dSCy Schubert 	    (((c)->write_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 4) |	\
1282b15cb3dSCy Schubert 	    (((c)->old_events&(EV_READ|EV_WRITE)) << 5) |		\
1292b15cb3dSCy Schubert 	    (((c)->old_events&(EV_CLOSED)) << 1)				\
1302b15cb3dSCy Schubert 	    )
1312b15cb3dSCy Schubert 
1322b15cb3dSCy Schubert #if EV_READ != 2 || EV_WRITE != 4 || EV_CLOSED != 0x80 || EV_CHANGE_ADD != 1 || EV_CHANGE_DEL != 2
1332b15cb3dSCy Schubert #error "Libevent's internals changed!  Regenerate the op_table in epolltable-internal.h"
1342b15cb3dSCy Schubert #endif
1352b15cb3dSCy Schubert 
1362b15cb3dSCy Schubert static const struct operation {
1372b15cb3dSCy Schubert 	int events;
1382b15cb3dSCy Schubert 	int op;
1392b15cb3dSCy Schubert } epoll_op_table[] = {
1402b15cb3dSCy Schubert 	/* old=  0, write:  0, read:  0, close:  0 */
1412b15cb3dSCy Schubert 	{ 0, 0 },
1422b15cb3dSCy Schubert 	/* old=  0, write:  0, read:  0, close:add */
1432b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_ADD },
1442b15cb3dSCy Schubert 	/* old=  0, write:  0, read:  0, close:del */
1452b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_DEL },
1462b15cb3dSCy Schubert 	/* old=  0, write:  0, read:  0, close:xxx */
1472b15cb3dSCy Schubert 	{ 0, 255 },
1482b15cb3dSCy Schubert 	/* old=  0, write:  0, read:add, close:  0 */
1492b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_ADD },
1502b15cb3dSCy Schubert 	/* old=  0, write:  0, read:add, close:add */
1512b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD },
1522b15cb3dSCy Schubert 	/* old=  0, write:  0, read:add, close:del */
1532b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_ADD },
1542b15cb3dSCy Schubert 	/* old=  0, write:  0, read:add, close:xxx */
1552b15cb3dSCy Schubert 	{ 0, 255 },
1562b15cb3dSCy Schubert 	/* old=  0, write:  0, read:del, close:  0 */
1572b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_DEL },
1582b15cb3dSCy Schubert 	/* old=  0, write:  0, read:del, close:add */
1592b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_ADD },
1602b15cb3dSCy Schubert 	/* old=  0, write:  0, read:del, close:del */
1612b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
1622b15cb3dSCy Schubert 	/* old=  0, write:  0, read:del, close:xxx */
1632b15cb3dSCy Schubert 	{ 0, 255 },
1642b15cb3dSCy Schubert 	/* old=  0, write:  0, read:xxx, close:  0 */
1652b15cb3dSCy Schubert 	{ 0, 255 },
1662b15cb3dSCy Schubert 	/* old=  0, write:  0, read:xxx, close:add */
1672b15cb3dSCy Schubert 	{ 0, 255 },
1682b15cb3dSCy Schubert 	/* old=  0, write:  0, read:xxx, close:del */
1692b15cb3dSCy Schubert 	{ 0, 255 },
1702b15cb3dSCy Schubert 	/* old=  0, write:  0, read:xxx, close:xxx */
1712b15cb3dSCy Schubert 	{ 0, 255 },
1722b15cb3dSCy Schubert 	/* old=  0, write:add, read:  0, close:  0 */
1732b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_ADD },
1742b15cb3dSCy Schubert 	/* old=  0, write:add, read:  0, close:add */
1752b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
1762b15cb3dSCy Schubert 	/* old=  0, write:add, read:  0, close:del */
1772b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_ADD },
1782b15cb3dSCy Schubert 	/* old=  0, write:add, read:  0, close:xxx */
1792b15cb3dSCy Schubert 	{ 0, 255 },
1802b15cb3dSCy Schubert 	/* old=  0, write:add, read:add, close:  0 */
1812b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD },
1822b15cb3dSCy Schubert 	/* old=  0, write:add, read:add, close:add */
1832b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
1842b15cb3dSCy Schubert 	/* old=  0, write:add, read:add, close:del */
1852b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD },
1862b15cb3dSCy Schubert 	/* old=  0, write:add, read:add, close:xxx */
1872b15cb3dSCy Schubert 	{ 0, 255 },
1882b15cb3dSCy Schubert 	/* old=  0, write:add, read:del, close:  0 */
1892b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_ADD },
1902b15cb3dSCy Schubert 	/* old=  0, write:add, read:del, close:add */
1912b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD },
1922b15cb3dSCy Schubert 	/* old=  0, write:add, read:del, close:del */
1932b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_ADD },
1942b15cb3dSCy Schubert 	/* old=  0, write:add, read:del, close:xxx */
1952b15cb3dSCy Schubert 	{ 0, 255 },
1962b15cb3dSCy Schubert 	/* old=  0, write:add, read:xxx, close:  0 */
1972b15cb3dSCy Schubert 	{ 0, 255 },
1982b15cb3dSCy Schubert 	/* old=  0, write:add, read:xxx, close:add */
1992b15cb3dSCy Schubert 	{ 0, 255 },
2002b15cb3dSCy Schubert 	/* old=  0, write:add, read:xxx, close:del */
2012b15cb3dSCy Schubert 	{ 0, 255 },
2022b15cb3dSCy Schubert 	/* old=  0, write:add, read:xxx, close:xxx */
2032b15cb3dSCy Schubert 	{ 0, 255 },
2042b15cb3dSCy Schubert 	/* old=  0, write:del, read:  0, close:  0 */
2052b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_DEL },
2062b15cb3dSCy Schubert 	/* old=  0, write:del, read:  0, close:add */
2072b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_ADD },
2082b15cb3dSCy Schubert 	/* old=  0, write:del, read:  0, close:del */
2092b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
2102b15cb3dSCy Schubert 	/* old=  0, write:del, read:  0, close:xxx */
2112b15cb3dSCy Schubert 	{ 0, 255 },
2122b15cb3dSCy Schubert 	/* old=  0, write:del, read:add, close:  0 */
2132b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_ADD },
2142b15cb3dSCy Schubert 	/* old=  0, write:del, read:add, close:add */
2152b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD },
2162b15cb3dSCy Schubert 	/* old=  0, write:del, read:add, close:del */
2172b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_ADD },
2182b15cb3dSCy Schubert 	/* old=  0, write:del, read:add, close:xxx */
2192b15cb3dSCy Schubert 	{ 0, 255 },
2202b15cb3dSCy Schubert 	/* old=  0, write:del, read:del, close:  0 */
2212b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
2222b15cb3dSCy Schubert 	/* old=  0, write:del, read:del, close:add */
2232b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_ADD },
2242b15cb3dSCy Schubert 	/* old=  0, write:del, read:del, close:del */
2252b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
2262b15cb3dSCy Schubert 	/* old=  0, write:del, read:del, close:xxx */
2272b15cb3dSCy Schubert 	{ 0, 255 },
2282b15cb3dSCy Schubert 	/* old=  0, write:del, read:xxx, close:  0 */
2292b15cb3dSCy Schubert 	{ 0, 255 },
2302b15cb3dSCy Schubert 	/* old=  0, write:del, read:xxx, close:add */
2312b15cb3dSCy Schubert 	{ 0, 255 },
2322b15cb3dSCy Schubert 	/* old=  0, write:del, read:xxx, close:del */
2332b15cb3dSCy Schubert 	{ 0, 255 },
2342b15cb3dSCy Schubert 	/* old=  0, write:del, read:xxx, close:xxx */
2352b15cb3dSCy Schubert 	{ 0, 255 },
2362b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:  0, close:  0 */
2372b15cb3dSCy Schubert 	{ 0, 255 },
2382b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:  0, close:add */
2392b15cb3dSCy Schubert 	{ 0, 255 },
2402b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:  0, close:del */
2412b15cb3dSCy Schubert 	{ 0, 255 },
2422b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:  0, close:xxx */
2432b15cb3dSCy Schubert 	{ 0, 255 },
2442b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:add, close:  0 */
2452b15cb3dSCy Schubert 	{ 0, 255 },
2462b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:add, close:add */
2472b15cb3dSCy Schubert 	{ 0, 255 },
2482b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:add, close:del */
2492b15cb3dSCy Schubert 	{ 0, 255 },
2502b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:add, close:xxx */
2512b15cb3dSCy Schubert 	{ 0, 255 },
2522b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:del, close:  0 */
2532b15cb3dSCy Schubert 	{ 0, 255 },
2542b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:del, close:add */
2552b15cb3dSCy Schubert 	{ 0, 255 },
2562b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:del, close:del */
2572b15cb3dSCy Schubert 	{ 0, 255 },
2582b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:del, close:xxx */
2592b15cb3dSCy Schubert 	{ 0, 255 },
2602b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:xxx, close:  0 */
2612b15cb3dSCy Schubert 	{ 0, 255 },
2622b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:xxx, close:add */
2632b15cb3dSCy Schubert 	{ 0, 255 },
2642b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:xxx, close:del */
2652b15cb3dSCy Schubert 	{ 0, 255 },
2662b15cb3dSCy Schubert 	/* old=  0, write:xxx, read:xxx, close:xxx */
2672b15cb3dSCy Schubert 	{ 0, 255 },
2682b15cb3dSCy Schubert 	/* old=  r, write:  0, read:  0, close:  0 */
2692b15cb3dSCy Schubert 	{ 0, 0 },
2702b15cb3dSCy Schubert 	/* old=  r, write:  0, read:  0, close:add */
2712b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
2722b15cb3dSCy Schubert 	/* old=  r, write:  0, read:  0, close:del */
2732b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
2742b15cb3dSCy Schubert 	/* old=  r, write:  0, read:  0, close:xxx */
2752b15cb3dSCy Schubert 	{ 0, 255 },
2762b15cb3dSCy Schubert 	/* old=  r, write:  0, read:add, close:  0 */
2772b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
2782b15cb3dSCy Schubert 	/* old=  r, write:  0, read:add, close:add */
2792b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
2802b15cb3dSCy Schubert 	/* old=  r, write:  0, read:add, close:del */
2812b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
2822b15cb3dSCy Schubert 	/* old=  r, write:  0, read:add, close:xxx */
2832b15cb3dSCy Schubert 	{ 0, 255 },
2842b15cb3dSCy Schubert 	/* old=  r, write:  0, read:del, close:  0 */
2852b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_DEL },
2862b15cb3dSCy Schubert 	/* old=  r, write:  0, read:del, close:add */
2872b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
2882b15cb3dSCy Schubert 	/* old=  r, write:  0, read:del, close:del */
2892b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
2902b15cb3dSCy Schubert 	/* old=  r, write:  0, read:del, close:xxx */
2912b15cb3dSCy Schubert 	{ 0, 255 },
2922b15cb3dSCy Schubert 	/* old=  r, write:  0, read:xxx, close:  0 */
2932b15cb3dSCy Schubert 	{ 0, 255 },
2942b15cb3dSCy Schubert 	/* old=  r, write:  0, read:xxx, close:add */
2952b15cb3dSCy Schubert 	{ 0, 255 },
2962b15cb3dSCy Schubert 	/* old=  r, write:  0, read:xxx, close:del */
2972b15cb3dSCy Schubert 	{ 0, 255 },
2982b15cb3dSCy Schubert 	/* old=  r, write:  0, read:xxx, close:xxx */
2992b15cb3dSCy Schubert 	{ 0, 255 },
3002b15cb3dSCy Schubert 	/* old=  r, write:add, read:  0, close:  0 */
3012b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
3022b15cb3dSCy Schubert 	/* old=  r, write:add, read:  0, close:add */
3032b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
3042b15cb3dSCy Schubert 	/* old=  r, write:add, read:  0, close:del */
3052b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
3062b15cb3dSCy Schubert 	/* old=  r, write:add, read:  0, close:xxx */
3072b15cb3dSCy Schubert 	{ 0, 255 },
3082b15cb3dSCy Schubert 	/* old=  r, write:add, read:add, close:  0 */
3092b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
3102b15cb3dSCy Schubert 	/* old=  r, write:add, read:add, close:add */
3112b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
3122b15cb3dSCy Schubert 	/* old=  r, write:add, read:add, close:del */
3132b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
3142b15cb3dSCy Schubert 	/* old=  r, write:add, read:add, close:xxx */
3152b15cb3dSCy Schubert 	{ 0, 255 },
3162b15cb3dSCy Schubert 	/* old=  r, write:add, read:del, close:  0 */
3172b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
3182b15cb3dSCy Schubert 	/* old=  r, write:add, read:del, close:add */
3192b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
3202b15cb3dSCy Schubert 	/* old=  r, write:add, read:del, close:del */
3212b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
3222b15cb3dSCy Schubert 	/* old=  r, write:add, read:del, close:xxx */
3232b15cb3dSCy Schubert 	{ 0, 255 },
3242b15cb3dSCy Schubert 	/* old=  r, write:add, read:xxx, close:  0 */
3252b15cb3dSCy Schubert 	{ 0, 255 },
3262b15cb3dSCy Schubert 	/* old=  r, write:add, read:xxx, close:add */
3272b15cb3dSCy Schubert 	{ 0, 255 },
3282b15cb3dSCy Schubert 	/* old=  r, write:add, read:xxx, close:del */
3292b15cb3dSCy Schubert 	{ 0, 255 },
3302b15cb3dSCy Schubert 	/* old=  r, write:add, read:xxx, close:xxx */
3312b15cb3dSCy Schubert 	{ 0, 255 },
3322b15cb3dSCy Schubert 	/* old=  r, write:del, read:  0, close:  0 */
3332b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
3342b15cb3dSCy Schubert 	/* old=  r, write:del, read:  0, close:add */
3352b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
3362b15cb3dSCy Schubert 	/* old=  r, write:del, read:  0, close:del */
3372b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
3382b15cb3dSCy Schubert 	/* old=  r, write:del, read:  0, close:xxx */
3392b15cb3dSCy Schubert 	{ 0, 255 },
3402b15cb3dSCy Schubert 	/* old=  r, write:del, read:add, close:  0 */
3412b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
3422b15cb3dSCy Schubert 	/* old=  r, write:del, read:add, close:add */
3432b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
3442b15cb3dSCy Schubert 	/* old=  r, write:del, read:add, close:del */
3452b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
3462b15cb3dSCy Schubert 	/* old=  r, write:del, read:add, close:xxx */
3472b15cb3dSCy Schubert 	{ 0, 255 },
3482b15cb3dSCy Schubert 	/* old=  r, write:del, read:del, close:  0 */
3492b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
3502b15cb3dSCy Schubert 	/* old=  r, write:del, read:del, close:add */
3512b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
3522b15cb3dSCy Schubert 	/* old=  r, write:del, read:del, close:del */
3532b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
3542b15cb3dSCy Schubert 	/* old=  r, write:del, read:del, close:xxx */
3552b15cb3dSCy Schubert 	{ 0, 255 },
3562b15cb3dSCy Schubert 	/* old=  r, write:del, read:xxx, close:  0 */
3572b15cb3dSCy Schubert 	{ 0, 255 },
3582b15cb3dSCy Schubert 	/* old=  r, write:del, read:xxx, close:add */
3592b15cb3dSCy Schubert 	{ 0, 255 },
3602b15cb3dSCy Schubert 	/* old=  r, write:del, read:xxx, close:del */
3612b15cb3dSCy Schubert 	{ 0, 255 },
3622b15cb3dSCy Schubert 	/* old=  r, write:del, read:xxx, close:xxx */
3632b15cb3dSCy Schubert 	{ 0, 255 },
3642b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:  0, close:  0 */
3652b15cb3dSCy Schubert 	{ 0, 255 },
3662b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:  0, close:add */
3672b15cb3dSCy Schubert 	{ 0, 255 },
3682b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:  0, close:del */
3692b15cb3dSCy Schubert 	{ 0, 255 },
3702b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:  0, close:xxx */
3712b15cb3dSCy Schubert 	{ 0, 255 },
3722b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:add, close:  0 */
3732b15cb3dSCy Schubert 	{ 0, 255 },
3742b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:add, close:add */
3752b15cb3dSCy Schubert 	{ 0, 255 },
3762b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:add, close:del */
3772b15cb3dSCy Schubert 	{ 0, 255 },
3782b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:add, close:xxx */
3792b15cb3dSCy Schubert 	{ 0, 255 },
3802b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:del, close:  0 */
3812b15cb3dSCy Schubert 	{ 0, 255 },
3822b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:del, close:add */
3832b15cb3dSCy Schubert 	{ 0, 255 },
3842b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:del, close:del */
3852b15cb3dSCy Schubert 	{ 0, 255 },
3862b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:del, close:xxx */
3872b15cb3dSCy Schubert 	{ 0, 255 },
3882b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:xxx, close:  0 */
3892b15cb3dSCy Schubert 	{ 0, 255 },
3902b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:xxx, close:add */
3912b15cb3dSCy Schubert 	{ 0, 255 },
3922b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:xxx, close:del */
3932b15cb3dSCy Schubert 	{ 0, 255 },
3942b15cb3dSCy Schubert 	/* old=  r, write:xxx, read:xxx, close:xxx */
3952b15cb3dSCy Schubert 	{ 0, 255 },
3962b15cb3dSCy Schubert 	/* old=  w, write:  0, read:  0, close:  0 */
3972b15cb3dSCy Schubert 	{ 0, 0 },
3982b15cb3dSCy Schubert 	/* old=  w, write:  0, read:  0, close:add */
3992b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4002b15cb3dSCy Schubert 	/* old=  w, write:  0, read:  0, close:del */
4012b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4022b15cb3dSCy Schubert 	/* old=  w, write:  0, read:  0, close:xxx */
4032b15cb3dSCy Schubert 	{ 0, 255 },
4042b15cb3dSCy Schubert 	/* old=  w, write:  0, read:add, close:  0 */
4052b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
4062b15cb3dSCy Schubert 	/* old=  w, write:  0, read:add, close:add */
4072b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4082b15cb3dSCy Schubert 	/* old=  w, write:  0, read:add, close:del */
4092b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
4102b15cb3dSCy Schubert 	/* old=  w, write:  0, read:add, close:xxx */
4112b15cb3dSCy Schubert 	{ 0, 255 },
4122b15cb3dSCy Schubert 	/* old=  w, write:  0, read:del, close:  0 */
4132b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4142b15cb3dSCy Schubert 	/* old=  w, write:  0, read:del, close:add */
4152b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4162b15cb3dSCy Schubert 	/* old=  w, write:  0, read:del, close:del */
4172b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4182b15cb3dSCy Schubert 	/* old=  w, write:  0, read:del, close:xxx */
4192b15cb3dSCy Schubert 	{ 0, 255 },
4202b15cb3dSCy Schubert 	/* old=  w, write:  0, read:xxx, close:  0 */
4212b15cb3dSCy Schubert 	{ 0, 255 },
4222b15cb3dSCy Schubert 	/* old=  w, write:  0, read:xxx, close:add */
4232b15cb3dSCy Schubert 	{ 0, 255 },
4242b15cb3dSCy Schubert 	/* old=  w, write:  0, read:xxx, close:del */
4252b15cb3dSCy Schubert 	{ 0, 255 },
4262b15cb3dSCy Schubert 	/* old=  w, write:  0, read:xxx, close:xxx */
4272b15cb3dSCy Schubert 	{ 0, 255 },
4282b15cb3dSCy Schubert 	/* old=  w, write:add, read:  0, close:  0 */
4292b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4302b15cb3dSCy Schubert 	/* old=  w, write:add, read:  0, close:add */
4312b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4322b15cb3dSCy Schubert 	/* old=  w, write:add, read:  0, close:del */
4332b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4342b15cb3dSCy Schubert 	/* old=  w, write:add, read:  0, close:xxx */
4352b15cb3dSCy Schubert 	{ 0, 255 },
4362b15cb3dSCy Schubert 	/* old=  w, write:add, read:add, close:  0 */
4372b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
4382b15cb3dSCy Schubert 	/* old=  w, write:add, read:add, close:add */
4392b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4402b15cb3dSCy Schubert 	/* old=  w, write:add, read:add, close:del */
4412b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
4422b15cb3dSCy Schubert 	/* old=  w, write:add, read:add, close:xxx */
4432b15cb3dSCy Schubert 	{ 0, 255 },
4442b15cb3dSCy Schubert 	/* old=  w, write:add, read:del, close:  0 */
4452b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4462b15cb3dSCy Schubert 	/* old=  w, write:add, read:del, close:add */
4472b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
4482b15cb3dSCy Schubert 	/* old=  w, write:add, read:del, close:del */
4492b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
4502b15cb3dSCy Schubert 	/* old=  w, write:add, read:del, close:xxx */
4512b15cb3dSCy Schubert 	{ 0, 255 },
4522b15cb3dSCy Schubert 	/* old=  w, write:add, read:xxx, close:  0 */
4532b15cb3dSCy Schubert 	{ 0, 255 },
4542b15cb3dSCy Schubert 	/* old=  w, write:add, read:xxx, close:add */
4552b15cb3dSCy Schubert 	{ 0, 255 },
4562b15cb3dSCy Schubert 	/* old=  w, write:add, read:xxx, close:del */
4572b15cb3dSCy Schubert 	{ 0, 255 },
4582b15cb3dSCy Schubert 	/* old=  w, write:add, read:xxx, close:xxx */
4592b15cb3dSCy Schubert 	{ 0, 255 },
4602b15cb3dSCy Schubert 	/* old=  w, write:del, read:  0, close:  0 */
4612b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_DEL },
4622b15cb3dSCy Schubert 	/* old=  w, write:del, read:  0, close:add */
4632b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
4642b15cb3dSCy Schubert 	/* old=  w, write:del, read:  0, close:del */
4652b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
4662b15cb3dSCy Schubert 	/* old=  w, write:del, read:  0, close:xxx */
4672b15cb3dSCy Schubert 	{ 0, 255 },
4682b15cb3dSCy Schubert 	/* old=  w, write:del, read:add, close:  0 */
4692b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
4702b15cb3dSCy Schubert 	/* old=  w, write:del, read:add, close:add */
4712b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
4722b15cb3dSCy Schubert 	/* old=  w, write:del, read:add, close:del */
4732b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
4742b15cb3dSCy Schubert 	/* old=  w, write:del, read:add, close:xxx */
4752b15cb3dSCy Schubert 	{ 0, 255 },
4762b15cb3dSCy Schubert 	/* old=  w, write:del, read:del, close:  0 */
4772b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
4782b15cb3dSCy Schubert 	/* old=  w, write:del, read:del, close:add */
4792b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
4802b15cb3dSCy Schubert 	/* old=  w, write:del, read:del, close:del */
4812b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
4822b15cb3dSCy Schubert 	/* old=  w, write:del, read:del, close:xxx */
4832b15cb3dSCy Schubert 	{ 0, 255 },
4842b15cb3dSCy Schubert 	/* old=  w, write:del, read:xxx, close:  0 */
4852b15cb3dSCy Schubert 	{ 0, 255 },
4862b15cb3dSCy Schubert 	/* old=  w, write:del, read:xxx, close:add */
4872b15cb3dSCy Schubert 	{ 0, 255 },
4882b15cb3dSCy Schubert 	/* old=  w, write:del, read:xxx, close:del */
4892b15cb3dSCy Schubert 	{ 0, 255 },
4902b15cb3dSCy Schubert 	/* old=  w, write:del, read:xxx, close:xxx */
4912b15cb3dSCy Schubert 	{ 0, 255 },
4922b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:  0, close:  0 */
4932b15cb3dSCy Schubert 	{ 0, 255 },
4942b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:  0, close:add */
4952b15cb3dSCy Schubert 	{ 0, 255 },
4962b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:  0, close:del */
4972b15cb3dSCy Schubert 	{ 0, 255 },
4982b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:  0, close:xxx */
4992b15cb3dSCy Schubert 	{ 0, 255 },
5002b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:add, close:  0 */
5012b15cb3dSCy Schubert 	{ 0, 255 },
5022b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:add, close:add */
5032b15cb3dSCy Schubert 	{ 0, 255 },
5042b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:add, close:del */
5052b15cb3dSCy Schubert 	{ 0, 255 },
5062b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:add, close:xxx */
5072b15cb3dSCy Schubert 	{ 0, 255 },
5082b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:del, close:  0 */
5092b15cb3dSCy Schubert 	{ 0, 255 },
5102b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:del, close:add */
5112b15cb3dSCy Schubert 	{ 0, 255 },
5122b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:del, close:del */
5132b15cb3dSCy Schubert 	{ 0, 255 },
5142b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:del, close:xxx */
5152b15cb3dSCy Schubert 	{ 0, 255 },
5162b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:xxx, close:  0 */
5172b15cb3dSCy Schubert 	{ 0, 255 },
5182b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:xxx, close:add */
5192b15cb3dSCy Schubert 	{ 0, 255 },
5202b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:xxx, close:del */
5212b15cb3dSCy Schubert 	{ 0, 255 },
5222b15cb3dSCy Schubert 	/* old=  w, write:xxx, read:xxx, close:xxx */
5232b15cb3dSCy Schubert 	{ 0, 255 },
5242b15cb3dSCy Schubert 	/* old= rw, write:  0, read:  0, close:  0 */
5252b15cb3dSCy Schubert 	{ 0, 0 },
5262b15cb3dSCy Schubert 	/* old= rw, write:  0, read:  0, close:add */
5272b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5282b15cb3dSCy Schubert 	/* old= rw, write:  0, read:  0, close:del */
5292b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5302b15cb3dSCy Schubert 	/* old= rw, write:  0, read:  0, close:xxx */
5312b15cb3dSCy Schubert 	{ 0, 255 },
5322b15cb3dSCy Schubert 	/* old= rw, write:  0, read:add, close:  0 */
5332b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5342b15cb3dSCy Schubert 	/* old= rw, write:  0, read:add, close:add */
5352b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5362b15cb3dSCy Schubert 	/* old= rw, write:  0, read:add, close:del */
5372b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5382b15cb3dSCy Schubert 	/* old= rw, write:  0, read:add, close:xxx */
5392b15cb3dSCy Schubert 	{ 0, 255 },
5402b15cb3dSCy Schubert 	/* old= rw, write:  0, read:del, close:  0 */
5412b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
5422b15cb3dSCy Schubert 	/* old= rw, write:  0, read:del, close:add */
5432b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5442b15cb3dSCy Schubert 	/* old= rw, write:  0, read:del, close:del */
5452b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
5462b15cb3dSCy Schubert 	/* old= rw, write:  0, read:del, close:xxx */
5472b15cb3dSCy Schubert 	{ 0, 255 },
5482b15cb3dSCy Schubert 	/* old= rw, write:  0, read:xxx, close:  0 */
5492b15cb3dSCy Schubert 	{ 0, 255 },
5502b15cb3dSCy Schubert 	/* old= rw, write:  0, read:xxx, close:add */
5512b15cb3dSCy Schubert 	{ 0, 255 },
5522b15cb3dSCy Schubert 	/* old= rw, write:  0, read:xxx, close:del */
5532b15cb3dSCy Schubert 	{ 0, 255 },
5542b15cb3dSCy Schubert 	/* old= rw, write:  0, read:xxx, close:xxx */
5552b15cb3dSCy Schubert 	{ 0, 255 },
5562b15cb3dSCy Schubert 	/* old= rw, write:add, read:  0, close:  0 */
5572b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5582b15cb3dSCy Schubert 	/* old= rw, write:add, read:  0, close:add */
5592b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5602b15cb3dSCy Schubert 	/* old= rw, write:add, read:  0, close:del */
5612b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5622b15cb3dSCy Schubert 	/* old= rw, write:add, read:  0, close:xxx */
5632b15cb3dSCy Schubert 	{ 0, 255 },
5642b15cb3dSCy Schubert 	/* old= rw, write:add, read:add, close:  0 */
5652b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5662b15cb3dSCy Schubert 	/* old= rw, write:add, read:add, close:add */
5672b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5682b15cb3dSCy Schubert 	/* old= rw, write:add, read:add, close:del */
5692b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
5702b15cb3dSCy Schubert 	/* old= rw, write:add, read:add, close:xxx */
5712b15cb3dSCy Schubert 	{ 0, 255 },
5722b15cb3dSCy Schubert 	/* old= rw, write:add, read:del, close:  0 */
5732b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
5742b15cb3dSCy Schubert 	/* old= rw, write:add, read:del, close:add */
5752b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
5762b15cb3dSCy Schubert 	/* old= rw, write:add, read:del, close:del */
5772b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
5782b15cb3dSCy Schubert 	/* old= rw, write:add, read:del, close:xxx */
5792b15cb3dSCy Schubert 	{ 0, 255 },
5802b15cb3dSCy Schubert 	/* old= rw, write:add, read:xxx, close:  0 */
5812b15cb3dSCy Schubert 	{ 0, 255 },
5822b15cb3dSCy Schubert 	/* old= rw, write:add, read:xxx, close:add */
5832b15cb3dSCy Schubert 	{ 0, 255 },
5842b15cb3dSCy Schubert 	/* old= rw, write:add, read:xxx, close:del */
5852b15cb3dSCy Schubert 	{ 0, 255 },
5862b15cb3dSCy Schubert 	/* old= rw, write:add, read:xxx, close:xxx */
5872b15cb3dSCy Schubert 	{ 0, 255 },
5882b15cb3dSCy Schubert 	/* old= rw, write:del, read:  0, close:  0 */
5892b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
5902b15cb3dSCy Schubert 	/* old= rw, write:del, read:  0, close:add */
5912b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
5922b15cb3dSCy Schubert 	/* old= rw, write:del, read:  0, close:del */
5932b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
5942b15cb3dSCy Schubert 	/* old= rw, write:del, read:  0, close:xxx */
5952b15cb3dSCy Schubert 	{ 0, 255 },
5962b15cb3dSCy Schubert 	/* old= rw, write:del, read:add, close:  0 */
5972b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
5982b15cb3dSCy Schubert 	/* old= rw, write:del, read:add, close:add */
5992b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
6002b15cb3dSCy Schubert 	/* old= rw, write:del, read:add, close:del */
6012b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
6022b15cb3dSCy Schubert 	/* old= rw, write:del, read:add, close:xxx */
6032b15cb3dSCy Schubert 	{ 0, 255 },
6042b15cb3dSCy Schubert 	/* old= rw, write:del, read:del, close:  0 */
6052b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL },
6062b15cb3dSCy Schubert 	/* old= rw, write:del, read:del, close:add */
6072b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
6082b15cb3dSCy Schubert 	/* old= rw, write:del, read:del, close:del */
6092b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
6102b15cb3dSCy Schubert 	/* old= rw, write:del, read:del, close:xxx */
6112b15cb3dSCy Schubert 	{ 0, 255 },
6122b15cb3dSCy Schubert 	/* old= rw, write:del, read:xxx, close:  0 */
6132b15cb3dSCy Schubert 	{ 0, 255 },
6142b15cb3dSCy Schubert 	/* old= rw, write:del, read:xxx, close:add */
6152b15cb3dSCy Schubert 	{ 0, 255 },
6162b15cb3dSCy Schubert 	/* old= rw, write:del, read:xxx, close:del */
6172b15cb3dSCy Schubert 	{ 0, 255 },
6182b15cb3dSCy Schubert 	/* old= rw, write:del, read:xxx, close:xxx */
6192b15cb3dSCy Schubert 	{ 0, 255 },
6202b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:  0, close:  0 */
6212b15cb3dSCy Schubert 	{ 0, 255 },
6222b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:  0, close:add */
6232b15cb3dSCy Schubert 	{ 0, 255 },
6242b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:  0, close:del */
6252b15cb3dSCy Schubert 	{ 0, 255 },
6262b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:  0, close:xxx */
6272b15cb3dSCy Schubert 	{ 0, 255 },
6282b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:add, close:  0 */
6292b15cb3dSCy Schubert 	{ 0, 255 },
6302b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:add, close:add */
6312b15cb3dSCy Schubert 	{ 0, 255 },
6322b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:add, close:del */
6332b15cb3dSCy Schubert 	{ 0, 255 },
6342b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:add, close:xxx */
6352b15cb3dSCy Schubert 	{ 0, 255 },
6362b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:del, close:  0 */
6372b15cb3dSCy Schubert 	{ 0, 255 },
6382b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:del, close:add */
6392b15cb3dSCy Schubert 	{ 0, 255 },
6402b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:del, close:del */
6412b15cb3dSCy Schubert 	{ 0, 255 },
6422b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:del, close:xxx */
6432b15cb3dSCy Schubert 	{ 0, 255 },
6442b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:xxx, close:  0 */
6452b15cb3dSCy Schubert 	{ 0, 255 },
6462b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:xxx, close:add */
6472b15cb3dSCy Schubert 	{ 0, 255 },
6482b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:xxx, close:del */
6492b15cb3dSCy Schubert 	{ 0, 255 },
6502b15cb3dSCy Schubert 	/* old= rw, write:xxx, read:xxx, close:xxx */
6512b15cb3dSCy Schubert 	{ 0, 255 },
6522b15cb3dSCy Schubert 	/* old=  c, write:  0, read:  0, close:  0 */
6532b15cb3dSCy Schubert 	{ 0, 0 },
6542b15cb3dSCy Schubert 	/* old=  c, write:  0, read:  0, close:add */
6552b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
6562b15cb3dSCy Schubert 	/* old=  c, write:  0, read:  0, close:del */
6572b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_DEL },
6582b15cb3dSCy Schubert 	/* old=  c, write:  0, read:  0, close:xxx */
6592b15cb3dSCy Schubert 	{ 0, 255 },
6602b15cb3dSCy Schubert 	/* old=  c, write:  0, read:add, close:  0 */
6612b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
6622b15cb3dSCy Schubert 	/* old=  c, write:  0, read:add, close:add */
6632b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
6642b15cb3dSCy Schubert 	/* old=  c, write:  0, read:add, close:del */
6652b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
6662b15cb3dSCy Schubert 	/* old=  c, write:  0, read:add, close:xxx */
6672b15cb3dSCy Schubert 	{ 0, 255 },
6682b15cb3dSCy Schubert 	/* old=  c, write:  0, read:del, close:  0 */
6692b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
6702b15cb3dSCy Schubert 	/* old=  c, write:  0, read:del, close:add */
6712b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
6722b15cb3dSCy Schubert 	/* old=  c, write:  0, read:del, close:del */
6732b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
6742b15cb3dSCy Schubert 	/* old=  c, write:  0, read:del, close:xxx */
6752b15cb3dSCy Schubert 	{ 0, 255 },
6762b15cb3dSCy Schubert 	/* old=  c, write:  0, read:xxx, close:  0 */
6772b15cb3dSCy Schubert 	{ 0, 255 },
6782b15cb3dSCy Schubert 	/* old=  c, write:  0, read:xxx, close:add */
6792b15cb3dSCy Schubert 	{ 0, 255 },
6802b15cb3dSCy Schubert 	/* old=  c, write:  0, read:xxx, close:del */
6812b15cb3dSCy Schubert 	{ 0, 255 },
6822b15cb3dSCy Schubert 	/* old=  c, write:  0, read:xxx, close:xxx */
6832b15cb3dSCy Schubert 	{ 0, 255 },
6842b15cb3dSCy Schubert 	/* old=  c, write:add, read:  0, close:  0 */
6852b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
6862b15cb3dSCy Schubert 	/* old=  c, write:add, read:  0, close:add */
6872b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
6882b15cb3dSCy Schubert 	/* old=  c, write:add, read:  0, close:del */
6892b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
6902b15cb3dSCy Schubert 	/* old=  c, write:add, read:  0, close:xxx */
6912b15cb3dSCy Schubert 	{ 0, 255 },
6922b15cb3dSCy Schubert 	/* old=  c, write:add, read:add, close:  0 */
6932b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
6942b15cb3dSCy Schubert 	/* old=  c, write:add, read:add, close:add */
6952b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
6962b15cb3dSCy Schubert 	/* old=  c, write:add, read:add, close:del */
6972b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
6982b15cb3dSCy Schubert 	/* old=  c, write:add, read:add, close:xxx */
6992b15cb3dSCy Schubert 	{ 0, 255 },
7002b15cb3dSCy Schubert 	/* old=  c, write:add, read:del, close:  0 */
7012b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
7022b15cb3dSCy Schubert 	/* old=  c, write:add, read:del, close:add */
7032b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
7042b15cb3dSCy Schubert 	/* old=  c, write:add, read:del, close:del */
7052b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
7062b15cb3dSCy Schubert 	/* old=  c, write:add, read:del, close:xxx */
7072b15cb3dSCy Schubert 	{ 0, 255 },
7082b15cb3dSCy Schubert 	/* old=  c, write:add, read:xxx, close:  0 */
7092b15cb3dSCy Schubert 	{ 0, 255 },
7102b15cb3dSCy Schubert 	/* old=  c, write:add, read:xxx, close:add */
7112b15cb3dSCy Schubert 	{ 0, 255 },
7122b15cb3dSCy Schubert 	/* old=  c, write:add, read:xxx, close:del */
7132b15cb3dSCy Schubert 	{ 0, 255 },
7142b15cb3dSCy Schubert 	/* old=  c, write:add, read:xxx, close:xxx */
7152b15cb3dSCy Schubert 	{ 0, 255 },
7162b15cb3dSCy Schubert 	/* old=  c, write:del, read:  0, close:  0 */
7172b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
7182b15cb3dSCy Schubert 	/* old=  c, write:del, read:  0, close:add */
7192b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
7202b15cb3dSCy Schubert 	/* old=  c, write:del, read:  0, close:del */
7212b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
7222b15cb3dSCy Schubert 	/* old=  c, write:del, read:  0, close:xxx */
7232b15cb3dSCy Schubert 	{ 0, 255 },
7242b15cb3dSCy Schubert 	/* old=  c, write:del, read:add, close:  0 */
7252b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
7262b15cb3dSCy Schubert 	/* old=  c, write:del, read:add, close:add */
7272b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
7282b15cb3dSCy Schubert 	/* old=  c, write:del, read:add, close:del */
7292b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
7302b15cb3dSCy Schubert 	/* old=  c, write:del, read:add, close:xxx */
7312b15cb3dSCy Schubert 	{ 0, 255 },
7322b15cb3dSCy Schubert 	/* old=  c, write:del, read:del, close:  0 */
7332b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
7342b15cb3dSCy Schubert 	/* old=  c, write:del, read:del, close:add */
7352b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
7362b15cb3dSCy Schubert 	/* old=  c, write:del, read:del, close:del */
7372b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
7382b15cb3dSCy Schubert 	/* old=  c, write:del, read:del, close:xxx */
7392b15cb3dSCy Schubert 	{ 0, 255 },
7402b15cb3dSCy Schubert 	/* old=  c, write:del, read:xxx, close:  0 */
7412b15cb3dSCy Schubert 	{ 0, 255 },
7422b15cb3dSCy Schubert 	/* old=  c, write:del, read:xxx, close:add */
7432b15cb3dSCy Schubert 	{ 0, 255 },
7442b15cb3dSCy Schubert 	/* old=  c, write:del, read:xxx, close:del */
7452b15cb3dSCy Schubert 	{ 0, 255 },
7462b15cb3dSCy Schubert 	/* old=  c, write:del, read:xxx, close:xxx */
7472b15cb3dSCy Schubert 	{ 0, 255 },
7482b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:  0, close:  0 */
7492b15cb3dSCy Schubert 	{ 0, 255 },
7502b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:  0, close:add */
7512b15cb3dSCy Schubert 	{ 0, 255 },
7522b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:  0, close:del */
7532b15cb3dSCy Schubert 	{ 0, 255 },
7542b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:  0, close:xxx */
7552b15cb3dSCy Schubert 	{ 0, 255 },
7562b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:add, close:  0 */
7572b15cb3dSCy Schubert 	{ 0, 255 },
7582b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:add, close:add */
7592b15cb3dSCy Schubert 	{ 0, 255 },
7602b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:add, close:del */
7612b15cb3dSCy Schubert 	{ 0, 255 },
7622b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:add, close:xxx */
7632b15cb3dSCy Schubert 	{ 0, 255 },
7642b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:del, close:  0 */
7652b15cb3dSCy Schubert 	{ 0, 255 },
7662b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:del, close:add */
7672b15cb3dSCy Schubert 	{ 0, 255 },
7682b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:del, close:del */
7692b15cb3dSCy Schubert 	{ 0, 255 },
7702b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:del, close:xxx */
7712b15cb3dSCy Schubert 	{ 0, 255 },
7722b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:xxx, close:  0 */
7732b15cb3dSCy Schubert 	{ 0, 255 },
7742b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:xxx, close:add */
7752b15cb3dSCy Schubert 	{ 0, 255 },
7762b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:xxx, close:del */
7772b15cb3dSCy Schubert 	{ 0, 255 },
7782b15cb3dSCy Schubert 	/* old=  c, write:xxx, read:xxx, close:xxx */
7792b15cb3dSCy Schubert 	{ 0, 255 },
7802b15cb3dSCy Schubert 	/* old= cr, write:  0, read:  0, close:  0 */
7812b15cb3dSCy Schubert 	{ 0, 0 },
7822b15cb3dSCy Schubert 	/* old= cr, write:  0, read:  0, close:add */
7832b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
7842b15cb3dSCy Schubert 	/* old= cr, write:  0, read:  0, close:del */
7852b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
7862b15cb3dSCy Schubert 	/* old= cr, write:  0, read:  0, close:xxx */
7872b15cb3dSCy Schubert 	{ 0, 255 },
7882b15cb3dSCy Schubert 	/* old= cr, write:  0, read:add, close:  0 */
7892b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
7902b15cb3dSCy Schubert 	/* old= cr, write:  0, read:add, close:add */
7912b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
7922b15cb3dSCy Schubert 	/* old= cr, write:  0, read:add, close:del */
7932b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
7942b15cb3dSCy Schubert 	/* old= cr, write:  0, read:add, close:xxx */
7952b15cb3dSCy Schubert 	{ 0, 255 },
7962b15cb3dSCy Schubert 	/* old= cr, write:  0, read:del, close:  0 */
7972b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
7982b15cb3dSCy Schubert 	/* old= cr, write:  0, read:del, close:add */
7992b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
8002b15cb3dSCy Schubert 	/* old= cr, write:  0, read:del, close:del */
8012b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL },
8022b15cb3dSCy Schubert 	/* old= cr, write:  0, read:del, close:xxx */
8032b15cb3dSCy Schubert 	{ 0, 255 },
8042b15cb3dSCy Schubert 	/* old= cr, write:  0, read:xxx, close:  0 */
8052b15cb3dSCy Schubert 	{ 0, 255 },
8062b15cb3dSCy Schubert 	/* old= cr, write:  0, read:xxx, close:add */
8072b15cb3dSCy Schubert 	{ 0, 255 },
8082b15cb3dSCy Schubert 	/* old= cr, write:  0, read:xxx, close:del */
8092b15cb3dSCy Schubert 	{ 0, 255 },
8102b15cb3dSCy Schubert 	/* old= cr, write:  0, read:xxx, close:xxx */
8112b15cb3dSCy Schubert 	{ 0, 255 },
8122b15cb3dSCy Schubert 	/* old= cr, write:add, read:  0, close:  0 */
8132b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8142b15cb3dSCy Schubert 	/* old= cr, write:add, read:  0, close:add */
8152b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8162b15cb3dSCy Schubert 	/* old= cr, write:add, read:  0, close:del */
8172b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
8182b15cb3dSCy Schubert 	/* old= cr, write:add, read:  0, close:xxx */
8192b15cb3dSCy Schubert 	{ 0, 255 },
8202b15cb3dSCy Schubert 	/* old= cr, write:add, read:add, close:  0 */
8212b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8222b15cb3dSCy Schubert 	/* old= cr, write:add, read:add, close:add */
8232b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8242b15cb3dSCy Schubert 	/* old= cr, write:add, read:add, close:del */
8252b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
8262b15cb3dSCy Schubert 	/* old= cr, write:add, read:add, close:xxx */
8272b15cb3dSCy Schubert 	{ 0, 255 },
8282b15cb3dSCy Schubert 	/* old= cr, write:add, read:del, close:  0 */
8292b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8302b15cb3dSCy Schubert 	/* old= cr, write:add, read:del, close:add */
8312b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
8322b15cb3dSCy Schubert 	/* old= cr, write:add, read:del, close:del */
8332b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
8342b15cb3dSCy Schubert 	/* old= cr, write:add, read:del, close:xxx */
8352b15cb3dSCy Schubert 	{ 0, 255 },
8362b15cb3dSCy Schubert 	/* old= cr, write:add, read:xxx, close:  0 */
8372b15cb3dSCy Schubert 	{ 0, 255 },
8382b15cb3dSCy Schubert 	/* old= cr, write:add, read:xxx, close:add */
8392b15cb3dSCy Schubert 	{ 0, 255 },
8402b15cb3dSCy Schubert 	/* old= cr, write:add, read:xxx, close:del */
8412b15cb3dSCy Schubert 	{ 0, 255 },
8422b15cb3dSCy Schubert 	/* old= cr, write:add, read:xxx, close:xxx */
8432b15cb3dSCy Schubert 	{ 0, 255 },
8442b15cb3dSCy Schubert 	/* old= cr, write:del, read:  0, close:  0 */
8452b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
8462b15cb3dSCy Schubert 	/* old= cr, write:del, read:  0, close:add */
8472b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
8482b15cb3dSCy Schubert 	/* old= cr, write:del, read:  0, close:del */
8492b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
8502b15cb3dSCy Schubert 	/* old= cr, write:del, read:  0, close:xxx */
8512b15cb3dSCy Schubert 	{ 0, 255 },
8522b15cb3dSCy Schubert 	/* old= cr, write:del, read:add, close:  0 */
8532b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
8542b15cb3dSCy Schubert 	/* old= cr, write:del, read:add, close:add */
8552b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
8562b15cb3dSCy Schubert 	/* old= cr, write:del, read:add, close:del */
8572b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
8582b15cb3dSCy Schubert 	/* old= cr, write:del, read:add, close:xxx */
8592b15cb3dSCy Schubert 	{ 0, 255 },
8602b15cb3dSCy Schubert 	/* old= cr, write:del, read:del, close:  0 */
8612b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
8622b15cb3dSCy Schubert 	/* old= cr, write:del, read:del, close:add */
8632b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
8642b15cb3dSCy Schubert 	/* old= cr, write:del, read:del, close:del */
8652b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
8662b15cb3dSCy Schubert 	/* old= cr, write:del, read:del, close:xxx */
8672b15cb3dSCy Schubert 	{ 0, 255 },
8682b15cb3dSCy Schubert 	/* old= cr, write:del, read:xxx, close:  0 */
8692b15cb3dSCy Schubert 	{ 0, 255 },
8702b15cb3dSCy Schubert 	/* old= cr, write:del, read:xxx, close:add */
8712b15cb3dSCy Schubert 	{ 0, 255 },
8722b15cb3dSCy Schubert 	/* old= cr, write:del, read:xxx, close:del */
8732b15cb3dSCy Schubert 	{ 0, 255 },
8742b15cb3dSCy Schubert 	/* old= cr, write:del, read:xxx, close:xxx */
8752b15cb3dSCy Schubert 	{ 0, 255 },
8762b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:  0, close:  0 */
8772b15cb3dSCy Schubert 	{ 0, 255 },
8782b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:  0, close:add */
8792b15cb3dSCy Schubert 	{ 0, 255 },
8802b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:  0, close:del */
8812b15cb3dSCy Schubert 	{ 0, 255 },
8822b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:  0, close:xxx */
8832b15cb3dSCy Schubert 	{ 0, 255 },
8842b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:add, close:  0 */
8852b15cb3dSCy Schubert 	{ 0, 255 },
8862b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:add, close:add */
8872b15cb3dSCy Schubert 	{ 0, 255 },
8882b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:add, close:del */
8892b15cb3dSCy Schubert 	{ 0, 255 },
8902b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:add, close:xxx */
8912b15cb3dSCy Schubert 	{ 0, 255 },
8922b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:del, close:  0 */
8932b15cb3dSCy Schubert 	{ 0, 255 },
8942b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:del, close:add */
8952b15cb3dSCy Schubert 	{ 0, 255 },
8962b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:del, close:del */
8972b15cb3dSCy Schubert 	{ 0, 255 },
8982b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:del, close:xxx */
8992b15cb3dSCy Schubert 	{ 0, 255 },
9002b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:xxx, close:  0 */
9012b15cb3dSCy Schubert 	{ 0, 255 },
9022b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:xxx, close:add */
9032b15cb3dSCy Schubert 	{ 0, 255 },
9042b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:xxx, close:del */
9052b15cb3dSCy Schubert 	{ 0, 255 },
9062b15cb3dSCy Schubert 	/* old= cr, write:xxx, read:xxx, close:xxx */
9072b15cb3dSCy Schubert 	{ 0, 255 },
9082b15cb3dSCy Schubert 	/* old= cw, write:  0, read:  0, close:  0 */
9092b15cb3dSCy Schubert 	{ 0, 0 },
9102b15cb3dSCy Schubert 	/* old= cw, write:  0, read:  0, close:add */
9112b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9122b15cb3dSCy Schubert 	/* old= cw, write:  0, read:  0, close:del */
9132b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
9142b15cb3dSCy Schubert 	/* old= cw, write:  0, read:  0, close:xxx */
9152b15cb3dSCy Schubert 	{ 0, 255 },
9162b15cb3dSCy Schubert 	/* old= cw, write:  0, read:add, close:  0 */
9172b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9182b15cb3dSCy Schubert 	/* old= cw, write:  0, read:add, close:add */
9192b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9202b15cb3dSCy Schubert 	/* old= cw, write:  0, read:add, close:del */
9212b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
9222b15cb3dSCy Schubert 	/* old= cw, write:  0, read:add, close:xxx */
9232b15cb3dSCy Schubert 	{ 0, 255 },
9242b15cb3dSCy Schubert 	/* old= cw, write:  0, read:del, close:  0 */
9252b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9262b15cb3dSCy Schubert 	/* old= cw, write:  0, read:del, close:add */
9272b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9282b15cb3dSCy Schubert 	/* old= cw, write:  0, read:del, close:del */
9292b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
9302b15cb3dSCy Schubert 	/* old= cw, write:  0, read:del, close:xxx */
9312b15cb3dSCy Schubert 	{ 0, 255 },
9322b15cb3dSCy Schubert 	/* old= cw, write:  0, read:xxx, close:  0 */
9332b15cb3dSCy Schubert 	{ 0, 255 },
9342b15cb3dSCy Schubert 	/* old= cw, write:  0, read:xxx, close:add */
9352b15cb3dSCy Schubert 	{ 0, 255 },
9362b15cb3dSCy Schubert 	/* old= cw, write:  0, read:xxx, close:del */
9372b15cb3dSCy Schubert 	{ 0, 255 },
9382b15cb3dSCy Schubert 	/* old= cw, write:  0, read:xxx, close:xxx */
9392b15cb3dSCy Schubert 	{ 0, 255 },
9402b15cb3dSCy Schubert 	/* old= cw, write:add, read:  0, close:  0 */
9412b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9422b15cb3dSCy Schubert 	/* old= cw, write:add, read:  0, close:add */
9432b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9442b15cb3dSCy Schubert 	/* old= cw, write:add, read:  0, close:del */
9452b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
9462b15cb3dSCy Schubert 	/* old= cw, write:add, read:  0, close:xxx */
9472b15cb3dSCy Schubert 	{ 0, 255 },
9482b15cb3dSCy Schubert 	/* old= cw, write:add, read:add, close:  0 */
9492b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9502b15cb3dSCy Schubert 	/* old= cw, write:add, read:add, close:add */
9512b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9522b15cb3dSCy Schubert 	/* old= cw, write:add, read:add, close:del */
9532b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
9542b15cb3dSCy Schubert 	/* old= cw, write:add, read:add, close:xxx */
9552b15cb3dSCy Schubert 	{ 0, 255 },
9562b15cb3dSCy Schubert 	/* old= cw, write:add, read:del, close:  0 */
9572b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9582b15cb3dSCy Schubert 	/* old= cw, write:add, read:del, close:add */
9592b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
9602b15cb3dSCy Schubert 	/* old= cw, write:add, read:del, close:del */
9612b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
9622b15cb3dSCy Schubert 	/* old= cw, write:add, read:del, close:xxx */
9632b15cb3dSCy Schubert 	{ 0, 255 },
9642b15cb3dSCy Schubert 	/* old= cw, write:add, read:xxx, close:  0 */
9652b15cb3dSCy Schubert 	{ 0, 255 },
9662b15cb3dSCy Schubert 	/* old= cw, write:add, read:xxx, close:add */
9672b15cb3dSCy Schubert 	{ 0, 255 },
9682b15cb3dSCy Schubert 	/* old= cw, write:add, read:xxx, close:del */
9692b15cb3dSCy Schubert 	{ 0, 255 },
9702b15cb3dSCy Schubert 	/* old= cw, write:add, read:xxx, close:xxx */
9712b15cb3dSCy Schubert 	{ 0, 255 },
9722b15cb3dSCy Schubert 	/* old= cw, write:del, read:  0, close:  0 */
9732b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
9742b15cb3dSCy Schubert 	/* old= cw, write:del, read:  0, close:add */
9752b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
9762b15cb3dSCy Schubert 	/* old= cw, write:del, read:  0, close:del */
9772b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
9782b15cb3dSCy Schubert 	/* old= cw, write:del, read:  0, close:xxx */
9792b15cb3dSCy Schubert 	{ 0, 255 },
9802b15cb3dSCy Schubert 	/* old= cw, write:del, read:add, close:  0 */
9812b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
9822b15cb3dSCy Schubert 	/* old= cw, write:del, read:add, close:add */
9832b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
9842b15cb3dSCy Schubert 	/* old= cw, write:del, read:add, close:del */
9852b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
9862b15cb3dSCy Schubert 	/* old= cw, write:del, read:add, close:xxx */
9872b15cb3dSCy Schubert 	{ 0, 255 },
9882b15cb3dSCy Schubert 	/* old= cw, write:del, read:del, close:  0 */
9892b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
9902b15cb3dSCy Schubert 	/* old= cw, write:del, read:del, close:add */
9912b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
9922b15cb3dSCy Schubert 	/* old= cw, write:del, read:del, close:del */
9932b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
9942b15cb3dSCy Schubert 	/* old= cw, write:del, read:del, close:xxx */
9952b15cb3dSCy Schubert 	{ 0, 255 },
9962b15cb3dSCy Schubert 	/* old= cw, write:del, read:xxx, close:  0 */
9972b15cb3dSCy Schubert 	{ 0, 255 },
9982b15cb3dSCy Schubert 	/* old= cw, write:del, read:xxx, close:add */
9992b15cb3dSCy Schubert 	{ 0, 255 },
10002b15cb3dSCy Schubert 	/* old= cw, write:del, read:xxx, close:del */
10012b15cb3dSCy Schubert 	{ 0, 255 },
10022b15cb3dSCy Schubert 	/* old= cw, write:del, read:xxx, close:xxx */
10032b15cb3dSCy Schubert 	{ 0, 255 },
10042b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:  0, close:  0 */
10052b15cb3dSCy Schubert 	{ 0, 255 },
10062b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:  0, close:add */
10072b15cb3dSCy Schubert 	{ 0, 255 },
10082b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:  0, close:del */
10092b15cb3dSCy Schubert 	{ 0, 255 },
10102b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:  0, close:xxx */
10112b15cb3dSCy Schubert 	{ 0, 255 },
10122b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:add, close:  0 */
10132b15cb3dSCy Schubert 	{ 0, 255 },
10142b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:add, close:add */
10152b15cb3dSCy Schubert 	{ 0, 255 },
10162b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:add, close:del */
10172b15cb3dSCy Schubert 	{ 0, 255 },
10182b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:add, close:xxx */
10192b15cb3dSCy Schubert 	{ 0, 255 },
10202b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:del, close:  0 */
10212b15cb3dSCy Schubert 	{ 0, 255 },
10222b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:del, close:add */
10232b15cb3dSCy Schubert 	{ 0, 255 },
10242b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:del, close:del */
10252b15cb3dSCy Schubert 	{ 0, 255 },
10262b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:del, close:xxx */
10272b15cb3dSCy Schubert 	{ 0, 255 },
10282b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:xxx, close:  0 */
10292b15cb3dSCy Schubert 	{ 0, 255 },
10302b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:xxx, close:add */
10312b15cb3dSCy Schubert 	{ 0, 255 },
10322b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:xxx, close:del */
10332b15cb3dSCy Schubert 	{ 0, 255 },
10342b15cb3dSCy Schubert 	/* old= cw, write:xxx, read:xxx, close:xxx */
10352b15cb3dSCy Schubert 	{ 0, 255 },
10362b15cb3dSCy Schubert 	/* old=crw, write:  0, read:  0, close:  0 */
10372b15cb3dSCy Schubert 	{ 0, 0 },
10382b15cb3dSCy Schubert 	/* old=crw, write:  0, read:  0, close:add */
10392b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10402b15cb3dSCy Schubert 	/* old=crw, write:  0, read:  0, close:del */
10412b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
10422b15cb3dSCy Schubert 	/* old=crw, write:  0, read:  0, close:xxx */
10432b15cb3dSCy Schubert 	{ 0, 255 },
10442b15cb3dSCy Schubert 	/* old=crw, write:  0, read:add, close:  0 */
10452b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10462b15cb3dSCy Schubert 	/* old=crw, write:  0, read:add, close:add */
10472b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10482b15cb3dSCy Schubert 	/* old=crw, write:  0, read:add, close:del */
10492b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
10502b15cb3dSCy Schubert 	/* old=crw, write:  0, read:add, close:xxx */
10512b15cb3dSCy Schubert 	{ 0, 255 },
10522b15cb3dSCy Schubert 	/* old=crw, write:  0, read:del, close:  0 */
10532b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10542b15cb3dSCy Schubert 	/* old=crw, write:  0, read:del, close:add */
10552b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10562b15cb3dSCy Schubert 	/* old=crw, write:  0, read:del, close:del */
10572b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
10582b15cb3dSCy Schubert 	/* old=crw, write:  0, read:del, close:xxx */
10592b15cb3dSCy Schubert 	{ 0, 255 },
10602b15cb3dSCy Schubert 	/* old=crw, write:  0, read:xxx, close:  0 */
10612b15cb3dSCy Schubert 	{ 0, 255 },
10622b15cb3dSCy Schubert 	/* old=crw, write:  0, read:xxx, close:add */
10632b15cb3dSCy Schubert 	{ 0, 255 },
10642b15cb3dSCy Schubert 	/* old=crw, write:  0, read:xxx, close:del */
10652b15cb3dSCy Schubert 	{ 0, 255 },
10662b15cb3dSCy Schubert 	/* old=crw, write:  0, read:xxx, close:xxx */
10672b15cb3dSCy Schubert 	{ 0, 255 },
10682b15cb3dSCy Schubert 	/* old=crw, write:add, read:  0, close:  0 */
10692b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10702b15cb3dSCy Schubert 	/* old=crw, write:add, read:  0, close:add */
10712b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10722b15cb3dSCy Schubert 	/* old=crw, write:add, read:  0, close:del */
10732b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
10742b15cb3dSCy Schubert 	/* old=crw, write:add, read:  0, close:xxx */
10752b15cb3dSCy Schubert 	{ 0, 255 },
10762b15cb3dSCy Schubert 	/* old=crw, write:add, read:add, close:  0 */
10772b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10782b15cb3dSCy Schubert 	/* old=crw, write:add, read:add, close:add */
10792b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10802b15cb3dSCy Schubert 	/* old=crw, write:add, read:add, close:del */
10812b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD },
10822b15cb3dSCy Schubert 	/* old=crw, write:add, read:add, close:xxx */
10832b15cb3dSCy Schubert 	{ 0, 255 },
10842b15cb3dSCy Schubert 	/* old=crw, write:add, read:del, close:  0 */
10852b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10862b15cb3dSCy Schubert 	/* old=crw, write:add, read:del, close:add */
10872b15cb3dSCy Schubert 	{ EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD },
10882b15cb3dSCy Schubert 	/* old=crw, write:add, read:del, close:del */
10892b15cb3dSCy Schubert 	{ EPOLLOUT, EPOLL_CTL_MOD },
10902b15cb3dSCy Schubert 	/* old=crw, write:add, read:del, close:xxx */
10912b15cb3dSCy Schubert 	{ 0, 255 },
10922b15cb3dSCy Schubert 	/* old=crw, write:add, read:xxx, close:  0 */
10932b15cb3dSCy Schubert 	{ 0, 255 },
10942b15cb3dSCy Schubert 	/* old=crw, write:add, read:xxx, close:add */
10952b15cb3dSCy Schubert 	{ 0, 255 },
10962b15cb3dSCy Schubert 	/* old=crw, write:add, read:xxx, close:del */
10972b15cb3dSCy Schubert 	{ 0, 255 },
10982b15cb3dSCy Schubert 	/* old=crw, write:add, read:xxx, close:xxx */
10992b15cb3dSCy Schubert 	{ 0, 255 },
11002b15cb3dSCy Schubert 	/* old=crw, write:del, read:  0, close:  0 */
11012b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
11022b15cb3dSCy Schubert 	/* old=crw, write:del, read:  0, close:add */
11032b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
11042b15cb3dSCy Schubert 	/* old=crw, write:del, read:  0, close:del */
11052b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
11062b15cb3dSCy Schubert 	/* old=crw, write:del, read:  0, close:xxx */
11072b15cb3dSCy Schubert 	{ 0, 255 },
11082b15cb3dSCy Schubert 	/* old=crw, write:del, read:add, close:  0 */
11092b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
11102b15cb3dSCy Schubert 	/* old=crw, write:del, read:add, close:add */
11112b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD },
11122b15cb3dSCy Schubert 	/* old=crw, write:del, read:add, close:del */
11132b15cb3dSCy Schubert 	{ EPOLLIN, EPOLL_CTL_MOD },
11142b15cb3dSCy Schubert 	/* old=crw, write:del, read:add, close:xxx */
11152b15cb3dSCy Schubert 	{ 0, 255 },
11162b15cb3dSCy Schubert 	/* old=crw, write:del, read:del, close:  0 */
11172b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
11182b15cb3dSCy Schubert 	/* old=crw, write:del, read:del, close:add */
11192b15cb3dSCy Schubert 	{ EPOLLRDHUP, EPOLL_CTL_MOD },
11202b15cb3dSCy Schubert 	/* old=crw, write:del, read:del, close:del */
11212b15cb3dSCy Schubert 	{ EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL },
11222b15cb3dSCy Schubert 	/* old=crw, write:del, read:del, close:xxx */
11232b15cb3dSCy Schubert 	{ 0, 255 },
11242b15cb3dSCy Schubert 	/* old=crw, write:del, read:xxx, close:  0 */
11252b15cb3dSCy Schubert 	{ 0, 255 },
11262b15cb3dSCy Schubert 	/* old=crw, write:del, read:xxx, close:add */
11272b15cb3dSCy Schubert 	{ 0, 255 },
11282b15cb3dSCy Schubert 	/* old=crw, write:del, read:xxx, close:del */
11292b15cb3dSCy Schubert 	{ 0, 255 },
11302b15cb3dSCy Schubert 	/* old=crw, write:del, read:xxx, close:xxx */
11312b15cb3dSCy Schubert 	{ 0, 255 },
11322b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:  0, close:  0 */
11332b15cb3dSCy Schubert 	{ 0, 255 },
11342b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:  0, close:add */
11352b15cb3dSCy Schubert 	{ 0, 255 },
11362b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:  0, close:del */
11372b15cb3dSCy Schubert 	{ 0, 255 },
11382b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:  0, close:xxx */
11392b15cb3dSCy Schubert 	{ 0, 255 },
11402b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:add, close:  0 */
11412b15cb3dSCy Schubert 	{ 0, 255 },
11422b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:add, close:add */
11432b15cb3dSCy Schubert 	{ 0, 255 },
11442b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:add, close:del */
11452b15cb3dSCy Schubert 	{ 0, 255 },
11462b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:add, close:xxx */
11472b15cb3dSCy Schubert 	{ 0, 255 },
11482b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:del, close:  0 */
11492b15cb3dSCy Schubert 	{ 0, 255 },
11502b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:del, close:add */
11512b15cb3dSCy Schubert 	{ 0, 255 },
11522b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:del, close:del */
11532b15cb3dSCy Schubert 	{ 0, 255 },
11542b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:del, close:xxx */
11552b15cb3dSCy Schubert 	{ 0, 255 },
11562b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:xxx, close:  0 */
11572b15cb3dSCy Schubert 	{ 0, 255 },
11582b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:xxx, close:add */
11592b15cb3dSCy Schubert 	{ 0, 255 },
11602b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:xxx, close:del */
11612b15cb3dSCy Schubert 	{ 0, 255 },
11622b15cb3dSCy Schubert 	/* old=crw, write:xxx, read:xxx, close:xxx */
11632b15cb3dSCy Schubert 	{ 0, 255 },
11642b15cb3dSCy Schubert };
11652b15cb3dSCy Schubert 
11662b15cb3dSCy Schubert #endif
1167