aboutsummaryrefslogtreecommitdiff
path: root/src/core/pipe.c
Commit message (Collapse)AuthorAge
* Minor improvements to reap start/stop logic.Garrett D'Amore2017-08-05
|
* Use a dedicated reap thread instead of taskq.Garrett D'Amore2017-08-05
| | | | | | | | The problem is that reaping these things performs some blocking operations which can tie up slots in the taskq, preventing other tasks from running. Ultimately this can lead to a deadlock as tasks that are blocked wind up waiting for tasks that can't get scheduled. Blocking tasks really should not run on the system taskq.
* Simpler taskq API.Garrett D'Amore2017-07-21
| | | | | | | The queue is bound at initialization time of the task, and we call entries just tasks, so we don't have to pass around a taskq pointer across all the calls. Further, nni_task_dispatch is now guaranteed to succeed.
* Yet more race condition fixes.Garrett D'Amore2017-07-20
| | | | | | | | | We need to remember that protocol stops can run synchronously, and therefore we need to wait for the aio to complete. Further, we need to break apart shutting down aio activity from deallocation, as we need to shut down *all* async activity before deallocating *anything*. Noticed that we had a pipe race in the surveyor pattern too.
* fixes #27 Double free found in stress testingGarrett D'Amore2017-07-19
|
* Clean up pipes on fini. EP close sync with pipes.Garrett D'Amore2017-07-16
|
* Close negotiation race.Garrett D'Amore2017-07-16
|
* Bind the pipe to the ep properly, and wake any closers needed.Garrett D'Amore2017-07-16
|
* Delete old #ifdef 0 pipe_create logic.Garrett D'Amore2017-07-16
|
* Fix locking errors in endpoints, and simplify some logic.Garrett D'Amore2017-07-16
| | | | | | | This cleans up the pipe creation logic greatly, and eliminates a nasty potential deadlock (lock-order incorrect.) It also adds a corret binary exponential and randomized backoff on both accept and connect.
* Fix incorrect attempt to proceed inproc.Garrett D'Amore2017-07-15
|
* Race conditions removed... TCP tests work well know.Garrett D'Amore2017-07-15
|
* Some initial progress on *connect* async.Garrett D'Amore2017-07-15
| | | | | | This actually is breaking at the moment, because we don't have good integration with timeouts, and there are some frustrating races with timeouts at points that can cause apparent hangs.
* Implemented asynchronous (fully) accept.Garrett D'Amore2017-07-14
| | | | | | This logic leaves a race condition in the dial side, which will be fixed with a subsequent change to convert that to fully asynchronous as well.
* Close a race during pipe creation.Garrett D'Amore2017-07-13
|
* Use the same pipe teardown in all circumstances.Garrett D'Amore2017-07-13
|
* Use the same flow regardless of whether pipe start is used or not.Garrett D'Amore2017-07-13
| | | | | | This means that pipe_start always succeeds, and we can guarantee that the pipe_start_cb is always executed, and in another context. This may help when we need to change the way that sockets and endpoints are associated.
* Simplify pipe logic, going back to idhash.Garrett D'Amore2017-07-13
|
* Make idhash non-inlined (so we can add a mutex.)Garrett D'Amore2017-07-13
|
* Give up on uncrustify; switch to clang-format.Garrett D'Amore2017-07-10
|
* Various cleanups of unused bits.Garrett D'Amore2017-07-08
|
* Move IPC negotiation out of connect/accept.Garrett D'Amore2017-07-05
| | | | | | This prevents a slow partner from blocking new connections from being established on the server. Before this a single partner could cause the server to block waiting to complete the negotiation.
* Cleanup some unused things.Garrett D'Amore2017-07-05
|
* More aio name cleanups.Garrett D'Amore2017-07-02
|
* Remove the extra _aio_ part of pipe send and recv functions.Garrett D'Amore2017-07-02
|
* pipe_send and recv can be void.Garrett D'Amore2017-07-02
|
* Transports allocate their pipe structures during connect & accept.Garrett D'Amore2017-07-02
|
* We don't need pipe_hold or pipe_rele anymore.Garrett D'Amore2017-06-28
|
* Refactor stop again, closing numerous races (thanks valgrind!)Garrett D'Amore2017-06-28
|
* Fix a few race condition panics.Garrett D'Amore2017-06-25
|
* Protocols keep their own reference counts.Garrett D'Amore2017-06-24
|
* Make APIs for holding references more consistent.Garrett D'Amore2017-06-21
|
* Eliminate pipes global idhash.Garrett D'Amore2017-06-09
|
* pipe destroy need not be synchronous.Garrett D'Amore2017-06-09
|
* Pipes are now mostly using object hash -- taskq_cancel race TBD.Garrett D'Amore2017-06-08
|
* Create the pipe object hash (not used yet).Garrett D'Amore2017-06-07
|
* Clean up some dead code.Garrett D'Amore2017-03-29
|
* TCP (POSIX) async send/recv working. Other changes.Garrett D'Amore2017-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'Amore2017-03-19
|
* More API cleanups to separate interfaces. (nni_pipe_create).Garrett D'Amore2017-03-19
|
* Reduce socket/pipe private data coupling.Garrett D'Amore2017-03-19
|
* Start of close related race fixes. Scalability test.Garrett D'Amore2017-03-10
|
* Start of msgq aio.Garrett D'Amore2017-03-01
|
* fixes #12 SURVEY hang in TravisGarrett D'Amore2017-01-18
|
* Pipe IDs are now tracked on global ID hashes.Garrett D'Amore2017-01-17
|
* Pipe IDs are now tracked by hash table for performance.Garrett D'Amore2017-01-17
| | | | | This gives a better idea of pipe ID uniqueness, and is a step towards conversion of the API to use IDs instead of pointers.
* New ISAAC pRNG. This replaces other local hacks for random data.Garrett D'Amore2017-01-08
| | | | | | Platforms must seed the pRNGs by offering an nni_plat_seed_prng() routine. Implementations for POSIX using various options (including the /dev/urandom device) are supplied.
* Move to generic socket & pipe workers, and up to 4 each.Garrett D'Amore2017-01-08
| | | | | This should eliminate all need for protocols to do their own thread management tasks.
* Pipe bail shouldn't mess with lists. Doh!Garrett D'Amore2017-01-07
|
* Uncrustify fix for last.Garrett D'Amore2017-01-07
|