summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Cran <bcran@fusionio.com>2013-10-08 15:05:27 +0100
committerJens Axboe <axboe@kernel.dk>2013-11-01 12:26:45 -0600
commitf16b7405fff7c3fc1da421b6bdf8552cc99c3156 (patch)
tree9d054bbd6c78772d3f99a9123e60a620b7223f66
parent44462517234f07e03c4dc71e5b5460cd70feeb07 (diff)
downloadfio-f16b7405fff7c3fc1da421b6bdf8552cc99c3156.tar.gz
fio-f16b7405fff7c3fc1da421b6bdf8552cc99c3156.tar.bz2
Update Windows code to fix build breakage
MinGW has been updated: this causes problems due to changes in header files, including COM stuff being pulled in resulting in 'interface' being a reserved keyword, and changes to a few POSIX definitions. Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--engines/net.c18
-rw-r--r--os/os-windows.h9
-rwxr-xr-xos/windows/posix.c9
-rw-r--r--os/windows/posix/include/arpa/inet.h13
4 files changed, 35 insertions, 14 deletions
diff --git a/engines/net.c b/engines/net.c
index 0c90e1ca..52cc8a7f 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -38,7 +38,7 @@ struct netio_options {
unsigned int pingpong;
unsigned int nodelay;
unsigned int ttl;
- char * interface;
+ char *intfc;
};
struct udp_close_msg {
@@ -134,7 +134,7 @@ static struct fio_option options[] = {
.name = "interface",
.lname = "net engine interface",
.type = FIO_OPT_STR_STORE,
- .off1 = offsetof(struct netio_options, interface),
+ .off1 = offsetof(struct netio_options, intfc),
.help = "Network interface to use",
.category = FIO_OPT_C_ENGINE,
.group = FIO_OPT_G_NETIO,
@@ -557,20 +557,20 @@ static int fio_netio_connect(struct thread_data *td, struct fio_file *f)
if (!fio_netio_is_multicast(td->o.filename))
return 0;
- if (o->interface) {
+ if (o->intfc) {
struct in_addr interface_addr;
- if (inet_aton(o->interface, &interface_addr) == 0) {
+ if (inet_aton(o->intfc, &interface_addr) == 0) {
log_err("fio: interface not valid interface IP\n");
close(f->fd);
return 1;
}
- if (setsockopt(f->fd, IPPROTO_IP, IP_MULTICAST_IF, &interface_addr, sizeof(interface_addr)) < 0) {
+ if (setsockopt(f->fd, IPPROTO_IP, IP_MULTICAST_IF, (const char*)&interface_addr, sizeof(interface_addr)) < 0) {
td_verror(td, errno, "setsockopt IP_MULTICAST_IF");
close(f->fd);
return 1;
}
}
- if (setsockopt(f->fd, IPPROTO_IP, IP_MULTICAST_TTL, &o->ttl, sizeof(o->ttl)) < 0) {
+ if (setsockopt(f->fd, IPPROTO_IP, IP_MULTICAST_TTL, (const char*)&o->ttl, sizeof(o->ttl)) < 0) {
td_verror(td, errno, "setsockopt IP_MULTICAST_TTL");
close(f->fd);
return 1;
@@ -884,8 +884,8 @@ static int fio_netio_setup_listen_inet(struct thread_data *td, short port)
inet_aton(td->o.filename, &sin.sin_addr);
mr.imr_multiaddr = sin.sin_addr;
- if (o->interface) {
- if (inet_aton(o->interface, &mr.imr_interface) == 0) {
+ if (o->intfc) {
+ if (inet_aton(o->intfc, &mr.imr_interface) == 0) {
log_err("fio: interface not valid interface IP\n");
close(fd);
return 1;
@@ -893,7 +893,7 @@ static int fio_netio_setup_listen_inet(struct thread_data *td, short port)
} else {
mr.imr_interface.s_addr = htonl(INADDR_ANY);
}
- if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr, sizeof(mr)) < 0) {
+ if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mr, sizeof(mr)) < 0) {
td_verror(td, errno, "setsockopt IP_ADD_MEMBERSHIP");
close(fd);
return 1;
diff --git a/os/os-windows.h b/os/os-windows.h
index 4f4e2bb3..de120b64 100644
--- a/os/os-windows.h
+++ b/os/os-windows.h
@@ -18,6 +18,10 @@
#include "windows/posix.h"
+#ifndef PTHREAD_STACK_MIN
+#define PTHREAD_STACK_MIN 65535
+#endif
+
#define FIO_HAVE_ODIRECT
#define FIO_HAVE_CPU_AFFINITY
#define FIO_HAVE_CHARDEV_SIZE
@@ -38,9 +42,6 @@
typedef DWORD_PTR os_cpu_mask_t;
-#define CLOCK_REALTIME 1
-#define CLOCK_MONOTONIC 2
-
#define _SC_PAGESIZE 0x1
#define _SC_NPROCESSORS_ONLN 0x2
#define _SC_PHYS_PAGES 0x4
@@ -115,7 +116,6 @@ static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes)
HANDLE hFile;
GET_LENGTH_INFORMATION info;
DWORD outBytes;
- LARGE_INTEGER size;
if (f->hFile == NULL) {
hFile = CreateFile(f->file_name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
@@ -124,7 +124,6 @@ static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes)
hFile = f->hFile;
}
- size.QuadPart = 0;
if (DeviceIoControl(hFile, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, &info, sizeof(info), &outBytes, NULL))
*bytes = info.Length.QuadPart;
else
diff --git a/os/windows/posix.c b/os/windows/posix.c
index 49bce439..8153b455 100755
--- a/os/windows/posix.c
+++ b/os/windows/posix.c
@@ -12,6 +12,7 @@
#include <unistd.h>
#include <dirent.h>
#include <pthread.h>
+#include <time.h>
#include <semaphore.h>
#include <sys/shm.h>
#include <sys/mman.h>
@@ -872,6 +873,14 @@ uid_t geteuid(void)
return -1;
}
+in_addr_t inet_network(const char *cp)
+{
+ in_addr_t hbo;
+ in_addr_t nbo = inet_addr(cp);
+ hbo = ((nbo & 0xFF) << 24) + ((nbo & 0xFF00) << 8) + ((nbo & 0xFF0000) >> 8) + ((nbo & 0xFF000000) >> 24);
+ return hbo;
+}
+
const char* inet_ntop(int af, const void *restrict src,
char *restrict dst, socklen_t size)
{
diff --git a/os/windows/posix/include/arpa/inet.h b/os/windows/posix/include/arpa/inet.h
index 7e3bfb7e..59c50ad1 100644
--- a/os/windows/posix/include/arpa/inet.h
+++ b/os/windows/posix/include/arpa/inet.h
@@ -5,6 +5,19 @@
#include <inttypes.h>
typedef int socklen_t;
+typedef int in_addr_t;
+
+#define IP_MULTICAST_IF 2
+#define IP_MULTICAST_TTL 3
+#define IP_ADD_MEMBERSHIP 5
+
+struct ip_mreq
+{
+ struct in_addr imr_multiaddr;
+ struct in_addr imr_interface;
+};
+
+in_addr_t inet_network(const char *cp);
const char *inet_ntop(int af, const void *restrict src,
char *restrict dst, socklen_t size);