-ptr_t
-pmm_alloc_page(pid_t owner, pp_attr_t attr)
-{
- // Next fit approach. Maximize the throughput!
- ptr_t good_page_found = (ptr_t)NULL;
- size_t old_pg_ptr = pg_lookup_ptr;
- size_t upper_lim = max_pg;
- struct pp_struct* pm;
- while (!good_page_found && pg_lookup_ptr < upper_lim) {
- pm = &pm_table[pg_lookup_ptr];
-
- if (!pm->ref_counts) {
- *pm = (struct pp_struct){ .attr = attr,
- .owner = owner,
- .ref_counts = 1 };
- good_page_found = pg_lookup_ptr << 12;
- break;