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;
+}

Reply via email to