Page MenuHomeFreeBSD

uma_core: replace listq with plinks.q in temp lists
ClosedPublic

Authored by dougm on Wed, Apr 30, 10:13 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, May 5, 12:12 PM
Unknown Object (File)
Mon, May 5, 10:28 AM
Unknown Object (File)
Mon, May 5, 10:11 AM
Unknown Object (File)
Mon, May 5, 7:06 AM
Unknown Object (File)
Mon, May 5, 6:37 AM
Unknown Object (File)
Sun, May 4, 2:19 PM
Unknown Object (File)
Sun, May 4, 3:32 AM
Unknown Object (File)
Thu, May 1, 9:29 AM
Subscribers

Details

Summary

Change the two functions that use local tailq variables to use the plinks.q field, instead of the listq field, for the pointers.

This should resolve one source of conflict should the tailq field and the object field come to share the same space in some future change to the vm_page definition.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

dougm created this revision.

Use a single call to pmap_qenter rather than having it in a loop.

dougm retitled this revision from uma_core: replace local tailqs with local arrays to uma_core: replace listq with plinks.q in temp lists.
dougm edited the summary of this revision. (Show Details)

Throw it all out, as @alc suggests that the arrays could be too big. Just switch from using listq to using plinks.q for the temporary lists.

This revision is now accepted and ready to land.Thu, May 1, 3:58 AM

The key here is that all page allocation functions call vm_page_dequeue(), completing any lingering page queue operations that involve the plinks.q field.