[ofa-general] [ib-diag] sminfo: add support for WinOF
Sean Hefty
sean.hefty at intel.com
Thu Feb 12 23:21:21 PST 2009
Allow sminfo to build and run on both Linux and Windows. Window
build files are maintained in the WinOF respository. These changes
allow dropping the infiniband-diags into the WinOF build environment.
Signed-off-by: Sean Hefty <sean.hefty at intel.com>
---
Would there be any objection to including the windows source files (.c and .h)
in the mgmt tree?
infiniband-diags/Makefile.am | 2 +
infiniband-diags/include/ibdiag_common.h | 2 +
infiniband-diags/include/linux/ibdiag_osd.h | 43 +++++++++++++++++++++++++++
infiniband-diags/src/ibdiag_common.c | 13 ++++----
infiniband-diags/src/sminfo.c | 15 ++++-----
5 files changed, 58 insertions(+), 17 deletions(-)
diff --git a/infiniband-diags/Makefile.am b/infiniband-diags/Makefile.am
index f9cc5bd..0d32abd 100644
--- a/infiniband-diags/Makefile.am
+++ b/infiniband-diags/Makefile.am
@@ -1,5 +1,5 @@
-INCLUDES = -I$(top_builddir)/include/ -I$(srcdir)/include -I$(includedir) -I$(includedir)/infiniband
+INCLUDES = -I$(top_builddir)/include/ -I$(srcdir)/include -I$(includedir) -I$(includedir)/infiniband -I$(srcdir)/include/linux
if DEBUG
DBGFLAGS = -ggdb -D_DEBUG_
diff --git a/infiniband-diags/include/ibdiag_common.h b/infiniband-diags/include/ibdiag_common.h
index 4783b8e..2dea873 100644
--- a/infiniband-diags/include/ibdiag_common.h
+++ b/infiniband-diags/include/ibdiag_common.h
@@ -52,7 +52,7 @@ extern int ibd_timeout;
#undef DEBUG
#define DEBUG if (ibdebug || ibverbose) IBWARN
#define VERBOSE if (ibdebug || ibverbose > 1) IBWARN
-#define IBERROR(fmt, args...) iberror(__FUNCTION__, fmt, ## args)
+#define IBERROR(fmt, ...) iberror(__FUNCTION__, fmt, ## __VA_ARGS__)
struct ibdiag_opt {
const char *name;
diff --git a/infiniband-diags/include/linux/ibdiag_osd.h b/infiniband-diags/include/linux/ibdiag_osd.h
new file mode 100644
index 0000000..5c6faa9
--- /dev/null
+++ b/infiniband-diags/include/linux/ibdiag_osd.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2009 Intel Corp, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses. You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifndef _IBDIAG_OSD_H_
+#define _IBDIAG_OSD_H_
+
+#include <unistd.h>
+#include <inttypes.h>
+#include <config.h>
+
+#define CDECL
+
+#endif /* _IBDIAG_OSD_H_ */
diff --git a/infiniband-diags/src/ibdiag_common.c b/infiniband-diags/src/ibdiag_common.c
index bda1efa..154e00c 100644
--- a/infiniband-diags/src/ibdiag_common.c
+++ b/infiniband-diags/src/ibdiag_common.c
@@ -43,15 +43,14 @@
#include <stdlib.h>
#include <stdarg.h>
#include <sys/types.h>
-#include <unistd.h>
#include <ctype.h>
-#include <config.h>
#include <getopt.h>
#include <infiniband/umad.h>
#include <infiniband/mad.h>
#include <ibdiag_common.h>
#include <ibdiag_version.h>
+#include "ibdiag_osd.h"
int ibdebug;
int ibverbose;
@@ -204,7 +203,7 @@ static const struct ibdiag_opt common_opts[] = {
{ "usage", 'u', 0, NULL, "usage message" },
{ "help", 'h', 0, NULL, "help message" },
{ "version", 'V', 0, NULL, "show version" },
- {}
+ { 0 }
};
static void make_opt(struct option *l, const struct ibdiag_opt *o,
@@ -254,11 +253,11 @@ static struct option *make_long_opts(const char *exclude_str,
static void make_str_opts(const struct option *o, char *p, unsigned size)
{
- int i, n = 0;
+ unsigned i, n = 0;
for (n = 0; o->name && n + 2 + o->has_arg < size; o++) {
- p[n++] = o->val;
- for (i = 0; i < o->has_arg; i++)
+ p[n++] = (char) o->val;
+ for (i = 0; i < (unsigned) o->has_arg; i++)
p[n++] = ':';
}
p[n] = '\0';
@@ -273,7 +272,7 @@ int ibdiag_process_opts(int argc, char * const argv[], void *cxt,
char str_opts[1024];
const struct ibdiag_opt *o;
- memset(opts_map, 0, sizeof(opts_map));
+ memset((void *) opts_map, 0, sizeof(opts_map));
prog_name = argv[0];
prog_args = usage_args;
diff --git a/infiniband-diags/src/sminfo.c b/infiniband-diags/src/sminfo.c
index e96c782..7767668 100644
--- a/infiniband-diags/src/sminfo.c
+++ b/infiniband-diags/src/sminfo.c
@@ -37,14 +37,13 @@
#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
-#include <inttypes.h>
#include <getopt.h>
#include <infiniband/umad.h>
#include <infiniband/mad.h>
#include "ibdiag_common.h"
+#include "ibdiag_osd.h"
static uint8_t sminfo[1024];
@@ -59,10 +58,10 @@ 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) (((unsigned)(s)) < SMINFO_STATE_LAST ? statestr[s] : "???")
@@ -88,7 +87,7 @@ static int process_opt(void *context, int ch, char *optarg)
return 0;
}
-int main(int argc, char **argv)
+int CDECL main(int argc, char **argv)
{
int mgmt_classes[3] = {IB_SMI_CLASS, IB_SMI_DIRECT_CLASS, IB_SA_CLASS};
int mod = 0;
@@ -100,7 +99,7 @@ int main(int argc, char **argv)
{ "state", 's', 1, "<0-3>", "set SM state"},
{ "priority", 'p', 1, "<0-15>", "set SM priority"},
{ "activity", 'a', 1, NULL, "set activity count"},
- { }
+ { 0 }
};
char usage_args[] = "<sm_lid|sm_dr_path> [modifier]";
More information about the general
mailing list