configure.in: Check for sys/sysctl.h and sysctl.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Sat, 22 Feb 2003 15:17:36 +0000 (15:17 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Sat, 22 Feb 2003 15:17:36 +0000 (15:17 +0000)
* configure.in: Check for sys/sysctl.h and sysctl.
* physmem.c: Add support for *bsd and darwin.
* Makefile.in: Generate depedency for physmem.o.

Co-Authored-By: Geoffrey Keating <geoffk@apple.com>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
From-SVN: r63285

libiberty/ChangeLog
libiberty/Makefile.in
libiberty/config.in
libiberty/configure
libiberty/configure.in
libiberty/physmem.c

index 71b8a0f274382fc22492fa162fa99a70034e09af..6216974feb1bee6c43b22b50188cf5b9a2adb7fe 100644 (file)
@@ -1,3 +1,11 @@
+2003-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+           Richard Earnshaw  <rearnsha@arm.com>
+           Geoffrey Keating  <geoffk@apple.com>
+       
+       * configure.in: Check for sys/sysctl.h and sysctl.
+       * physmem.c: Add support for *bsd and darwin.
+       * Makefile.in: Generate depedency for physmem.o.
+
 2003-02-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
        * physmem.c (physmem_total) [HAVE_GETSYSINFO]: Use getsysinfo on
index a12ebb156f4bd0f692c193621c9f01718ac97d71..064179669bd84dc6bdaa2c9306d900197c3a7dc9 100644 (file)
@@ -466,6 +466,7 @@ pex-msdos.o: config.h pex-common.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
 pex-os2.o: config.h pex-common.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
 pex-unix.o: config.h pex-common.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
 pex-win32.o: config.h pex-common.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+physmem.o: config.h $(INCDIR)/libiberty.h
 putenv.o: config.h $(INCDIR)/ansidecl.h
 random.o: $(INCDIR)/ansidecl.h
 regex.o: config.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
index cd2e7356e5f339375910232d4a6d8ed60683aaaa..7b9dcb4884f04b7b1003c2a98028a94f4472978c 100644 (file)
 /* Define if you have the sysconf function.  */
 #undef HAVE_SYSCONF
 
+/* Define if you have the sysctl function.  */
+#undef HAVE_SYSCTL
+
 /* Define if you have the sysmp function.  */
 #undef HAVE_SYSMP
 
 /* Define if you have the <sys/stat.h> header file.  */
 #undef HAVE_SYS_STAT_H
 
+/* Define if you have the <sys/sysctl.h> header file.  */
+#undef HAVE_SYS_SYSCTL_H
+
 /* Define if you have the <sys/sysinfo.h> header file.  */
 #undef HAVE_SYS_SYSINFO_H
 
index 4d5b9ac33fc454139450d7b268bc927b0ae6bc1e..4805aacf79dc19caf49d534523e1a2eb5f63cca8 100755 (executable)
@@ -1356,7 +1356,7 @@ else
 fi
 echo "$ac_t""$CPP" 1>&6
 
-for ac_hdr in sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h
+for ac_hdr in sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -1739,7 +1739,7 @@ vars="sys_errlist sys_nerr sys_siglist"
 
 checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday"
 checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp"
-checkfuncs="$checkfuncs getsysinfo table"
+checkfuncs="$checkfuncs getsysinfo table sysctl"
 
 # These are neither executed nor required, but they help keep
 # autoheader happy without adding a bunch of text to acconfig.h.
@@ -2129,7 +2129,7 @@ else
 fi
 done
 
-  for ac_func in pstat_getstatic pstat_getdynamic sysmp getsysinfo table
+  for ac_func in pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
 echo "configure:2136: checking for $ac_func" >&5
index 3b842fcd6873fac6ed4cddfc24953634d0931f59..4aa73c850284a322705dcbafa4f885bd722ff7a8 100644 (file)
@@ -142,7 +142,7 @@ AC_SUBST_FILE(host_makefile_frag)
 # It's OK to check for header files.  Although the compiler may not be
 # able to link anything, it had better be able to at least compile
 # something.
-AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h)
+AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h)
 AC_HEADER_SYS_WAIT
 AC_HEADER_TIME
 
@@ -208,7 +208,7 @@ vars="sys_errlist sys_nerr sys_siglist"
 
 checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday"
 checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp"
-checkfuncs="$checkfuncs getsysinfo table"
+checkfuncs="$checkfuncs getsysinfo table sysctl"
 
 # These are neither executed nor required, but they help keep
 # autoheader happy without adding a bunch of text to acconfig.h.
@@ -220,7 +220,7 @@ if test "x" = "y"; then
   AC_CHECK_FUNCS(strtod strtol strtoul tmpnam vasprintf vfprintf vprintf)
   AC_CHECK_FUNCS(vsprintf waitpid getrusage on_exit psignal strerror strsignal)
   AC_CHECK_FUNCS(sysconf times sbrk gettimeofday ffs)
-  AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic sysmp getsysinfo table)
+  AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl)
   AC_CHECK_FUNCS(realpath canonicalize_file_name)
   AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
   AC_DEFINE(HAVE_SYS_NERR,    1, [Define if you have the sys_nerr variable.])
index 2011f0251bd1a3df3667909ac8854e8a03260722..c502a86c118df836be4bd9f13919fd898ff52798 100644 (file)
 #  include <sys/table.h>
 #endif
 
+#include <sys/types.h>
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+#if HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif
+
 #include "libiberty.h"
 
 /* Return the total amount of physical memory.  */
@@ -98,6 +108,18 @@ physmem_total ()
   }
 #endif
 
+#if HAVE_SYSCTL && defined HW_PHYSMEM
+  { /* This works on *bsd and darwin.  */
+    unsigned int physmem;
+    size_t len = sizeof(physmem);
+    static int mib[2] = {CTL_HW, HW_PHYSMEM};
+
+    if (sysctl(mib, ARRAY_SIZE(mib), &physmem, &len, NULL, 0) == 0
+       && len == sizeof (physmem))
+      return (double)physmem;
+  }
+#endif
+
   /* Return 0 if we can't determine the value.  */
   return 0;
 }
@@ -158,6 +180,18 @@ physmem_available ()
   }
 #endif
 
+#if HAVE_SYSCTL && defined HW_USERMEM
+  { /* This works on *bsd and darwin.  */
+    unsigned int usermem;
+    size_t len = sizeof(usermem);
+    static int mib[2] = {CTL_HW, HW_USERMEM};
+
+    if (sysctl(mib, ARRAY_SIZE(mib), &usermem, &len, NULL, 0) == 0
+       && len == sizeof (usermem))
+      return (double)usermem;
+  }
+#endif
+
   /* Guess 25% of physical memory.  */
   return physmem_total () / 4;
 }