Hello,
Sorry for sending this to a list, but I tried twice to submit via
SourceForge's "submit patch" option, and the file attachment didn't go
through.
Anyway, this patch contains PRELIMINARY support for Irix for gmond
(against version 2.2.3). I don't know how to get access to some
statistics, so hopefully an Irix guru can add the missing pieces.
Alan
diff -Naur ganglia-monitor-core-2.2.3/config.h.in
ganglia-monitor-core-2.2.3-ajh/config.h.in
--- ganglia-monitor-core-2.2.3/config.h.in Fri Apr 5 11:40:46 2002
+++ ganglia-monitor-core-2.2.3-ajh/config.h.in Fri Apr 12 09:38:17 2002
@@ -33,6 +33,7 @@
#undef OSF
#undef HPUX
#undef AIX
+#undef IRIX
#undef IA64
diff -Naur ganglia-monitor-core-2.2.3/configure
ganglia-monitor-core-2.2.3-ajh/configure
--- ganglia-monitor-core-2.2.3/configure Fri Apr 5 11:40:47 2002
+++ ganglia-monitor-core-2.2.3-ajh/configure Fri Apr 12 09:36:25 2002
@@ -7262,6 +7262,12 @@
#define HPUX 1
EOF
;;
+*irix*) metric_source="irix.c"
+ CFLAGS="$CFLAGS -D_IRIX_SOURCE"
+ cat >> confdefs.h <<\EOF
+#define IRIX 1
+EOF
+;;
*osf*) metric_source="osf.c"
CFLAGS="$CFLAGS -D_SOCKADDR_LEN"
cat >> confdefs.h <<\EOF
diff -Naur ganglia-monitor-core-2.2.3/configure.in
ganglia-monitor-core-2.2.3-ajh/configure.in
--- ganglia-monitor-core-2.2.3/configure.in Fri Apr 5 11:39:13 2002
+++ ganglia-monitor-core-2.2.3-ajh/configure.in Fri Apr 12 09:41:20 2002
@@ -268,6 +268,9 @@
*hpux*) metric_source="hpux.c"
CFLAGS="$CFLAGS -D_HPUX_SOURCE"
AC_DEFINE(HPUX);;
+*irix*) metric_source="irix.c"
+ CFLAGS="$CFLAGS -D_IRIX_SOURCE"
+ AC_DEFINE(IRIX);;
*osf*) metric_source="osf.c"
CFLAGS="$CFLAGS -D_SOCKADDR_LEN"
AC_DEFINE(OSF);;
diff -Naur ganglia-monitor-core-2.2.3/gmond/machines/irix.c
ganglia-monitor-core-2.2.3-ajh/gmond/machines/irix.c
--- ganglia-monitor-core-2.2.3/gmond/machines/irix.c Wed Dec 31 16:00:00 1969
+++ ganglia-monitor-core-2.2.3-ajh/gmond/machines/irix.c Fri Apr 12
09:43:15 2002
@@ -0,0 +1,292 @@
+#include "ganglia.h"
+#include "metric_typedefs.h"
+#include <sys/systeminfo.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/swap.h>
+#include <sys/types.h>
+#include <sys/sysget.h>
+#include <unistd.h>
+
+int multiplier; /* Pagesize / 1024 (for memory calcs) */
+
+/*
+ * This function is called only once by the gmond. Use to
+ * initialize data structures, etc or just return SYNAPSE_SUCCESS;
+ */
+g_val_t
+metric_init(void)
+{
+ g_val_t val;
+
+ multiplier = getpagesize() / 1024;
+ val.int32 = SYNAPSE_SUCCESS;
+ return val;
+}
+
+/*
+ *
+ */
+
+g_val_t
+cpu_num_func ( void )
+{
+ g_val_t val;
+
+ val.uint16 = sysconf(_SC_NPROC_ONLN);
+ return val;
+}
+
+g_val_t
+cpu_speed_func ( void )
+{
+ g_val_t val;
+
+ val.uint16 = 0;
+ return val;
+}
+
+g_val_t
+mem_total_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int mem[1];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "physmem");
+ sysget(SGT_KSYM, (char *)mem, sizeof(mem),
+ SGT_READ, &cookie);
+ val.uint32 = ( mem[0] * multiplier);
+ return val;
+}
+
+g_val_t
+swap_total_func ( void )
+{
+ g_val_t val;
+ off_t swaptotal;
+
+ swapctl(SC_GETSWAPTOT, &swaptotal);
+ val.uint32 = swaptotal / 2;
+/* val.uint32 = 0; */
+ return val;
+}
+
+g_val_t
+boottime_func ( void )
+{
+ g_val_t val;
+
+ val.uint32 = 0;
+ return val;
+}
+
+g_val_t
+sys_clock_func ( void )
+{
+ g_val_t val;
+
+ val.uint32 = time(NULL);
+ return val;
+}
+
+g_val_t
+machine_type_func ( void )
+{
+ g_val_t val;
+ long size;
+
+ size = sysinfo(SI_MACHINE, val.str, MAX_G_STRING_SIZE);
+ /* strncpy( val.str, "x86", MAX_G_STRING_SIZE ); */
+ return val;
+}
+
+g_val_t
+os_name_func ( void )
+{
+ g_val_t val;
+ long size;
+
+ size = sysinfo(SI_SYSNAME, val.str, MAX_G_STRING_SIZE);
+ /* strncpy( val.str, "FreeBSD", MAX_G_STRING_SIZE ); */
+ return val;
+}
+
+g_val_t
+os_release_func ( void )
+{
+ g_val_t val;
+ long size;
+
+ size = sysinfo(SI_RELEASE, val.str, MAX_G_STRING_SIZE);
+ /* strncpy( val.str, "unknown", MAX_G_STRING_SIZE ); */
+ return val;
+}
+
+g_val_t
+cpu_user_func ( void )
+{
+ g_val_t val;
+
+ val.f = 0.0;
+ return val;
+}
+
+g_val_t
+cpu_nice_func ( void )
+{
+ g_val_t val;
+
+ val.f = 0.0;
+ return val;
+}
+
+g_val_t
+cpu_system_func ( void )
+{
+ g_val_t val;
+
+ val.f = 0.0;
+ return val;
+}
+
+g_val_t
+cpu_idle_func ( void )
+{
+ g_val_t val;
+
+ val.f = 0.0;
+ return val;
+}
+
+g_val_t
+cpu_aidle_func ( void )
+{
+ g_val_t val;
+
+ val.f = 0.0;
+ return val;
+}
+
+g_val_t
+load_one_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int avenrun[3];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "avenrun");
+ sysget(SGT_KSYM, (char *)avenrun, sizeof(avenrun),
+ SGT_READ, &cookie);
+ val.f = ( (float) avenrun[0] ) / 1024.0;
+ return val;
+}
+
+g_val_t
+load_five_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int avenrun[3];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "avenrun");
+ sysget(SGT_KSYM, (char *)avenrun, sizeof(avenrun),
+ SGT_READ, &cookie);
+ val.f = ( (float) avenrun[1] ) / 1024.0;
+ return val;
+}
+
+g_val_t
+load_fifteen_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int avenrun[3];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "avenrun");
+ sysget(SGT_KSYM, (char *)avenrun, sizeof(avenrun),
+ SGT_READ, &cookie);
+ val.f = ( (float) avenrun[2] ) / 1024.0;
+ return val;
+}
+
+g_val_t
+proc_run_func( void )
+{
+ g_val_t val;
+
+ val.uint32 = 0;
+ return val;
+}
+
+g_val_t
+proc_total_func ( void )
+{
+ g_val_t val;
+
+ val.uint32 = 0;
+ return val;
+}
+
+g_val_t
+mem_free_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int mem[1];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "freemem");
+ sysget(SGT_KSYM, (char *)mem, sizeof(mem),
+ SGT_READ, &cookie);
+ val.uint32 = ( mem[0] * multiplier);
+ return val;
+}
+
+g_val_t
+mem_shared_func ( void )
+{
+ g_val_t val;
+
+ val.uint32 = 0;
+ return val;
+}
+
+g_val_t
+mem_buffers_func ( void )
+{
+ g_val_t val;
+ sgt_cookie_t cookie;
+ int mem[1];
+
+ SGT_COOKIE_INIT(&cookie);
+ SGT_COOKIE_SET_KSYM(&cookie, "bufmem");
+ sysget(SGT_KSYM, (char *)mem, sizeof(mem),
+ SGT_READ, &cookie);
+ val.uint32 = ( mem[0] * multiplier);
+ return val;
+}
+
+g_val_t
+mem_cached_func ( void )
+{
+ g_val_t val;
+
+ val.uint32 = 0;
+ return val;
+}
+
+g_val_t
+swap_free_func ( void )
+{
+ g_val_t val;
+ off_t swapfree;
+
+ swapctl(SC_GETFREESWAP, &swapfree);
+ val.uint32 = swapfree / 2;
+ return val;
+}