summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-11-06 17:05:41 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2013-11-09 19:42:35 +0100
commitb31164eeecf3f798f75a71577ae365daf8211946 (patch)
treef04f023e959e7d64e5ffa8ecb49e56b32766408b
parentbd55e5ccce4b35ffb1028d7810b93df3b7522d05 (diff)
mach-defpager: turn dealloc_direct into a normal function
* mach-defpager/default_pager.c (dealloc_direct): Move function definition outside of pager_truncate.
-rw-r--r--mach-defpager/default_pager.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
index b4455900..9dad4c21 100644
--- a/mach-defpager/default_pager.c
+++ b/mach-defpager/default_pager.c
@@ -1061,6 +1061,29 @@ pager_extend(pager, new_size)
pthread_mutex_unlock(&pager->lock);
}
+/* This deallocates the pages necessary to truncate a direct map
+ previously of size NEW_SIZE to the smaller size OLD_SIZE. */
+static void
+dealloc_direct (dp_map_t mapptr,
+ vm_size_t old_size, vm_size_t new_size)
+{
+ vm_size_t i;
+
+ if (!mapptr)
+ return;
+
+ for (i = new_size; i < old_size; ++i)
+ {
+ const union dp_map entry = mapptr[i];
+ if (!no_block(entry))
+ {
+ pager_dealloc_page(entry.block.p_index, entry.block.p_offset,
+ TRUE);
+ invalidate_block(mapptr[i]);
+ }
+ }
+}
+
/* Truncate a memory object. First, any pages between the new size
and the (larger) old size are deallocated. Then, the size of
the pagemap may be reduced, an indirect map may be turned into
@@ -1075,28 +1098,6 @@ pager_truncate(dpager_t pager, vm_size_t new_size) /* in pages */
int i;
vm_size_t old_size;
- /* This deallocates the pages necessary to truncate a direct map
- previously of size NEW_SIZE to the smaller size OLD_SIZE. */
- inline void dealloc_direct (dp_map_t mapptr,
- vm_size_t old_size, vm_size_t new_size)
- {
- vm_size_t i;
-
- if (!mapptr)
- return;
-
- for (i = new_size; i < old_size; ++i)
- {
- const union dp_map entry = mapptr[i];
- if (!no_block(entry))
- {
- pager_dealloc_page(entry.block.p_index, entry.block.p_offset,
- TRUE);
- invalidate_block(mapptr[i]);
- }
- }
- }
-
pthread_mutex_lock(&pager->lock); /* XXX lock_write */
if (!pager->map)