obj: add more set and namespace functions

This commit is contained in:
2023-02-25 17:57:53 +00:00
parent ef10ed5cd2
commit 8c87e78797
7 changed files with 248 additions and 5 deletions

View File

@@ -93,6 +93,16 @@ void object_deref(object_t *obj)
spin_unlock_irqrestore(&obj->ob_lock, flags);
}
void object_lock(object_t *obj, unsigned long *flags)
{
spin_lock_irqsave(&obj->ob_lock, flags);
}
void object_unlock(object_t *obj, unsigned long flags)
{
spin_unlock_irqrestore(&obj->ob_lock, flags);
}
void *object_data(object_t *obj)
{
return (char *)obj + sizeof *obj;
@@ -107,3 +117,34 @@ object_t *object_header(void *p)
return obj;
}
object_t *object_get_child_named(object_t *obj, const char *name)
{
object_t *out = NULL;
if (HAS_OP(obj, get_named)) {
obj->ob_type->ob_ops->get_named(obj, name, &out);
}
return out;
}
object_t *object_get_child_at(object_t *obj, size_t at)
{
object_t *out = NULL;
if (HAS_OP(obj, get_at)) {
obj->ob_type->ob_ops->get_at(obj, at, &out);
}
return out;
}
kern_status_t object_query_name(object_t *obj, char name[OBJECT_NAME_MAX])
{
if (HAS_OP(obj, query_name)) {
return obj->ob_type->ob_ops->query_name(obj, name);
}
return KERN_UNSUPPORTED;
}