Justus Winter, le Fri 08 Nov 2013 21:24:20 +0100, a écrit :
> * mach-defpager/default_pager.c (dealloc_direct): Move function
> definition outside of pager_truncate.
Ack.
> ---
> mach-defpager/default_pager.c | 45
> +++++++++++++++++++++--------------------
> 1 file changed, 23 insertions(+), 22 deletions(-)
>
> diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
> index b445590..9dad4c2 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)
> --
> 1.7.10.4
>
>
--
Samuel
Actually, typing random strings in the Finder does the equivalent of
filename completion.
(Discussion in comp.os.linux.misc on the intuitiveness of commands: file
completion vs. the Mac Finder.)