diff --git a/include/stdlib.h b/include/stdlib.h index 30701b4..515c5f2 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -21,7 +21,7 @@ int atexit(void (*)(void)); int atoi(const char *); -char *itoa(int value, char *buffer, int base); +char *itoa(uint32_t value, char *buffer, int base); char *getenv(const char *); diff --git a/include/sys/param.h b/include/sys/param.h index af798a6..de26fd8 100644 --- a/include/sys/param.h +++ b/include/sys/param.h @@ -7,5 +7,6 @@ #define MIN(a, b) (((a)<(b))?(a):(b)) #define MAX(a, b) (((a)>(b))?(a):(b)) +#define DIV_ROUND_UP(a, b) (((a) + ((b) - 1)) / (b)) #endif //NEW_KERNEL_PARAM_H diff --git a/kernel/debug/debug.c b/kernel/debug/debug.c index edc6915..778fd76 100644 --- a/kernel/debug/debug.c +++ b/kernel/debug/debug.c @@ -24,7 +24,7 @@ static const char *elf_name_strtab = ".strtab"; struct stackframe { struct stackframe *ebp; - uint32_t eip; + uintptr_t eip; }; char *debug_get_shstrtab_entry(uint32_t ndx) { @@ -80,7 +80,7 @@ void debug_store_info(struct multiboot_info *info) { debug_find_sections(info->u.elf_sec.shndx); } -struct elf32_symtab_entry *debug_get_entry_for_addr(uint32_t addr) { +struct elf32_symtab_entry *debug_get_entry_for_addr(uintptr_t addr) { if (elf_symtab == NULL) { return NULL; } @@ -106,9 +106,9 @@ void debug_backtrace(bool do_sync) { while (frame->ebp != NULL) { struct elf32_symtab_entry *entry = debug_get_entry_for_addr(frame->eip); if (entry == NULL) { - sprintf(msg, "#unknown (%x)\n", frame->eip); + sprintf(msg, "#unknown (%lx)\n", frame->eip); } else { - sprintf(msg, "%s (%x)\n", debug_get_strtab_entry(entry->st_name), frame->eip); + sprintf(msg, "%s (%lx)\n", debug_get_strtab_entry(entry->st_name), frame->eip); }; printer(msg); frame = frame->ebp; diff --git a/kernel/libc/stdlib.c b/kernel/libc/stdlib.c index ee42bd2..37fa7bc 100644 --- a/kernel/libc/stdlib.c +++ b/kernel/libc/stdlib.c @@ -43,24 +43,21 @@ char *reverse(char *buffer, int i, int j) { } // Iterative function to implement itoa() function in C -char *itoa(int value, char *buffer, int base) { +char *itoa(uint32_t value, char *buffer, int base) { // invalid input if (base < 2 || base > 32) return buffer; - // consider absolute value of number - int n = abs(value); - int i = 0; - while (n) { - int r = n % base; + while (value) { + uint32_t r = value % base; if (r >= 10) buffer[i++] = 65 + (r - 10); else buffer[i++] = 48 + r; - n = n / base; + value = value / base; } // if number is 0 diff --git a/kernel/mem/mem.c b/kernel/mem/mem.c index 7a6fcbc..8a82cca 100644 --- a/kernel/mem/mem.c +++ b/kernel/mem/mem.c @@ -2,7 +2,6 @@ // Created by rick on 22-04-20. // -#include #include #include @@ -22,10 +21,10 @@ #define MMAP_TYPE_PAGING 7 typedef struct { - uint32_t address; + uintptr_t address; uint32_t length; uint32_t type; -} att_packed mmap_entry; +} mmap_entry; int last_memmap_entry = 0; mmap_entry memmap[MEMMAP_ENTRIES] = { @@ -49,7 +48,7 @@ mmap_entry memmap[MEMMAP_ENTRIES] = { void use_mmap_entry(struct multiboot_mmap_entry *entry) { mmap_entry *mm_entry = &memmap[last_memmap_entry++]; - mm_entry->address = (void *) entry->addr; + mm_entry->address = (uintptr_t) entry->addr; mm_entry->length = entry->len; mm_entry->type = entry->type; // check if the entry overlaps with the kernel address space diff --git a/kernel/vfs/lfs/ext2.c b/kernel/vfs/lfs/ext2.c index 1a32e5e..5a45102 100644 --- a/kernel/vfs/lfs/ext2.c +++ b/kernel/vfs/lfs/ext2.c @@ -17,7 +17,6 @@ #define EXT2_DRIVER_NAME "ext2" #define MI(mount) ((ext2_mount_info_t *)(mount)->global_driver_data) #define FDI(fd) ((ext2_fd_info_t *)(fd)->driver_data) -#define DIV_ROUND_UP(a, b) (((a) + ((b) - 1)) / (b)) typedef struct ext2_dgetents_state { uint32_t bp;