From 723e39f6c03e241994a2e26b907e41f5bf5db3e7 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Thu, 29 Jun 2017 13:14:13 -0700 Subject: Adjust npds count properly. --- src/platform/posix/posix_poll.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/platform/posix/posix_poll.c b/src/platform/posix/posix_poll.c index a30c0953..d309babf 100644 --- a/src/platform/posix/posix_poll.c +++ b/src/platform/posix/posix_poll.c @@ -45,6 +45,17 @@ struct nni_posix_pipedesc { int nonblocking; }; + +struct nni_posix_epdesc { + int fd; + int index; + nni_list connectq; + nni_list acceptq; + nni_list_node node; + nni_posix_pollq * pq; +}; + + // nni_posix_pollq is a work structure used by the poller thread, that keeps // track of all the underlying pipe handles and so forth being used by poll(). struct nni_posix_pollq { @@ -58,8 +69,10 @@ struct nni_posix_pollq { int close; // request for worker to exit int started; nni_thr thr; // worker thread - nni_list pds; // linked list of nni_posix_pipedescs. - int npds; // number of pipe descriptors + nni_list pds; // nni_posix_pipedescs. + int npds; // length of pds list + nni_list eds; // nni_posix_epdescs + nni_list neds; // length of eds list }; static nni_posix_pollq nni_posix_global_pollq; @@ -236,6 +249,7 @@ nni_posix_pipedesc_close(nni_posix_pipedesc *pd) nni_posix_poll_close(pd); if (nni_list_active(&pq->pds, pd)) { nni_list_remove(&pq->pds, pd); + pq->npds--; } nni_mtx_unlock(&pq->mtx); } @@ -442,6 +456,7 @@ nni_posix_pipedesc_submit(nni_posix_pipedesc *pd, nni_list *l, nni_aio *aio) } nni_list_append(&pq->pds, pd); + pq->npds++; } NNI_ASSERT(!nni_list_active(l, aio)); // Only wake if we aren't already waiting for this type of I/O on @@ -497,6 +512,7 @@ nni_posix_pipedesc_fini(nni_posix_pipedesc *pd) if (nni_list_active(&pq->pds, pd)) { nni_list_remove(&pq->pds, pd); + pq->npds--; } nni_mtx_unlock(&pq->mtx); -- cgit v1.2.3-70-g09d2