diff options
Diffstat (limited to 'libstore/derive.c')
-rw-r--r-- | libstore/derive.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/libstore/derive.c b/libstore/derive.c index 63cf3430..a76fbe1c 100644 --- a/libstore/derive.c +++ b/libstore/derive.c @@ -1,9 +1,7 @@ /* Calculation of various derived store fields - Copyright (C) 1995, 1996 Free Software Foundation, Inc. - - Written by Miles Bader <miles@gnu.ai.mit.edu> - + Copyright (C) 1995-97,2001 Free Software Foundation, Inc. + Written by Miles Bader <miles@gnu.org> This file is part of the GNU Hurd. The GNU Hurd is free software; you can redistribute it and/or @@ -18,7 +16,11 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ + +#include <assert.h> +#include <sys/types.h> +#include <mach.h> #include "store.h" @@ -34,6 +36,7 @@ _store_derive (struct store *store) /* BLOCK & SIZE */ store->blocks = 0; + store->wrap_src = 0; for (i = 0; i < num_runs; i++) { @@ -50,7 +53,7 @@ _store_derive (struct store *store) to include all iterations. */ { size_t num_iters = store->end / store->wrap_src; - off_t last_part_base = num_iters * store->wrap_src; + store_offset_t last_part_base = num_iters * store->wrap_src; store->blocks *= num_iters; @@ -68,17 +71,17 @@ _store_derive (struct store *store) store->size = store->end * bsize; - /* LOG2_BLOCK_SIZE */ store->log2_block_size = 0; - while ((1 << store->log2_block_size) < bsize) - store->log2_block_size++; - if ((1 << store->log2_block_size) != bsize) - store->log2_block_size = 0; - - /* LOG2_BLOCKS_PER_PAGE */ store->log2_blocks_per_page = 0; - while ((bsize << store->log2_blocks_per_page) < vm_page_size) - store->log2_blocks_per_page++; - if ((bsize << store->log2_blocks_per_page) != vm_page_size) - store->log2_blocks_per_page = 0; + + if (bsize != 0) + { + while ((1 << store->log2_block_size) < bsize) + store->log2_block_size++; + assert ((1 << store->log2_block_size) == bsize); + + while ((bsize << store->log2_blocks_per_page) < vm_page_size) + store->log2_blocks_per_page++; + assert ((bsize << store->log2_blocks_per_page) == vm_page_size); + } } |