X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=kernel%2Finclude%2Fkern%2Forb.h;fp=kernel%2Finclude%2Fkern%2Forb.h;h=22664ec2d006dac80c92d67ce6dae7a24939c4e5;hp=f9654341589af29f27fb95ff5de3c62b54e2af76;hb=139f54779f6395a1828261423cd8013ca940ff36;hpb=00929a1561b0f510a582f9876affa96e4fccb72a diff --git a/kernel/include/kern/orb.h b/kernel/include/kern/orb.h index f965434..22664ec 100644 --- a/kernel/include/kern/orb.h +++ b/kernel/include/kern/orb.h @@ -49,17 +49,9 @@ namespace ORB { CallFrame frames[0]; }; + static const ID invalid_id = 0xffffffff; struct ObjectHdr { ID id; - - union { - struct { - u32 Valid:1; - u32 Pointer:1; - }; - - u32 flags; - }; }; struct Object : public ObjectHdr { @@ -70,19 +62,15 @@ namespace ORB { Object *object; }; - union ObjTableEntry { - ObjectHdr hdr; - Object obj; - ObjectPtr ptr; - }; - - typedef Util::RadixTree IDTable; + typedef Util::RadixTree LocalIDTable; + typedef Util::RadixTree RemoteIDTable; typedef Util::RBPtr IDRMap; typedef Util::BitmapTree IDAlloc; class IDSpace { Lock::SpinLock lock; // For add/del only; not needed for lookup - IDTable table; // Forward mapping of local IDs to object ptrs + LocalIDTable locals; // Objects that live in this address space + RemoteIDTable remotes; // Objects that live in other address spaces IDRMap rmap; // Reverse mapping of remote object pointers to local IDs IDAlloc alloc; // Bitmap for allocating IDs