[ofa-general] porting IB management code to Windows
Sean Hefty
sean.hefty at intel.com
Thu Dec 11 11:18:57 PST 2008
Sasha,
We've started porting the IB management code (IB-diags at this point) to
Windows. My strong preference is to avoid branching the code and instead keep a
single source code tree. Is there any objection to accepting changes against
the management tree to allow the code to run on both Linux and Windows? (We can
figure out the logistics of build related files later. I'm most concerned about
the code itself.)
The patch below gives an example of the changes needed to make this happen.
Most are a result of compiler differences.
- Sean
--- infiniband-diags-1.4.2\src\sminfo.c 2008-10-19 11:34:42.000000000 -0700
+++ scm\winof\branches\winverbs\tools\infiniband_diags\src\sminfo.c
2008-12-10 15:06:01.096000000 -0800
@@ -37,12 +37,19 @@
#include <stdio.h>
#include <stdlib.h>
+
+#if defined(_WIN32) || defined(_WIN64)
+#include <windows.h>
+#include <winsock2.h>
+#include "..\..\..\..\etc\user\getopt.c"
+#include "..\ibdiag_common.c"
+#else
#include <unistd.h>
#include <stdarg.h>
#include <inttypes.h>
#include <getopt.h>
+#endif
-#include <infiniband/common.h>
#include <infiniband/umad.h>
#include <infiniband/mad.h>
@@ -72,13 +79,13 @@ enum {
};
char *statestr[] = {
- [SMINFO_NOTACT] "SMINFO_NOTACT",
- [SMINFO_DISCOVER] "SMINFO_DISCOVER",
- [SMINFO_STANDBY] "SMINFO_STANDBY",
- [SMINFO_MASTER] "SMINFO_MASTER",
+ "SMINFO_NOTACT",
+ "SMINFO_DISCOVER",
+ "SMINFO_STANDBY",
+ "SMINFO_MASTER",
};
-#define STATESTR(s) (((uint)(s)) < SMINFO_STATE_LAST ? statestr[s] : "???")
+#define STATESTR(s) (((unsigned int)(s)) < SMINFO_STATE_LAST ? statestr[s] :
"???")
int
main(int argc, char **argv)
@@ -88,7 +95,7 @@ main(int argc, char **argv)
ib_portid_t portid = {0};
int timeout = 0; /* use default */
uint8_t *p;
- uint act = 0;
+ unsigned int act = 0;
int prio = 0, state = SMINFO_STANDBY;
uint64_t guid = 0, key = 0;
extern int ibdebug;
@@ -97,8 +104,8 @@ main(int argc, char **argv)
char *ca = 0;
int ca_port = 0;
- static char const str_opts[] = "C:P:t:s:p:a:deDGVhu";
- static const struct option long_opts[] = {
+ static char str_opts[] = "C:P:t:s:p:a:deDGVhu";
+ static struct option long_opts[] = {
{ "C", 1, 0, 'C'},
{ "P", 1, 0, 'P'},
{ "debug", 0, 0, 'd'},
@@ -112,7 +119,7 @@ main(int argc, char **argv)
{ "timeout", 1, 0, 't'},
{ "help", 0, 0, 'h'},
{ "usage", 0, 0, 'u'},
- { }
+ { 0 }
};
argv0 = argv[0];
@@ -188,7 +195,7 @@ main(int argc, char **argv)
if (mod) {
if (!(p = smp_set(sminfo, &portid, IB_ATTR_SMINFO, mod,
timeout)))
- IBERROR("query");
+ IBERROR("set");
} else
if (!(p = smp_query(sminfo, &portid, IB_ATTR_SMINFO, 0,
timeout)))
IBERROR("query");
More information about the general
mailing list