You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
/* Compile-time symbols that this file uses:
apollo
BSD Real BSD, not just BSD-like.
+ convex
DGUX
eunice UNIX emulator under VMS.
hpux
+ MSDOS No-op for MSDOS.
NeXT
sgi
sequent Sequent Dynix 3.x.x (BSD)
UMAX
UMAX4_3
VMS
+ WIN32 No-op for Windows95/NT.
__linux__ Linux: assumes /proc filesystem mounted.
Support from Michael K. Johnson.
__NetBSD__ NetBSD: assumes /kern filesystem mounted.
#define decstation
#endif
-#if defined(sun) && defined(SVR4)
+#if (defined(sun) && defined(SVR4)) || defined (SOLARIS2)
#define SUNOS_5
#endif
#define LOAD_AVE_TYPE long
#endif
+#ifdef convex
+#define LOAD_AVE_TYPE double
+#ifndef LDAV_CVT
+#define LDAV_CVT(n) (n)
+#endif
+#endif
+
#endif /* No LOAD_AVE_TYPE. */
#ifdef OSF_ALPHA
: (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale));
#endif /* OSF_MIPS */
+#if !defined (LDAV_DONE) && (defined (MSDOS) || defined (WIN32))
+#define LDAV_DONE
+
+ /* A faithful emulation is going to have to be saved for a rainy day. */
+ for ( ; elem < nelem; elem++)
+ {
+ loadavg[elem] = 0.0;
+ }
+#endif /* MSDOS */
+
#if !defined (LDAV_DONE) && defined (OSF_ALPHA)
#define LDAV_DONE
#ifndef SUNOS_5
if (
-#ifndef _AIX
+#if !(defined (_AIX) && !defined (ps2))
nlist (KERNEL_FILE, nl)
#else /* _AIX */
knlist (nl, 1, sizeof (nl[0]))
#ifndef SUNOS_5
channel = open ("/dev/kmem", 0);
if (channel >= 0)
- getloadavg_initialized = 1;
+ {
+ /* Set the channel to close on exec, so it does not
+ litter any child's descriptor table. */
+#ifdef FD_SETFD
+#ifndef FD_CLOEXEC
+#define FD_CLOEXEC 1
+#endif
+ (void) fcntl (channel, F_SETFD, FD_CLOEXEC);
+#endif
+ getloadavg_initialized = 1;
+ }
#else /* SUNOS_5 */
/* We pass 0 for the kernel, corefile, and swapfile names
to use the currently running kernel. */
kd = kvm_open (0, 0, 0, O_RDONLY, 0);
- if (kd != 0)
+ if (kd != 0)
{
/* nlist the currently running kernel. */
kvm_nlist (kd, nl);