Module Name: src Committed By: christos Date: Fri Nov 2 21:43:07 UTC 2012
Modified Files: src/lib/libc/gen: sysconf.c Log Message: Add _SC_PHYS_PAGES To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/lib/libc/gen/sysconf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/gen/sysconf.c diff -u src/lib/libc/gen/sysconf.c:1.34 src/lib/libc/gen/sysconf.c:1.35 --- src/lib/libc/gen/sysconf.c:1.34 Wed Aug 1 11:24:22 2012 +++ src/lib/libc/gen/sysconf.c Fri Nov 2 17:43:07 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: sysconf.c,v 1.34 2012/08/01 15:24:22 martin Exp $ */ +/* $NetBSD: sysconf.c,v 1.35 2012/11/02 21:43:07 christos Exp $ */ /*- * Copyright (c) 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)sysconf.c 8.2 (Berkeley) 3/20/94"; #else -__RCSID("$NetBSD: sysconf.c,v 1.34 2012/08/01 15:24:22 martin Exp $"); +__RCSID("$NetBSD: sysconf.c,v 1.35 2012/11/02 21:43:07 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -75,6 +75,7 @@ sysconf(int name) { struct rlimit rl; size_t len; + uint64_t mem; int mib[CTL_MAXNAME], value; unsigned int mib_len; struct clockinfo tmpclock; @@ -367,6 +368,14 @@ yesno: if (sysctl(mib, mib_len, &value, mib[1] = HW_NCPUONLINE; break; +/* Linux/Solaris */ + case _SC_PHYS_PAGES: + len = sizeof(mem); + mib[0] = CTL_HW; + mib[1] = HW_PHYSMEM64; + return sysctl(mib, 2, &mem, &len, NULL, 0) == -1 ? -1 : + (long)(mem / _getpagesize()); + /* Native */ case _SC_SCHED_RT_TS: if (sysctlgetmibinfo("kern.sched.rtts", &mib[0], &mib_len,