Remove .cvsignore from build directories; put `build' in higher level
[pintos-anon] / src / threads / palloc.c
index c99abe35daaafb66568bce5b24256be1e02a6660..545a7d4c20e15937b2c298dcf3190536388cc55b 100644 (file)
@@ -85,8 +85,9 @@ palloc_get_multiple (enum palloc_flags flags, size_t page_cnt)
     return NULL;
 
   lock_acquire (&pool->lock);
-
   page_idx = bitmap_scan_and_flip (pool->used_map, 0, page_cnt, false);
+  lock_release (&pool->lock);
+
   if (page_idx != BITMAP_ERROR)
     pages = pool->base + PGSIZE * page_idx;
   else
@@ -103,8 +104,6 @@ palloc_get_multiple (enum palloc_flags flags, size_t page_cnt)
         PANIC ("palloc_get: out of pages");
     }
 
-  lock_release (&pool->lock);
-  
   return pages;
 }
 
@@ -144,10 +143,8 @@ palloc_free_multiple (void *pages, size_t page_cnt)
   memset (pages, 0xcc, PGSIZE * page_cnt);
 #endif
 
-  lock_acquire (&pool->lock);
-  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);
-  lock_release (&pool->lock);
+  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. */