summaryrefslogtreecommitdiffstats
path: root/usr/include/sys/sysconf.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/include/sys/sysconf.h')
-rw-r--r--usr/include/sys/sysconf.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/usr/include/sys/sysconf.h b/usr/include/sys/sysconf.h
new file mode 100644
index 0000000..13ababc
--- /dev/null
+++ b/usr/include/sys/sysconf.h
@@ -0,0 +1,40 @@
+/*
+ * sys/sysconf.h
+ *
+ * sysconf() macros and demultiplex
+ * This file is included in <unistd.h>
+ *
+ * Add things here as needed, we don't really want to add things wildly.
+ * For things that require a lot of code, create an out-of-line function
+ * and put it in a .c file in the sysconf directory.
+ */
+
+#ifndef _SYS_SYSCONF_H
+#define _SYS_SYSCONF_H
+
+#ifndef _UNISTD_H
+# include <unistd.h>
+#endif
+#include <errno.h>
+
+enum sysconf {
+ _SC_PAGESIZE = 1,
+};
+
+__extern long sysconf(int);
+
+__must_inline long __sysconf_inline(int __val)
+{
+ switch (__val) {
+ case _SC_PAGESIZE:
+ return getpagesize();
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+}
+
+#define sysconf(x) \
+ (__builtin_constant_p(x) ? __sysconf_inline(x) : sysconf(x))
+
+#endif /* _SYS_SYSCONF_H */