obj: add more set and namespace functions
This commit is contained in:
41
obj/object.c
41
obj/object.c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user