BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 5be6a64670a09857d2128737723e0b5d4021271e / object / manager.c

// Related

Nucleus

Barry Global object lists 5be6a64 (3 years, 3 months ago)
diff --git a/object/manager.c b/object/manager.c
index 124ebbc..c50d45d 100644
--- a/object/manager.c
+++ b/object/manager.c
@@ -10,6 +10,7 @@
 #include <nucleus/memory.h>
 #include <nucleus/panic.h>
 
+void init_lock(Spinlock *lock);
 void acquire(Spinlock *lock);
 void release(Spinlock *lock);
 
@@ -34,6 +35,7 @@ put(void *addr)
 	__atomic_sub_fetch(&obj->type->count, 1, __ATOMIC_RELAXED);
 	if (obj->type->delete)
 		obj->type->delete(obj);
+	remove(obj->type->objects, obj);
 	if (obj->type->free)
 		obj->type->free(obj);
 	else
@@ -51,6 +53,10 @@ new(ObjectType *type)
 		obj = kmalloc(type->size);
 	if (type->new)
 		type->new(obj);
+	if (!type->objects)
+		type->objects = create_list(type);
+	add(type->objects, obj);
+	init_lock(&obj->lock);
 	obj->type = type;
 	__atomic_add_fetch(&type->count, 1, __ATOMIC_RELAXED);
 	return get(obj);