aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr/fd_posix.c
Commit message (Collapse)AuthorAge
* Merge github.com:grpc/grpc into tis-but-thy-nameGravatar Craig Tiller2015-07-06
|\
| * Fix refcount leakGravatar Craig Tiller2015-07-01
| |
* | Merge github.com:grpc/grpc into tis-but-thy-nameGravatar Craig Tiller2015-07-01
|\ \
| | * 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
| * Delay unregister of fd until freelistedGravatar Craig Tiller2015-07-01
| | | | | | | | Prevents a race whereby we start deleting the freelist before it's used
* | Spam cleanup, properly shut down lb_policyGravatar Craig Tiller2015-07-01
| |
* | clang-format affected filesGravatar Craig Tiller2015-06-30
| |
* | client_config bugfixesGravatar Craig Tiller2015-06-30
|/
* Add an fd conservation test to verify that fds actually closeGravatar Craig Tiller2015-06-29
|
* Call fd_orphan callback a little earlierGravatar Craig Tiller2015-06-26
|
* clang-formatGravatar Craig Tiller2015-06-05
|
* Fix threading problem on early orphaningGravatar Craig Tiller2015-06-02
|
* Order unregister, freelist properlyGravatar Craig Tiller2015-06-02
|
* Fix TSAN reported errorsGravatar Craig Tiller2015-06-01
|
* Merge branch 'count-the-things' into we-dont-need-no-backupGravatar Craig Tiller2015-06-01
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile src/core/iomgr/pollset_posix.c src/core/surface/call.c src/core/surface/channel.c src/core/surface/server.c src/python/src/grpc/_adapter/_low_test.py tools/doxygen/Doxyfile.core.internal
| * Merge github.com:grpc/grpc into count-the-thingsGravatar Craig Tiller2015-06-01
| |\ | | | | | | | | | | | | | | | Conflicts: src/core/iomgr/fd_posix.h src/core/iomgr/iomgr.c
* | | Merge branch 'count-the-things' into we-dont-need-no-backupGravatar Craig Tiller2015-06-01
|\| |
| * | Label all iomgr objectsGravatar Craig Tiller2015-06-01
| | | | | | | | | | | | | | | This allows a list of them to be dumped to isolate where memory leaks are occuring.
| | * Added some comments.Gravatar David Garcia Quintas2015-05-31
| | |
* | | fd refcount debuggingGravatar Craig Tiller2015-05-31
| | |
| | * fd_posix: free from managed closures!Gravatar David Garcia Quintas2015-05-31
| | |
| | * fd_posix: removed redundant on_doneGravatar David Garcia Quintas2015-05-31
| | |
| | * assert -> GPR_ASSERTGravatar David Garcia Quintas2015-05-31
| | |
| | * Comments addressed.Gravatar David Garcia Quintas2015-05-31
| | |
| | * Adapted the following to the new iomgr's cb API:Gravatar David Garcia Quintas2015-05-31
| |/ | | | | | | | | alarm_test, tcp_posix, fd_posix, pollset_posix, credentials, call, channel, server, child_channel
* | Merge branch 'but-maybe-i-want-to-poll' into we-dont-need-no-backupGravatar Craig Tiller2015-05-29
|\|
| * Rename function for clarityGravatar Craig Tiller2015-05-29
| |
* | Merge branch 'demon-on-wheels' into we-dont-need-no-cvGravatar Craig Tiller2015-05-29
|\|
| * Add missing lockGravatar Craig Tiller2015-05-29
| |
* | Merge github.com:grpc/grpc into we-dont-need-no-backupGravatar Craig Tiller2015-05-28
|\|
| * clang-formatGravatar Craig Tiller2015-05-18
| |
| * Add another little commentGravatar Craig Tiller2015-05-18
| |
| * Document variable usage in fd_posixGravatar Craig Tiller2015-05-18
| | | | | | | | Update some code based on that documentation
| * More scalable unary pollingGravatar Craig Tiller2015-05-14
| | | | | | | | | | | | - admit only one poller for read and one for write at a time (poll is level triggered, so this avoids a thundering herd on each event) - wake only one poller when more pollers are needed, again avoiding a thundering herd
* | Remove backup pollsetGravatar Craig Tiller2015-05-06
|/
* Add a no_barrier_load atomic operation.Gravatar David Klempner2015-03-11
| | | | | Use this to relax the acq_loads in some fd_posix assertions. The primary goal here is to avoid masking potential iomgr races from tsan.
* Move close() to when the fd refcount goes to zeroGravatar David Klempner2015-02-24
| | | | | | Instead, we do a shutdown() at the point we are currently closing, to kick off socket teardown while ensuring an fd ref is sufficient to make concurrent syscalls like epoll_ctl safe.
* Merge pull request #592 from ctiller/chex2Gravatar Nicolas Noble2015-02-20
|\ | | | | Fix TSAN reported error in fd_posix.c
* | Fix a race where an fd can be deleted during pollingGravatar Craig Tiller2015-02-18
| |
| * clang-formatGravatar Craig Tiller2015-02-18
| |
| * Fix a TSAN reported errorGravatar Craig Tiller2015-02-18
|/ | | | | | | | | | We now pass down pointers to closures instead of (callback, arg) pair elements separately. This allows us to store one word atomically, fixing a race condition. All call sites have been updated to the new API. No new allocations are incurred. grpc_fd_state is deleted to avoid any temptation to ever add anything there again.
* Add missing new-lines at end of fileGravatar Craig Tiller2015-02-18
|
* Update copyright to 2015Gravatar Craig Tiller2015-02-18
|
* Add checking on fd_posix refcountsGravatar Craig Tiller2015-02-17
|
* Reduce contention on lockGravatar Craig Tiller2015-02-09
| | | | Change the fd watcher from being O(active_pollers) to O(1), reducing time spent under the fd->watcher_mu lock, and ultimately scaling us much better.
* Freelist grpc_fd objectsGravatar David Klempner2015-01-28
| | | | | This is necessary for efficient implementations where multiple threads simultaneously sit in epoll_wait and the like on the same pollset.
* Disable compilation of some filesGravatar Craig Tiller2015-01-21
| | | | They're not needed on Windows
* Remove libevent.Gravatar ctiller2015-01-09
| | | | | | | | | | | | | | | | | | | | | | | Fixed any exposed bugs across the stack. Add a poll() based implementation. Heavily leverages pollset infrastructure to allow small polls to be the norm. Exposes a mechanism to plug in epoll/kqueue for platforms where we have them. Simplify iomgr callbacks to return one bit of success or failure (instead of the multi valued result that was mostly unused previously). This will ease the burden on new implementations, and the previous system provided no real value anyway. Removed timeouts on endpoint read/write routines. This simplifies porting burden by providing a more orthogonal interface, and the functionality can always be replicated when desired by using an alarm combined with endpoint_shutdown. I'm fairly certain we ended up with this interface because it was convenient to do from libevent. Things that need attention still: - adding an fd to a pollset is O(n^2) - but this is probably ok given that we'll not use this for multipolling once platform specific implementations are added. - we rely on the backup poller too often - especially for SSL handshakes and for client connection establishment we should have a better mechanism ([] [] - Linux needs to use epoll for multiple fds, FreeBSD variants (including Darwin) need to use kqueue. ([] [] - Linux needs to use eventfd for poll kicking. ([] Change on 2015/01/07 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83461069
* Add a --forever flag, to continuously run tests as things change.Gravatar ctiller2015-01-09
| | | | | | | Change on 2015/01/07 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83451760
* Remove libevent.Gravatar ctiller2015-01-08
Fixed any exposed bugs across the stack. Add a poll() based implementation. Heavily leverages pollset infrastructure to allow small polls to be the norm. Exposes a mechanism to plug in epoll/kqueue for platforms where we have them. Simplify iomgr callbacks to return one bit of success or failure (instead of the multi valued result that was mostly unused previously). This will ease the burden on new implementations, and the previous system provided no real value anyway. Removed timeouts on endpoint read/write routines. This simplifies porting burden by providing a more orthogonal interface, and the functionality can always be replicated when desired by using an alarm combined with endpoint_shutdown. I'm fairly certain we ended up with this interface because it was convenient to do from libevent. Things that need attention still: - adding an fd to a pollset is O(n^2) - but this is probably ok given that we'll not use this for multipolling once platform specific implementations are added. - we rely on the backup poller too often - especially for SSL handshakes and for client connection establishment we should have a better mechanism ([] [] - Linux needs to use epoll for multiple fds, FreeBSD variants (including Darwin) need to use kqueue. ([] [] - Linux needs to use eventfd for poll kicking. ([] Change on 2015/01/07 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83461069