diff options
| author | Rich Felker <dalias@aerifal.cx> | 2014-04-15 18:45:21 -0400 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2014-04-15 18:45:21 -0400 | 
| commit | 96315d27b0e5000d53e09fb915c5066b3d47d3d2 (patch) | |
| tree | 4643143db6b5eaa04a4e124b8f988d0370d29e47 /src | |
| parent | de20a8ffc5cf89134f035193ce1cdc2d76c88ee0 (diff) | |
| download | musl-96315d27b0e5000d53e09fb915c5066b3d47d3d2.tar.gz | |
add _SC_PHYS_PAGES and _SC_AVPHYS_PAGES extentions to sysconf
Diffstat (limited to 'src')
| -rw-r--r-- | src/conf/sysconf.c | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/src/conf/sysconf.c b/src/conf/sysconf.c index 9ac52a10..bf433d6b 100644 --- a/src/conf/sysconf.c +++ b/src/conf/sysconf.c @@ -3,6 +3,7 @@  #include <errno.h>  #include <sys/resource.h>  #include <signal.h> +#include <sys/sysinfo.h>  #include "syscall.h"  #include "libc.h" @@ -14,6 +15,8 @@  #define JT_SEM_VALUE_MAX JT(5)  #define JT_NPROCESSORS_CONF JT(6)  #define JT_NPROCESSORS_ONLN JT(7) +#define JT_PHYS_PAGES JT(8) +#define JT_AVPHYS_PAGES JT(9)  #define RLIM(x) (-32768|(RLIMIT_ ## x)) @@ -105,8 +108,8 @@ long sysconf(int name)  		[_SC_THREAD_PROCESS_SHARED] = VER,  		[_SC_NPROCESSORS_CONF] = JT_NPROCESSORS_CONF,  		[_SC_NPROCESSORS_ONLN] = JT_NPROCESSORS_ONLN, -		[_SC_PHYS_PAGES] = -1, -		[_SC_AVPHYS_PAGES] = -1, +		[_SC_PHYS_PAGES] = JT_PHYS_PAGES, +		[_SC_AVPHYS_PAGES] = JT_AVPHYS_PAGES,  		[_SC_ATEXIT_MAX] = -1,  		[_SC_PASS_MAX] = -1,  		[_SC_XOPEN_VERSION] = _XOPEN_VERSION, @@ -252,6 +255,18 @@ long sysconf(int name)  		for (i=cnt=0; i<sizeof set; i++)  			for (; set[i]; set[i]&=set[i]-1, cnt++);  		return cnt; +	case JT_PHYS_PAGES & 255: +	case JT_AVPHYS_PAGES & 255: ; +		unsigned long long mem; +		int __lsysinfo(struct sysinfo *); +		struct sysinfo si; +		__lsysinfo(&si); +		if (!si.mem_unit) si.mem_unit = 1; +		if (name==_SC_PHYS_PAGES) mem = si.totalram; +		else mem = si.freeram + si.bufferram; +		mem *= si.mem_unit; +		mem /= PAGE_SIZE; +		return (mem > LONG_MAX) ? LONG_MAX : mem;  	}  	return values[name];  }  | 
