aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr/pollset_multipoller_with_epoll.c
Commit message (Collapse)AuthorAge
* Rename call_list to closure_listGravatar Craig Tiller2015-09-22
|
* Call list progressGravatar Craig Tiller2015-09-18
|
* CleanupGravatar Craig Tiller2015-09-18
|
* Introduce call lists for moving work outside locksGravatar Craig Tiller2015-09-18
|
* Merge github.com:grpc/grpc into shindigGravatar Craig Tiller2015-09-16
|\
* | Progress towards workqueue transitionGravatar Craig Tiller2015-09-15
| |
| * Sprinkle castsGravatar Craig Tiller2015-09-14
|/
* Remove check for no workersGravatar Craig Tiller2015-09-08
| | | | | | | I *believe* this is actually safe, and the assert was errantly copy-pasted a while back. Fixes #3022
* Merge github.com:grpc/grpc into y12kdm3Gravatar Craig Tiller2015-08-18
|\
| * clang-format all sourceGravatar Craig Tiller2015-08-18
| |
* | Working towards a non-blocking API testGravatar Craig Tiller2015-08-06
|/
* Fix TSAN reported lock-inversion in epoll fd additionGravatar Craig Tiller2015-07-30
|
* Allow specific pollers to be wokenGravatar Craig Tiller2015-07-29
| | | | | | | | | | | | | | | | | | | Currently, if two threads call grpc_completion_queue_pluck on the same completion queue for different tags, there is a 50% chance that we deliver the completion wakeup to the wrong poller - forcing the correct poller to wait until its polling times out before it can return an event up to the application. This change tweaks our polling interfaces so that we can indeed wake a specific poller. Nothing has been performance tuned yet. It's definitely sub-optimal in a number of places. Wakeup file-descriptors should be recycled. We should have a path that avoids calling poll() followed by epoll(). We can probably live without it right at the second though. This code will fail on Windows at least (I'll do that port when I'm in the office and have a Windows machine).
* Hoist epoll_ctl outside of pollset lockGravatar Craig Tiller2015-07-14
|
* Rewrite completion queue internals to use pre-allocation of eventsGravatar Craig Tiller2015-07-08
|
* Fix a TSAN reported raceGravatar Craig Tiller2015-07-01
| | | | | close() could race with epoll_ctl(); pretend to be polling while adding to the epoll set to prevent this
* Remove return status from maybe_work.Gravatar Craig Tiller2015-06-22
| | | | | | | Since alarm checks may mutate work deadlines for pollsets, the value returned from maybe_work is meaningless. Instead, maybe pollset_work always return 1 if maybe_work is invoked, and then redo the deadline check _on the next call_ to pollset_work.
* DocsGravatar Craig Tiller2015-06-18
|
* Be better about timeout roundingGravatar Craig Tiller2015-06-15
|
* clang-formatGravatar Craig Tiller2015-06-05
|
* Update epoll to new vtableGravatar Craig Tiller2015-06-01
|
* Merge branch 'but-maybe-i-want-to-poll' into we-dont-need-no-backupGravatar Craig Tiller2015-05-29
|\
| * clang-formatGravatar Craig Tiller2015-05-29
| |
* | Merge branch 'but-maybe-i-want-to-poll' into we-dont-need-no-backupGravatar Craig Tiller2015-05-29
|\|
| * Make it possible to run with poll() instead of epoll()Gravatar Craig Tiller2015-05-29
| | | | | | | | | | Mostly to facilitate testing, but maybe in the future we want to work on Linux systems with broken epoll support?
* | Remove condition variable from pollsetGravatar Craig Tiller2015-05-28
|/
* Correct the comment documenting how to disable having multiple threadsGravatar David Klempner2015-02-18
| | | | in epoll wait.
* Destroy the wakeup fd in the right functionGravatar David Klempner2015-02-11
|
* Clean up the epoll wakeup fd too.Gravatar David Klempner2015-02-11
|
* Address pull request thread commentsGravatar David Klempner2015-02-11
| | | | | | | 1. Close the epoll_fd at destroy 2. Finish the comment about signal/broadcast on the cv 3. Rename GPR_POSIX_MULTIPOLL_WITH_EPOLL to GPR_LINUX_MULTIPOLL_WITH_EPOLL
* Remove now unnecessary check that incoming epoll fds are not orphanedGravatar David Klempner2015-02-11
|
* Epoll based multipollerGravatar David Klempner2015-02-10
This is a multipoller based on epoll rather than poll. Note that this implementation is aimed at correctness rather than performance, although it should immediately have better scalability to large numbers of FDs, both due to epoll's O(1) sized API and due to not needing to wake up polling threads to do interest set changes. One notable difference here is that we directly attach a wakeup fd rather than using the freelisting kick mechanism that the poll() based implementations use, because modifying the epoll set to use a different kick fd each time isn't free.