* vm_page_dequeue: * * Remove the page from whichever page queue it's in, if any, before * returning. */
| 3688 | * returning. |
| 3689 | */ |
| 3690 | void |
| 3691 | vm_page_dequeue(vm_page_t m) |
| 3692 | { |
| 3693 | vm_page_astate_t new, old; |
| 3694 | |
| 3695 | old = vm_page_astate_load(m); |
| 3696 | do { |
| 3697 | if (old.queue == PQ_NONE) { |
| 3698 | KASSERT((old.flags & PGA_QUEUE_STATE_MASK) == 0, |
| 3699 | ("%s: page %p has unexpected queue state", |
| 3700 | __func__, m)); |
| 3701 | break; |
| 3702 | } |
| 3703 | new = old; |
| 3704 | new.flags &= ~PGA_QUEUE_OP_MASK; |
| 3705 | new.queue = PQ_NONE; |
| 3706 | } while (!vm_page_pqstate_commit_dequeue(m, &old, new)); |
| 3707 | |
| 3708 | } |
| 3709 | |
| 3710 | /* |
| 3711 | * Schedule the given page for insertion into the specified page queue. |
no test coverage detected