X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fthreads%2Fpalloc.c;h=cef065ae98f11a9e7cac3cee0971a4435949c1ef;hb=91e7e153016968cb1276f0f81d1b0a50879a7f32;hp=7e6a967a9d884559a672ee382ba135be35552330;hpb=04abef1571d323539c9a9e2e29e5ddc47126b417;p=pintos-anon diff --git a/src/threads/palloc.c b/src/threads/palloc.c index 7e6a967..cef065a 100644 --- a/src/threads/palloc.c +++ b/src/threads/palloc.c @@ -143,8 +143,8 @@ palloc_free_multiple (void *pages, size_t page_cnt) memset (pages, 0xcc, PGSIZE * page_cnt); #endif - ASSERT (bitmap_all (pool->used_map, page_idx, page_idx + page_cnt)); - bitmap_set_multiple (pool->used_map, page_idx, page_idx + page_cnt, false); + ASSERT (bitmap_all (pool->used_map, page_idx, page_cnt)); + bitmap_set_multiple (pool->used_map, page_idx, page_cnt, false); } /* Frees the page at PAGE. */ @@ -162,7 +162,7 @@ init_pool (struct pool *p, void *base, size_t page_cnt, const char *name) /* We'll put the pool's used_map at its base. Calculate the space needed for the bitmap and subtract it from the pool's size. */ - size_t bm_pages = DIV_ROUND_UP (bitmap_needed_bytes (page_cnt), PGSIZE); + size_t bm_pages = DIV_ROUND_UP (bitmap_buf_size (page_cnt), PGSIZE); if (bm_pages > page_cnt) PANIC ("Not enough memory in %s for bitmap.", name); page_cnt -= bm_pages; @@ -170,9 +170,8 @@ init_pool (struct pool *p, void *base, size_t page_cnt, const char *name) printf ("%zu pages available in %s.\n", page_cnt, name); /* Initialize the pool. */ - lock_init (&p->lock, name); - p->used_map = bitmap_create_preallocated (page_cnt, base, - bm_pages * PGSIZE); + lock_init (&p->lock); + p->used_map = bitmap_create_in_buf (page_cnt, base, bm_pages * PGSIZE); p->base = base + bm_pages * PGSIZE; }