Stack trace all black & void arg fix

This commit is contained in:
2026-03-14 09:31:57 +01:00
parent 5c0d02579b
commit e5c296238c
6 changed files with 12 additions and 8 deletions

View File

@@ -19,11 +19,10 @@ The basics that I'm targeting are:
### Basic utility of what we call a "kernel"
- Fix terminal driver (backspace issues, scrolling) OR add Flanterm or equivalent
- Implement tasks, and task switching + context switching and spinlock acquire/release
- Load an executable
- Filesystem (TAR for read-only initfs, then maybe read-write using FAT12/16/32 or easier fs) w/ VFS layer
- Getting to userspace (syscalls)
- Getting to userspace (ring 3 switching, syscall interface)
- Porting musl libc or equivalent
### Scalability/maintenance/expansion features
@@ -32,7 +31,6 @@ The basics that I'm targeting are:
- SOME error handling in functions
- Unit tests
- Good error codes (like Linux kernel: ENOMEM, ENOENT, ...)
- Make the panic function work within itself without dependencies + error message (and still get cpu context?)
### Optional features

View File

@@ -8,7 +8,7 @@ Indentations should be 4 characters long.
## Line length
Lines should not be more than 100 characters long.
Lines should not be more than 100 characters long. Exceptions is made for printing strings.
## Variables

View File

@@ -46,7 +46,7 @@ void debug_stack_trace(unsigned int max_frames)
rbp = next_rbp;
}
if (init.terminal) {
printf("*** end stack trace ***[0m");
printf("*** end stack trace ***\x1b[0m");
}
DEBUG("*** end stack trace ***");
}

View File

@@ -36,13 +36,13 @@ extern volatile uint64_t ticks;
// printf("debug: [%s]: " log "\n", __FILE__, ##__VA_ARGS__);
void panic(struct cpu_status_t* ctx, const char* str);
void hcf();
void idle();
void hcf(void);
void idle(void);
/* debug */
void debug_stack_trace(unsigned int max_frames);
const char* debug_find_symbol(uintptr_t rip, uintptr_t* offset);
void boot_mem_display();
void boot_mem_display(void);
#define assert(check) do { if(!(check)) hcf(); } while(0)

View File

@@ -124,5 +124,6 @@ void kmain()
scheduler_init();
kputs(PEPPEROS_SPLASH);
idle();
}

View File

@@ -43,6 +43,11 @@ struct cpu_status_t* scheduler_schedule(struct cpu_status_t* context)
current_process = idle_proc;
}
if (current_process == idle_proc && current_process->next == NULL)
{
return idle_proc->context;
}
current_process->context = context;
//current_process->status = READY;