aboutsummaryrefslogtreecommitdiff
path: root/src/transport/ipc
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-12-19 10:21:54 -0800
committerGarrett D'Amore <garrett@damore.org>2020-12-19 12:50:05 -0800
commitd12e169c1e733b255d146847ed57037b74681285 (patch)
treee4a59142a6cf097dfdda8620635f173f53db9e7a /src/transport/ipc
parent2033988343bce413763d3e9664e3e8372da48591 (diff)
downloadnng-d12e169c1e733b255d146847ed57037b74681285.tar.gz
nng-d12e169c1e733b255d146847ed57037b74681285.tar.bz2
nng-d12e169c1e733b255d146847ed57037b74681285.zip
fixes #1372 nni_reap could be smaller
Diffstat (limited to 'src/transport/ipc')
-rw-r--r--src/transport/ipc/ipc.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c
index 9e75f13a..efaa823c 100644
--- a/src/transport/ipc/ipc.c
+++ b/src/transport/ipc/ipc.c
@@ -36,7 +36,7 @@ struct ipc_pipe {
nni_pipe * pipe;
nni_list_node node;
nni_atomic_flag reaped;
- nni_reap_item reap;
+ nni_reap_node reap;
uint8_t tx_head[1 + sizeof(uint64_t)];
uint8_t rx_head[1 + sizeof(uint64_t)];
size_t got_tx_head;
@@ -69,7 +69,7 @@ struct ipc_ep {
nni_list busy_pipes; // busy pipes -- ones passed to socket
nni_list wait_pipes; // pipes waiting to match to socket
nni_list neg_pipes; // pipes busy negotiating
- nni_reap_item reap;
+ nni_reap_node reap;
#ifdef NNG_ENABLE_STATS
nni_stat_item st_rcv_max;
#endif
@@ -80,8 +80,19 @@ static void ipc_pipe_recv_start(ipc_pipe *p);
static void ipc_pipe_send_cb(void *);
static void ipc_pipe_recv_cb(void *);
static void ipc_pipe_neg_cb(void *);
+static void ipc_pipe_fini(void *);
static void ipc_ep_fini(void *);
+static nni_reap_list ipc_ep_reap_list = {
+ .rl_offset = offsetof(ipc_ep, reap),
+ .rl_func = ipc_ep_fini,
+};
+
+static nni_reap_list ipc_pipe_reap_list = {
+ .rl_offset = offsetof(ipc_pipe, reap),
+ .rl_func = ipc_pipe_fini,
+};
+
static int
ipc_tran_init(void)
{
@@ -139,7 +150,7 @@ ipc_pipe_fini(void *arg)
nni_list_node_remove(&p->node);
ep->ref_cnt--;
if (ep->fini && (ep->ref_cnt == 0)) {
- nni_reap(&ep->reap, ipc_ep_fini, ep);
+ nni_reap(&ipc_ep_reap_list, ep);
}
nni_mtx_unlock(&ep->mtx);
}
@@ -161,7 +172,7 @@ ipc_pipe_reap(ipc_pipe *p)
if (p->conn != NULL) {
nng_stream_close(p->conn);
}
- nni_reap(&p->reap, ipc_pipe_fini, p);
+ nni_reap(&ipc_pipe_reap_list, p);
}
}