comparison src/getloadavg.c @ 11788:3a2d34fad6fb make-3-73-3 make-3-74

AIX support from Tim Bell <tbel@afsmail.cern.ch>: [_AIX] (LOAD_AVE_TYPE, FSCALE, NLIST_STRUCT): Define these for AIX. (getloadavg) [_AIX]: Use `knlist' instead of `nlist'.
author Roland McGrath <roland@gnu.org>
date Wed, 10 May 1995 15:03:48 +0000
parents f9f787d5e5ff
children 443ebb2a278a
comparison
equal deleted inserted replaced
11787:635f5fb5d82a 11788:3a2d34fad6fb
208 208
209 #if defined(alliant) && defined(i860) /* Alliant FX/2800 */ 209 #if defined(alliant) && defined(i860) /* Alliant FX/2800 */
210 #define LOAD_AVE_TYPE long 210 #define LOAD_AVE_TYPE long
211 #endif 211 #endif
212 212
213 #ifdef _AIX
214 #define LOAD_AVE_TYPE long
215 #endif
216
213 #endif /* No LOAD_AVE_TYPE. */ 217 #endif /* No LOAD_AVE_TYPE. */
214 218
215 #ifdef OSF_ALPHA 219 #ifdef OSF_ALPHA
216 /* <sys/param.h> defines an incorrect value for FSCALE on Alpha OSF/1, 220 /* <sys/param.h> defines an incorrect value for FSCALE on Alpha OSF/1,
217 according to ghazi@noc.rutgers.edu. */ 221 according to ghazi@noc.rutgers.edu. */
252 256
253 #ifdef tek4300 257 #ifdef tek4300
254 #define FSCALE 100.0 258 #define FSCALE 100.0
255 #endif 259 #endif
256 260
261 #ifdef _AIX
262 #define FSCALE 65536.0
263 #endif
264
257 #endif /* Not FSCALE. */ 265 #endif /* Not FSCALE. */
258 266
259 #if !defined (LDAV_CVT) && defined (FSCALE) 267 #if !defined (LDAV_CVT) && defined (FSCALE)
260 #define LDAV_CVT(n) (((double) (n)) / FSCALE) 268 #define LDAV_CVT(n) (((double) (n)) / FSCALE)
261 #endif 269 #endif
313 321
314 #if defined(alliant) && defined(i860) /* Alliant FX/2800 */ 322 #if defined(alliant) && defined(i860) /* Alliant FX/2800 */
315 #define NLIST_STRUCT 323 #define NLIST_STRUCT
316 #endif 324 #endif
317 325
326 #ifdef _AIX
327 #define NLIST_STRUCT
328 #endif
329
318 #endif /* defined (NLIST_STRUCT) */ 330 #endif /* defined (NLIST_STRUCT) */
319 331
320 332
321 #if defined(sgi) || (defined(mips) && !defined(BSD)) 333 #if defined(sgi) || (defined(mips) && !defined(BSD))
322 #define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31)) 334 #define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31))
338 350
339 #if !defined (LDAV_SYMBOL) && defined (alliant) 351 #if !defined (LDAV_SYMBOL) && defined (alliant)
340 #define LDAV_SYMBOL "_Loadavg" 352 #define LDAV_SYMBOL "_Loadavg"
341 #endif 353 #endif
342 354
343 #if !defined(LDAV_SYMBOL) && ((defined(hpux) && !defined(hp9000s300)) || defined(_SEQUENT_) || defined(SVR4) || defined(ISC) || defined(sgi) || (defined (ardent) && defined (titan))) 355 #if !defined(LDAV_SYMBOL) && ((defined(hpux) && !defined(hp9000s300)) || defined(_SEQUENT_) || defined(SVR4) || defined(ISC) || defined(sgi) || (defined (ardent) && defined (titan)) || defined (_AIX))
344 #define LDAV_SYMBOL "avenrun" 356 #define LDAV_SYMBOL "avenrun"
345 #endif 357 #endif
346 358
347 #ifdef HAVE_UNISTD_H 359 #ifdef HAVE_UNISTD_H
348 #include <unistd.h> 360 #include <unistd.h>
788 nl[1].n_name = 0; 800 nl[1].n_name = 0;
789 #endif /* not NLIST_NAME_UNION */ 801 #endif /* not NLIST_NAME_UNION */
790 #endif /* NLIST_STRUCT */ 802 #endif /* NLIST_STRUCT */
791 803
792 #ifndef SUNOS_5 804 #ifndef SUNOS_5
793 if (nlist (KERNEL_FILE, nl) >= 0) 805 if (
794 /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */ 806 #ifndef _AIX
795 { 807 nlist (KERNEL_FILE, nl)
808 #else /* _AIX */
809 knlist (nl, 1, sizeof (nl[0]))
810 #endif
811 >= 0)
812 /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */
813 {
796 #ifdef FIXUP_KERNEL_SYMBOL_ADDR 814 #ifdef FIXUP_KERNEL_SYMBOL_ADDR
797 FIXUP_KERNEL_SYMBOL_ADDR (nl); 815 FIXUP_KERNEL_SYMBOL_ADDR (nl);
798 #endif 816 #endif
799 offset = nl[0].n_value; 817 offset = nl[0].n_value;
818 }
819 #endif /* !SUNOS_5 */
820 #else /* sgi */
821 int ldav_off;
822
823 ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
824 if (ldav_off != -1)
825 offset = (long) ldav_off & 0x7fffffff;
826 #endif /* sgi */
800 } 827 }
801 #endif /* !SUNOS_5 */
802 #else /* sgi */
803 int ldav_off;
804
805 ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
806 if (ldav_off != -1)
807 offset = (long) ldav_off & 0x7fffffff;
808 #endif /* sgi */
809 }
810 828
811 /* Make sure we have /dev/kmem open. */ 829 /* Make sure we have /dev/kmem open. */
812 if (!getloadavg_initialized) 830 if (!getloadavg_initialized)
813 { 831 {
814 #ifndef SUNOS_5 832 #ifndef SUNOS_5