obj: object header is no longer allocated automatically
This commit is contained in:
18
kxld/kext.c
18
kxld/kext.c
@@ -5,13 +5,17 @@
|
||||
#include <socks/object.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define KEXT_CAST(p) OBJECT_C_CAST(struct kext, k_base, &kext_type, p)
|
||||
|
||||
static spin_lock_t kext_tree_lock = SPIN_LOCK_INIT;
|
||||
static struct object *kext_set;
|
||||
struct btree kext_tree;
|
||||
|
||||
static struct object_type kext_type;
|
||||
|
||||
static kern_status_t kext_query_name(struct object *obj, char out[OBJECT_NAME_MAX])
|
||||
{
|
||||
struct kext *kext = object_data(obj);
|
||||
struct kext *kext = KEXT_CAST(obj);
|
||||
strncpy(out, kext->k_ident, OBJECT_NAME_MAX - 1);
|
||||
out[OBJECT_NAME_MAX - 1] = 0;
|
||||
return KERN_OK;
|
||||
@@ -19,7 +23,7 @@ static kern_status_t kext_query_name(struct object *obj, char out[OBJECT_NAME_MA
|
||||
|
||||
static kern_status_t kext_destroy(struct object *obj)
|
||||
{
|
||||
struct kext *kext = object_data(obj);
|
||||
struct kext *kext = KEXT_CAST(obj);
|
||||
if (kext->k_dependencies) {
|
||||
kfree(kext->k_dependencies);
|
||||
}
|
||||
@@ -103,7 +107,7 @@ struct kext *kext_get_by_id(const char *ident)
|
||||
|
||||
struct kext *kext = kext_get(ident);
|
||||
if (kext) {
|
||||
struct object *kext_obj = object_header(kext);
|
||||
struct object *kext_obj = &kext->k_base;
|
||||
object_ref(kext_obj);
|
||||
}
|
||||
|
||||
@@ -126,12 +130,12 @@ struct kext *kext_alloc(void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return object_data(kext_obj);
|
||||
return KEXT_CAST(kext_obj);
|
||||
}
|
||||
|
||||
void kext_release(struct kext *kext)
|
||||
{
|
||||
object_deref(object_header(kext));
|
||||
object_deref(&kext->k_base);
|
||||
}
|
||||
|
||||
kern_status_t kext_register(struct kext *kext)
|
||||
@@ -145,8 +149,8 @@ kern_status_t kext_register(struct kext *kext)
|
||||
return KERN_NAME_EXISTS;
|
||||
}
|
||||
|
||||
struct object *kext_obj = object_header(kext);
|
||||
object_ref(object_header(kext));
|
||||
struct object *kext_obj = &kext->k_base;
|
||||
object_ref(kext_obj);
|
||||
kext_add(kext);
|
||||
|
||||
set_add_object(kext_set, kext_obj);
|
||||
|
||||
Reference in New Issue
Block a user