diff options
author | Owain Ainsworth <oga@cvs.openbsd.org> | 2009-05-05 05:12:18 +0000 |
---|---|---|
committer | Owain Ainsworth <oga@cvs.openbsd.org> | 2009-05-05 05:12:18 +0000 |
commit | 2ca0420015a74e63df7b050b2128a444db29fdba (patch) | |
tree | a372e6a26ed8034c4fa9f1415dd057073476d657 /sys/uvm/uvm_aobj.h | |
parent | 71fba0a7a9467d4c3ad3de9a82987215f224e965 (diff) |
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@, beck@.
Diffstat (limited to 'sys/uvm/uvm_aobj.h')
-rw-r--r-- | sys/uvm/uvm_aobj.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/sys/uvm/uvm_aobj.h b/sys/uvm/uvm_aobj.h index ac5cbc25bae..b30e9026b07 100644 --- a/sys/uvm/uvm_aobj.h +++ b/sys/uvm/uvm_aobj.h @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_aobj.h,v 1.8 2002/03/14 01:27:18 millert Exp $ */ +/* $OpenBSD: uvm_aobj.h,v 1.9 2009/05/05 05:12:17 oga Exp $ */ /* $NetBSD: uvm_aobj.h,v 1.10 2000/01/11 06:57:49 chs Exp $ */ /* @@ -55,8 +55,6 @@ #define UAO_FLAG_KERNSWAP 0x2 /* enable kernel swap */ /* internal flags */ -#define UAO_FLAG_KILLME 0x4 /* aobj should die when last released - * page is no longer PG_BUSY ... */ #define UAO_FLAG_NOSWAP 0x8 /* aobj can't swap (kernel obj only!) */ #ifdef _KERNEL |