aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr
Commit message (Collapse)AuthorAge
* Merge pull request #602 from dklempner/unary_promotion_with_concurrent_pollGravatar Craig Tiller2015-02-24
|\ | | | | Ensure there is no concurrent poller for unary->multipoll
| * 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.
* | Spam cleanupGravatar Craig Tiller2015-02-24
| |
| * Add a shutdown API to pollsetGravatar David Klempner2015-02-24
| | | | | | | | | | | | | | | | This allows us to safely asynchronously add FDs in the possibly-promoting unary add case. Also fix the unary add async path to properly handle more of the extra cases it needs to handle.
| * Merge branch 'master' into unary_promotion_with_concurrent_pollGravatar David Klempner2015-02-23
| |\ | |/ |/|
* | Factorizing out function split_host_port.Gravatar Nicolas "Pixel" Noble2015-02-20
| |
* | Merge branch 'master' of github.com:google/grpc into win32Gravatar Nicolas "Pixel" Noble2015-02-21
|\ \
* | | Fixing Windows port.Gravatar Nicolas "Pixel" Noble2015-02-20
| | |
| * | Check POLLHUP, POLLERR as requiredGravatar Craig Tiller2015-02-20
| | |
| * | sockaddr_un needs the null terminator included in the address lengthGravatar Craig Tiller2015-02-20
|/ /
* | Add a facility to control tracing without recompilingGravatar Craig Tiller2015-02-20
| | | | | | | | This will help greatly when it comes to diagnosing customer issues.
* | Merge pull request #592 from ctiller/chex2Gravatar Nicolas Noble2015-02-20
|\ \ | | | | | | Fix TSAN reported error in fd_posix.c
| | * Ensure there is no concurrent poller for unary->multipollGravatar David Klempner2015-02-18
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | The race here is: Initially unary poller has one FD, FD_1 Thread 1 adds FD_2, promoting to multipoll, entailing epoll_ctl on FD_1 and FD_2. Concurrently, Thread 2 returns from unary poll and executes one of FD_1's callbacks, which ultimately leads to a close(FD_1) which races with the epoll_ctl by thread 1. The solution is to ensure that we don't concurrently poll and promote, which requires a bit of extra care.
* | 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.
* | Correct the comment documenting how to disable having multiple threadsGravatar David Klempner2015-02-18
|/ | | | in epoll wait.
* Add missing new-lines at end of fileGravatar Craig Tiller2015-02-18
|
* Update copyright to 2015Gravatar Craig Tiller2015-02-18
|
* Merge github.com:grpc/grpc into c++apiGravatar Craig Tiller2015-02-17
|\
| * UDS FixGravatar Craig Tiller2015-02-17
| | | | | | | | Remove existing UDS listeners IFF they are a socket before trying to create a new socket.
| * Add missing refGravatar Craig Tiller2015-02-17
| | | | | | | | | | This prevents a bug whereby not all fds were destroyed at application exit.
| * Add checking on fd_posix refcountsGravatar Craig Tiller2015-02-17
| |
* | Merge github.com:grpc/grpc into c++apiGravatar Craig Tiller2015-02-17
|\|
| * Fix aliasingGravatar Craig Tiller2015-02-17
| |
* | Merge github.com:grpc/grpc into c++apiGravatar Craig Tiller2015-02-17
|\| | | | | | | | | Conflicts: Makefile
* | Merge github.com:grpc/grpc into c++apiGravatar Craig Tiller2015-02-16
|\ \
| | * Merge github.com:grpc/grpc into udsGravatar Craig Tiller2015-02-16
| | |\ | | |/ | |/|
| | * clang-formatGravatar Craig Tiller2015-02-13
| | |
| | * Unix domain socket supportGravatar Craig Tiller2015-02-13
| | |
| * | Cleaning up our posix definition / usage.Gravatar Nicolas "Pixel" Noble2015-02-14
| |/ | | | | | | | | | | | | -) Let's not use _POSIX_SOURCE. It usually implies too much C99. _BSD_SOURCE would be the right thing to do here. -) _BSD_SOURCE is getting deprecated by glibc, so we also have to define _DEFAULT_SOURCE under Linux. -) accept4 and eventfd arn't as old as we may think; let's detect for it. -) stdint.h interferes with all these definitions if included too early; let's move it down.
* / Multi-completion-queue-serverGravatar Craig Tiller2015-02-12
|/ | | | | | Allow binding a different completion queue to each registered method. This will allow multiplexing for the C++ server between sync & async methods more easily.
* 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
|
* Merge branch 'master' into epollGravatar David Klempner2015-02-11
|\
| * Merge pull request #448 from nicolasnoble/grpc-win32Gravatar Craig Tiller2015-02-11
| |\ | | | | | | Windows port of iomgr.
* | | 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.
| * | Have unary pollset check to see if the existing fd is orphanedGravatar David Klempner2015-02-10
|/ / | | | | | | | | | | | | This avoids an unnecessary upgrade to multipoller if there was no do_work called between an orphan and a subsequent add. Additionally, it avoids the need for epoll based multipoller to check for this case in its upgrade code by ensuring all existing fds are valid at upgrade time.
| * Rewording comment :-)Gravatar Nicolas "Pixel" Noble2015-02-10
| |
| * Merge cleanup.Gravatar Nicolas Noble2015-02-09
| |
| * Merge branch 'master' of github.com:google/grpc into grpc-win32Gravatar Nicolas "Pixel" Noble2015-02-10
| |\
| * | Addressing comments.Gravatar Nicolas Noble2015-02-10
| | |
* | | 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.
* | Move pollset_kick wfd creation/destruction out of freelist lockGravatar David Klempner2015-02-05
| | | | | | | | | | This was an observed source of contention at higher thread counts where we could overrun the freelist cap.
| * Adding Windows tcp server code.Gravatar Nicolas "Pixel" Noble2015-02-05
| |
* | Go one further.Gravatar Craig Tiller2015-02-04
| | | | | | | | There's no need for this branch at all.
* | Respecify our way out of some very high contentionGravatar Craig Tiller2015-02-04
| | | | | | | | Theres no need for every thread to exit polling early if an alarm might finish, so there's no need to contend here.
* | Merge pull request #396 from dklempner/source_cleanupGravatar Craig Tiller2015-02-04
|\ \ | | | | | | Fix up feature test macros