kernel: rework init

This commit is contained in:
Matheus
2025-08-14 20:25:43 -03:00
parent fb6cbe49d7
commit 607566531d
41 changed files with 268 additions and 164 deletions
+3
View File
@@ -9,6 +9,7 @@
#include <kernel/pmm.h>
#include <kernel/vmmcache.h>
#include <kernel/auth.h>
#include <kernel/init.h>
static devnode_t *devfsroot;
@@ -498,6 +499,8 @@ void devfs_init() {
__assert(hashtable_set(&devfsroot->children, devfsroot, ".", 1, true) == 0);
}
INIT_ROUTINE_DEFINE(devfs, INIT_ROUTINE_FLAGS_NONE, devfs_init, vfs);
int devfs_getbyname(char *name, vnode_t **ret) {
int error = vfs_lookup(ret, (vnode_t *)devfsroot, name, NULL, 0);
if (error)
+3
View File
@@ -12,6 +12,7 @@
#include <kernel/vmmcache.h>
#include <kernel/pipefs.h>
#include <kernel/auth.h>
#include <kernel/init.h>
#define INODE_ROOT 2
@@ -2010,3 +2011,5 @@ void ext2_init() {
nodecache = slab_newcache(sizeof(ext2node_t), 0, NULL, NULL);
__assert(nodecache);
}
INIT_ROUTINE_DEFINE(ext2, INIT_ROUTINE_FLAGS_NONE, ext2_init, vfs);
+3
View File
@@ -8,6 +8,7 @@
#include <errno.h>
#include <kernel/abi.h>
#include <kernel/poll.h>
#include <kernel/init.h>
#define BUFFER_SIZE 16 * PAGE_SIZE
#define PIPE_ATOMIC_SIZE 4096
@@ -403,6 +404,8 @@ void pipefs_init() {
__assert(nodecache);
}
INIT_ROUTINE_DEFINE(pipefs, INIT_ROUTINE_FLAGS_NONE, pipefs_init, bsp_early);
int pipefs_newpipe(vnode_t **nodep) {
vnode_t *vnode = slab_allocate(nodecache);
pipenode_t *node = (pipenode_t *)vnode;
+3
View File
@@ -9,6 +9,7 @@
#include <kernel/poll.h>
#include <kernel/sock.h>
#include <kernel/auth.h>
#include <kernel/init.h>
static scache_t *nodecache;
static uintmax_t currentinode;
@@ -267,6 +268,8 @@ void sockfs_init() {
__assert(nodecache);
}
INIT_ROUTINE_DEFINE(sockfs, INIT_ROUTINE_FLAGS_NONE, sockfs_init, bsp_early);
int sockfs_newsocket(vnode_t **nodep, socket_t *socket) {
vnode_t *vnode = slab_allocate(nodecache);
socketnode_t *node = (socketnode_t *)vnode;
+3
View File
@@ -15,6 +15,7 @@
#include <kernel/vmmcache.h>
#include <kernel/pipefs.h>
#include <kernel/auth.h>
#include <kernel/init.h>
static scache_t *nodecache;
static tmpfsnode_t *newnode(vfs_t *vfs, int type);
@@ -598,3 +599,5 @@ void tmpfs_init() {
nodecache = slab_newcache(sizeof(tmpfsnode_t), 0, NULL, NULL);
__assert(nodecache);
}
INIT_ROUTINE_DEFINE(tmpfs, INIT_ROUTINE_FLAGS_NONE, tmpfs_init, vfs);
+7 -4
View File
@@ -11,6 +11,7 @@
#include <kernel/block.h>
#include <kernel/pipefs.h>
#include <kernel/auth.h>
#include <kernel/init.h>
#define PATHNAME_MAX 512
#define MAXLINKDEPTH 64
@@ -18,7 +19,7 @@
static hashtable_t fstable;
vnode_t *vfsroot;
static spinlock_t listlock;
static mutex_t listlock;
static vfs_t *vfslist;
static cred_t *getcred() {
@@ -53,12 +54,14 @@ void vfs_init() {
__assert(hashtable_init(&fstable, 20) == 0);
vfsroot = alloc(sizeof(vnode_t));
__assert(vfsroot);
SPINLOCK_INIT(listlock);
MUTEX_INIT(&listlock);
vfsroot->type = V_TYPE_DIR;
vfsroot->refcount = 1;
vfsroot->ops = &vnops;
}
INIT_ROUTINE_DEFINE(vfs, INIT_ROUTINE_FLAGS_NONE, vfs_init, bsp_early);
int vfs_register(vfsops_t *ops, char *name) {
return hashtable_set(&fstable, ops, name, strlen(name), true);
}
@@ -111,12 +114,12 @@ int vfs_mount(vnode_t *backing, vnode_t *pathref, char *path, char *name, void *
return err;
}
spinlock_acquire(&listlock);
MUTEX_ACQUIRE(&listlock);
vfs->next = vfslist;
vfslist = vfs;
spinlock_release(&listlock);
MUTEX_RELEASE(&listlock);
mounton->vfsmounted = vfs;
vfs->nodecovered = mounton;