user: implement mlibc as the libc, finally.

It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
kaguya
2026-05-02 03:31:49 -04:00
parent 2fa39ad85a
commit 9a9b91c940
2387 changed files with 152741 additions and 315 deletions
+7
View File
@@ -344,6 +344,8 @@ bool ext2_read_inode_internal(uint32_t inum, ext2_inode_t* out) {
if (!ext2_read_block_raw(gdt[g].bg_inode_table + block_off, buf)) {
kfree(buf); return false;
}
printf("ext2_read_inode: inum=%u group=%u idx=%u block_off=%u inode_off=%u\n",
inum + 1, g, idx, block_off, inode_off);
memcpy(out, buf + inode_off * sb.s_inode_size, sizeof(ext2_inode_t));
kfree(buf);
return true;
@@ -950,16 +952,21 @@ bool ext2_read_root_dir(void) {
bool ext2_read_file_from_root_internal(const char* name, uint8_t* buf, uint32_t* size) {
ext2_inode_t root;
printf("EXT2: reading file from root: %s\n", name);
if (!ext2_read_inode_internal(2, &root)) return false;
printf("EXT2: root inode: size=%u blocks=%u\n", root.i_size, root.i_blocks);
uint32_t inum;
if (!ext2_find_in_dir_internal(&root, name, &inum)) {
printf("EXT2: not found: %s\n", name);
return false;
}
printf("EXT2: found in root: inum=%u\n", inum);
ext2_inode_t fi;
if (!ext2_read_inode_internal(inum, &fi)) return false;
printf("EXT2: file inode: size=%u blocks=%u\n", fi.i_size, fi.i_blocks);
*size = fi.i_size;
printf("EXT2: read file: size=%u\n", *size);
return ext2_read_file_internal(&fi, buf);
}