From f98d60ae0497903f9eddf676514005d6ade2af00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 27 Sep 2007 12:12:24 +0000 Subject: [PATCH] * 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 --- src/system/kernel/vm/vm_page.cpp | 87 +++++++++++++++----------------- 1 file changed, 41 insertions(+), 46 deletions(-) diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index a451fb13f5..f107621238 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -64,28 +64,28 @@ static sem_id modified_pages_available; /*! Dequeues a page from the tail of the given queue */ static vm_page * -dequeue_page(page_queue *q) +dequeue_page(page_queue *queue) { vm_page *page; - page = q->tail; + page = queue->tail; if (page != NULL) { - if (q->head == page) - q->head = NULL; + if (queue->head == page) + queue->head = NULL; if (page->queue_prev != NULL) page->queue_prev->queue_next = NULL; - q->tail = page->queue_prev; - q->count--; + queue->tail = page->queue_prev; + queue->count--; - #ifdef DEBUG_PAGE_QUEUE - if (page->queue != q) { - panic("dequeue_page(queue: %p): page %p thinks it is in queue " - "%p", q, page, page->queue); - } +#ifdef DEBUG_PAGE_QUEUE + if (page->queue != queue) { + panic("dequeue_page(queue: %p): page %p thinks it is in queue " + "%p", queue, page, page->queue); + } - page->queue = NULL; - #endif // DEBUG_PAGE_QUEUE + page->queue = NULL; +#endif // DEBUG_PAGE_QUEUE } return page; @@ -94,44 +94,39 @@ dequeue_page(page_queue *q) /*! Enqueues a page to the head of the given queue */ static void -enqueue_page(page_queue *q, vm_page *page) +enqueue_page(page_queue *queue, vm_page *page) { - #ifdef DEBUG_PAGE_QUEUE - if (page->queue != NULL) { - panic("enqueue_page(queue: %p, page: %p): page thinks it is " - "already in queue %p", q, page, page->queue); - } - #endif // DEBUG_PAGE_QUEUE - - if (q->head != NULL) - q->head->queue_prev = page; - page->queue_next = q->head; - q->head = page; - page->queue_prev = NULL; - if (q->tail == NULL) - q->tail = page; - q->count++; - - #ifdef DEBUG_PAGE_QUEUE - page->queue = q; - #endif - - if (q == &sModifiedPageQueue) { - if (q->count == 1) - release_sem_etc(modified_pages_available, 1, B_DO_NOT_RESCHEDULE); +#ifdef DEBUG_PAGE_QUEUE + if (page->queue != NULL) { + panic("enqueue_page(queue: %p, page: %p): page thinks it is " + "already in queue %p", queue, page, page->queue); } +#endif // DEBUG_PAGE_QUEUE + + if (queue->head != NULL) + queue->head->queue_prev = page; + page->queue_next = queue->head; + queue->head = page; + page->queue_prev = NULL; + if (queue->tail == NULL) + queue->tail = page; + queue->count++; + +#ifdef DEBUG_PAGE_QUEUE + page->queue = queue; +#endif } static void remove_page_from_queue(page_queue *queue, vm_page *page) { - #ifdef DEBUG_PAGE_QUEUE - if (page->queue != queue) { - panic("remove_page_from_queue(queue: %p, page: %p): page thinks it " - "is in queue %p", queue, page, page->queue); - } - #endif // DEBUG_PAGE_QUEUE +#ifdef DEBUG_PAGE_QUEUE + if (page->queue != queue) { + panic("remove_page_from_queue(queue: %p, page: %p): page thinks it " + "is in queue %p", queue, page, page->queue); + } +#endif // DEBUG_PAGE_QUEUE if (page->queue_prev != NULL) page->queue_prev->queue_next = page->queue_next; @@ -145,9 +140,9 @@ remove_page_from_queue(page_queue *queue, vm_page *page) queue->count--; - #ifdef DEBUG_PAGE_QUEUE - page->queue = NULL; - #endif +#ifdef DEBUG_PAGE_QUEUE + page->queue = NULL; +#endif }