diff options
| author | Tao Bao <tbao@google.com> | 2014-12-04 15:24:28 -0800 |
|---|---|---|
| committer | Tao Bao <tbao@google.com> | 2014-12-04 15:24:28 -0800 |
| commit | 1f40be97b16ff895a50f48ae8dd1745f57688b6b (patch) | |
| tree | 90bf09026ded666938ba1c2682370fcbaa14d02c | |
| parent | 6bec3484ee1e90662c8c5e52c71fcdc430a7b619 (diff) | |
| download | bionic-1f40be97b16ff895a50f48ae8dd1745f57688b6b.zip bionic-1f40be97b16ff895a50f48ae8dd1745f57688b6b.tar.gz bionic-1f40be97b16ff895a50f48ae8dd1745f57688b6b.tar.bz2 | |
Add cache related sysconf queries
Several cache related queries are added, such as
_SC_LEVEL1_DCACHE_LINESIZE, _SC_LEVEL1_DCACHE_SIZE and etc. For the
moment, we always return 0 for these queries.
Change-Id: I36f67af8128672d8c1eef49d6f2431cca5a94719
| -rw-r--r-- | libc/bionic/sysconf.cpp | 18 | ||||
| -rw-r--r-- | libc/include/sys/sysconf.h | 16 |
2 files changed, 34 insertions, 0 deletions
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp index 67f48e7..4180721 100644 --- a/libc/bionic/sysconf.cpp +++ b/libc/bionic/sysconf.cpp @@ -178,6 +178,24 @@ long sysconf(int name) { case _SC_XOPEN_STREAMS: return -1; // Obsolescent in POSIX.1-2008. case _SC_XOPEN_UUCP: return -1; + // We do not have actual implementations for cache queries. + // It's valid to return 0 as the result is unknown. + case _SC_LEVEL1_ICACHE_SIZE: return 0; + case _SC_LEVEL1_ICACHE_ASSOC: return 0; + case _SC_LEVEL1_ICACHE_LINESIZE: return 0; + case _SC_LEVEL1_DCACHE_SIZE: return 0; + case _SC_LEVEL1_DCACHE_ASSOC: return 0; + case _SC_LEVEL1_DCACHE_LINESIZE: return 0; + case _SC_LEVEL2_CACHE_SIZE: return 0; + case _SC_LEVEL2_CACHE_ASSOC: return 0; + case _SC_LEVEL2_CACHE_LINESIZE: return 0; + case _SC_LEVEL3_CACHE_SIZE: return 0; + case _SC_LEVEL3_CACHE_ASSOC: return 0; + case _SC_LEVEL3_CACHE_LINESIZE: return 0; + case _SC_LEVEL4_CACHE_SIZE: return 0; + case _SC_LEVEL4_CACHE_ASSOC: return 0; + case _SC_LEVEL4_CACHE_LINESIZE: return 0; + default: // Posix says EINVAL is the only error that shall be returned, // but glibc uses ENOSYS. diff --git a/libc/include/sys/sysconf.h b/libc/include/sys/sysconf.h index 8aa506e..ca32132 100644 --- a/libc/include/sys/sysconf.h +++ b/libc/include/sys/sysconf.h @@ -172,6 +172,22 @@ __BEGIN_DECLS #define _SC_XOPEN_STREAMS 0x008d #define _SC_XOPEN_UUCP 0x008e +#define _SC_LEVEL1_ICACHE_SIZE 0x008f +#define _SC_LEVEL1_ICACHE_ASSOC 0x0090 +#define _SC_LEVEL1_ICACHE_LINESIZE 0x0091 +#define _SC_LEVEL1_DCACHE_SIZE 0x0092 +#define _SC_LEVEL1_DCACHE_ASSOC 0x0093 +#define _SC_LEVEL1_DCACHE_LINESIZE 0x0094 +#define _SC_LEVEL2_CACHE_SIZE 0x0095 +#define _SC_LEVEL2_CACHE_ASSOC 0x0096 +#define _SC_LEVEL2_CACHE_LINESIZE 0x0097 +#define _SC_LEVEL3_CACHE_SIZE 0x0098 +#define _SC_LEVEL3_CACHE_ASSOC 0x0099 +#define _SC_LEVEL3_CACHE_LINESIZE 0x009a +#define _SC_LEVEL4_CACHE_SIZE 0x009b +#define _SC_LEVEL4_CACHE_ASSOC 0x009c +#define _SC_LEVEL4_CACHE_LINESIZE 0x009d + long sysconf(int); __END_DECLS |
