summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--getloadavg.c46
1 files changed, 32 insertions, 14 deletions
diff --git a/getloadavg.c b/getloadavg.c
index f03e22e..3d805ab 100644
--- a/getloadavg.c
+++ b/getloadavg.c
@@ -210,6 +210,10 @@ extern int errno;
#define LOAD_AVE_TYPE long
#endif
+#ifdef _AIX
+#define LOAD_AVE_TYPE long
+#endif
+
#endif /* No LOAD_AVE_TYPE. */
#ifdef OSF_ALPHA
@@ -254,6 +258,10 @@ extern int errno;
#define FSCALE 100.0
#endif
+#ifdef _AIX
+#define FSCALE 65536.0
+#endif
+
#endif /* Not FSCALE. */
#if !defined (LDAV_CVT) && defined (FSCALE)
@@ -315,6 +323,10 @@ extern int errno;
#define NLIST_STRUCT
#endif
+#ifdef _AIX
+#define NLIST_STRUCT
+#endif
+
#endif /* defined (NLIST_STRUCT) */
@@ -340,7 +352,7 @@ extern int errno;
#define LDAV_SYMBOL "_Loadavg"
#endif
-#if !defined(LDAV_SYMBOL) && ((defined(hpux) && !defined(hp9000s300)) || defined(_SEQUENT_) || defined(SVR4) || defined(ISC) || defined(sgi) || (defined (ardent) && defined (titan)))
+#if !defined(LDAV_SYMBOL) && ((defined(hpux) && !defined(hp9000s300)) || defined(_SEQUENT_) || defined(SVR4) || defined(ISC) || defined(sgi) || (defined (ardent) && defined (titan)) || defined (_AIX))
#define LDAV_SYMBOL "avenrun"
#endif
@@ -790,23 +802,29 @@ getloadavg (loadavg, nelem)
#endif /* NLIST_STRUCT */
#ifndef SUNOS_5
- if (nlist (KERNEL_FILE, nl) >= 0)
- /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */
- {
+ if (
+#ifndef _AIX
+ nlist (KERNEL_FILE, nl)
+#else /* _AIX */
+ knlist (nl, 1, sizeof (nl[0]))
+#endif
+ >= 0)
+ /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */
+ {
#ifdef FIXUP_KERNEL_SYMBOL_ADDR
- FIXUP_KERNEL_SYMBOL_ADDR (nl);
+ FIXUP_KERNEL_SYMBOL_ADDR (nl);
#endif
- offset = nl[0].n_value;
- }
-#endif /* !SUNOS_5 */
-#else /* sgi */
- int ldav_off;
+ offset = nl[0].n_value;
+ }
+#endif /* !SUNOS_5 */
+#else /* sgi */
+ int ldav_off;
- ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
- if (ldav_off != -1)
- offset = (long) ldav_off & 0x7fffffff;
+ ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
+ if (ldav_off != -1)
+ offset = (long) ldav_off & 0x7fffffff;
#endif /* sgi */
- }
+ }
/* Make sure we have /dev/kmem open. */
if (!getloadavg_initialized)