aboutsummaryrefslogtreecommitdiff
path: root/src/platform/windows/win_thread.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-07-07 18:17:51 -0700
committerGarrett D'Amore <garrett@damore.org>2017-07-07 18:17:51 -0700
commit021d09af1375834fe9aaca916e60dcd2ad3be845 (patch)
treee3a4c8d2e0eddd69b79308b67922725901752ee9 /src/platform/windows/win_thread.c
parentc6df64d90ff9799b9f5970c4897e2b9a55e2ce69 (diff)
downloadnng-021d09af1375834fe9aaca916e60dcd2ad3be845.tar.gz
nng-021d09af1375834fe9aaca916e60dcd2ad3be845.tar.bz2
nng-021d09af1375834fe9aaca916e60dcd2ad3be845.zip
Start of progress on Windows. Name resolution and IOCP work begins.
Diffstat (limited to 'src/platform/windows/win_thread.c')
-rw-r--r--src/platform/windows/win_thread.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/platform/windows/win_thread.c b/src/platform/windows/win_thread.c
index 1b903b26..be94d638 100644
--- a/src/platform/windows/win_thread.c
+++ b/src/platform/windows/win_thread.c
@@ -159,6 +159,7 @@ nni_plat_init(int (*helper)(void))
LONG old;
static LONG initing = 0;
static LONG inited = 0;
+ int rv;
if (inited) {
return (0); // fast path
@@ -177,19 +178,28 @@ nni_plat_init(int (*helper)(void))
WORD ver;
ver = MAKEWORD(2, 2);
if (WSAStartup(MAKEWORD(2, 2), &data) != 0) {
- InterlockedExchange(&initing, 0);
if ((LOBYTE(data.wVersion) != 2) ||
(HIBYTE(data.wVersion) != 2)) {
nni_panic("got back wrong winsock ver");
}
- return (NNG_ENOMEM);
+ rv = NNG_EINVAL;
+ goto out;
+ }
+ printf("STARTING...\n");
+ if ((rv = nni_win_iocp_sysinit()) != 0) {
+ goto out;
+ }
+ if ((rv = nni_win_resolv_sysinit()) != 0) {
+ goto out;
}
helper();
inited = 1;
}
+
+out:
InterlockedExchange(&initing, 0);
- return (0);
+ return (rv);
}
@@ -197,6 +207,8 @@ void
nni_plat_fini(void)
{
WSACleanup();
+ nni_win_resolv_sysfini();
+ nni_win_iocp_sysfini();
}