summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorJason Evans <jasone@FreeBSD.org>2008-11-10 17:30:49 +0000
committerJason Evans <jasone@FreeBSD.org>2008-11-10 17:30:49 +0000
commitd05be0bb64586f5742b8efeaf997ac51b1db87e1 (patch)
treeba4f218364ab10c14b3721cbb46d557c03202f94 /lib/libc
parentdaa5cc82dee3d9f611c6ab66867ef5bc9c4c677f (diff)
Notes
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/stdlib/malloc.32
-rw-r--r--lib/libc/stdlib/malloc.c29
2 files changed, 18 insertions, 13 deletions
diff --git a/lib/libc/stdlib/malloc.3 b/lib/libc/stdlib/malloc.3
index 580b19a426b4..49a4026b532d 100644
--- a/lib/libc/stdlib/malloc.3
+++ b/lib/libc/stdlib/malloc.3
@@ -250,7 +250,7 @@ If both the
.Dq D
and
.Dq M
-options are enabled, the allocator prefers the DSS over anonymous mappings,
+options are enabled, the allocator prefers anonymous mappings over the DSS,
but allocation only fails if memory cannot be acquired via either method.
If neither option is enabled, then the
.Dq M
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
index 90420b22f4d9..5b3bd864a1ae 100644
--- a/lib/libc/stdlib/malloc.c
+++ b/lib/libc/stdlib/malloc.c
@@ -1275,11 +1275,6 @@ base_pages_alloc(size_t minsize)
{
#ifdef MALLOC_DSS
- if (opt_dss) {
- if (base_pages_alloc_dss(minsize) == false)
- return (false);
- }
-
if (opt_mmap && minsize != 0)
#endif
{
@@ -1287,6 +1282,14 @@ base_pages_alloc(size_t minsize)
return (false);
}
+#ifdef MALLOC_DSS
+ if (opt_dss) {
+ if (base_pages_alloc_dss(minsize) == false)
+ return (false);
+ }
+
+#endif
+
return (true);
}
@@ -1709,6 +1712,15 @@ chunk_alloc(size_t size, bool zero)
assert((size & chunksize_mask) == 0);
#ifdef MALLOC_DSS
+ if (opt_mmap)
+#endif
+ {
+ ret = chunk_alloc_mmap(size);
+ if (ret != NULL)
+ goto RETURN;
+ }
+
+#ifdef MALLOC_DSS
if (opt_dss) {
ret = chunk_recycle_dss(size, zero);
if (ret != NULL) {
@@ -1719,14 +1731,7 @@ chunk_alloc(size_t size, bool zero)
if (ret != NULL)
goto RETURN;
}
-
- if (opt_mmap)
#endif
- {
- ret = chunk_alloc_mmap(size);
- if (ret != NULL)
- goto RETURN;
- }
/* All strategies for allocation failed. */
ret = NULL;