| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Pass cancel of IPC and TCP all the way down to POSIX pipedescs. | Garrett D'Amore | 2017-06-29 |
| | | |||
| * | We don't need pipe_hold or pipe_rele anymore. | Garrett D'Amore | 2017-06-28 |
| | | |||
| * | Refactor stop again, closing numerous races (thanks valgrind!) | Garrett D'Amore | 2017-06-28 |
| | | |||
| * | Clean up the pipe system (no leaks). | Garrett D'Amore | 2017-06-28 |
| | | |||
| * | Cancellation plumbing for message queues. | Garrett D'Amore | 2017-06-27 |
| | | |||
| * | Put errors go on the putq. | Garrett D'Amore | 2017-06-27 |
| | | |||
| * | Convert to POSIX polled I/O for async; start of cancelable aio. | Garrett D'Amore | 2017-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. | ||
| * | More race condition fixes. | Garrett D'Amore | 2017-06-26 |
| | | |||
| * | Set the expiration under lock (data race). | Garrett D'Amore | 2017-06-26 |
| | | |||
| * | Fix uninitialized use (thanks valgrind.) | Garrett D'Amore | 2017-06-26 |
| | | |||
| * | Adding mutex lock during fini to prevent false positive data race. | Garrett D'Amore | 2017-06-25 |
| | | |||
| * | Simplify timer locks, hopefully resolving potential deadlock. | Garrett D'Amore | 2017-06-25 |
| | | |||
| * | Fix a few race condition panics. | Garrett D'Amore | 2017-06-25 |
| | | |||
| * | Clear the owner while *still* holding the lock. | Garrett D'Amore | 2017-06-25 |
| | | |||
| * | Remove stale endpoint reap stuff. Note that req/rep fails sometimes. | Garrett D'Amore | 2017-06-24 |
| | | |||
| * | Protocols keep their own reference counts. | Garrett D'Amore | 2017-06-24 |
| | | |||
| * | Start undoing the recursive references -- KISS. | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Don't acquire the lock if the endpoint isn't on a list. | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Use ep_closed to track state (disambiguate name.) | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Note that we have work to do to properly clean up. TBD. | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Simplify endpoint pipe startup. Fix lost pipe on closed ep. | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Additional mutex debugging support. | Garrett D'Amore | 2017-06-22 |
| | | |||
| * | Improve debugging and eliminate dead code in objhash. | Garrett D'Amore | 2017-06-21 |
| | | |||
| * | Expose a library finalizer suitable for atexit(). | Garrett D'Amore | 2017-06-21 |
| | | |||
| * | Make APIs for holding references more consistent. | Garrett D'Amore | 2017-06-21 |
| | | |||
| * | Don't dereference the psock on an error. | Garrett D'Amore | 2017-06-09 |
| | | |||
| * | Endpoint close can be moved later; add check for closed in pipe_add. | Garrett D'Amore | 2017-06-09 |
| | | |||
| * | Eliminate idle pipe list (unused). | Garrett D'Amore | 2017-06-09 |
| | | |||
| * | Eliminate pipes global idhash. | Garrett D'Amore | 2017-06-09 |
| | | |||
| * | pipe destroy need not be synchronous. | Garrett D'Amore | 2017-06-09 |
| | | |||
| * | Fix taskq_cancel race. | Garrett D'Amore | 2017-06-08 |
| | | |||
| * | Pipes are now mostly using object hash -- taskq_cancel race TBD. | Garrett D'Amore | 2017-06-08 |
| | | |||
| * | Copy reference counts when resizing! | Garrett D'Amore | 2017-06-08 |
| | | |||
| * | Create the pipe object hash (not used yet). | Garrett D'Amore | 2017-06-07 |
| | | |||
| * | More endpoint plumbing before pipes move to objhash. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | Reconn times acquired atomically by socket under lock. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | Endpoint now holds a reference on the socket. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | Start of using objhash for endpoints. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | Properly constrain initial value for object IDs. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | Make objhash fini calls idempotent. | Garrett D'Amore | 2017-06-06 |
| | | |||
| * | New object hash implementation, used by socket (to start). | Garrett D'Amore | 2017-06-05 |
| | | |||
| * | Implementation of object hash (derived from idhash, but smarter.) | Garrett D'Amore | 2017-06-02 |
| | | |||
| * | Pipe ID race on close (pipe IDs are zero at close). | Garrett D'Amore | 2017-04-14 |
| | | | | | | This should address some of the errors we've seen. Additionally, the scalability test was a bit brittle due to too-short timeouts. | ||
| * | Nuke the synchronous send/recv transport methods. | Garrett D'Amore | 2017-04-12 |
| | | |||
| * | ETIME may not be defined on various platforms (STREAMs specific). | Garrett D'Amore | 2017-04-12 |
| | | |||
| * | Hopefully close shutdown race in rep. | Garrett D'Amore | 2017-03-29 |
| | | |||
| * | IPC send/recv works asynchronously for POSIX. | Garrett D'Amore | 2017-03-29 |
| | | | | | | | | | | | As with TCP, we're still using threads under the hood. But this completes the send/recv logic conversion for POSIX to our AIO framework, and hence represents a substantial milestone towards full asyncronous operation. We still need to do accept/connect operations asynchronously, then making. Windows overlapped IO work properly. After that, poll/epoll/kqueue, etc. | ||
| * | Clean up some dead code. | Garrett D'Amore | 2017-03-29 |
| | | |||
| * | TCP (POSIX) async send/recv working. Other changes. | Garrett D'Amore | 2017-03-29 |
| | | | | | | | | Transport-level pipe initialization is now sepearate and explicit. The POSIX send/recv logic still uses threads under the hood, but makes use of the AIO framework for send/recv. This is a key stepping stone towards enabling poll() or similar async I/O approaches. | ||
| * | More interface hiding. (pipe tran data setting). | Garrett D'Amore | 2017-03-19 |
| | | |||
