1275970Scy/* 2275970Scy * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> 3275970Scy * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson 4275970Scy * 5275970Scy * Redistribution and use in source and binary forms, with or without 6275970Scy * modification, are permitted provided that the following conditions 7275970Scy * are met: 8275970Scy * 1. Redistributions of source code must retain the above copyright 9275970Scy * notice, this list of conditions and the following disclaimer. 10275970Scy * 2. Redistributions in binary form must reproduce the above copyright 11275970Scy * notice, this list of conditions and the following disclaimer in the 12275970Scy * documentation and/or other materials provided with the distribution. 13275970Scy * 3. The name of the author may not be used to endorse or promote products 14275970Scy * derived from this software without specific prior written permission. 15275970Scy * 16275970Scy * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17275970Scy * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18275970Scy * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19275970Scy * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20275970Scy * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21275970Scy * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22275970Scy * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23275970Scy * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24275970Scy * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25275970Scy * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26275970Scy */ 27275970Scy#ifndef EPOLLTABLE_INTERNAL_H_INCLUDED_ 28275970Scy#define EPOLLTABLE_INTERNAL_H_INCLUDED_ 29275970Scy 30275970Scy/* 31275970Scy Here are the values we're masking off to decide what operations to do. 32275970Scy Note that since EV_READ|EV_WRITE. 33275970Scy 34275970Scy Note also that this table is a little sparse, since ADD+DEL is 35275970Scy nonsensical ("xxx" in the list below.) 36275970Scy 37275970Scy Note also also that we are shifting old_events by only 5 bits, since 38275970Scy EV_READ is 2 and EV_WRITE is 4. 39275970Scy 40275970Scy The table was auto-generated with a python script, according to this 41275970Scy pseudocode:[*0] 42275970Scy 43275970Scy If either the read or the write change is add+del: 44275970Scy This is impossible; Set op==-1, events=0. 45275970Scy Else, if either the read or the write change is add: 46275970Scy Set events to 0. 47275970Scy If the read change is add, or 48275970Scy (the read change is not del, and ev_read is in old_events): 49275970Scy Add EPOLLIN to events. 50275970Scy If the write change is add, or 51275970Scy (the write change is not del, and ev_write is in old_events): 52275970Scy Add EPOLLOUT to events. 53275970Scy 54275970Scy If old_events is set: 55275970Scy Set op to EPOLL_CTL_MOD [*1,*2] 56275970Scy Else: 57275970Scy Set op to EPOLL_CTL_ADD [*3] 58275970Scy 59275970Scy Else, if the read or the write change is del: 60275970Scy Set op to EPOLL_CTL_DEL. 61275970Scy If the read change is del: 62275970Scy If the write change is del: 63275970Scy Set events to EPOLLIN|EPOLLOUT 64275970Scy Else if ev_write is in old_events: 65275970Scy Set events to EPOLLOUT 66275970Scy Set op to EPOLL_CTL_MOD 67275970Scy Else 68275970Scy Set events to EPOLLIN 69275970Scy Else: 70275970Scy {The write change is del.} 71275970Scy If ev_read is in old_events: 72275970Scy Set events to EPOLLIN 73275970Scy Set op to EPOLL_CTL_MOD 74275970Scy Else: 75275970Scy Set the events to EPOLLOUT 76275970Scy 77275970Scy Else: 78275970Scy There is no read or write change; set op to 0 and events to 0. 79275970Scy 80275970Scy The logic is a little tricky, since we had no events set on the fd before, 81275970Scy we need to set op="ADD" and set events=the events we want to add. If we 82275970Scy had any events set on the fd before, and we want any events to remain on 83275970Scy the fd, we need to say op="MOD" and set events=the events we want to 84275970Scy remain. But if we want to delete the last event, we say op="DEL" and 85275970Scy set events=(any non-null pointer). 86275970Scy 87275970Scy [*0] Actually, the Python script has gotten a bit more complicated, to 88275970Scy support EPOLLRDHUP. 89275970Scy 90275970Scy [*1] This MOD is only a guess. MOD might fail with ENOENT if the file was 91275970Scy closed and a new file was opened with the same fd. If so, we'll retry 92275970Scy with ADD. 93275970Scy 94275970Scy [*2] We can't replace this with a no-op even if old_events is the same as 95275970Scy the new events: if the file was closed and reopened, we need to retry 96275970Scy with an ADD. (We do a MOD in this case since "no change" is more 97275970Scy common than "close and reopen", so we'll usually wind up doing 1 98275970Scy syscalls instead of 2.) 99275970Scy 100275970Scy [*3] This ADD is only a guess. There is a fun Linux kernel issue where if 101275970Scy you have two fds for the same file (via dup) and you ADD one to an 102275970Scy epfd, then close it, then re-create it with the same fd (via dup2 or an 103275970Scy unlucky dup), then try to ADD it again, you'll get an EEXIST, since the 104275970Scy struct epitem is not actually removed from the struct eventpoll until 105275970Scy the file itself is closed. 106275970Scy 107275970Scy EV_CHANGE_ADD==1 108275970Scy EV_CHANGE_DEL==2 109275970Scy EV_READ ==2 110275970Scy EV_WRITE ==4 111275970Scy EV_CLOSED ==0x80 112275970Scy 113275970Scy Bit 0: close change is add 114275970Scy Bit 1: close change is del 115275970Scy Bit 2: read change is add 116275970Scy Bit 3: read change is del 117275970Scy Bit 4: write change is add 118275970Scy Bit 5: write change is del 119275970Scy Bit 6: old events had EV_READ 120275970Scy Bit 7: old events had EV_WRITE 121275970Scy Bit 8: old events had EV_CLOSED 122275970Scy*/ 123275970Scy 124275970Scy#define EPOLL_OP_TABLE_INDEX(c) \ 125275970Scy ( (((c)->close_change&(EV_CHANGE_ADD|EV_CHANGE_DEL))) | \ 126275970Scy (((c)->read_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 2) | \ 127275970Scy (((c)->write_change&(EV_CHANGE_ADD|EV_CHANGE_DEL)) << 4) | \ 128275970Scy (((c)->old_events&(EV_READ|EV_WRITE)) << 5) | \ 129275970Scy (((c)->old_events&(EV_CLOSED)) << 1) \ 130275970Scy ) 131275970Scy 132275970Scy#if EV_READ != 2 || EV_WRITE != 4 || EV_CLOSED != 0x80 || EV_CHANGE_ADD != 1 || EV_CHANGE_DEL != 2 133275970Scy#error "Libevent's internals changed! Regenerate the op_table in epolltable-internal.h" 134275970Scy#endif 135275970Scy 136275970Scystatic const struct operation { 137275970Scy int events; 138275970Scy int op; 139275970Scy} epoll_op_table[] = { 140275970Scy /* old= 0, write: 0, read: 0, close: 0 */ 141275970Scy { 0, 0 }, 142275970Scy /* old= 0, write: 0, read: 0, close:add */ 143275970Scy { EPOLLRDHUP, EPOLL_CTL_ADD }, 144275970Scy /* old= 0, write: 0, read: 0, close:del */ 145275970Scy { EPOLLRDHUP, EPOLL_CTL_DEL }, 146275970Scy /* old= 0, write: 0, read: 0, close:xxx */ 147275970Scy { 0, 255 }, 148275970Scy /* old= 0, write: 0, read:add, close: 0 */ 149275970Scy { EPOLLIN, EPOLL_CTL_ADD }, 150275970Scy /* old= 0, write: 0, read:add, close:add */ 151275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD }, 152275970Scy /* old= 0, write: 0, read:add, close:del */ 153275970Scy { EPOLLIN, EPOLL_CTL_ADD }, 154275970Scy /* old= 0, write: 0, read:add, close:xxx */ 155275970Scy { 0, 255 }, 156275970Scy /* old= 0, write: 0, read:del, close: 0 */ 157275970Scy { EPOLLIN, EPOLL_CTL_DEL }, 158275970Scy /* old= 0, write: 0, read:del, close:add */ 159275970Scy { EPOLLRDHUP, EPOLL_CTL_ADD }, 160275970Scy /* old= 0, write: 0, read:del, close:del */ 161275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, 162275970Scy /* old= 0, write: 0, read:del, close:xxx */ 163275970Scy { 0, 255 }, 164275970Scy /* old= 0, write: 0, read:xxx, close: 0 */ 165275970Scy { 0, 255 }, 166275970Scy /* old= 0, write: 0, read:xxx, close:add */ 167275970Scy { 0, 255 }, 168275970Scy /* old= 0, write: 0, read:xxx, close:del */ 169275970Scy { 0, 255 }, 170275970Scy /* old= 0, write: 0, read:xxx, close:xxx */ 171275970Scy { 0, 255 }, 172275970Scy /* old= 0, write:add, read: 0, close: 0 */ 173275970Scy { EPOLLOUT, EPOLL_CTL_ADD }, 174275970Scy /* old= 0, write:add, read: 0, close:add */ 175275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, 176275970Scy /* old= 0, write:add, read: 0, close:del */ 177275970Scy { EPOLLOUT, EPOLL_CTL_ADD }, 178275970Scy /* old= 0, write:add, read: 0, close:xxx */ 179275970Scy { 0, 255 }, 180275970Scy /* old= 0, write:add, read:add, close: 0 */ 181275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD }, 182275970Scy /* old= 0, write:add, read:add, close:add */ 183275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, 184275970Scy /* old= 0, write:add, read:add, close:del */ 185275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_ADD }, 186275970Scy /* old= 0, write:add, read:add, close:xxx */ 187275970Scy { 0, 255 }, 188275970Scy /* old= 0, write:add, read:del, close: 0 */ 189275970Scy { EPOLLOUT, EPOLL_CTL_ADD }, 190275970Scy /* old= 0, write:add, read:del, close:add */ 191275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_ADD }, 192275970Scy /* old= 0, write:add, read:del, close:del */ 193275970Scy { EPOLLOUT, EPOLL_CTL_ADD }, 194275970Scy /* old= 0, write:add, read:del, close:xxx */ 195275970Scy { 0, 255 }, 196275970Scy /* old= 0, write:add, read:xxx, close: 0 */ 197275970Scy { 0, 255 }, 198275970Scy /* old= 0, write:add, read:xxx, close:add */ 199275970Scy { 0, 255 }, 200275970Scy /* old= 0, write:add, read:xxx, close:del */ 201275970Scy { 0, 255 }, 202275970Scy /* old= 0, write:add, read:xxx, close:xxx */ 203275970Scy { 0, 255 }, 204275970Scy /* old= 0, write:del, read: 0, close: 0 */ 205275970Scy { EPOLLOUT, EPOLL_CTL_DEL }, 206275970Scy /* old= 0, write:del, read: 0, close:add */ 207275970Scy { EPOLLRDHUP, EPOLL_CTL_ADD }, 208275970Scy /* old= 0, write:del, read: 0, close:del */ 209275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 210275970Scy /* old= 0, write:del, read: 0, close:xxx */ 211275970Scy { 0, 255 }, 212275970Scy /* old= 0, write:del, read:add, close: 0 */ 213275970Scy { EPOLLIN, EPOLL_CTL_ADD }, 214275970Scy /* old= 0, write:del, read:add, close:add */ 215275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_ADD }, 216275970Scy /* old= 0, write:del, read:add, close:del */ 217275970Scy { EPOLLIN, EPOLL_CTL_ADD }, 218275970Scy /* old= 0, write:del, read:add, close:xxx */ 219275970Scy { 0, 255 }, 220275970Scy /* old= 0, write:del, read:del, close: 0 */ 221275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, 222275970Scy /* old= 0, write:del, read:del, close:add */ 223275970Scy { EPOLLRDHUP, EPOLL_CTL_ADD }, 224275970Scy /* old= 0, write:del, read:del, close:del */ 225275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 226275970Scy /* old= 0, write:del, read:del, close:xxx */ 227275970Scy { 0, 255 }, 228275970Scy /* old= 0, write:del, read:xxx, close: 0 */ 229275970Scy { 0, 255 }, 230275970Scy /* old= 0, write:del, read:xxx, close:add */ 231275970Scy { 0, 255 }, 232275970Scy /* old= 0, write:del, read:xxx, close:del */ 233275970Scy { 0, 255 }, 234275970Scy /* old= 0, write:del, read:xxx, close:xxx */ 235275970Scy { 0, 255 }, 236275970Scy /* old= 0, write:xxx, read: 0, close: 0 */ 237275970Scy { 0, 255 }, 238275970Scy /* old= 0, write:xxx, read: 0, close:add */ 239275970Scy { 0, 255 }, 240275970Scy /* old= 0, write:xxx, read: 0, close:del */ 241275970Scy { 0, 255 }, 242275970Scy /* old= 0, write:xxx, read: 0, close:xxx */ 243275970Scy { 0, 255 }, 244275970Scy /* old= 0, write:xxx, read:add, close: 0 */ 245275970Scy { 0, 255 }, 246275970Scy /* old= 0, write:xxx, read:add, close:add */ 247275970Scy { 0, 255 }, 248275970Scy /* old= 0, write:xxx, read:add, close:del */ 249275970Scy { 0, 255 }, 250275970Scy /* old= 0, write:xxx, read:add, close:xxx */ 251275970Scy { 0, 255 }, 252275970Scy /* old= 0, write:xxx, read:del, close: 0 */ 253275970Scy { 0, 255 }, 254275970Scy /* old= 0, write:xxx, read:del, close:add */ 255275970Scy { 0, 255 }, 256275970Scy /* old= 0, write:xxx, read:del, close:del */ 257275970Scy { 0, 255 }, 258275970Scy /* old= 0, write:xxx, read:del, close:xxx */ 259275970Scy { 0, 255 }, 260275970Scy /* old= 0, write:xxx, read:xxx, close: 0 */ 261275970Scy { 0, 255 }, 262275970Scy /* old= 0, write:xxx, read:xxx, close:add */ 263275970Scy { 0, 255 }, 264275970Scy /* old= 0, write:xxx, read:xxx, close:del */ 265275970Scy { 0, 255 }, 266275970Scy /* old= 0, write:xxx, read:xxx, close:xxx */ 267275970Scy { 0, 255 }, 268275970Scy /* old= r, write: 0, read: 0, close: 0 */ 269275970Scy { 0, 0 }, 270275970Scy /* old= r, write: 0, read: 0, close:add */ 271275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 272275970Scy /* old= r, write: 0, read: 0, close:del */ 273275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 274275970Scy /* old= r, write: 0, read: 0, close:xxx */ 275275970Scy { 0, 255 }, 276275970Scy /* old= r, write: 0, read:add, close: 0 */ 277275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 278275970Scy /* old= r, write: 0, read:add, close:add */ 279275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 280275970Scy /* old= r, write: 0, read:add, close:del */ 281275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 282275970Scy /* old= r, write: 0, read:add, close:xxx */ 283275970Scy { 0, 255 }, 284275970Scy /* old= r, write: 0, read:del, close: 0 */ 285275970Scy { EPOLLIN, EPOLL_CTL_DEL }, 286275970Scy /* old= r, write: 0, read:del, close:add */ 287275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 288275970Scy /* old= r, write: 0, read:del, close:del */ 289275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, 290275970Scy /* old= r, write: 0, read:del, close:xxx */ 291275970Scy { 0, 255 }, 292275970Scy /* old= r, write: 0, read:xxx, close: 0 */ 293275970Scy { 0, 255 }, 294275970Scy /* old= r, write: 0, read:xxx, close:add */ 295275970Scy { 0, 255 }, 296275970Scy /* old= r, write: 0, read:xxx, close:del */ 297275970Scy { 0, 255 }, 298275970Scy /* old= r, write: 0, read:xxx, close:xxx */ 299275970Scy { 0, 255 }, 300275970Scy /* old= r, write:add, read: 0, close: 0 */ 301275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 302275970Scy /* old= r, write:add, read: 0, close:add */ 303275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 304275970Scy /* old= r, write:add, read: 0, close:del */ 305275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 306275970Scy /* old= r, write:add, read: 0, close:xxx */ 307275970Scy { 0, 255 }, 308275970Scy /* old= r, write:add, read:add, close: 0 */ 309275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 310275970Scy /* old= r, write:add, read:add, close:add */ 311275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 312275970Scy /* old= r, write:add, read:add, close:del */ 313275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 314275970Scy /* old= r, write:add, read:add, close:xxx */ 315275970Scy { 0, 255 }, 316275970Scy /* old= r, write:add, read:del, close: 0 */ 317275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 318275970Scy /* old= r, write:add, read:del, close:add */ 319275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 320275970Scy /* old= r, write:add, read:del, close:del */ 321275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 322275970Scy /* old= r, write:add, read:del, close:xxx */ 323275970Scy { 0, 255 }, 324275970Scy /* old= r, write:add, read:xxx, close: 0 */ 325275970Scy { 0, 255 }, 326275970Scy /* old= r, write:add, read:xxx, close:add */ 327275970Scy { 0, 255 }, 328275970Scy /* old= r, write:add, read:xxx, close:del */ 329275970Scy { 0, 255 }, 330275970Scy /* old= r, write:add, read:xxx, close:xxx */ 331275970Scy { 0, 255 }, 332275970Scy /* old= r, write:del, read: 0, close: 0 */ 333275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 334275970Scy /* old= r, write:del, read: 0, close:add */ 335275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 336275970Scy /* old= r, write:del, read: 0, close:del */ 337275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 338275970Scy /* old= r, write:del, read: 0, close:xxx */ 339275970Scy { 0, 255 }, 340275970Scy /* old= r, write:del, read:add, close: 0 */ 341275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 342275970Scy /* old= r, write:del, read:add, close:add */ 343275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 344275970Scy /* old= r, write:del, read:add, close:del */ 345275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 346275970Scy /* old= r, write:del, read:add, close:xxx */ 347275970Scy { 0, 255 }, 348275970Scy /* old= r, write:del, read:del, close: 0 */ 349275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, 350275970Scy /* old= r, write:del, read:del, close:add */ 351275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 352275970Scy /* old= r, write:del, read:del, close:del */ 353275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 354275970Scy /* old= r, write:del, read:del, close:xxx */ 355275970Scy { 0, 255 }, 356275970Scy /* old= r, write:del, read:xxx, close: 0 */ 357275970Scy { 0, 255 }, 358275970Scy /* old= r, write:del, read:xxx, close:add */ 359275970Scy { 0, 255 }, 360275970Scy /* old= r, write:del, read:xxx, close:del */ 361275970Scy { 0, 255 }, 362275970Scy /* old= r, write:del, read:xxx, close:xxx */ 363275970Scy { 0, 255 }, 364275970Scy /* old= r, write:xxx, read: 0, close: 0 */ 365275970Scy { 0, 255 }, 366275970Scy /* old= r, write:xxx, read: 0, close:add */ 367275970Scy { 0, 255 }, 368275970Scy /* old= r, write:xxx, read: 0, close:del */ 369275970Scy { 0, 255 }, 370275970Scy /* old= r, write:xxx, read: 0, close:xxx */ 371275970Scy { 0, 255 }, 372275970Scy /* old= r, write:xxx, read:add, close: 0 */ 373275970Scy { 0, 255 }, 374275970Scy /* old= r, write:xxx, read:add, close:add */ 375275970Scy { 0, 255 }, 376275970Scy /* old= r, write:xxx, read:add, close:del */ 377275970Scy { 0, 255 }, 378275970Scy /* old= r, write:xxx, read:add, close:xxx */ 379275970Scy { 0, 255 }, 380275970Scy /* old= r, write:xxx, read:del, close: 0 */ 381275970Scy { 0, 255 }, 382275970Scy /* old= r, write:xxx, read:del, close:add */ 383275970Scy { 0, 255 }, 384275970Scy /* old= r, write:xxx, read:del, close:del */ 385275970Scy { 0, 255 }, 386275970Scy /* old= r, write:xxx, read:del, close:xxx */ 387275970Scy { 0, 255 }, 388275970Scy /* old= r, write:xxx, read:xxx, close: 0 */ 389275970Scy { 0, 255 }, 390275970Scy /* old= r, write:xxx, read:xxx, close:add */ 391275970Scy { 0, 255 }, 392275970Scy /* old= r, write:xxx, read:xxx, close:del */ 393275970Scy { 0, 255 }, 394275970Scy /* old= r, write:xxx, read:xxx, close:xxx */ 395275970Scy { 0, 255 }, 396275970Scy /* old= w, write: 0, read: 0, close: 0 */ 397275970Scy { 0, 0 }, 398275970Scy /* old= w, write: 0, read: 0, close:add */ 399275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 400275970Scy /* old= w, write: 0, read: 0, close:del */ 401275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 402275970Scy /* old= w, write: 0, read: 0, close:xxx */ 403275970Scy { 0, 255 }, 404275970Scy /* old= w, write: 0, read:add, close: 0 */ 405275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 406275970Scy /* old= w, write: 0, read:add, close:add */ 407275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 408275970Scy /* old= w, write: 0, read:add, close:del */ 409275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 410275970Scy /* old= w, write: 0, read:add, close:xxx */ 411275970Scy { 0, 255 }, 412275970Scy /* old= w, write: 0, read:del, close: 0 */ 413275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 414275970Scy /* old= w, write: 0, read:del, close:add */ 415275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 416275970Scy /* old= w, write: 0, read:del, close:del */ 417275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 418275970Scy /* old= w, write: 0, read:del, close:xxx */ 419275970Scy { 0, 255 }, 420275970Scy /* old= w, write: 0, read:xxx, close: 0 */ 421275970Scy { 0, 255 }, 422275970Scy /* old= w, write: 0, read:xxx, close:add */ 423275970Scy { 0, 255 }, 424275970Scy /* old= w, write: 0, read:xxx, close:del */ 425275970Scy { 0, 255 }, 426275970Scy /* old= w, write: 0, read:xxx, close:xxx */ 427275970Scy { 0, 255 }, 428275970Scy /* old= w, write:add, read: 0, close: 0 */ 429275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 430275970Scy /* old= w, write:add, read: 0, close:add */ 431275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 432275970Scy /* old= w, write:add, read: 0, close:del */ 433275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 434275970Scy /* old= w, write:add, read: 0, close:xxx */ 435275970Scy { 0, 255 }, 436275970Scy /* old= w, write:add, read:add, close: 0 */ 437275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 438275970Scy /* old= w, write:add, read:add, close:add */ 439275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 440275970Scy /* old= w, write:add, read:add, close:del */ 441275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 442275970Scy /* old= w, write:add, read:add, close:xxx */ 443275970Scy { 0, 255 }, 444275970Scy /* old= w, write:add, read:del, close: 0 */ 445275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 446275970Scy /* old= w, write:add, read:del, close:add */ 447275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 448275970Scy /* old= w, write:add, read:del, close:del */ 449275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 450275970Scy /* old= w, write:add, read:del, close:xxx */ 451275970Scy { 0, 255 }, 452275970Scy /* old= w, write:add, read:xxx, close: 0 */ 453275970Scy { 0, 255 }, 454275970Scy /* old= w, write:add, read:xxx, close:add */ 455275970Scy { 0, 255 }, 456275970Scy /* old= w, write:add, read:xxx, close:del */ 457275970Scy { 0, 255 }, 458275970Scy /* old= w, write:add, read:xxx, close:xxx */ 459275970Scy { 0, 255 }, 460275970Scy /* old= w, write:del, read: 0, close: 0 */ 461275970Scy { EPOLLOUT, EPOLL_CTL_DEL }, 462275970Scy /* old= w, write:del, read: 0, close:add */ 463275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 464275970Scy /* old= w, write:del, read: 0, close:del */ 465275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 466275970Scy /* old= w, write:del, read: 0, close:xxx */ 467275970Scy { 0, 255 }, 468275970Scy /* old= w, write:del, read:add, close: 0 */ 469275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 470275970Scy /* old= w, write:del, read:add, close:add */ 471275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 472275970Scy /* old= w, write:del, read:add, close:del */ 473275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 474275970Scy /* old= w, write:del, read:add, close:xxx */ 475275970Scy { 0, 255 }, 476275970Scy /* old= w, write:del, read:del, close: 0 */ 477275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, 478275970Scy /* old= w, write:del, read:del, close:add */ 479275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 480275970Scy /* old= w, write:del, read:del, close:del */ 481275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 482275970Scy /* old= w, write:del, read:del, close:xxx */ 483275970Scy { 0, 255 }, 484275970Scy /* old= w, write:del, read:xxx, close: 0 */ 485275970Scy { 0, 255 }, 486275970Scy /* old= w, write:del, read:xxx, close:add */ 487275970Scy { 0, 255 }, 488275970Scy /* old= w, write:del, read:xxx, close:del */ 489275970Scy { 0, 255 }, 490275970Scy /* old= w, write:del, read:xxx, close:xxx */ 491275970Scy { 0, 255 }, 492275970Scy /* old= w, write:xxx, read: 0, close: 0 */ 493275970Scy { 0, 255 }, 494275970Scy /* old= w, write:xxx, read: 0, close:add */ 495275970Scy { 0, 255 }, 496275970Scy /* old= w, write:xxx, read: 0, close:del */ 497275970Scy { 0, 255 }, 498275970Scy /* old= w, write:xxx, read: 0, close:xxx */ 499275970Scy { 0, 255 }, 500275970Scy /* old= w, write:xxx, read:add, close: 0 */ 501275970Scy { 0, 255 }, 502275970Scy /* old= w, write:xxx, read:add, close:add */ 503275970Scy { 0, 255 }, 504275970Scy /* old= w, write:xxx, read:add, close:del */ 505275970Scy { 0, 255 }, 506275970Scy /* old= w, write:xxx, read:add, close:xxx */ 507275970Scy { 0, 255 }, 508275970Scy /* old= w, write:xxx, read:del, close: 0 */ 509275970Scy { 0, 255 }, 510275970Scy /* old= w, write:xxx, read:del, close:add */ 511275970Scy { 0, 255 }, 512275970Scy /* old= w, write:xxx, read:del, close:del */ 513275970Scy { 0, 255 }, 514275970Scy /* old= w, write:xxx, read:del, close:xxx */ 515275970Scy { 0, 255 }, 516275970Scy /* old= w, write:xxx, read:xxx, close: 0 */ 517275970Scy { 0, 255 }, 518275970Scy /* old= w, write:xxx, read:xxx, close:add */ 519275970Scy { 0, 255 }, 520275970Scy /* old= w, write:xxx, read:xxx, close:del */ 521275970Scy { 0, 255 }, 522275970Scy /* old= w, write:xxx, read:xxx, close:xxx */ 523275970Scy { 0, 255 }, 524275970Scy /* old= rw, write: 0, read: 0, close: 0 */ 525275970Scy { 0, 0 }, 526275970Scy /* old= rw, write: 0, read: 0, close:add */ 527275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 528275970Scy /* old= rw, write: 0, read: 0, close:del */ 529275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 530275970Scy /* old= rw, write: 0, read: 0, close:xxx */ 531275970Scy { 0, 255 }, 532275970Scy /* old= rw, write: 0, read:add, close: 0 */ 533275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 534275970Scy /* old= rw, write: 0, read:add, close:add */ 535275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 536275970Scy /* old= rw, write: 0, read:add, close:del */ 537275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 538275970Scy /* old= rw, write: 0, read:add, close:xxx */ 539275970Scy { 0, 255 }, 540275970Scy /* old= rw, write: 0, read:del, close: 0 */ 541275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 542275970Scy /* old= rw, write: 0, read:del, close:add */ 543275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 544275970Scy /* old= rw, write: 0, read:del, close:del */ 545275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 546275970Scy /* old= rw, write: 0, read:del, close:xxx */ 547275970Scy { 0, 255 }, 548275970Scy /* old= rw, write: 0, read:xxx, close: 0 */ 549275970Scy { 0, 255 }, 550275970Scy /* old= rw, write: 0, read:xxx, close:add */ 551275970Scy { 0, 255 }, 552275970Scy /* old= rw, write: 0, read:xxx, close:del */ 553275970Scy { 0, 255 }, 554275970Scy /* old= rw, write: 0, read:xxx, close:xxx */ 555275970Scy { 0, 255 }, 556275970Scy /* old= rw, write:add, read: 0, close: 0 */ 557275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 558275970Scy /* old= rw, write:add, read: 0, close:add */ 559275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 560275970Scy /* old= rw, write:add, read: 0, close:del */ 561275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 562275970Scy /* old= rw, write:add, read: 0, close:xxx */ 563275970Scy { 0, 255 }, 564275970Scy /* old= rw, write:add, read:add, close: 0 */ 565275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 566275970Scy /* old= rw, write:add, read:add, close:add */ 567275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 568275970Scy /* old= rw, write:add, read:add, close:del */ 569275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 570275970Scy /* old= rw, write:add, read:add, close:xxx */ 571275970Scy { 0, 255 }, 572275970Scy /* old= rw, write:add, read:del, close: 0 */ 573275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 574275970Scy /* old= rw, write:add, read:del, close:add */ 575275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 576275970Scy /* old= rw, write:add, read:del, close:del */ 577275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 578275970Scy /* old= rw, write:add, read:del, close:xxx */ 579275970Scy { 0, 255 }, 580275970Scy /* old= rw, write:add, read:xxx, close: 0 */ 581275970Scy { 0, 255 }, 582275970Scy /* old= rw, write:add, read:xxx, close:add */ 583275970Scy { 0, 255 }, 584275970Scy /* old= rw, write:add, read:xxx, close:del */ 585275970Scy { 0, 255 }, 586275970Scy /* old= rw, write:add, read:xxx, close:xxx */ 587275970Scy { 0, 255 }, 588275970Scy /* old= rw, write:del, read: 0, close: 0 */ 589275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 590275970Scy /* old= rw, write:del, read: 0, close:add */ 591275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 592275970Scy /* old= rw, write:del, read: 0, close:del */ 593275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 594275970Scy /* old= rw, write:del, read: 0, close:xxx */ 595275970Scy { 0, 255 }, 596275970Scy /* old= rw, write:del, read:add, close: 0 */ 597275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 598275970Scy /* old= rw, write:del, read:add, close:add */ 599275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 600275970Scy /* old= rw, write:del, read:add, close:del */ 601275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 602275970Scy /* old= rw, write:del, read:add, close:xxx */ 603275970Scy { 0, 255 }, 604275970Scy /* old= rw, write:del, read:del, close: 0 */ 605275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_DEL }, 606275970Scy /* old= rw, write:del, read:del, close:add */ 607275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 608275970Scy /* old= rw, write:del, read:del, close:del */ 609275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 610275970Scy /* old= rw, write:del, read:del, close:xxx */ 611275970Scy { 0, 255 }, 612275970Scy /* old= rw, write:del, read:xxx, close: 0 */ 613275970Scy { 0, 255 }, 614275970Scy /* old= rw, write:del, read:xxx, close:add */ 615275970Scy { 0, 255 }, 616275970Scy /* old= rw, write:del, read:xxx, close:del */ 617275970Scy { 0, 255 }, 618275970Scy /* old= rw, write:del, read:xxx, close:xxx */ 619275970Scy { 0, 255 }, 620275970Scy /* old= rw, write:xxx, read: 0, close: 0 */ 621275970Scy { 0, 255 }, 622275970Scy /* old= rw, write:xxx, read: 0, close:add */ 623275970Scy { 0, 255 }, 624275970Scy /* old= rw, write:xxx, read: 0, close:del */ 625275970Scy { 0, 255 }, 626275970Scy /* old= rw, write:xxx, read: 0, close:xxx */ 627275970Scy { 0, 255 }, 628275970Scy /* old= rw, write:xxx, read:add, close: 0 */ 629275970Scy { 0, 255 }, 630275970Scy /* old= rw, write:xxx, read:add, close:add */ 631275970Scy { 0, 255 }, 632275970Scy /* old= rw, write:xxx, read:add, close:del */ 633275970Scy { 0, 255 }, 634275970Scy /* old= rw, write:xxx, read:add, close:xxx */ 635275970Scy { 0, 255 }, 636275970Scy /* old= rw, write:xxx, read:del, close: 0 */ 637275970Scy { 0, 255 }, 638275970Scy /* old= rw, write:xxx, read:del, close:add */ 639275970Scy { 0, 255 }, 640275970Scy /* old= rw, write:xxx, read:del, close:del */ 641275970Scy { 0, 255 }, 642275970Scy /* old= rw, write:xxx, read:del, close:xxx */ 643275970Scy { 0, 255 }, 644275970Scy /* old= rw, write:xxx, read:xxx, close: 0 */ 645275970Scy { 0, 255 }, 646275970Scy /* old= rw, write:xxx, read:xxx, close:add */ 647275970Scy { 0, 255 }, 648275970Scy /* old= rw, write:xxx, read:xxx, close:del */ 649275970Scy { 0, 255 }, 650275970Scy /* old= rw, write:xxx, read:xxx, close:xxx */ 651275970Scy { 0, 255 }, 652275970Scy /* old= c, write: 0, read: 0, close: 0 */ 653275970Scy { 0, 0 }, 654275970Scy /* old= c, write: 0, read: 0, close:add */ 655275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 656275970Scy /* old= c, write: 0, read: 0, close:del */ 657275970Scy { EPOLLRDHUP, EPOLL_CTL_DEL }, 658275970Scy /* old= c, write: 0, read: 0, close:xxx */ 659275970Scy { 0, 255 }, 660275970Scy /* old= c, write: 0, read:add, close: 0 */ 661275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 662275970Scy /* old= c, write: 0, read:add, close:add */ 663275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 664275970Scy /* old= c, write: 0, read:add, close:del */ 665275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 666275970Scy /* old= c, write: 0, read:add, close:xxx */ 667275970Scy { 0, 255 }, 668275970Scy /* old= c, write: 0, read:del, close: 0 */ 669275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 670275970Scy /* old= c, write: 0, read:del, close:add */ 671275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 672275970Scy /* old= c, write: 0, read:del, close:del */ 673275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, 674275970Scy /* old= c, write: 0, read:del, close:xxx */ 675275970Scy { 0, 255 }, 676275970Scy /* old= c, write: 0, read:xxx, close: 0 */ 677275970Scy { 0, 255 }, 678275970Scy /* old= c, write: 0, read:xxx, close:add */ 679275970Scy { 0, 255 }, 680275970Scy /* old= c, write: 0, read:xxx, close:del */ 681275970Scy { 0, 255 }, 682275970Scy /* old= c, write: 0, read:xxx, close:xxx */ 683275970Scy { 0, 255 }, 684275970Scy /* old= c, write:add, read: 0, close: 0 */ 685275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 686275970Scy /* old= c, write:add, read: 0, close:add */ 687275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 688275970Scy /* old= c, write:add, read: 0, close:del */ 689275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 690275970Scy /* old= c, write:add, read: 0, close:xxx */ 691275970Scy { 0, 255 }, 692275970Scy /* old= c, write:add, read:add, close: 0 */ 693275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 694275970Scy /* old= c, write:add, read:add, close:add */ 695275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 696275970Scy /* old= c, write:add, read:add, close:del */ 697275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 698275970Scy /* old= c, write:add, read:add, close:xxx */ 699275970Scy { 0, 255 }, 700275970Scy /* old= c, write:add, read:del, close: 0 */ 701275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 702275970Scy /* old= c, write:add, read:del, close:add */ 703275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 704275970Scy /* old= c, write:add, read:del, close:del */ 705275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 706275970Scy /* old= c, write:add, read:del, close:xxx */ 707275970Scy { 0, 255 }, 708275970Scy /* old= c, write:add, read:xxx, close: 0 */ 709275970Scy { 0, 255 }, 710275970Scy /* old= c, write:add, read:xxx, close:add */ 711275970Scy { 0, 255 }, 712275970Scy /* old= c, write:add, read:xxx, close:del */ 713275970Scy { 0, 255 }, 714275970Scy /* old= c, write:add, read:xxx, close:xxx */ 715275970Scy { 0, 255 }, 716275970Scy /* old= c, write:del, read: 0, close: 0 */ 717275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 718275970Scy /* old= c, write:del, read: 0, close:add */ 719275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 720275970Scy /* old= c, write:del, read: 0, close:del */ 721275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 722275970Scy /* old= c, write:del, read: 0, close:xxx */ 723275970Scy { 0, 255 }, 724275970Scy /* old= c, write:del, read:add, close: 0 */ 725275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 726275970Scy /* old= c, write:del, read:add, close:add */ 727275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 728275970Scy /* old= c, write:del, read:add, close:del */ 729275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 730275970Scy /* old= c, write:del, read:add, close:xxx */ 731275970Scy { 0, 255 }, 732275970Scy /* old= c, write:del, read:del, close: 0 */ 733275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 734275970Scy /* old= c, write:del, read:del, close:add */ 735275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 736275970Scy /* old= c, write:del, read:del, close:del */ 737275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 738275970Scy /* old= c, write:del, read:del, close:xxx */ 739275970Scy { 0, 255 }, 740275970Scy /* old= c, write:del, read:xxx, close: 0 */ 741275970Scy { 0, 255 }, 742275970Scy /* old= c, write:del, read:xxx, close:add */ 743275970Scy { 0, 255 }, 744275970Scy /* old= c, write:del, read:xxx, close:del */ 745275970Scy { 0, 255 }, 746275970Scy /* old= c, write:del, read:xxx, close:xxx */ 747275970Scy { 0, 255 }, 748275970Scy /* old= c, write:xxx, read: 0, close: 0 */ 749275970Scy { 0, 255 }, 750275970Scy /* old= c, write:xxx, read: 0, close:add */ 751275970Scy { 0, 255 }, 752275970Scy /* old= c, write:xxx, read: 0, close:del */ 753275970Scy { 0, 255 }, 754275970Scy /* old= c, write:xxx, read: 0, close:xxx */ 755275970Scy { 0, 255 }, 756275970Scy /* old= c, write:xxx, read:add, close: 0 */ 757275970Scy { 0, 255 }, 758275970Scy /* old= c, write:xxx, read:add, close:add */ 759275970Scy { 0, 255 }, 760275970Scy /* old= c, write:xxx, read:add, close:del */ 761275970Scy { 0, 255 }, 762275970Scy /* old= c, write:xxx, read:add, close:xxx */ 763275970Scy { 0, 255 }, 764275970Scy /* old= c, write:xxx, read:del, close: 0 */ 765275970Scy { 0, 255 }, 766275970Scy /* old= c, write:xxx, read:del, close:add */ 767275970Scy { 0, 255 }, 768275970Scy /* old= c, write:xxx, read:del, close:del */ 769275970Scy { 0, 255 }, 770275970Scy /* old= c, write:xxx, read:del, close:xxx */ 771275970Scy { 0, 255 }, 772275970Scy /* old= c, write:xxx, read:xxx, close: 0 */ 773275970Scy { 0, 255 }, 774275970Scy /* old= c, write:xxx, read:xxx, close:add */ 775275970Scy { 0, 255 }, 776275970Scy /* old= c, write:xxx, read:xxx, close:del */ 777275970Scy { 0, 255 }, 778275970Scy /* old= c, write:xxx, read:xxx, close:xxx */ 779275970Scy { 0, 255 }, 780275970Scy /* old= cr, write: 0, read: 0, close: 0 */ 781275970Scy { 0, 0 }, 782275970Scy /* old= cr, write: 0, read: 0, close:add */ 783275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 784275970Scy /* old= cr, write: 0, read: 0, close:del */ 785275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 786275970Scy /* old= cr, write: 0, read: 0, close:xxx */ 787275970Scy { 0, 255 }, 788275970Scy /* old= cr, write: 0, read:add, close: 0 */ 789275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 790275970Scy /* old= cr, write: 0, read:add, close:add */ 791275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 792275970Scy /* old= cr, write: 0, read:add, close:del */ 793275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 794275970Scy /* old= cr, write: 0, read:add, close:xxx */ 795275970Scy { 0, 255 }, 796275970Scy /* old= cr, write: 0, read:del, close: 0 */ 797275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 798275970Scy /* old= cr, write: 0, read:del, close:add */ 799275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 800275970Scy /* old= cr, write: 0, read:del, close:del */ 801275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_DEL }, 802275970Scy /* old= cr, write: 0, read:del, close:xxx */ 803275970Scy { 0, 255 }, 804275970Scy /* old= cr, write: 0, read:xxx, close: 0 */ 805275970Scy { 0, 255 }, 806275970Scy /* old= cr, write: 0, read:xxx, close:add */ 807275970Scy { 0, 255 }, 808275970Scy /* old= cr, write: 0, read:xxx, close:del */ 809275970Scy { 0, 255 }, 810275970Scy /* old= cr, write: 0, read:xxx, close:xxx */ 811275970Scy { 0, 255 }, 812275970Scy /* old= cr, write:add, read: 0, close: 0 */ 813275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 814275970Scy /* old= cr, write:add, read: 0, close:add */ 815275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 816275970Scy /* old= cr, write:add, read: 0, close:del */ 817275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 818275970Scy /* old= cr, write:add, read: 0, close:xxx */ 819275970Scy { 0, 255 }, 820275970Scy /* old= cr, write:add, read:add, close: 0 */ 821275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 822275970Scy /* old= cr, write:add, read:add, close:add */ 823275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 824275970Scy /* old= cr, write:add, read:add, close:del */ 825275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 826275970Scy /* old= cr, write:add, read:add, close:xxx */ 827275970Scy { 0, 255 }, 828275970Scy /* old= cr, write:add, read:del, close: 0 */ 829275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 830275970Scy /* old= cr, write:add, read:del, close:add */ 831275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 832275970Scy /* old= cr, write:add, read:del, close:del */ 833275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 834275970Scy /* old= cr, write:add, read:del, close:xxx */ 835275970Scy { 0, 255 }, 836275970Scy /* old= cr, write:add, read:xxx, close: 0 */ 837275970Scy { 0, 255 }, 838275970Scy /* old= cr, write:add, read:xxx, close:add */ 839275970Scy { 0, 255 }, 840275970Scy /* old= cr, write:add, read:xxx, close:del */ 841275970Scy { 0, 255 }, 842275970Scy /* old= cr, write:add, read:xxx, close:xxx */ 843275970Scy { 0, 255 }, 844275970Scy /* old= cr, write:del, read: 0, close: 0 */ 845275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 846275970Scy /* old= cr, write:del, read: 0, close:add */ 847275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 848275970Scy /* old= cr, write:del, read: 0, close:del */ 849275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 850275970Scy /* old= cr, write:del, read: 0, close:xxx */ 851275970Scy { 0, 255 }, 852275970Scy /* old= cr, write:del, read:add, close: 0 */ 853275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 854275970Scy /* old= cr, write:del, read:add, close:add */ 855275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 856275970Scy /* old= cr, write:del, read:add, close:del */ 857275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 858275970Scy /* old= cr, write:del, read:add, close:xxx */ 859275970Scy { 0, 255 }, 860275970Scy /* old= cr, write:del, read:del, close: 0 */ 861275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 862275970Scy /* old= cr, write:del, read:del, close:add */ 863275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 864275970Scy /* old= cr, write:del, read:del, close:del */ 865275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 866275970Scy /* old= cr, write:del, read:del, close:xxx */ 867275970Scy { 0, 255 }, 868275970Scy /* old= cr, write:del, read:xxx, close: 0 */ 869275970Scy { 0, 255 }, 870275970Scy /* old= cr, write:del, read:xxx, close:add */ 871275970Scy { 0, 255 }, 872275970Scy /* old= cr, write:del, read:xxx, close:del */ 873275970Scy { 0, 255 }, 874275970Scy /* old= cr, write:del, read:xxx, close:xxx */ 875275970Scy { 0, 255 }, 876275970Scy /* old= cr, write:xxx, read: 0, close: 0 */ 877275970Scy { 0, 255 }, 878275970Scy /* old= cr, write:xxx, read: 0, close:add */ 879275970Scy { 0, 255 }, 880275970Scy /* old= cr, write:xxx, read: 0, close:del */ 881275970Scy { 0, 255 }, 882275970Scy /* old= cr, write:xxx, read: 0, close:xxx */ 883275970Scy { 0, 255 }, 884275970Scy /* old= cr, write:xxx, read:add, close: 0 */ 885275970Scy { 0, 255 }, 886275970Scy /* old= cr, write:xxx, read:add, close:add */ 887275970Scy { 0, 255 }, 888275970Scy /* old= cr, write:xxx, read:add, close:del */ 889275970Scy { 0, 255 }, 890275970Scy /* old= cr, write:xxx, read:add, close:xxx */ 891275970Scy { 0, 255 }, 892275970Scy /* old= cr, write:xxx, read:del, close: 0 */ 893275970Scy { 0, 255 }, 894275970Scy /* old= cr, write:xxx, read:del, close:add */ 895275970Scy { 0, 255 }, 896275970Scy /* old= cr, write:xxx, read:del, close:del */ 897275970Scy { 0, 255 }, 898275970Scy /* old= cr, write:xxx, read:del, close:xxx */ 899275970Scy { 0, 255 }, 900275970Scy /* old= cr, write:xxx, read:xxx, close: 0 */ 901275970Scy { 0, 255 }, 902275970Scy /* old= cr, write:xxx, read:xxx, close:add */ 903275970Scy { 0, 255 }, 904275970Scy /* old= cr, write:xxx, read:xxx, close:del */ 905275970Scy { 0, 255 }, 906275970Scy /* old= cr, write:xxx, read:xxx, close:xxx */ 907275970Scy { 0, 255 }, 908275970Scy /* old= cw, write: 0, read: 0, close: 0 */ 909275970Scy { 0, 0 }, 910275970Scy /* old= cw, write: 0, read: 0, close:add */ 911275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 912275970Scy /* old= cw, write: 0, read: 0, close:del */ 913275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 914275970Scy /* old= cw, write: 0, read: 0, close:xxx */ 915275970Scy { 0, 255 }, 916275970Scy /* old= cw, write: 0, read:add, close: 0 */ 917275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 918275970Scy /* old= cw, write: 0, read:add, close:add */ 919275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 920275970Scy /* old= cw, write: 0, read:add, close:del */ 921275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 922275970Scy /* old= cw, write: 0, read:add, close:xxx */ 923275970Scy { 0, 255 }, 924275970Scy /* old= cw, write: 0, read:del, close: 0 */ 925275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 926275970Scy /* old= cw, write: 0, read:del, close:add */ 927275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 928275970Scy /* old= cw, write: 0, read:del, close:del */ 929275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 930275970Scy /* old= cw, write: 0, read:del, close:xxx */ 931275970Scy { 0, 255 }, 932275970Scy /* old= cw, write: 0, read:xxx, close: 0 */ 933275970Scy { 0, 255 }, 934275970Scy /* old= cw, write: 0, read:xxx, close:add */ 935275970Scy { 0, 255 }, 936275970Scy /* old= cw, write: 0, read:xxx, close:del */ 937275970Scy { 0, 255 }, 938275970Scy /* old= cw, write: 0, read:xxx, close:xxx */ 939275970Scy { 0, 255 }, 940275970Scy /* old= cw, write:add, read: 0, close: 0 */ 941275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 942275970Scy /* old= cw, write:add, read: 0, close:add */ 943275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 944275970Scy /* old= cw, write:add, read: 0, close:del */ 945275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 946275970Scy /* old= cw, write:add, read: 0, close:xxx */ 947275970Scy { 0, 255 }, 948275970Scy /* old= cw, write:add, read:add, close: 0 */ 949275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 950275970Scy /* old= cw, write:add, read:add, close:add */ 951275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 952275970Scy /* old= cw, write:add, read:add, close:del */ 953275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 954275970Scy /* old= cw, write:add, read:add, close:xxx */ 955275970Scy { 0, 255 }, 956275970Scy /* old= cw, write:add, read:del, close: 0 */ 957275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 958275970Scy /* old= cw, write:add, read:del, close:add */ 959275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 960275970Scy /* old= cw, write:add, read:del, close:del */ 961275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 962275970Scy /* old= cw, write:add, read:del, close:xxx */ 963275970Scy { 0, 255 }, 964275970Scy /* old= cw, write:add, read:xxx, close: 0 */ 965275970Scy { 0, 255 }, 966275970Scy /* old= cw, write:add, read:xxx, close:add */ 967275970Scy { 0, 255 }, 968275970Scy /* old= cw, write:add, read:xxx, close:del */ 969275970Scy { 0, 255 }, 970275970Scy /* old= cw, write:add, read:xxx, close:xxx */ 971275970Scy { 0, 255 }, 972275970Scy /* old= cw, write:del, read: 0, close: 0 */ 973275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 974275970Scy /* old= cw, write:del, read: 0, close:add */ 975275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 976275970Scy /* old= cw, write:del, read: 0, close:del */ 977275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 978275970Scy /* old= cw, write:del, read: 0, close:xxx */ 979275970Scy { 0, 255 }, 980275970Scy /* old= cw, write:del, read:add, close: 0 */ 981275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 982275970Scy /* old= cw, write:del, read:add, close:add */ 983275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 984275970Scy /* old= cw, write:del, read:add, close:del */ 985275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 986275970Scy /* old= cw, write:del, read:add, close:xxx */ 987275970Scy { 0, 255 }, 988275970Scy /* old= cw, write:del, read:del, close: 0 */ 989275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 990275970Scy /* old= cw, write:del, read:del, close:add */ 991275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 992275970Scy /* old= cw, write:del, read:del, close:del */ 993275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 994275970Scy /* old= cw, write:del, read:del, close:xxx */ 995275970Scy { 0, 255 }, 996275970Scy /* old= cw, write:del, read:xxx, close: 0 */ 997275970Scy { 0, 255 }, 998275970Scy /* old= cw, write:del, read:xxx, close:add */ 999275970Scy { 0, 255 }, 1000275970Scy /* old= cw, write:del, read:xxx, close:del */ 1001275970Scy { 0, 255 }, 1002275970Scy /* old= cw, write:del, read:xxx, close:xxx */ 1003275970Scy { 0, 255 }, 1004275970Scy /* old= cw, write:xxx, read: 0, close: 0 */ 1005275970Scy { 0, 255 }, 1006275970Scy /* old= cw, write:xxx, read: 0, close:add */ 1007275970Scy { 0, 255 }, 1008275970Scy /* old= cw, write:xxx, read: 0, close:del */ 1009275970Scy { 0, 255 }, 1010275970Scy /* old= cw, write:xxx, read: 0, close:xxx */ 1011275970Scy { 0, 255 }, 1012275970Scy /* old= cw, write:xxx, read:add, close: 0 */ 1013275970Scy { 0, 255 }, 1014275970Scy /* old= cw, write:xxx, read:add, close:add */ 1015275970Scy { 0, 255 }, 1016275970Scy /* old= cw, write:xxx, read:add, close:del */ 1017275970Scy { 0, 255 }, 1018275970Scy /* old= cw, write:xxx, read:add, close:xxx */ 1019275970Scy { 0, 255 }, 1020275970Scy /* old= cw, write:xxx, read:del, close: 0 */ 1021275970Scy { 0, 255 }, 1022275970Scy /* old= cw, write:xxx, read:del, close:add */ 1023275970Scy { 0, 255 }, 1024275970Scy /* old= cw, write:xxx, read:del, close:del */ 1025275970Scy { 0, 255 }, 1026275970Scy /* old= cw, write:xxx, read:del, close:xxx */ 1027275970Scy { 0, 255 }, 1028275970Scy /* old= cw, write:xxx, read:xxx, close: 0 */ 1029275970Scy { 0, 255 }, 1030275970Scy /* old= cw, write:xxx, read:xxx, close:add */ 1031275970Scy { 0, 255 }, 1032275970Scy /* old= cw, write:xxx, read:xxx, close:del */ 1033275970Scy { 0, 255 }, 1034275970Scy /* old= cw, write:xxx, read:xxx, close:xxx */ 1035275970Scy { 0, 255 }, 1036275970Scy /* old=crw, write: 0, read: 0, close: 0 */ 1037275970Scy { 0, 0 }, 1038275970Scy /* old=crw, write: 0, read: 0, close:add */ 1039275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1040275970Scy /* old=crw, write: 0, read: 0, close:del */ 1041275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 1042275970Scy /* old=crw, write: 0, read: 0, close:xxx */ 1043275970Scy { 0, 255 }, 1044275970Scy /* old=crw, write: 0, read:add, close: 0 */ 1045275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1046275970Scy /* old=crw, write: 0, read:add, close:add */ 1047275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1048275970Scy /* old=crw, write: 0, read:add, close:del */ 1049275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 1050275970Scy /* old=crw, write: 0, read:add, close:xxx */ 1051275970Scy { 0, 255 }, 1052275970Scy /* old=crw, write: 0, read:del, close: 0 */ 1053275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1054275970Scy /* old=crw, write: 0, read:del, close:add */ 1055275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1056275970Scy /* old=crw, write: 0, read:del, close:del */ 1057275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 1058275970Scy /* old=crw, write: 0, read:del, close:xxx */ 1059275970Scy { 0, 255 }, 1060275970Scy /* old=crw, write: 0, read:xxx, close: 0 */ 1061275970Scy { 0, 255 }, 1062275970Scy /* old=crw, write: 0, read:xxx, close:add */ 1063275970Scy { 0, 255 }, 1064275970Scy /* old=crw, write: 0, read:xxx, close:del */ 1065275970Scy { 0, 255 }, 1066275970Scy /* old=crw, write: 0, read:xxx, close:xxx */ 1067275970Scy { 0, 255 }, 1068275970Scy /* old=crw, write:add, read: 0, close: 0 */ 1069275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1070275970Scy /* old=crw, write:add, read: 0, close:add */ 1071275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1072275970Scy /* old=crw, write:add, read: 0, close:del */ 1073275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 1074275970Scy /* old=crw, write:add, read: 0, close:xxx */ 1075275970Scy { 0, 255 }, 1076275970Scy /* old=crw, write:add, read:add, close: 0 */ 1077275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1078275970Scy /* old=crw, write:add, read:add, close:add */ 1079275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1080275970Scy /* old=crw, write:add, read:add, close:del */ 1081275970Scy { EPOLLIN|EPOLLOUT, EPOLL_CTL_MOD }, 1082275970Scy /* old=crw, write:add, read:add, close:xxx */ 1083275970Scy { 0, 255 }, 1084275970Scy /* old=crw, write:add, read:del, close: 0 */ 1085275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1086275970Scy /* old=crw, write:add, read:del, close:add */ 1087275970Scy { EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_MOD }, 1088275970Scy /* old=crw, write:add, read:del, close:del */ 1089275970Scy { EPOLLOUT, EPOLL_CTL_MOD }, 1090275970Scy /* old=crw, write:add, read:del, close:xxx */ 1091275970Scy { 0, 255 }, 1092275970Scy /* old=crw, write:add, read:xxx, close: 0 */ 1093275970Scy { 0, 255 }, 1094275970Scy /* old=crw, write:add, read:xxx, close:add */ 1095275970Scy { 0, 255 }, 1096275970Scy /* old=crw, write:add, read:xxx, close:del */ 1097275970Scy { 0, 255 }, 1098275970Scy /* old=crw, write:add, read:xxx, close:xxx */ 1099275970Scy { 0, 255 }, 1100275970Scy /* old=crw, write:del, read: 0, close: 0 */ 1101275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 1102275970Scy /* old=crw, write:del, read: 0, close:add */ 1103275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 1104275970Scy /* old=crw, write:del, read: 0, close:del */ 1105275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 1106275970Scy /* old=crw, write:del, read: 0, close:xxx */ 1107275970Scy { 0, 255 }, 1108275970Scy /* old=crw, write:del, read:add, close: 0 */ 1109275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 1110275970Scy /* old=crw, write:del, read:add, close:add */ 1111275970Scy { EPOLLIN|EPOLLRDHUP, EPOLL_CTL_MOD }, 1112275970Scy /* old=crw, write:del, read:add, close:del */ 1113275970Scy { EPOLLIN, EPOLL_CTL_MOD }, 1114275970Scy /* old=crw, write:del, read:add, close:xxx */ 1115275970Scy { 0, 255 }, 1116275970Scy /* old=crw, write:del, read:del, close: 0 */ 1117275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 1118275970Scy /* old=crw, write:del, read:del, close:add */ 1119275970Scy { EPOLLRDHUP, EPOLL_CTL_MOD }, 1120275970Scy /* old=crw, write:del, read:del, close:del */ 1121275970Scy { EPOLLIN|EPOLLOUT|EPOLLRDHUP, EPOLL_CTL_DEL }, 1122275970Scy /* old=crw, write:del, read:del, close:xxx */ 1123275970Scy { 0, 255 }, 1124275970Scy /* old=crw, write:del, read:xxx, close: 0 */ 1125275970Scy { 0, 255 }, 1126275970Scy /* old=crw, write:del, read:xxx, close:add */ 1127275970Scy { 0, 255 }, 1128275970Scy /* old=crw, write:del, read:xxx, close:del */ 1129275970Scy { 0, 255 }, 1130275970Scy /* old=crw, write:del, read:xxx, close:xxx */ 1131275970Scy { 0, 255 }, 1132275970Scy /* old=crw, write:xxx, read: 0, close: 0 */ 1133275970Scy { 0, 255 }, 1134275970Scy /* old=crw, write:xxx, read: 0, close:add */ 1135275970Scy { 0, 255 }, 1136275970Scy /* old=crw, write:xxx, read: 0, close:del */ 1137275970Scy { 0, 255 }, 1138275970Scy /* old=crw, write:xxx, read: 0, close:xxx */ 1139275970Scy { 0, 255 }, 1140275970Scy /* old=crw, write:xxx, read:add, close: 0 */ 1141275970Scy { 0, 255 }, 1142275970Scy /* old=crw, write:xxx, read:add, close:add */ 1143275970Scy { 0, 255 }, 1144275970Scy /* old=crw, write:xxx, read:add, close:del */ 1145275970Scy { 0, 255 }, 1146275970Scy /* old=crw, write:xxx, read:add, close:xxx */ 1147275970Scy { 0, 255 }, 1148275970Scy /* old=crw, write:xxx, read:del, close: 0 */ 1149275970Scy { 0, 255 }, 1150275970Scy /* old=crw, write:xxx, read:del, close:add */ 1151275970Scy { 0, 255 }, 1152275970Scy /* old=crw, write:xxx, read:del, close:del */ 1153275970Scy { 0, 255 }, 1154275970Scy /* old=crw, write:xxx, read:del, close:xxx */ 1155275970Scy { 0, 255 }, 1156275970Scy /* old=crw, write:xxx, read:xxx, close: 0 */ 1157275970Scy { 0, 255 }, 1158275970Scy /* old=crw, write:xxx, read:xxx, close:add */ 1159275970Scy { 0, 255 }, 1160275970Scy /* old=crw, write:xxx, read:xxx, close:del */ 1161275970Scy { 0, 255 }, 1162275970Scy /* old=crw, write:xxx, read:xxx, close:xxx */ 1163275970Scy { 0, 255 }, 1164275970Scy}; 1165275970Scy 1166275970Scy#endif 1167