* Removed the automatic release of the "modified_pages_available" semaphore
in enqueue_page() - it doesn't really belong there. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22328 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -64,28 +64,28 @@ static sem_id modified_pages_available;
|
|||||||
|
|
||||||
/*! Dequeues a page from the tail of the given queue */
|
/*! Dequeues a page from the tail of the given queue */
|
||||||
static vm_page *
|
static vm_page *
|
||||||
dequeue_page(page_queue *q)
|
dequeue_page(page_queue *queue)
|
||||||
{
|
{
|
||||||
vm_page *page;
|
vm_page *page;
|
||||||
|
|
||||||
page = q->tail;
|
page = queue->tail;
|
||||||
if (page != NULL) {
|
if (page != NULL) {
|
||||||
if (q->head == page)
|
if (queue->head == page)
|
||||||
q->head = NULL;
|
queue->head = NULL;
|
||||||
if (page->queue_prev != NULL)
|
if (page->queue_prev != NULL)
|
||||||
page->queue_prev->queue_next = NULL;
|
page->queue_prev->queue_next = NULL;
|
||||||
|
|
||||||
q->tail = page->queue_prev;
|
queue->tail = page->queue_prev;
|
||||||
q->count--;
|
queue->count--;
|
||||||
|
|
||||||
#ifdef DEBUG_PAGE_QUEUE
|
#ifdef DEBUG_PAGE_QUEUE
|
||||||
if (page->queue != q) {
|
if (page->queue != queue) {
|
||||||
panic("dequeue_page(queue: %p): page %p thinks it is in queue "
|
panic("dequeue_page(queue: %p): page %p thinks it is in queue "
|
||||||
"%p", q, page, page->queue);
|
"%p", queue, page, page->queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
page->queue = NULL;
|
page->queue = NULL;
|
||||||
#endif // DEBUG_PAGE_QUEUE
|
#endif // DEBUG_PAGE_QUEUE
|
||||||
}
|
}
|
||||||
|
|
||||||
return page;
|
return page;
|
||||||
@@ -94,44 +94,39 @@ dequeue_page(page_queue *q)
|
|||||||
|
|
||||||
/*! Enqueues a page to the head of the given queue */
|
/*! Enqueues a page to the head of the given queue */
|
||||||
static void
|
static void
|
||||||
enqueue_page(page_queue *q, vm_page *page)
|
enqueue_page(page_queue *queue, vm_page *page)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_PAGE_QUEUE
|
#ifdef DEBUG_PAGE_QUEUE
|
||||||
if (page->queue != NULL) {
|
if (page->queue != NULL) {
|
||||||
panic("enqueue_page(queue: %p, page: %p): page thinks it is "
|
panic("enqueue_page(queue: %p, page: %p): page thinks it is "
|
||||||
"already in queue %p", q, page, page->queue);
|
"already in queue %p", queue, page, page->queue);
|
||||||
}
|
}
|
||||||
#endif // DEBUG_PAGE_QUEUE
|
#endif // DEBUG_PAGE_QUEUE
|
||||||
|
|
||||||
if (q->head != NULL)
|
if (queue->head != NULL)
|
||||||
q->head->queue_prev = page;
|
queue->head->queue_prev = page;
|
||||||
page->queue_next = q->head;
|
page->queue_next = queue->head;
|
||||||
q->head = page;
|
queue->head = page;
|
||||||
page->queue_prev = NULL;
|
page->queue_prev = NULL;
|
||||||
if (q->tail == NULL)
|
if (queue->tail == NULL)
|
||||||
q->tail = page;
|
queue->tail = page;
|
||||||
q->count++;
|
queue->count++;
|
||||||
|
|
||||||
#ifdef DEBUG_PAGE_QUEUE
|
#ifdef DEBUG_PAGE_QUEUE
|
||||||
page->queue = q;
|
page->queue = queue;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (q == &sModifiedPageQueue) {
|
|
||||||
if (q->count == 1)
|
|
||||||
release_sem_etc(modified_pages_available, 1, B_DO_NOT_RESCHEDULE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
remove_page_from_queue(page_queue *queue, vm_page *page)
|
remove_page_from_queue(page_queue *queue, vm_page *page)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_PAGE_QUEUE
|
#ifdef DEBUG_PAGE_QUEUE
|
||||||
if (page->queue != queue) {
|
if (page->queue != queue) {
|
||||||
panic("remove_page_from_queue(queue: %p, page: %p): page thinks it "
|
panic("remove_page_from_queue(queue: %p, page: %p): page thinks it "
|
||||||
"is in queue %p", queue, page, page->queue);
|
"is in queue %p", queue, page, page->queue);
|
||||||
}
|
}
|
||||||
#endif // DEBUG_PAGE_QUEUE
|
#endif // DEBUG_PAGE_QUEUE
|
||||||
|
|
||||||
if (page->queue_prev != NULL)
|
if (page->queue_prev != NULL)
|
||||||
page->queue_prev->queue_next = page->queue_next;
|
page->queue_prev->queue_next = page->queue_next;
|
||||||
@@ -145,9 +140,9 @@ remove_page_from_queue(page_queue *queue, vm_page *page)
|
|||||||
|
|
||||||
queue->count--;
|
queue->count--;
|
||||||
|
|
||||||
#ifdef DEBUG_PAGE_QUEUE
|
#ifdef DEBUG_PAGE_QUEUE
|
||||||
page->queue = NULL;
|
page->queue = NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user