#include <unistd.h>
#include <time.h>
#include <stdarg.h>
-#include <endian.h>
+#include <asm/byteorder.h>
#ifdef __CYGWIN__
unsigned int portal_debug;
unsigned int portal_printk;
unsigned int portal_stack;
-unsigned int portal_cerror = 1;
+unsigned int portal_cerror;
static unsigned int g_nal = 0;
{"elan", QSWNAL},
{"gm", GMNAL},
{"ib", IBNAL},
+ {"scimac", SCIMACNAL},
{NULL, -1}
};
static cfg_record_cb_t g_record_cb;
-/* Convert a string boolean to an int; "enable" -> 1 */
-int ptl_parse_bool (int *b, char *str) {
- if (!strcasecmp (str, "no") ||
- !strcasecmp (str, "n") ||
- !strcasecmp (str, "off") ||
- !strcasecmp (str, "down") ||
- !strcasecmp (str, "disable"))
- {
- *b = 0;
- return (0);
- }
-
- if (!strcasecmp (str, "yes") ||
- !strcasecmp (str, "y") ||
- !strcasecmp (str, "on") ||
- !strcasecmp (str, "up") ||
- !strcasecmp (str, "enable"))
- {
- *b = 1;
- return (0);
- }
-
- return (-1);
-}
-
-/* Convert human readable size string to and int; "1k" -> 1000 */
-int ptl_parse_size (int *sizep, char *str) {
- int size;
- char mod[32];
-
- switch (sscanf (str, "%d%1[gGmMkK]", &size, mod)) {
- default:
- return (-1);
-
- case 1:
- *sizep = size;
- return (0);
-
- case 2:
- switch (*mod) {
- case 'g':
- case 'G':
- *sizep = size << 30;
- return (0);
-
- case 'm':
- case 'M':
- *sizep = size << 20;
- return (0);
-
- case 'k':
- case 'K':
- *sizep = size << 10;
- return (0);
-
- default:
- *sizep = size;
- return (0);
- }
- }
-}
-
int
ptl_set_cfg_record_cb(cfg_record_cb_t cb)
{
return (-1);
}
-__u64 ptl_nid2u64(ptl_nid_t nid)
-{
- switch (sizeof (nid)) {
- case 8:
- return (nid);
- case 4:
- return ((__u32)nid);
- default:
- fprintf(stderr, "Unexpected sizeof(ptl_nid_t) == %u\n", sizeof(nid));
- abort();
- /* notreached */
- return (-1);
- }
-}
-
char *
ptl_nid2str (char *buffer, ptl_nid_t nid)
{
- __u64 nid64 = ptl_nid2u64(nid);
- struct hostent *he;
-
- if ((nid64 & ~((__u64)((__u32)-1))) != 0) {
- /* top bits set */
- he = NULL;
- } else {
- __u32 addr = htonl((__u32)nid); /* back to NETWORK byte order */
-
- he = gethostbyaddr ((const char *)&addr, sizeof (addr), AF_INET);
- }
+ __u32 addr = htonl((__u32)nid); /* back to NETWORK byte order */
+ struct hostent *he = gethostbyaddr ((const char *)&addr, sizeof (addr), AF_INET);
if (he != NULL)
strcpy (buffer, he->h_name);
else
- sprintf (buffer, LPX64, nid64);
+ sprintf (buffer, LPX64, nid);
return (buffer);
}
char *nidstr;
struct portals_cfg pcfg;
ptl_nid_t mynid;
-
+
if (argc > 2) {
fprintf(stderr, "usage: %s [NID]\n", argv[0]);
fprintf(stderr, "NID defaults to the primary IP address of the machine.\n");
fprintf(stderr, "setting my NID failed: %s\n",
strerror(errno));
else
- printf("registered my nid "LPX64" (%s)\n",
- ptl_nid2u64(mynid), hostname);
+ printf("registered my nid "LPX64" (%s)\n", mynid, hostname);
return 0;
}
if (argc > 1)
{
- if (ptl_parse_size (&size, argv[1]) != 0 || size < 0)
+ if (Parser_size (&size, argv[1]) != 0 || size < 0)
{
fprintf (stderr, "Can't parse size %s\n", argv[1]);
return (0);
if (argc > 1)
{
- if (ptl_parse_size (&size, argv[1]) != 0 || size < 0)
+ if (Parser_size (&size, argv[1]) != 0 || size < 0)
{
fprintf (stderr, "Can't parse size %s\n", argv[1]);
return (0);
if (argc > 1)
{
- if (ptl_parse_bool (&enable, argv[1]) != 0)
+ if (Parser_bool (&enable, argv[1]) != 0)
{
fprintf (stderr, "Can't parse boolean %s\n", argv[1]);
return (-1);
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "NAL_CMD_DEL_ROUTE ("LPX64") failed: %s\n",
- ptl_nid2u64(nid), strerror (errno));
+ fprintf (stderr, "NAL_CMD_DEL_ROUTE ("LPX64") failed: %s\n", nid, strerror (errno));
return (-1);
}
return (-1);
}
- if (ptl_parse_bool (&enable, argv[2]) != 0) {
+ if (Parser_bool (&enable, argv[2]) != 0) {
fprintf (stderr, "Can't parse boolean %s\n", argv[2]);
return (-1);
}
if (rc != 0)
{
fprintf (stderr, "NAL_CMD_NOTIFY_ROUTER ("LPX64") failed: %s\n",
- ptl_nid2u64(nid), strerror (errno));
+ nid, strerror (errno));
return (-1);
}
static int
lwt_print(FILE *f, cycles_t t0, cycles_t tlast, double mhz, int cpu, lwt_event_t *e)
{
+ char whenstr[32];
char *where = lwt_get_string(e->lwte_where);
if (where == NULL)
return (-1);
+ sprintf(whenstr, LPD64, e->lwte_when - t0);
+
fprintf(f, "%#010lx %#010lx %#010lx %#010lx: %#010lx %1d %10.6f %10.2f %s\n",
e->lwte_p1, e->lwte_p2, e->lwte_p3, e->lwte_p4,
(long)e->lwte_task, cpu, (e->lwte_when - t0) / (mhz * 1000000.0),
cycles_t tnow;
struct timeval tvnow;
int printed_date = 0;
- int nlines = 0;
FILE *f = stdout;
if (argc < 2 ||
rc = lwt_print(f, t0, tlast, mhz, cpu, next_event[cpu]);
if (rc != 0)
break;
-
- if (++nlines % 10000 == 0 && f != stdout) {
- /* show some activity... */
- printf(".");
- fflush (stdout);
- }
}
tlast = next_event[cpu]->lwte_when;
next_event[cpu] = NULL;
}
- if (f != stdout) {
- printf("\n");
+ if (f != stdout)
fclose(f);
- }
free(events);
return (0);