summaryrefslogtreecommitdiff
path: root/viengoos/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'viengoos/object.c')
-rw-r--r--viengoos/object.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/viengoos/object.c b/viengoos/object.c
index 26edaa1..6b8ecfa 100644
--- a/viengoos/object.c
+++ b/viengoos/object.c
@@ -499,14 +499,13 @@ folio_free (struct activity *activity, struct folio *folio)
bit_dealloc (folios, fdesc->oid / (FOLIO_OBJECTS + 1));
}
-void
+struct cap
folio_object_alloc (struct activity *activity,
struct folio *folio,
int idx,
enum cap_type type,
struct object_policy policy,
- uintptr_t return_code,
- struct object **objectp)
+ uintptr_t return_code)
{
debug (4, "allocating %s at %d", cap_type_string (type), idx);
@@ -645,15 +644,13 @@ folio_object_alloc (struct activity *activity,
;
}
- if (objectp)
- /* Caller wants to use the object. */
- {
- assert (type != cap_void);
+ struct cap cap;
+ memset (&cap, 0, sizeof (cap));
+ cap.type = type;
+ cap.oid = oid;
+ cap.version = folio_object_version (folio, idx);
- if (! object)
- object = object_find (activity, oid, policy);
- *objectp = object;
- }
+ return cap;
}
void