diff options
| author | Garrett D'Amore <garrett@damore.org> | 2020-12-19 10:21:54 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2020-12-19 12:50:05 -0800 |
| commit | d12e169c1e733b255d146847ed57037b74681285 (patch) | |
| tree | e4a59142a6cf097dfdda8620635f173f53db9e7a /src/platform/windows/win_ipcconn.c | |
| parent | 2033988343bce413763d3e9664e3e8372da48591 (diff) | |
| download | nng-d12e169c1e733b255d146847ed57037b74681285.tar.gz nng-d12e169c1e733b255d146847ed57037b74681285.tar.bz2 nng-d12e169c1e733b255d146847ed57037b74681285.zip | |
fixes #1372 nni_reap could be smaller
Diffstat (limited to 'src/platform/windows/win_ipcconn.c')
| -rw-r--r-- | src/platform/windows/win_ipcconn.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/platform/windows/win_ipcconn.c b/src/platform/windows/win_ipcconn.c index b8dc62d3..135a961e 100644 --- a/src/platform/windows/win_ipcconn.c +++ b/src/platform/windows/win_ipcconn.c @@ -34,7 +34,7 @@ typedef struct ipc_conn { bool closed; nni_mtx mtx; nni_cv cv; - nni_reap_item reap; + nni_reap_node reap; } ipc_conn; static void @@ -309,8 +309,10 @@ ipc_close(void *arg) } static void -ipc_conn_reap(ipc_conn *c) +ipc_conn_reap(void *arg) { + ipc_conn *c = arg; + nni_mtx_lock(&c->mtx); while ((!nni_list_empty(&c->recv_aios)) || (!nni_list_empty(&c->send_aios))) { @@ -330,13 +332,18 @@ ipc_conn_reap(ipc_conn *c) NNI_FREE_STRUCT(c); } +static nni_reap_list ipc_reap_list = { + .rl_offset = offsetof(ipc_conn, reap), + .rl_func = ipc_conn_reap, +}; + static void ipc_free(void *arg) { ipc_conn *c = arg; ipc_close(c); - nni_reap(&c->reap, (nni_cb) ipc_conn_reap, CONN(c)); + nni_reap(&ipc_reap_list, c); } static int |
