944,11 → 944,11 |
|
/** Free a frame. |
* |
* Find respective frame structure for supplied addr. |
* Find respective frame structure for supplied PFN. |
* Decrement frame reference count. |
* If it drops to zero, move the frame structure to free list. |
* |
* @param frame Frame no to be freed. |
* @param frame Frame number to be freed. |
*/ |
void frame_free(pfn_t pfn) |
{ |
969,8 → 969,34 |
interrupts_restore(ipl); |
} |
|
/** Add reference to frame. |
* |
* Find respective frame structure for supplied PFN and |
* increment frame reference count. |
* |
* @param frame Frame no to be freed. |
*/ |
void frame_reference_add(pfn_t pfn) |
{ |
ipl_t ipl; |
zone_t *zone; |
frame_t *frame; |
|
ipl = interrupts_disable(); |
|
/* |
* First, find host frame zone for addr. |
*/ |
zone = find_zone_and_lock(pfn,NULL); |
ASSERT(zone); |
|
frame = &zone->frames[pfn-zone->base]; |
frame->refcount++; |
|
spinlock_unlock(&zone->lock); |
interrupts_restore(ipl); |
} |
|
/** Mark given range unavailable in frame zones */ |
void frame_mark_unavailable(pfn_t start, count_t count) |
{ |