MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vm_page_pqstate_commit_dequeue

Function vm_page_pqstate_commit_dequeue

freebsd/vm/vm_page.c:3416–3440  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3414}
3415
3416static bool
3417vm_page_pqstate_commit_dequeue(vm_page_t m, vm_page_astate_t *old,
3418 vm_page_astate_t new)
3419{
3420 struct vm_pagequeue *pq;
3421 vm_page_astate_t as;
3422 bool ret;
3423
3424 pq = _vm_page_pagequeue(m, old->queue);
3425
3426 /*
3427 * The queue field and PGA_ENQUEUED flag are stable only so long as the
3428 * corresponding page queue lock is held.
3429 */
3430 vm_pagequeue_lock(pq);
3431 as = vm_page_astate_load(m);
3432 if (__predict_false(as._bits != old->_bits)) {
3433 *old = as;
3434 ret = false;
3435 } else {
3436 ret = _vm_page_pqstate_commit_dequeue(pq, m, old, new);
3437 }
3438 vm_pagequeue_unlock(pq);
3439 return (ret);
3440}
3441
3442/*
3443 * Commit a queue state update that enqueues or requeues a page.

Callers 2

vm_page_pqstate_commitFunction · 0.85
vm_page_dequeueFunction · 0.85

Calls 3

_vm_page_pagequeueFunction · 0.85
vm_page_astate_loadFunction · 0.85

Tested by

no test coverage detected