X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=kernel%2Forb%2Finvoke.cc;h=888cff13cf5f6c0dc8a9d0da95cb77594c2493b3;hp=7fffb61ef2fde1bb1b8c00e17abea2aec434bcf5;hb=ace23b1635b73fb54745a169363dd9e9fc81c96b;hpb=b5cbe98949d5b279965d607c9618d404b26d4760 diff --git a/kernel/orb/invoke.cc b/kernel/orb/invoke.cc index 7fffb61..888cff1 100644 --- a/kernel/orb/invoke.cc +++ b/kernel/orb/invoke.cc @@ -55,15 +55,18 @@ namespace ORB { Object *IDSpace::lookup(ID id) { +#if 0 // FIXME: refcounting ObjTableEntry *ote = table.lookup(id); - if (!ote || !ote->hdr.Valid) + if (!ote || ote->hdr.id == invalid_id) return NULL; if (ote->hdr.Pointer) return ote->ptr.object; return &ote->obj; +#endif + return NULL; } ObjectHdr *IDSpace::get_local(Object *obj) @@ -75,7 +78,8 @@ namespace ORB { ObjectPtr *ptr = *rmap.find(obj); if (ptr) return ptr; - + +#if 0 int id = alloc.alloc(); ptr = &table.lookup(id, true)->ptr; @@ -86,11 +90,14 @@ namespace ORB { ptr->object = obj; rmap.add(obj, ptr); +#endif return ptr; + } Object *IDSpace::newobj(Mem::ProcAddrSpace *aspace) { +#if 0 Lock::AutoSpinLock autolock(lock); int id = alloc.alloc(); Object *obj = &table.lookup(id, true)->obj; @@ -101,6 +108,8 @@ namespace ORB { obj->aspace = aspace; return obj; +#endif + return NULL; } static void copy_data(u8 *dest, u8 *vaddr, size_t bufsize, @@ -116,7 +125,7 @@ namespace ORB { size_t len = round_up(spib->segments[i].len, 3); if (len + copied > bufsize || len + copied < copied) - throw_idl(InvalidArgument, 0, countarray("copy_data: bad size")); + throw_idl(InvalidArgument, 0, countarray("copy_data: bad size")); dpib->segments[i].ptr = vaddr; dpib->segments[i].len = len; @@ -161,13 +170,13 @@ namespace ORB { printf("objlist len %u\n", pib.objlist_len); if (pib.objlist_len == 0) - throw_idl(InvalidArgument, 0, countarray("no objects")); + throw_idl(InvalidArgument, 0, countarray("no objects")); // FIXME: declare constants somewhere if (pib.num_segments > 64) - throw_idl(InvalidArgument, 0, countarray("too many segments")); + throw_idl(InvalidArgument, 0, countarray("too many segments")); if (pib.objlist_len > 4096) - throw_idl(InvalidArgument, 0, countarray("too many objects")); + throw_idl(InvalidArgument, 0, countarray("too many objects")); printf("&pib.objlist[0] %p\n", &pib.objlist[0]); @@ -190,8 +199,8 @@ namespace ORB { buflen += sizeof(ParamInfoBlock); buflen += pib.num_segments * sizeof(ParamInfoBlock::Segment); - u8 *args = new(orbmm) u8[buflen]; - u8 *copy = new(orbmm) u8[pib.copy_size]; + u8 *args = new(ORBMM()) u8[buflen]; + u8 *copy = new(ORBMM()) u8[pib.copy_size]; ParamInfoBlock *dpib = reinterpret_cast (args + piboff); dpib->objlist = reinterpret_cast(args + datalen);