slab: rewrite slab allocator

This commit is contained in:
Matheus
2025-09-04 22:40:10 -03:00
parent 8cba07f65c
commit 2fa040096c
11 changed files with 500 additions and 261 deletions
+9 -2
View File
@@ -204,10 +204,16 @@ int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result, c
return 0;
}
static vops_t vnops;
int sockfs_inactive(vnode_t *node) {
socket_t *socket = SOCKFS_SOCKET_FROM_NODE(node);
socketnode_t *socketnode = (socketnode_t *)node;
INTERNAL_LOCK(node);
socket->ops->destroy(socket);
memset(node, 0, sizeof(socketnode_t));
VOP_INIT(&socketnode->vnode, &vnops, 0, V_TYPE_SOCKET, NULL);
//socketnode->attr.inode = ++currentinode;
slab_free(nodecache, node);
return 0;
}
@@ -256,15 +262,16 @@ static vops_t vnops = {
.unlock = sockfs_unlock
};
static void ctor(scache_t *cache, void *obj) {
static bool ctor(scache_t *cache, void *obj) {
socketnode_t *node = obj;
memset(node, 0, sizeof(socketnode_t));
VOP_INIT(&node->vnode, &vnops, 0, V_TYPE_SOCKET, NULL);
node->attr.inode = ++currentinode;
return true;
}
void sockfs_init() {
nodecache = slab_newcache(sizeof(socketnode_t), 0, ctor, ctor);
nodecache = slab_newcache(sizeof(socketnode_t), 0, ctor, NULL);
__assert(nodecache);
}