+static struct ppage*
+__select_free_page_from(struct list_head* bucket)
+{
+ struct list_node* sib;
+ struct ppage* page;
+
+ do {
+ sib = list_pop_head(bucket);
+ page = sib ? slist_entry(sib, struct ppage, sibs) : NULL;
+ } while (page && __uninitialized_page(page));
+
+ return page;
+}
+