Move VC's enabled on a different thread to the ready list
| 240 | // Move VC's enabled on a different thread to the ready list |
| 241 | // |
| 242 | void |
| 243 | NetHandler::process_enabled_list() |
| 244 | { |
| 245 | NetEvent *ne = nullptr; |
| 246 | |
| 247 | SListM(NetEvent, NetState, read, enable_link) rq(read_enable_list.popall()); |
| 248 | while ((ne = rq.pop())) { |
| 249 | ne->ep.modify(EVENTIO_READ); |
| 250 | ne->ep.refresh(EVENTIO_READ); |
| 251 | ne->read.in_enabled_list = 0; |
| 252 | if ((ne->read.enabled && ne->read.triggered) || ne->closed) { |
| 253 | read_ready_list.in_or_enqueue(ne); |
| 254 | } |
| 255 | } |
| 256 | |
| 257 | SListM(NetEvent, NetState, write, enable_link) wq(write_enable_list.popall()); |
| 258 | while ((ne = wq.pop())) { |
| 259 | ne->ep.modify(EVENTIO_WRITE); |
| 260 | ne->ep.refresh(EVENTIO_WRITE); |
| 261 | ne->write.in_enabled_list = 0; |
| 262 | if ((ne->write.enabled && ne->write.triggered) || ne->closed) { |
| 263 | write_ready_list.in_or_enqueue(ne); |
| 264 | } |
| 265 | } |
| 266 | } |
| 267 | |
| 268 | // |
| 269 | // Walk through the ready list |
nothing calls this directly
no test coverage detected