aboutsummaryrefslogtreecommitdiff
path: root/src/platform/posix/posix_poll.c
Commit message (Collapse)AuthorAge
* Remove obsolete poll.c.Garrett D'Amore2017-07-05
|
* Improved routines for list management.Garrett D'Amore2017-07-04
|
* All pipes are nonblocking.Garrett D'Amore2017-07-04
|
* Rename aio functions. Enhanced epdesc_finish.Garrett D'Amore2017-07-04
|
* Properly initialize eps during listen.Garrett D'Amore2017-06-30
|
* pipedesc_read/write -> pipedesc_send/recv.Garrett D'Amore2017-06-30
|
* More progress on POSIX async connect stuff.Garrett D'Amore2017-06-30
| | | | | | | | | Note that we're going to refactor this again, for both TCP and IPC, to actually push the endpoint abstraction further down instead of using a combined "socket" abstraction. This may help solve other problems, such as parallel outgoing connections. Nonetheless, most of the work to make POSIX sockets fully async is now done.
* More plumbing for async connections.Garrett D'Amore2017-06-29
|
* Begin work on async connect/accept for POSIX. Not referenced yet.Garrett D'Amore2017-06-29
|
* Use common socket handling on POSIX (tcp done, ipc pending.)Garrett D'Amore2017-06-29
|
* Adjust npds count properly.Garrett D'Amore2017-06-29
|
* Pass cancel of IPC and TCP all the way down to POSIX pipedescs.Garrett D'Amore2017-06-29
|
* Refactor stop again, closing numerous races (thanks valgrind!)Garrett D'Amore2017-06-28
|
* Convert to POSIX polled I/O for async; start of cancelable aio.Garrett D'Amore2017-06-27
This eliminates the two threads per pipe that were being used to provide basic I/O handling, replacing them with a single global thread for now, that uses poll and nonblocking I/O. This should lead to great scalability. The infrastructure is in place to easily expand to multiple polling worker threads. Some thought needs to be given about how to scale this to engage multiple CPUs. Horizontal scaling may also shorten the poll() lists easing C10K problem. We should look into better solutions than poll() for platforms that have them (epoll on Linux, kqueue on BSD, and event ports on illumos). Note that the file descriptors start out in blocking mode for now, but then are placed into non-blocking mode. This is because the negotiation phase is not yet callback driven, and so needs to be synchronous.