#endif
};
-#ifdef _WIN32
-static void
-do_winsock_start(void)
-{
- WSADATA wsaData;
- int error;
-
- error = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (error != 0) {
- VLOG_FATAL("WSAStartup failed: %s", sock_strerror(sock_errno()));
- }
-}
-
-static void
-winsock_start(void)
-{
- static pthread_once_t once = PTHREAD_ONCE_INIT;
- pthread_once(&once, do_winsock_start);
-}
-#endif
-
/* Check the validity of the stream class structures. */
static void
check_stream_classes(void)
COVERAGE_INC(stream_open);
-#ifdef _WIN32
- winsock_start();
-#endif
-
/* Look up the class. */
error = stream_lookup_class(name, &class);
if (!class) {
COVERAGE_INC(pstream_open);
-#ifdef _WIN32
- winsock_start();
-#endif
-
/* Look up the class. */
error = pstream_lookup_class(name, &class);
if (!class) {
#include "coverage.h"
#include "ovs-rcu.h"
#include "ovs-thread.h"
+#include "socket-util.h"
#include "vlog.h"
#ifdef HAVE_PTHREAD_SET_NAME_NP
#include <pthread_np.h>
}
return 0;
}
+
+OVS_CONSTRUCTOR(winsock_start) {
+ WSADATA wsaData;
+ int error;
+
+ error = WSAStartup(MAKEWORD(2, 2), &wsaData);
+ if (error != 0) {
+ VLOG_FATAL("WSAStartup failed: %s", sock_strerror(sock_errno()));
+ }
+}
#endif