Browse code

bb#1940

aCaB authored on 2010/05/16 05:32:44
Showing 5 changed files
... ...
@@ -1,3 +1,7 @@
1
+Sat May 15 22:31:46 CEST 2010 (acab)
2
+------------------------------------
3
+ * fmap: check for anon maps are avail (bb#1940)
4
+
1 5
 Fri May 14 17:16:19 EEST 2010 (edwin)
2 6
 -------------------------------------
3 7
  * unit_tests: add bytecode.cvd load test
... ...
@@ -21,7 +21,7 @@
21 21
 /* enable clamuko */
22 22
 #undef CLAMUKO
23 23
 
24
-/* disable loading of unsigned bytecode */
24
+/* enable loading of unsigned bytecode */
25 25
 #undef CL_BCUNSIGNED
26 26
 
27 27
 /* enable debugging */
... ...
@@ -13985,7 +13985,7 @@ mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
13985 13985
   return 0;
13986 13986
 }
13987 13987
 _ACEOF
13988
-if ac_fn_c_try_compile "$LINENO"; then :
13988
+if ac_fn_c_try_link "$LINENO"; then :
13989 13989
   ac_cv_c_mmap_anonymous='MAP_ANONYMOUS'
13990 13990
 else
13991 13991
 
... ...
@@ -14014,7 +14014,8 @@ rm -f core conftest.err conftest.$ac_objext \
14014 14014
 
14015 14015
 
14016 14016
 fi
14017
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14017
+rm -f core conftest.err conftest.$ac_objext \
14018
+    conftest$ac_exeext conftest.$ac_ext
14018 14019
 
14019 14020
 fi
14020 14021
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_mmap_anonymous" >&5
... ...
@@ -30,7 +30,7 @@
30 30
 #ifdef HAVE_UNISTD_H
31 31
 #include <unistd.h>
32 32
 #endif
33
-#if HAVE_MMAP
33
+#ifdef ANONYMOUS_MAP
34 34
 #ifdef HAVE_SYS_MMAN_H
35 35
 #include <sys/mman.h>
36 36
 #endif
... ...
@@ -67,7 +67,7 @@ static inline unsigned int fmap_which_page(fmap_t *m, size_t at);
67 67
 #define UNPAGE_THRSHLD_HI 8*1024*1024
68 68
 #define READAHEAD_PAGES 8
69 69
 
70
-#if defined(HAVE_MMAP) && defined(C_LINUX) && defined(CL_THREAD_SAFE)
70
+#if defined(ANONYMOUS_MAP) && defined(C_LINUX) && defined(CL_THREAD_SAFE)
71 71
 /*
72 72
    WORKAROUND
73 73
    Relieve some stress on mmap_sem.
... ...
@@ -124,7 +124,7 @@ fmap_t *fmap_check_empty(int fd, off_t offset, size_t len, int *empty) {
124 124
     hdrsz = fmap_align_to(sizeof(fmap_t) + (pages-1) * sizeof(uint32_t), pgsz); /* fmap_t includes 1 bitmap slot, hence (pages-1) */
125 125
     mapsz = pages * pgsz + hdrsz;
126 126
     fmap_lock;
127
-#if HAVE_MMAP
127
+#ifdef ANONYMOUS_MAP
128 128
     if ((m = (fmap_t *)mmap(NULL, mapsz, PROT_READ | PROT_WRITE, MAP_PRIVATE|/*FIXME: MAP_POPULATE is ~8% faster but more memory intensive */ANONYMOUS_MAP, -1, 0)) == MAP_FAILED) {
129 129
 	m = NULL;
130 130
     } else {
... ...
@@ -133,9 +133,9 @@ fmap_t *fmap_check_empty(int fd, off_t offset, size_t len, int *empty) {
133 133
 	madvise((void *)m, mapsz, MADV_RANDOM|MADV_DONTFORK);
134 134
 #endif /* madvise */
135 135
     }
136
-#else /* ! HAVE_MMAP */
136
+#else /* ! ANONYMOUS_MAP */
137 137
     m = (fmap_t *)cli_malloc(mapsz);
138
-#endif /* HAVE_MMAP */
138
+#endif /* ANONYMOUS_MAP */
139 139
     if(!m) {
140 140
 	cli_warnmsg("fmap: map allocation failed\n");
141 141
 	fmap_unlock;
... ...
@@ -159,7 +159,7 @@ fmap_t *fmap_check_empty(int fd, off_t offset, size_t len, int *empty) {
159 159
 
160 160
 
161 161
 static void fmap_aging(fmap_t *m) {
162
-#if HAVE_MMAP
162
+#ifdef ANONYMOUS_MAP
163 163
     if(m->dumb) return;
164 164
     if(m->paged * m->pgsz > UNPAGE_THRSHLD_HI) { /* we alloc'd too much */
165 165
 	unsigned int i, avail = 0, freeme[2048], maxavail = MIN(sizeof(freeme)/sizeof(*freeme), m->paged - UNPAGE_THRSHLD_LO / m->pgsz) - 1;
... ...
@@ -410,7 +410,7 @@ void fmap_unneed_ptr(fmap_t *m, void *ptr, size_t len) {
410 410
 }
411 411
 
412 412
 void funmap(fmap_t *m) {
413
-#if HAVE_MMAP
413
+#ifdef ANONYMOUS_MAP
414 414
     if(!m->dumb) {
415 415
 	size_t len = m->pages * m->pgsz + m->hdrsz;
416 416
 	fmap_lock;
... ...
@@ -80,7 +80,7 @@ AC_DEFUN([AC_C_FUNC_MMAP_ANONYMOUS],
80 80
 [
81 81
 	AC_CACHE_CHECK([for MAP_ANON(YMOUS)], [ac_cv_c_mmap_anonymous],[
82 82
 		ac_cv_c_mmap_anonymous='no'
83
-		AC_COMPILE_IFELSE(
83
+		AC_LINK_IFELSE(
84 84
 			[AC_LANG_PROGRAM([[#include <sys/mman.h>]], [[mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);]])],
85 85
 			[ac_cv_c_mmap_anonymous='MAP_ANONYMOUS'],
86 86
 			[