#include #include #include struct vfs_mount *vfs_mount_seed(void) { struct vfs_mount *mount = NULL; /*kmalloc(sizeof(struct vfs_mount)); *mount = (struct vfs_mount){ .prev = NULL, .prefix = "/tty", .prefix_len = 4, .handle = { .type = HANDLE_SPECIAL_TTY, }, };*/ return mount; } struct vfs_mount *vfs_mount_resolve( struct vfs_mount *top, const char *path, size_t path_len) { for (; top; top = top->prev) { if (top->prefix_len > path_len) continue; if (memcmp(top->prefix, path, top->prefix_len) != 0) continue; /* ensure that there's no garbage after the match * recognize that e.g. /thisasdf doesn't get recognized as mounted under * /this */ if (top->prefix_len == path_len) // can't happen if prefix == path break; if (path[top->prefix_len] == '/') break; } return top; }