diff --git a/kxld/kext.c b/kxld/kext.c index 8d9a07f..2db1859 100644 --- a/kxld/kext.c +++ b/kxld/kext.c @@ -6,6 +6,7 @@ #include static spin_lock_t kext_tree_lock = SPIN_LOCK_INIT; +static object_t *kext_set; btree_t kext_tree; static kern_status_t kext_query_name(object_t *obj, char out[OBJECT_NAME_MAX]) @@ -113,6 +114,8 @@ struct kext *kext_get_by_id(const char *ident) kern_status_t kext_cache_init(void) { object_type_register(&kext_type); + kext_set = set_create("kexts"); + object_publish(global_namespace(), "/", kext_set); return KERN_OK; } @@ -142,9 +145,12 @@ kern_status_t kext_register(struct kext *kext) return KERN_NAME_EXISTS; } + object_t *kext_obj = object_header(kext); object_ref(object_header(kext)); kext_add(kext); + set_add_object(kext_set, kext_obj); + spin_unlock_irqrestore(&kext_tree_lock, flags); return KERN_OK; }