[PATCH 3/5] Use sysconf(_SC_PAGESIZE) to determine PAGE_SIZE
Dan Fandrich
dan at coneharvesters.com
Wed Jun 1 20:35:42 UTC 2011
This seems to be the most portable way to determine page size,
and the only portable way on systems where it is dynamic.
Signed-off-by: Dan Fandrich <dan at coneharvesters.com>
---
libbb/appletlib.c | 17 ++++-------------
1 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index 0dac0ba..955f680 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -34,17 +34,8 @@
# include <malloc.h> /* for mallopt */
#endif
-/* Try to pull in PAGE_SIZE */
-#ifdef __linux__
-# include <sys/user.h>
-#endif
-#ifdef __GNU__ /* Hurd */
-# include <mach/vm_param.h>
-#endif
-#ifndef PAGE_SIZE
-# define PAGE_SIZE (4*1024) /* guess */
-#endif
-
+/* Use 4096 if page size can't be otherwise determined */
+#define CURRENT_PAGE_SIZE ({long ps = sysconf(_SC_PAGESIZE); ps > 0 ? ps : 4*1024;})
/* Declare <applet>_main() */
#define PROTOTYPES
@@ -788,13 +779,13 @@ int main(int argc UNUSED_PARAM, char **argv)
* to keep before releasing to the OS
* Default is way too big: 256k
*/
- mallopt(M_TRIM_THRESHOLD, 2 * PAGE_SIZE);
+ mallopt(M_TRIM_THRESHOLD, 2 * CURRENT_PAGE_SIZE);
#endif
#ifdef M_MMAP_THRESHOLD
/* M_MMAP_THRESHOLD is the request size threshold for using mmap()
* Default is too big: 256k
*/
- mallopt(M_MMAP_THRESHOLD, 8 * PAGE_SIZE - 256);
+ mallopt(M_MMAP_THRESHOLD, 8 * CURRENT_PAGE_SIZE - 256);
#endif
#if !BB_MMU
--
1.5.3.2
More information about the busybox
mailing list