summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTao Bao <tbao@google.com>2014-12-04 15:24:28 -0800
committerTao Bao <tbao@google.com>2014-12-04 15:24:28 -0800
commit1f40be97b16ff895a50f48ae8dd1745f57688b6b (patch)
tree90bf09026ded666938ba1c2682370fcbaa14d02c
parent6bec3484ee1e90662c8c5e52c71fcdc430a7b619 (diff)
downloadbionic-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.cpp18
-rw-r--r--libc/include/sys/sysconf.h16
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