summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
98a8d68)
Signed-off-by: Scott Wood <scott@buserror.net>
Object *IDSpace::lookup(ID id)
{
Object *IDSpace::lookup(ID id)
{
// FIXME: refcounting
ObjTableEntry *ote = table.lookup(id);
if (!ote || ote->hdr.id == invalid_id)
// FIXME: refcounting
ObjTableEntry *ote = table.lookup(id);
if (!ote || ote->hdr.id == invalid_id)
return ote->ptr.object;
return &ote->obj;
return ote->ptr.object;
return &ote->obj;
}
ObjectHdr *IDSpace::get_local(Object *obj)
}
ObjectHdr *IDSpace::get_local(Object *obj)
ObjectPtr *ptr = *rmap.find(obj);
if (ptr)
return ptr;
ObjectPtr *ptr = *rmap.find(obj);
if (ptr)
return ptr;
int id = alloc.alloc();
ptr = &table.lookup(id, true)->ptr;
int id = alloc.alloc();
ptr = &table.lookup(id, true)->ptr;
ptr->object = obj;
rmap.add(obj, ptr);
ptr->object = obj;
rmap.add(obj, ptr);
}
Object *IDSpace::newobj(Mem::ProcAddrSpace *aspace)
{
}
Object *IDSpace::newobj(Mem::ProcAddrSpace *aspace)
{
Lock::AutoSpinLock autolock(lock);
int id = alloc.alloc();
Object *obj = &table.lookup(id, true)->obj;
Lock::AutoSpinLock autolock(lock);
int id = alloc.alloc();
Object *obj = &table.lookup(id, true)->obj;
obj->aspace = aspace;
return obj;
obj->aspace = aspace;
return obj;
}
static void copy_data(u8 *dest, u8 *vaddr, size_t bufsize,
}
static void copy_data(u8 *dest, u8 *vaddr, size_t bufsize,