Hi all, The following small patch gets gmond working on Opteron boxes and also on Linux 2.5.x.
Regards, Robert.
diff -rNu ganglia-monitor-core-2.5.3-orig/gmond/machines/linux.c ganglia-monitor-core-2.5.3/gmond/machines/linux.c --- ganglia-monitor-core-2.5.3-orig/gmond/machines/linux.c 2003-03-06 14:10:19.000000000 -0800 +++ ganglia-monitor-core-2.5.3/gmond/machines/linux.c 2003-06-12 11:30:40.000000000 -0700 @@ -346,7 +346,7 @@ static g_val_t val = {0}; /* i386, ia64, and hppa all report MHz in the same format */ -#if defined (__i386__) || defined(__ia64__) || defined(__hppa__) +#if defined (__i386__) || defined(__ia64__) || defined(__hppa__) || defined(__x86_64__) if (! val.uint32 ) { p = proc_cpuinfo; @@ -442,6 +442,9 @@ #ifdef __i386__ snprintf(val.str, MAX_G_STRING_SIZE, "x86"); #endif +#ifdef __x86_64__ + snprintf(val.str, MAX_G_STRING_SIZE, "x86_64"); +#endif #ifdef __ia64__ snprintf(val.str, MAX_G_STRING_SIZE, "ia64"); #endif @@ -763,8 +766,12 @@ g_val_t val; p = strstr( update_file(&proc_meminfo), "MemShared:" ); - p = skip_token(p); - val.uint32 = strtol( p, (char **)NULL, 10 ); + if (p) { + p = skip_token(p); + val.uint32 = strtol( p, (char **)NULL, 10 ); + } else { + val.uint32 = 0; + } return val; } diff -rNu ganglia-monitor-core-2.5.3-orig/lib/Makefile.am ganglia-monitor-core-2.5.3/lib/Makefile.am --- ganglia-monitor-core-2.5.3-orig/lib/Makefile.am 2002-11-07 15:32:48.000000000 -0800 +++ ganglia-monitor-core-2.5.3/lib/Makefile.am 2003-06-10 13:33:31.000000000 -0700 @@ -26,7 +26,7 @@ libganglia_la_LDFLAGS = -version-info 2:0:1 -include_HEADERS = ganglia.h ganglia/ascii.h ganglia/asciitab.h ganglia/daemon_inetd.h \ +nobase_include_HEADERS = ganglia.h ganglia/ascii.h ganglia/asciitab.h ganglia/daemon_inetd.h \ ganglia/daemon_init.h ganglia/debug_msg.h ganglia/error.h ganglia/file.h ganglia/hash.h \ ganglia/iasciitab.h ganglia/latin1tab.h ganglia/llist.h ganglia/my_inet_ntop.h \ ganglia/nametab.h ganglia/net.h ganglia/rdwr.h ganglia/utf8tab.h ganglia/xmldef.h \