From 8d4ecdcc7e8de0a086cf13ffe7d9386a9fe63847 Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Wed, 25 Mar 2026 19:53:48 +0530 Subject: [PATCH 1/5] Move stdlib code into kclib --- kernel/include/{ => kclib}/memory.h | 0 kernel/include/{ => kclib}/stdio.h | 0 kernel/include/{ => kclib}/string.h | 0 kernel/src/{ => kclib}/memory.c | 0 kernel/src/{ => kclib}/stdio.c | 0 kernel/src/{ => kclib}/string.c | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename kernel/include/{ => kclib}/memory.h (100%) rename kernel/include/{ => kclib}/stdio.h (100%) rename kernel/include/{ => kclib}/string.h (100%) rename kernel/src/{ => kclib}/memory.c (100%) rename kernel/src/{ => kclib}/stdio.c (100%) rename kernel/src/{ => kclib}/string.c (100%) diff --git a/kernel/include/memory.h b/kernel/include/kclib/memory.h similarity index 100% rename from kernel/include/memory.h rename to kernel/include/kclib/memory.h diff --git a/kernel/include/stdio.h b/kernel/include/kclib/stdio.h similarity index 100% rename from kernel/include/stdio.h rename to kernel/include/kclib/stdio.h diff --git a/kernel/include/string.h b/kernel/include/kclib/string.h similarity index 100% rename from kernel/include/string.h rename to kernel/include/kclib/string.h diff --git a/kernel/src/memory.c b/kernel/src/kclib/memory.c similarity index 100% rename from kernel/src/memory.c rename to kernel/src/kclib/memory.c diff --git a/kernel/src/stdio.c b/kernel/src/kclib/stdio.c similarity index 100% rename from kernel/src/stdio.c rename to kernel/src/kclib/stdio.c diff --git a/kernel/src/string.c b/kernel/src/kclib/string.c similarity index 100% rename from kernel/src/string.c rename to kernel/src/kclib/string.c From 5b96611b3676bfa34280740afe6af058b44a14af Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Wed, 25 Mar 2026 20:01:20 +0530 Subject: [PATCH 2/5] Update all includes --- kernel/include/kernel/idt.h | 2 -- kernel/src/kclib/memory.c | 2 +- kernel/src/kclib/stdio.c | 4 ++-- kernel/src/kclib/string.c | 2 +- kernel/src/kernel/console.c | 5 ++--- kernel/src/kernel/elf.c | 7 +++---- kernel/src/kernel/entry.c | 4 ++-- kernel/src/kernel/fs/chardev.c | 4 ++-- kernel/src/kernel/fs/cpio.c | 6 ++++-- kernel/src/kernel/fs/ramfs.c | 4 ++-- kernel/src/kernel/fs/vfs.c | 6 ++---- kernel/src/kernel/gdt.c | 4 ++-- kernel/src/kernel/idt.c | 6 +++--- kernel/src/kernel/memmgt.c | 5 +++-- kernel/src/kernel/process.c | 2 +- kernel/src/kernel/syscall.c | 2 +- 16 files changed, 31 insertions(+), 34 deletions(-) diff --git a/kernel/include/kernel/idt.h b/kernel/include/kernel/idt.h index e9b3110..3b9b7b0 100644 --- a/kernel/include/kernel/idt.h +++ b/kernel/include/kernel/idt.h @@ -2,9 +2,7 @@ #ifndef IDT_H #define IDT_H -#include #include -#include typedef struct __attribute__ ((packed)) { uint16_t size; diff --git a/kernel/src/kclib/memory.c b/kernel/src/kclib/memory.c index 5fdf2ca..9f59318 100644 --- a/kernel/src/kclib/memory.c +++ b/kernel/src/kclib/memory.c @@ -1,5 +1,5 @@ -#include +#include /*! Copy memory chunk of size n. diff --git a/kernel/src/kclib/stdio.c b/kernel/src/kclib/stdio.c index ab44f58..7dc8989 100644 --- a/kernel/src/kclib/stdio.c +++ b/kernel/src/kclib/stdio.c @@ -1,6 +1,6 @@ +#include +#include #include -#include -#include /*! Handle the different cases of %-- in printf diff --git a/kernel/src/kclib/string.c b/kernel/src/kclib/string.c index d6f80d5..1220420 100644 --- a/kernel/src/kclib/string.c +++ b/kernel/src/kclib/string.c @@ -1,5 +1,5 @@ +#include #include -#include /*! Get the length of a standard string (terminating with 0). diff --git a/kernel/src/kernel/console.c b/kernel/src/kernel/console.c index 90deafd..cf555fd 100644 --- a/kernel/src/kernel/console.c +++ b/kernel/src/kernel/console.c @@ -1,12 +1,11 @@ +#include +#include #include #include #include #include -#include -#include #include #include -#include #define CONSOLE_HEIGHT 80 #define CONSOLE_WIDTH 140 diff --git a/kernel/src/kernel/elf.c b/kernel/src/kernel/elf.c index f5023cd..a89e2c3 100644 --- a/kernel/src/kernel/elf.c +++ b/kernel/src/kernel/elf.c @@ -1,13 +1,12 @@ +#include +#include +#include #include #include #include #include #include #include -#include -#include -#include -#include bool verify_elf_loadable (elf64_header_t* elf) { if (!elf) return false; diff --git a/kernel/src/kernel/entry.c b/kernel/src/kernel/entry.c index 1590670..02eba94 100644 --- a/kernel/src/kernel/entry.c +++ b/kernel/src/kernel/entry.c @@ -1,3 +1,5 @@ +#include +#include #include #include #include @@ -17,10 +19,8 @@ #include #include #include -#include #include #include -#include #define FONT_SIZE 2 diff --git a/kernel/src/kernel/fs/chardev.c b/kernel/src/kernel/fs/chardev.c index 2a96bf9..06754b6 100644 --- a/kernel/src/kernel/fs/chardev.c +++ b/kernel/src/kernel/fs/chardev.c @@ -1,9 +1,9 @@ +#include +#include #include #include #include #include -#include -#include static int stdout_write (inode* node, file* f, void* buf, size_t len) { (void)node, (void)f; // args not used diff --git a/kernel/src/kernel/fs/cpio.c b/kernel/src/kernel/fs/cpio.c index ef5ee12..83d7bc8 100644 --- a/kernel/src/kernel/fs/cpio.c +++ b/kernel/src/kernel/fs/cpio.c @@ -1,10 +1,12 @@ +#include +#include +#include #include #include #include +#include #include #include -#include -#include #define C_ISDIR 0040000 #define C_ISREG 0100000 diff --git a/kernel/src/kernel/fs/ramfs.c b/kernel/src/kernel/fs/ramfs.c index b1c3c2a..0aa9cfb 100644 --- a/kernel/src/kernel/fs/ramfs.c +++ b/kernel/src/kernel/fs/ramfs.c @@ -1,8 +1,8 @@ +#include +#include #include #include #include -#include -#include static inode* root_inode; diff --git a/kernel/src/kernel/fs/vfs.c b/kernel/src/kernel/fs/vfs.c index 5319978..ab8dd2a 100644 --- a/kernel/src/kernel/fs/vfs.c +++ b/kernel/src/kernel/fs/vfs.c @@ -1,13 +1,11 @@ +#include +#include #include #include #include #include #include #include -#include -#include -#include -#include inode* vfs_absolute_root = nullptr; diff --git a/kernel/src/kernel/gdt.c b/kernel/src/kernel/gdt.c index 04b7038..f2e2384 100644 --- a/kernel/src/kernel/gdt.c +++ b/kernel/src/kernel/gdt.c @@ -1,8 +1,8 @@ +#include +#include #include #include -#include #include -#include gdt_t gdt = { {0, 0, 0, 0, 0, 0}, // null diff --git a/kernel/src/kernel/idt.c b/kernel/src/kernel/idt.c index 65ef74e..1dabd3e 100644 --- a/kernel/src/kernel/idt.c +++ b/kernel/src/kernel/idt.c @@ -1,7 +1,7 @@ +#include #include - -#include +#include __attribute__ ((aligned (0x10))) static idt_entry_t idt[256]; @@ -81,7 +81,7 @@ registers_t* kernel_dispatch_interrupt (registers_t* registers) { if (handler) return handler (registers); else { - printf ("Unhandled interrupt! Hasta la vista"); + write_serial_str ("Unhandled interrupt! Hasta la vista"); log_registers_to_serial (registers); while (1) ; diff --git a/kernel/src/kernel/memmgt.c b/kernel/src/kernel/memmgt.c index 4cb4587..f6a54db 100644 --- a/kernel/src/kernel/memmgt.c +++ b/kernel/src/kernel/memmgt.c @@ -1,3 +1,6 @@ +#include +#include +#include #include #include #include @@ -5,8 +8,6 @@ #include #include #include -#include -#include #define ALIGNUP(x, o) ((x + o - 1) & ~(o - 1)) diff --git a/kernel/src/kernel/process.c b/kernel/src/kernel/process.c index a649ee5..81d36a5 100644 --- a/kernel/src/kernel/process.c +++ b/kernel/src/kernel/process.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -5,7 +6,6 @@ #include #include #include -#include process_queue ready_queue; uint64_t next_free_pid; diff --git a/kernel/src/kernel/syscall.c b/kernel/src/kernel/syscall.c index c3c4468..77d1adf 100644 --- a/kernel/src/kernel/syscall.c +++ b/kernel/src/kernel/syscall.c @@ -1,8 +1,8 @@ +#include #include #include #include #include -#include syscall_handler_t syscall_handlers[SYSCALL_COUNT]; registers_t* latest_frame; From ff3dc3df68fe8cb9c04a112fcff701ae153bc39d Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Wed, 25 Mar 2026 20:03:07 +0530 Subject: [PATCH 3/5] Add k prefix to all memory.h functions --- kernel/include/kclib/memory.h | 8 ++++---- kernel/src/kclib/memory.c | 8 ++++---- kernel/src/kernel/elf.c | 2 +- kernel/src/kernel/entry.c | 6 +++--- kernel/src/kernel/fs/chardev.c | 10 +++++----- kernel/src/kernel/fs/cpio.c | 6 +++--- kernel/src/kernel/fs/ramfs.c | 22 +++++++++++----------- kernel/src/kernel/fs/vfs.c | 4 ++-- kernel/src/kernel/gdt.c | 2 +- kernel/src/kernel/memmgt.c | 22 +++++++++++----------- kernel/src/kernel/process.c | 6 +++--- kernel/src/kernel/syscall.c | 2 +- 12 files changed, 49 insertions(+), 49 deletions(-) diff --git a/kernel/include/kclib/memory.h b/kernel/include/kclib/memory.h index 47c5b1c..10289c2 100644 --- a/kernel/include/kclib/memory.h +++ b/kernel/include/kclib/memory.h @@ -4,9 +4,9 @@ #include #include -void* memcpy (void*, const void*, size_t); -void* memset (void*, int, size_t); -void* memmove (void*, const void*, size_t); -int memcmp (const void*, const void*, size_t); +void* kmemcpy (void*, const void*, size_t); +void* kmemset (void*, int, size_t); +void* kmemmove (void*, const void*, size_t); +int kmemcmp (const void*, const void*, size_t); #endif \ No newline at end of file diff --git a/kernel/src/kclib/memory.c b/kernel/src/kclib/memory.c index 9f59318..68d3f41 100644 --- a/kernel/src/kclib/memory.c +++ b/kernel/src/kclib/memory.c @@ -8,7 +8,7 @@ Copy memory chunk of size n. @param src source @param n width of data */ -void* memcpy (void* dest, const void* src, size_t n) { +void* kmemcpy (void* dest, const void* src, size_t n) { uint8_t* pdest = (uint8_t*)dest; const uint8_t* psrc = (const uint8_t*)src; @@ -25,7 +25,7 @@ Set memory chunk of size n to be value c. @param c value to set memory to @param n size of memory chunk */ -void* memset (void* s, int c, size_t n) { +void* kmemset (void* s, int c, size_t n) { uint8_t* p = (uint8_t*)s; for (size_t i = 0; i < n; i++) @@ -41,7 +41,7 @@ Move memory chunk. @param src source @param n width of data */ -void* memmove (void* dest, const void* src, size_t n) { +void* kmemmove (void* dest, const void* src, size_t n) { uint8_t* pdest = (uint8_t*)dest; const uint8_t* psrc = (const uint8_t*)src; @@ -63,7 +63,7 @@ Compare memory chunks. @param n size of both chunks @return -1 if less, 0 if equal and 1 if greater */ -int memcmp (const void* s1, const void* s2, size_t n) { +int kmemcmp (const void* s1, const void* s2, size_t n) { const uint8_t* p1 = (const uint8_t*)s1; const uint8_t* p2 = (const uint8_t*)s2; diff --git a/kernel/src/kernel/elf.c b/kernel/src/kernel/elf.c index a89e2c3..955ba9c 100644 --- a/kernel/src/kernel/elf.c +++ b/kernel/src/kernel/elf.c @@ -75,7 +75,7 @@ int load_elf (const char* filepath, process* target_process, uintptr_t* entry_po do_syscall (SYSCALL_SYS_READ, fd, ph->p_vaddr, ph->p_filesz); if (ph->p_memsz > ph->p_filesz) - memset ((void*)(ph->p_vaddr + ph->p_filesz), 0, ph->p_memsz - ph->p_filesz); + kmemset ((void*)(ph->p_vaddr + ph->p_filesz), 0, ph->p_memsz - ph->p_filesz); } init_break = ((init_break + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)); diff --git a/kernel/src/kernel/entry.c b/kernel/src/kernel/entry.c index 02eba94..e38bca1 100644 --- a/kernel/src/kernel/entry.c +++ b/kernel/src/kernel/entry.c @@ -187,7 +187,7 @@ void _start (void) { // Launch Stage 2 as the first process (PID 1) process* stage2_proc = kmalloc (sizeof (process)); - memset (stage2_proc, 0, sizeof (process)); + kmemset (stage2_proc, 0, sizeof (process)); stage2_proc->p_id = 1; stage2_proc->p_cr3 = read_cr3 (); stage2_proc->p_user = false; @@ -196,7 +196,7 @@ void _start (void) { for (int i = 0; i < 3; i++) { stage2_proc->p_fds[i] = kmalloc (sizeof (struct file)); - memset (stage2_proc->p_fds[i], 0, sizeof (struct file)); + kmemset (stage2_proc->p_fds[i], 0, sizeof (struct file)); } register_stdin (stage2_proc->p_fds[0]); @@ -207,7 +207,7 @@ void _start (void) { stage2_proc->p_kstack = (uintptr_t)kstack + STACK_SIZE; registers_t* regs = (registers_t*)(stage2_proc->p_kstack - sizeof (registers_t)); - memset (regs, 0, sizeof (registers_t)); + kmemset (regs, 0, sizeof (registers_t)); regs->rip = (uintptr_t)_start_stage2; regs->cs = 0x28; // Kernel code segment regs->ss = 0x30; // Kernel data segment diff --git a/kernel/src/kernel/fs/chardev.c b/kernel/src/kernel/fs/chardev.c index 06754b6..984b205 100644 --- a/kernel/src/kernel/fs/chardev.c +++ b/kernel/src/kernel/fs/chardev.c @@ -37,7 +37,7 @@ int register_stdin (struct file* f) { inode* new_inode = kmalloc (sizeof (inode)); if (!new_inode) return -ENOMEM; - memset (new_inode, 0, sizeof (inode)); + kmemset (new_inode, 0, sizeof (inode)); new_inode->i_cnt = 1; new_inode->i_type = CHAR_DEV; @@ -59,8 +59,8 @@ int register_stdout (struct file* f) { return -ENOMEM; } - memset (new_inode, 0, sizeof (inode)); - memset (stdout_fops, 0, sizeof (file_operations)); + kmemset (new_inode, 0, sizeof (inode)); + kmemset (stdout_fops, 0, sizeof (file_operations)); stdout_fops->write = stdout_write; @@ -85,8 +85,8 @@ int register_stderr (struct file* f) { return -ENOMEM; } - memset (new_inode, 0, sizeof (inode)); - memset (stdout_fops, 0, sizeof (file_operations)); + kmemset (new_inode, 0, sizeof (inode)); + kmemset (stdout_fops, 0, sizeof (file_operations)); stdout_fops->write = stderr_write; diff --git a/kernel/src/kernel/fs/cpio.c b/kernel/src/kernel/fs/cpio.c index 83d7bc8..50a1545 100644 --- a/kernel/src/kernel/fs/cpio.c +++ b/kernel/src/kernel/fs/cpio.c @@ -32,7 +32,7 @@ static uint64_t hex_to_u64 (const char hex[8]) [[unsequenced]] { static void* jump_next_file (void* pos) { cpio_newc_header_t* header = pos; - if (memcmp (header->c_magic, "070701", 6) != 0) { + if (kmemcmp (header->c_magic, "070701", 6) != 0) { write_serial_str ( "Caller provided a pointer to cpio header, but it did not have the magic number!\n"); return nullptr; @@ -42,7 +42,7 @@ static void* jump_next_file (void* pos) { uint64_t filesize = hex_to_u64 (header->c_filesize); pos += sizeof (cpio_newc_header_t); - if (memcmp (pos, "TRAILER!!!", 11) == 0) return nullptr; + if (kmemcmp (pos, "TRAILER!!!", 11) == 0) return nullptr; pos += namesize; if ((uint64_t)pos % 4) pos += 4 - ((uint64_t)pos % 4); @@ -122,7 +122,7 @@ static int parse_entry_to_inode (cpio_newc_header_t* header, const char* out_pat if (namesize == 0) return -EINVARG; char* filename = kmalloc (namesize + 1); - memcpy ((void*)(filename + 1), (void*)(header + 1), namesize); + kmemcpy ((void*)(filename + 1), (void*)(header + 1), namesize); filename[namesize] = 0; // enforce string in case corrupt filename[0] = '/'; // many syscalls require absolute paths, which cpio does not guarantee diff --git a/kernel/src/kernel/fs/ramfs.c b/kernel/src/kernel/fs/ramfs.c index 0aa9cfb..35abc6b 100644 --- a/kernel/src/kernel/fs/ramfs.c +++ b/kernel/src/kernel/fs/ramfs.c @@ -13,7 +13,7 @@ static file_operations f_ops = { int mkdir (char* dirname, inode** result, inode* root) { // requires: guarantee that vfs input is valid inode* new_dir = kmalloc (sizeof (inode)); - memset ((void*)new_dir, 0, sizeof (inode)); + kmemset ((void*)new_dir, 0, sizeof (inode)); new_dir->i_type = DIRECTORY; new_dir->i_pvt = kmalloc (sizeof (dir_content_t)); @@ -34,7 +34,7 @@ int mkdir (char* dirname, inode** result, inode* root) { dir_content_t* parent_pvt = (dir_content_t*)root->i_pvt; child_t* new_parent_children = kmalloc ((parent_pvt->d_count + 1) * sizeof (child_t)); - memcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); + kmemcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); new_parent_children[parent_pvt->d_count].c_inode = new_dir; new_parent_children[parent_pvt->d_count].c_name = strdup (dirname); @@ -49,7 +49,7 @@ int mkdir (char* dirname, inode** result, inode* root) { int create (char* filename, inode** result, inode* root) { inode* new_file = kmalloc (sizeof (inode)); - memset ((void*)new_file, 0, sizeof (inode)); + kmemset ((void*)new_file, 0, sizeof (inode)); new_file->i_type = EFILE; new_file->i_iops = &i_ops; @@ -59,7 +59,7 @@ int create (char* filename, inode** result, inode* root) { dir_content_t* parent_pvt = (dir_content_t*)root->i_pvt; child_t* new_parent_children = kmalloc ((parent_pvt->d_count + 1) * sizeof (child_t)); - memcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); + kmemcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); new_parent_children[parent_pvt->d_count].c_inode = new_file; new_parent_children[parent_pvt->d_count].c_name = strdup (filename); @@ -111,7 +111,7 @@ int read (inode* node, file* f, void* buffer, size_t size) { if (f->f_pos >= node->i_sz) return 0; // EOF if (f->f_pos + size > node->i_sz) size = node->i_sz - f->f_pos; - memcpy (buffer, (uint8_t*)node->i_pvt + f->f_pos, size); + kmemcpy (buffer, (uint8_t*)node->i_pvt + f->f_pos, size); f->f_pos += size; return (int)size; @@ -125,7 +125,7 @@ int write (inode* node, file* f, void* buffer, size_t size) { if (!node->i_fsinfo) { node->i_fsinfo = kmalloc (sizeof (fs_info_t)); if (!node->i_fsinfo) return -ENOMEM; - memset (node->i_fsinfo, 0, sizeof (fs_info_t)); + kmemset (node->i_fsinfo, 0, sizeof (fs_info_t)); } fs_info_t* fs_info = (fs_info_t*)node->i_fsinfo; @@ -133,10 +133,10 @@ int write (inode* node, file* f, void* buffer, size_t size) { if (pos_after_write > fs_info->alloc) { size_t new_alloc = ((pos_after_write + BUF_ALIGN - 1) / BUF_ALIGN) * BUF_ALIGN; void* new_data = kmalloc (new_alloc); - memset (new_data, 0, new_alloc); + kmemset (new_data, 0, new_alloc); if (node->i_pvt) { - memcpy (new_data, node->i_pvt, node->i_sz); + kmemcpy (new_data, node->i_pvt, node->i_sz); kfree (node->i_pvt); } @@ -144,9 +144,9 @@ int write (inode* node, file* f, void* buffer, size_t size) { fs_info->alloc = new_alloc; } - if (f->f_pos > og_eof) memset ((uint8_t*)node->i_pvt + og_eof, 0, f->f_pos - og_eof); + if (f->f_pos > og_eof) kmemset ((uint8_t*)node->i_pvt + og_eof, 0, f->f_pos - og_eof); - memcpy ((uint8_t*)node->i_pvt + f->f_pos, buffer, size); + kmemcpy ((uint8_t*)node->i_pvt + f->f_pos, buffer, size); f->f_pos += size; if (f->f_pos > node->i_sz) node->i_sz = f->f_pos; @@ -167,7 +167,7 @@ int seek (inode* node, file* f, size_t offset, int whence) { inode* init_ramfs_root (void) { root_inode = kmalloc (sizeof (inode)); - memset ((void*)root_inode, 0, sizeof (inode)); + kmemset ((void*)root_inode, 0, sizeof (inode)); root_inode->i_type = DIRECTORY; root_inode->i_pvt = kmalloc (sizeof (dir_content_t)); root_inode->i_iops = &i_ops; diff --git a/kernel/src/kernel/fs/vfs.c b/kernel/src/kernel/fs/vfs.c index ab8dd2a..03b698b 100644 --- a/kernel/src/kernel/fs/vfs.c +++ b/kernel/src/kernel/fs/vfs.c @@ -187,7 +187,7 @@ int do_lookup (char* filename, inode** result, inode* root) { // get the target_name char* target_name = (char*)kmalloc ((size_t)(next_slash - filename)); - memcpy ((void*)target_name, (void*)(filename + 1), (size_t)(next_slash - filename) - 1); + kmemcpy ((void*)target_name, (void*)(filename + 1), (size_t)(next_slash - filename) - 1); target_name[(size_t)(next_slash - filename) - 1] = 0; if (strcmp (target_name, ".") == 0) { @@ -240,7 +240,7 @@ int do_lookup (char* filename, inode** result, inode* root) { int do_open (inode* filei, struct file* dest_fd) { if (!filei) return -EINVARG; if (filei->i_type == DIRECTORY) return -EINVARG; - memset (dest_fd, 0, sizeof (struct file)); + kmemset (dest_fd, 0, sizeof (struct file)); filei->i_cnt++; diff --git a/kernel/src/kernel/gdt.c b/kernel/src/kernel/gdt.c index f2e2384..3d785a1 100644 --- a/kernel/src/kernel/gdt.c +++ b/kernel/src/kernel/gdt.c @@ -31,7 +31,7 @@ void init_gdt (void) { } void init_tss (void) { - memset (&tss, 0, sizeof (tss)); + kmemset (&tss, 0, sizeof (tss)); tss.rsp[0] = (uintptr_t)stack; tss.ist[1] = 0; diff --git a/kernel/src/kernel/memmgt.c b/kernel/src/kernel/memmgt.c index f6a54db..f7b4c5e 100644 --- a/kernel/src/kernel/memmgt.c +++ b/kernel/src/kernel/memmgt.c @@ -226,7 +226,7 @@ static void init_physical_bitmap (struct limine_memmap_response* memmap_response bitmap.pages_maxlen = total_pages; bitmap.pages_used = total_pages; - memset (bitmap.map, 0xFF, bitmap_size); + kmemset (bitmap.map, 0xFF, bitmap_size); uint64_t bitmap_fst_page = (uint64_t)bitmap_phys_addr / PAGE_SIZE; uint64_t bitmap_lst_page = bitmap_fst_page + ((bitmap_size + PAGE_SIZE - 1) / PAGE_SIZE); @@ -312,7 +312,7 @@ void alloc_all_vpages_in_range (vaddr_t first, vaddr_t last, paddr_t base_addr) pml4t_entry->read_write = 1; pml4t_entry->user_supervisor = is_vaddr_t_user (¤t); pml4t_entry->pdpt_base_address = (uint64_t)new_table / PAGE_SIZE; - memset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); + kmemset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); } pdpt_entry_t* pdpt_base = @@ -325,7 +325,7 @@ void alloc_all_vpages_in_range (vaddr_t first, vaddr_t last, paddr_t base_addr) pdpt_entry->read_write = 1; pdpt_entry->user_supervisor = is_vaddr_t_user (¤t); pdpt_entry->pd_base_address = (uint64_t)new_table / PAGE_SIZE; - memset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); + kmemset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); } pd_entry_t* pd_base = (pd_entry_t*)get_vaddr_from_frame (pdpt_entry->pd_base_address); @@ -337,7 +337,7 @@ void alloc_all_vpages_in_range (vaddr_t first, vaddr_t last, paddr_t base_addr) pd_entry->rw = 1; pd_entry->us = is_vaddr_t_user (¤t); pd_entry->pt_base_address = (uint64_t)new_table / PAGE_SIZE; - memset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); + kmemset (get_vaddr_from_frame ((uint64_t)new_table / PAGE_SIZE), 0, PAGE_SIZE); } pt_entry_t* pt_base = (pt_entry_t*)get_vaddr_from_frame (pd_entry->pt_base_address); @@ -632,7 +632,7 @@ void init_memmgt (uint64_t p_hhdm_offset, struct limine_memmap_response* memmap_ init_physical_bitmap (memmap_response); paddr_t user_pdpt_frame = alloc_ppage (); - memset (get_vaddr_from_frame ((uint64_t)user_pdpt_frame / PAGE_SIZE), 0, PAGE_SIZE); + kmemset (get_vaddr_from_frame ((uint64_t)user_pdpt_frame / PAGE_SIZE), 0, PAGE_SIZE); pml4_base_ptr[USER_PML4_IDX].present = 1; pml4_base_ptr[USER_PML4_IDX].read_write = 1; @@ -640,7 +640,7 @@ void init_memmgt (uint64_t p_hhdm_offset, struct limine_memmap_response* memmap_ pml4_base_ptr[USER_PML4_IDX].pdpt_base_address = ((uint64_t)user_pdpt_frame) / PAGE_SIZE; paddr_t krnl_pdpt_frame = alloc_ppage (); - memset (get_vaddr_from_frame ((uint64_t)krnl_pdpt_frame / PAGE_SIZE), 0, PAGE_SIZE); + kmemset (get_vaddr_from_frame ((uint64_t)krnl_pdpt_frame / PAGE_SIZE), 0, PAGE_SIZE); pml4_base_ptr[KRNL_PML4_IDX].present = 1; pml4_base_ptr[KRNL_PML4_IDX].read_write = 1; @@ -743,7 +743,7 @@ static paddr_t clone_pframes (paddr_t p_src, uint64_t page_count) { void* v_dest = (void*)((uint64_t)p_dest + hhdm_offset); void* v_src = (void*)((uint64_t)p_src + hhdm_offset); - memcpy (v_dest, v_src, page_count * PAGE_SIZE); + kmemcpy (v_dest, v_src, page_count * PAGE_SIZE); return p_dest; } @@ -760,7 +760,7 @@ int clone_user_memory (uint64_t cr3_src, uint64_t* cr3_dest) { if (!dest_pml4_phys) return -ENOMEM; pml4t_entry_t* dest_pml4_table = (pml4t_entry_t*)((uint64_t)dest_pml4_phys + hhdm_offset); - memset (dest_pml4_table, 0, PAGE_SIZE); + kmemset (dest_pml4_table, 0, PAGE_SIZE); // map the higher half to be exactly the same as kernel's pml4t_entry_t* krnl_pml4_table = (pml4t_entry_t*)((uint64_t)get_kernel_cr3 () + hhdm_offset); @@ -777,7 +777,7 @@ int clone_user_memory (uint64_t cr3_src, uint64_t* cr3_dest) { paddr_t dest_pdpt_phys = alloc_ppage (); if (!dest_pdpt_phys) return -ENOMEM; pdpt_entry_t* dest_pdpt = (pdpt_entry_t*)((uint64_t)dest_pdpt_phys + hhdm_offset); - memset (dest_pdpt, 0, PAGE_SIZE); + kmemset (dest_pdpt, 0, PAGE_SIZE); dest_pml4_table[pml4_index] = *src_pml4_entry; dest_pml4_table[pml4_index].pdpt_base_address = (uint64_t)dest_pdpt_phys / PAGE_SIZE; @@ -801,7 +801,7 @@ int clone_user_memory (uint64_t cr3_src, uint64_t* cr3_dest) { paddr_t dest_pd_phys = alloc_ppage (); if (!dest_pd_phys) return -ENOMEM; pd_entry_t* dest_pd = (pd_entry_t*)((uint64_t)dest_pd_phys + hhdm_offset); - memset (dest_pd, 0, PAGE_SIZE); + kmemset (dest_pd, 0, PAGE_SIZE); dest_pdpt[pdpt_idx] = *src_pdpt_entry; dest_pdpt[pdpt_idx].pd_base_address = (uint64_t)dest_pd_phys / PAGE_SIZE; @@ -826,7 +826,7 @@ int clone_user_memory (uint64_t cr3_src, uint64_t* cr3_dest) { paddr_t dest_pt_phys = alloc_ppage (); if (!dest_pt_phys) return -ENOMEM; pt_entry_t* dest_pt = (pt_entry_t*)((uint64_t)dest_pt_phys + hhdm_offset); - memset (dest_pt, 0, PAGE_SIZE); + kmemset (dest_pt, 0, PAGE_SIZE); dest_pd[pd_idx] = *src_pd_entry; dest_pd[pd_idx].pt_base_address = (uint64_t)dest_pt_phys / PAGE_SIZE; diff --git a/kernel/src/kernel/process.c b/kernel/src/kernel/process.c index 81d36a5..146fdfb 100644 --- a/kernel/src/kernel/process.c +++ b/kernel/src/kernel/process.c @@ -76,7 +76,7 @@ int process_fork (process* source_process, process** dest_ptr) { process* new_process = kmalloc (sizeof (process)); if (!new_process) return -ENOMEM; - memcpy ((void*)new_process, (void*)source_process, sizeof (process)); + kmemcpy ((void*)new_process, (void*)source_process, sizeof (process)); void* new_kstack = alloc_vpages (STACK_SIZE / PAGE_SIZE, false); if (!new_kstack) return -ENOMEM; @@ -89,7 +89,7 @@ int process_fork (process* source_process, process** dest_ptr) { // privilege shift, messing up rbp and stuff if (!source_process->p_user) { // Kernel thread: flush parent state into child's new kernel stack byte-for-byte - memcpy (new_kstack, (void*)(source_process->p_kstack - STACK_SIZE), STACK_SIZE); + kmemcpy (new_kstack, (void*)(source_process->p_kstack - STACK_SIZE), STACK_SIZE); uintptr_t parent_stack_base = source_process->p_kstack - STACK_SIZE; uintptr_t child_stack_base = (uintptr_t)new_kstack; @@ -124,7 +124,7 @@ int process_fork (process* source_process, process** dest_ptr) { } } else { registers_t* child_frame = (registers_t*)(new_process->p_kstack - sizeof (registers_t)); - memcpy (child_frame, source_process->p_registers_ptr, sizeof (registers_t)); + kmemcpy (child_frame, source_process->p_registers_ptr, sizeof (registers_t)); new_process->p_registers_ptr = child_frame; new_process->p_registers_ptr->rsp = source_process->p_registers_ptr->rsp; } diff --git a/kernel/src/kernel/syscall.c b/kernel/src/kernel/syscall.c index 77d1adf..fbe14bb 100644 --- a/kernel/src/kernel/syscall.c +++ b/kernel/src/kernel/syscall.c @@ -48,5 +48,5 @@ void init_syscalls (void) { latest_frame = nullptr; idt_register_handler (0x80, syscall_handler); idt_set_flags (0x80, 0x0E, 3, 0); - memset (syscall_handlers, 0, SYSCALL_COUNT * sizeof (syscall_handler_t)); + kmemset (syscall_handlers, 0, SYSCALL_COUNT * sizeof (syscall_handler_t)); } From e210a46aac4a5064223acef290931fd8701d8bf1 Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Wed, 25 Mar 2026 20:04:28 +0530 Subject: [PATCH 4/5] Add k prefix to stdio functions --- kernel/include/kclib/stdio.h | 2 +- kernel/src/kclib/stdio.c | 8 ++++---- kernel/src/kernel/entry.c | 24 ++++++++++++------------ kernel/src/kernel/fs/cpio.c | 4 ++-- kernel/src/kernel/memmgt.c | 8 ++++---- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/kernel/include/kclib/stdio.h b/kernel/include/kclib/stdio.h index a2c9525..1794653 100644 --- a/kernel/include/kclib/stdio.h +++ b/kernel/include/kclib/stdio.h @@ -7,6 +7,6 @@ #include #include -void printf (const char*, ...); +void kprintf (const char*, ...); #endif \ No newline at end of file diff --git a/kernel/src/kclib/stdio.c b/kernel/src/kclib/stdio.c index 7dc8989..63d1b4e 100644 --- a/kernel/src/kclib/stdio.c +++ b/kernel/src/kclib/stdio.c @@ -10,7 +10,7 @@ Handle the different cases of %-- in printf @param args pointer to the arguments printf received @param ul whether the format prints an unsigned/long character */ -static void fmtprintf (const char* format, size_t* i, va_list* args, bool ul) { +static void kfmtprintf (const char* format, size_t* i, va_list* args, bool ul) { switch (format[*i]) { case 's': { const char* str = va_arg (*args, const char*); @@ -42,7 +42,7 @@ static void fmtprintf (const char* format, size_t* i, va_list* args, bool ul) { case 'u': case 'l': { (*i)++; - fmtprintf (format, i, args, true); + kfmtprintf (format, i, args, true); } break; default: { putchar ('%'); @@ -56,7 +56,7 @@ Print a formatted string to the screen. @param format formatted string to print */ -void printf (const char* format, ...) { +void kprintf (const char* format, ...) { va_list args; va_start (args, format); @@ -66,7 +66,7 @@ void printf (const char* format, ...) { switch (format[i]) { case '%': { i++; - fmtprintf (format, &i, &args, false); + kfmtprintf (format, &i, &args, false); } break; case '\t': size_t idx = get_idx (); diff --git a/kernel/src/kernel/entry.c b/kernel/src/kernel/entry.c index e38bca1..da6a139 100644 --- a/kernel/src/kernel/entry.c +++ b/kernel/src/kernel/entry.c @@ -80,25 +80,25 @@ static void print_info (void) { drawBorder (20); set_color (0x44eeaa); - printf ("COS 0.0%d", 7); + kprintf ("COS 0.0%d", 7); set_color (0xddeecc); - printf ("\n\nHello, World!\n\n"); + kprintf ("\n\nHello, World!\n\n"); set_color (0x88aaee); - printf ("System info:\n"); + kprintf ("System info:\n"); if (bootinfo_req.response != nullptr) { set_color (0x888888); - printf ("Bootloader: %s %s", bootinfo_req.response->name, bootinfo_req.response->version); + kprintf ("Bootloader: %s %s", bootinfo_req.response->name, bootinfo_req.response->version); } else - printf ("\nDid not receive bootloader info from bootloader.\n"); + kprintf ("\nDid not receive bootloader info from bootloader.\n"); if (boottime_req.response != nullptr) { set_color (0x888888); - printf ("\nSystem booted at time %ld.\n", boottime_req.response->boot_time); + kprintf ("\nSystem booted at time %ld.\n", boottime_req.response->boot_time); } else - printf ("\nDid not receive boot time from Limine.\n"); + kprintf ("\nDid not receive boot time from Limine.\n"); } __attribute__ ((noreturn)) void _start_stage2 (void) { @@ -107,13 +107,13 @@ __attribute__ ((noreturn)) void _start_stage2 (void) { print_info (); - printf ("\n[Stage 2] Running as PID %lld\n", get_current_process ()->p_id); - printf ("[Stage 2] Current system tick: %lld\n", get_current_tick ()); + kprintf ("\n[Stage 2] Running as PID %lld\n", get_current_process ()->p_id); + kprintf ("[Stage 2] Current system tick: %lld\n", get_current_tick ()); - printf ("[Stage 2] Extracting initramfs...\n"); + kprintf ("[Stage 2] Extracting initramfs...\n"); load_cpio_from_memory (initramfs->address, "/"); - printf ("[Stage 2] Trying to load the ELF.\n"); + kprintf ("[Stage 2] Trying to load the ELF.\n"); uint64_t fork_result = do_syscall (SYSCALL_SYS_FORK, 0, 0, 0); @@ -124,7 +124,7 @@ __attribute__ ((noreturn)) void _start_stage2 (void) { uintptr_t entry_point; int err = load_elf ("/bin/hello", current, &entry_point); if (err != 0) { - printf ("Failed to load /bin/hello : %d\n", err); + kprintf ("Failed to load /bin/hello : %d\n", err); for (;;) ; } diff --git a/kernel/src/kernel/fs/cpio.c b/kernel/src/kernel/fs/cpio.c index 50a1545..4d114da 100644 --- a/kernel/src/kernel/fs/cpio.c +++ b/kernel/src/kernel/fs/cpio.c @@ -131,7 +131,7 @@ static int parse_entry_to_inode (cpio_newc_header_t* header, const char* out_pat if (filetype == C_ISDIR) { error = mkdir_if_required (filename, root_dir); if (error) { - printf ("[CPIO] Could not create directory %s : %lld\n", filename, error); + kprintf ("[CPIO] Could not create directory %s : %lld\n", filename, error); goto cleanup; } } @@ -161,7 +161,7 @@ static int parse_entry_to_inode (cpio_newc_header_t* header, const char* out_pat do_syscall (SYSCALL_SYS_WRITE, fd, (uint64_t)data, filesize); do_syscall (SYSCALL_SYS_CLOSE, fd, 0, 0); } else { - printf ("[CPIO] Could not write file %s : %lld\n", filename, fd); + kprintf ("[CPIO] Could not write file %s : %lld\n", filename, fd); goto cleanup; } } diff --git a/kernel/src/kernel/memmgt.c b/kernel/src/kernel/memmgt.c index f7b4c5e..5c94055 100644 --- a/kernel/src/kernel/memmgt.c +++ b/kernel/src/kernel/memmgt.c @@ -217,7 +217,7 @@ static void init_physical_bitmap (struct limine_memmap_response* memmap_response if (bitmap_phys_addr == nullptr) { write_serial_str ( "Not enough contiguous memory for bitmap setup!! Please download some RAM.\n"); - printf ("Not enough contiguous memory for bitmap setup!! Please download some RAM.\n"); + kprintf ("Not enough contiguous memory for bitmap setup!! Please download some RAM.\n"); __asm__ ("hlt"); } @@ -672,7 +672,7 @@ void walk_pagetable () { for (int k = 0; k < 512; k++) { pd_entry_t* pd_entry = &pd_base_ptr[k]; if (!pd_entry->present) continue; - printf ("PD %d: PT Base Address: 0x%lx\n", k, pd_entry->pt_base_address << 12); + kprintf ("PD %d: PT Base Address: 0x%lx\n", k, pd_entry->pt_base_address << 12); pt_entry_t* pt_base_ptr = (pt_entry_t*)get_vaddr_from_frame (pd_entry->pt_base_address); bool is_present_pt[512] = {false}; @@ -686,9 +686,9 @@ void walk_pagetable () { if (range_start == -1) range_start = k; } else if (range_start != -1) { if (range_start == k - 1) - printf (" Present PT: %d\n", range_start); + kprintf (" Present PT: %d\n", range_start); else - printf (" Present PTs: %d-%d\n", range_start, k - 1); + kprintf (" Present PTs: %d-%d\n", range_start, k - 1); range_start = -1; } } From 1d7344ce1faf8ef10e7ca777aaf6550efb8cc7ba Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Wed, 25 Mar 2026 20:06:03 +0530 Subject: [PATCH 5/5] Add k prefix to all string.h functions --- kernel/include/kclib/string.h | 12 ++++++------ kernel/src/kclib/stdio.c | 20 ++++++++++---------- kernel/src/kclib/string.c | 20 ++++++++++---------- kernel/src/kernel/fs/cpio.c | 8 ++++---- kernel/src/kernel/fs/ramfs.c | 16 ++++++++-------- kernel/src/kernel/fs/vfs.c | 12 ++++++------ kernel/src/kernel/idt.c | 2 +- kernel/src/kernel/memmgt.c | 4 ++-- 8 files changed, 47 insertions(+), 47 deletions(-) diff --git a/kernel/include/kclib/string.h b/kernel/include/kclib/string.h index a907b14..90e97dc 100644 --- a/kernel/include/kclib/string.h +++ b/kernel/include/kclib/string.h @@ -5,11 +5,11 @@ #include #include -void reverse (char* str); -size_t strlen (const char*); -void itos (int32_t, char*, uint32_t); -void ulitos (uint64_t, char*, uint32_t); -int strcmp (const char* a, const char* b); -char* strdup (const char* s); +void kreverse (char* str); +size_t kstrlen (const char*); +void kitos (int32_t, char*, uint32_t); +void kulitos (uint64_t, char*, uint32_t); +int kstrcmp (const char* a, const char* b); +char* kstrdup (const char* s); #endif \ No newline at end of file diff --git a/kernel/src/kclib/stdio.c b/kernel/src/kclib/stdio.c index 63d1b4e..3318601 100644 --- a/kernel/src/kclib/stdio.c +++ b/kernel/src/kclib/stdio.c @@ -14,29 +14,29 @@ static void kfmtprintf (const char* format, size_t* i, va_list* args, bool ul) { switch (format[*i]) { case 's': { const char* str = va_arg (*args, const char*); - putstr (str, strlen (str)); + putstr (str, kstrlen (str)); } break; case 'd': case 'i': { if (ul) { char buf[65] = {0}; - ulitos (va_arg (*args, uint64_t), buf, 10); - putstr (buf, strlen (buf)); + kulitos (va_arg (*args, uint64_t), buf, 10); + putstr (buf, kstrlen (buf)); } else { char buf[33] = {0}; - itos (va_arg (*args, int32_t), buf, 10); - putstr (buf, strlen (buf)); + kitos (va_arg (*args, int32_t), buf, 10); + putstr (buf, kstrlen (buf)); } } break; case 'x': { if (ul) { char buf[65] = {0}; - ulitos (va_arg (*args, uint64_t), buf, 16); - putstr (buf, strlen (buf)); + kulitos (va_arg (*args, uint64_t), buf, 16); + putstr (buf, kstrlen (buf)); } else { char buf[33] = {0}; - itos (va_arg (*args, int32_t), buf, 16); - putstr (buf, strlen (buf)); + kitos (va_arg (*args, int32_t), buf, 16); + putstr (buf, kstrlen (buf)); } } break; case 'u': @@ -62,7 +62,7 @@ void kprintf (const char* format, ...) { bool buf = get_update_on_putch (); set_update_on_putch (false); - for (size_t i = 0; i < strlen (format); i++) { + for (size_t i = 0; i < kstrlen (format); i++) { switch (format[i]) { case '%': { i++; diff --git a/kernel/src/kclib/string.c b/kernel/src/kclib/string.c index 1220420..b5ca308 100644 --- a/kernel/src/kclib/string.c +++ b/kernel/src/kclib/string.c @@ -7,7 +7,7 @@ Get the length of a standard string (terminating with 0). @param str pointer to string @return string size */ -size_t strlen (const char* str) { +size_t kstrlen (const char* str) { size_t ret = 0; while (str[ret] != 0) ret++; @@ -19,8 +19,8 @@ Reverse a standard string (terminating with 0). @param str string to reverse */ -void reverse (char* str) { - int len = strlen (str), start = 0, end = len - 1; +void kreverse (char* str) { + int len = kstrlen (str), start = 0, end = len - 1; while (start < end) { char temp = str[start]; str[start] = str[end]; @@ -37,7 +37,7 @@ Convert integer to representative string with base b. @param buf memory to save integer @param b base */ -void itos (int32_t i, char* buf, uint32_t b) { +void kitos (int32_t i, char* buf, uint32_t b) { int ctr = 0; bool negative = false; if (i < 0) { @@ -54,7 +54,7 @@ void itos (int32_t i, char* buf, uint32_t b) { if (ctr == 0) buf[0] = '0'; if (negative) buf[ctr++] = '-'; buf[ctr + 1] = 0; - reverse (buf); + kreverse (buf); } /*! @@ -64,7 +64,7 @@ Convert long integer to representative string with base b. @param buf memory to save integer @param b base */ -void ulitos (uint64_t i, char* buf, uint32_t b) { +void kulitos (uint64_t i, char* buf, uint32_t b) { int ctr = 0; bool negative = false; do { @@ -77,7 +77,7 @@ void ulitos (uint64_t i, char* buf, uint32_t b) { if (ctr == 0) buf[0] = '0'; if (negative) buf[ctr++] = '-'; buf[ctr++] = 0; - reverse (buf); + kreverse (buf); } /*! @@ -86,7 +86,7 @@ void ulitos (uint64_t i, char* buf, uint32_t b) { * @param b second string * @return whether strings are equal */ -int strcmp (const char* a, const char* b) { +int kstrcmp (const char* a, const char* b) { for (int i = 0; a[i] != 0 && b[i] != 0; i++) if (a[i] != b[i]) return 1; return 0; @@ -96,9 +96,9 @@ int strcmp (const char* a, const char* b) { * Duplicate a string using the kernel allocator. * Returns a newly allocated copy or nullptr on failure. */ -char* strdup (const char* s) { +char* kstrdup (const char* s) { if (!s) return nullptr; - size_t len = strlen (s); + size_t len = kstrlen (s); char* dup = (char*)kmalloc (len + 1); if (!dup) return nullptr; for (size_t i = 0; i <= len; i++) diff --git a/kernel/src/kernel/fs/cpio.c b/kernel/src/kernel/fs/cpio.c index 4d114da..01fd260 100644 --- a/kernel/src/kernel/fs/cpio.c +++ b/kernel/src/kernel/fs/cpio.c @@ -56,10 +56,10 @@ static int mkdir_if_required (const char* dir, inode* root) { if (!dir) return -EINVARG; if (dir[0] != '/') return -ENEEDABS; - char* path = strdup (dir); + char* path = kstrdup (dir); if (!path) return -ENOMEM; - size_t len = strlen (path); + size_t len = kstrlen (path); while (len > 1 && path[len - 1] == '/') { path[len - 1] = '\0'; len--; @@ -96,7 +96,7 @@ static int mkdir_if_required (const char* dir, inode* root) { child_name = nullptr; } - if (error == 0 && child_name && strlen (child_name) > 0) { + if (error == 0 && child_name && kstrlen (child_name) > 0) { inode* result = nullptr; error = do_mkdir (child_name, &result, parent_dir); if (error == -EPEXISTS) error = 0; @@ -126,7 +126,7 @@ static int parse_entry_to_inode (cpio_newc_header_t* header, const char* out_pat filename[namesize] = 0; // enforce string in case corrupt filename[0] = '/'; // many syscalls require absolute paths, which cpio does not guarantee - if (strcmp (filename, "/TRAILER!!!") == 0 || strcmp (filename, "/.") == 0) goto cleanup; + if (kstrcmp (filename, "/TRAILER!!!") == 0 || kstrcmp (filename, "/.") == 0) goto cleanup; if (filetype == C_ISDIR) { error = mkdir_if_required (filename, root_dir); diff --git a/kernel/src/kernel/fs/ramfs.c b/kernel/src/kernel/fs/ramfs.c index 35abc6b..4a969a8 100644 --- a/kernel/src/kernel/fs/ramfs.c +++ b/kernel/src/kernel/fs/ramfs.c @@ -25,9 +25,9 @@ int mkdir (char* dirname, inode** result, inode* root) { ((dir_content_t*)new_dir->i_pvt)->d_children = (child_t*)kmalloc (2 * sizeof (child_t)); child_t* dir_children = (child_t*)((dir_content_t*)new_dir->i_pvt)->d_children; - dir_children[0].c_name = strdup ("."); + dir_children[0].c_name = kstrdup ("."); dir_children[0].c_inode = new_dir; - dir_children[1].c_name = strdup (".."); + dir_children[1].c_name = kstrdup (".."); dir_children[1].c_inode = root; // construct parent replacement structures @@ -36,7 +36,7 @@ int mkdir (char* dirname, inode** result, inode* root) { kmemcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); new_parent_children[parent_pvt->d_count].c_inode = new_dir; - new_parent_children[parent_pvt->d_count].c_name = strdup (dirname); + new_parent_children[parent_pvt->d_count].c_name = kstrdup (dirname); // replace parent structure and free old one kfree (parent_pvt->d_children); @@ -61,7 +61,7 @@ int create (char* filename, inode** result, inode* root) { kmemcpy (new_parent_children, parent_pvt->d_children, parent_pvt->d_count * sizeof (child_t)); new_parent_children[parent_pvt->d_count].c_inode = new_file; - new_parent_children[parent_pvt->d_count].c_name = strdup (filename); + new_parent_children[parent_pvt->d_count].c_name = kstrdup (filename); // replace parent structure and free old one kfree (parent_pvt->d_children); @@ -78,7 +78,7 @@ int lookup (char* filename, inode** result, inode* root) { if (root->i_type != DIRECTORY) return -EINVPATH; // case '.' - if (strcmp (filename, ".") == 0) { + if (kstrcmp (filename, ".") == 0) { *result = root; return 0; } @@ -96,7 +96,7 @@ int lookup (char* filename, inode** result, inode* root) { // invalid child ; continue searching if (!d_child->c_inode || !d_child->c_name) continue; - if (strcmp (d_child->c_name, filename) == 0) { + if (kstrcmp (d_child->c_name, filename) == 0) { // case '*' *result = d_child->c_inode; return 0; @@ -178,9 +178,9 @@ inode* init_ramfs_root (void) { ((dir_content_t*)root_inode->i_pvt)->d_children = (child_t*)kmalloc (2 * sizeof (child_t)); child_t* root_children = (child_t*)((dir_content_t*)root_inode->i_pvt)->d_children; - root_children[0].c_name = strdup ("."); + root_children[0].c_name = kstrdup ("."); root_children[0].c_inode = root_inode; - root_children[1].c_name = strdup (".."); + root_children[1].c_name = kstrdup (".."); root_children[1].c_inode = root_inode; return root_inode; diff --git a/kernel/src/kernel/fs/vfs.c b/kernel/src/kernel/fs/vfs.c index 03b698b..8859033 100644 --- a/kernel/src/kernel/fs/vfs.c +++ b/kernel/src/kernel/fs/vfs.c @@ -27,18 +27,18 @@ static bool filename_has_invalid_chars (char* filename) { int vfs_resolve_parent (const char* path_arg, inode* root, inode** r_parent, char** r_name) { if (!path_arg || path_arg[0] != '/') return -ENEEDABS; - char* path = strdup (path_arg); + char* path = kstrdup (path_arg); if (!path) return -ENOMEM; char* last_slash = nullptr; - for (int i = strlen (path) - 1; i >= 0; i--) { + for (int i = kstrlen (path) - 1; i >= 0; i--) { if (path[i] == '/') { last_slash = &path[i]; break; } } - *r_name = strdup (last_slash + 1); + *r_name = kstrdup (last_slash + 1); if (last_slash == path) { *r_parent = root; @@ -77,7 +77,7 @@ int do_mkdir (char* dirname, inode** result, inode* parent) { if (filename_has_invalid_chars (dirname)) return -EINVARG; // case dirname is '.' or '..' - if (strcmp (dirname, ".") == 0 || strcmp (dirname, "..") == 0) return -EINVARG; + if (kstrcmp (dirname, ".") == 0 || kstrcmp (dirname, "..") == 0) return -EINVARG; // case dirname already exists inode* lookup_result = nullptr; @@ -135,7 +135,7 @@ int do_create (char* filename, inode** result, inode* parent) { if (filename_has_invalid_chars (filename)) return -EINVARG; // case filename is '.' or '..' - if (strcmp (filename, ".") == 0 || strcmp (filename, "..") == 0) return -EINVARG; + if (kstrcmp (filename, ".") == 0 || kstrcmp (filename, "..") == 0) return -EINVARG; // case filename already exists inode* lookup_result = nullptr; @@ -190,7 +190,7 @@ int do_lookup (char* filename, inode** result, inode* root) { kmemcpy ((void*)target_name, (void*)(filename + 1), (size_t)(next_slash - filename) - 1); target_name[(size_t)(next_slash - filename) - 1] = 0; - if (strcmp (target_name, ".") == 0) { + if (kstrcmp (target_name, ".") == 0) { kfree (target_name); // case '/.' diff --git a/kernel/src/kernel/idt.c b/kernel/src/kernel/idt.c index 1dabd3e..d59851a 100644 --- a/kernel/src/kernel/idt.c +++ b/kernel/src/kernel/idt.c @@ -36,7 +36,7 @@ static inline void log_reg (const char* name, uint64_t value) { char buf[32]; write_serial_str (name); write_serial_str (": 0x"); - ulitos (value, buf, 16); + kulitos (value, buf, 16); write_serial_str (buf); write_serial_str ("\n"); } diff --git a/kernel/src/kernel/memmgt.c b/kernel/src/kernel/memmgt.c index 5c94055..fe1001e 100644 --- a/kernel/src/kernel/memmgt.c +++ b/kernel/src/kernel/memmgt.c @@ -174,7 +174,7 @@ static void free_ppages (void* paddr, uint64_t count) { if (!is_valid) { char buffer[16]; - ulitos ((uint64_t)paddr, buffer, 16); + kulitos ((uint64_t)paddr, buffer, 16); write_serial_str ("Tried to free reserved memory! Address: 0x"); write_serial_str (buffer); write_serial_str ("\nHalting.\n"); @@ -251,7 +251,7 @@ registers_t* page_fault_handler (registers_t* registers) { __asm__ volatile ("mov %%cr2, %0" : "=r"(cr2)); char buffer[16]; - ulitos (cr2, buffer, 16); + kulitos (cr2, buffer, 16); write_serial_str ("\nEncountered a page fault!\n"); write_serial_str ("Faulting address: 0x");