CVSROOT: /cvs Module name: src Changes by: o...@cvs.openbsd.org 2009/05/04 23:12:17
Modified files: sys/uvm : uvm_aobj.c uvm_aobj.h Log message: The first step in cleaning up the use of PG_RELEASED for uvm objects. Now, the PG_ RELEASED flag currently has two (maybe three) uses. The valid one is for use with async io where we want to free the page after we've paged it out. The other ones are "oh i'd like to free this, but someone else is playing with it". It's simpler to just sleep on the damned page instead and stop the fiddling. First step does uao's: in uao_detach, sleep on the object and free it when we're clean, instead of setting a flag so it's freed after. In uao_flush, do the same. Change the interation over the object in flush so that we don't have to add marker pages or other such voodoo to the list when we sleep (netbsd did that when they had a similar diff), just use the hash always. We can now change uao_releasepg() to just free the page, and not bother with the KILLME stuff. When the other objects are fixed this hook will vanish. Much discussion with art@ over the idea, and ariane@ over this specific diff. As mentioned, this one is based loosely on a similar idea in netbsd. Been in my tree for a while, survived many make builds, etc, and forcing paging using ariane's evil program. ok ariane@, b...@.