forked from xamidev/pepperOS
Stack trace all black & void arg fix
This commit is contained in:
@@ -19,11 +19,10 @@ The basics that I'm targeting are:
|
|||||||
|
|
||||||
### Basic utility of what we call a "kernel"
|
### 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
|
- Implement tasks, and task switching + context switching and spinlock acquire/release
|
||||||
- Load an executable
|
- Load an executable
|
||||||
- Filesystem (TAR for read-only initfs, then maybe read-write using FAT12/16/32 or easier fs) w/ VFS layer
|
- 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
|
- Porting musl libc or equivalent
|
||||||
|
|
||||||
### Scalability/maintenance/expansion features
|
### Scalability/maintenance/expansion features
|
||||||
@@ -32,7 +31,6 @@ The basics that I'm targeting are:
|
|||||||
- SOME error handling in functions
|
- SOME error handling in functions
|
||||||
- Unit tests
|
- Unit tests
|
||||||
- Good error codes (like Linux kernel: ENOMEM, ENOENT, ...)
|
- 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
|
### Optional features
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Indentations should be 4 characters long.
|
|||||||
|
|
||||||
## Line length
|
## 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
|
## Variables
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ void debug_stack_trace(unsigned int max_frames)
|
|||||||
rbp = next_rbp;
|
rbp = next_rbp;
|
||||||
}
|
}
|
||||||
if (init.terminal) {
|
if (init.terminal) {
|
||||||
printf("*** end stack trace ***[0m");
|
printf("*** end stack trace ***\x1b[0m");
|
||||||
}
|
}
|
||||||
DEBUG("*** end stack trace ***");
|
DEBUG("*** end stack trace ***");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ extern volatile uint64_t ticks;
|
|||||||
// printf("debug: [%s]: " log "\n", __FILE__, ##__VA_ARGS__);
|
// printf("debug: [%s]: " log "\n", __FILE__, ##__VA_ARGS__);
|
||||||
|
|
||||||
void panic(struct cpu_status_t* ctx, const char* str);
|
void panic(struct cpu_status_t* ctx, const char* str);
|
||||||
void hcf();
|
void hcf(void);
|
||||||
void idle();
|
void idle(void);
|
||||||
|
|
||||||
/* debug */
|
/* debug */
|
||||||
void debug_stack_trace(unsigned int max_frames);
|
void debug_stack_trace(unsigned int max_frames);
|
||||||
const char* debug_find_symbol(uintptr_t rip, uintptr_t* offset);
|
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)
|
#define assert(check) do { if(!(check)) hcf(); } while(0)
|
||||||
|
|
||||||
|
|||||||
@@ -124,5 +124,6 @@ void kmain()
|
|||||||
scheduler_init();
|
scheduler_init();
|
||||||
|
|
||||||
kputs(PEPPEROS_SPLASH);
|
kputs(PEPPEROS_SPLASH);
|
||||||
|
|
||||||
idle();
|
idle();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ struct cpu_status_t* scheduler_schedule(struct cpu_status_t* context)
|
|||||||
current_process = idle_proc;
|
current_process = idle_proc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (current_process == idle_proc && current_process->next == NULL)
|
||||||
|
{
|
||||||
|
return idle_proc->context;
|
||||||
|
}
|
||||||
|
|
||||||
current_process->context = context;
|
current_process->context = context;
|
||||||
//current_process->status = READY;
|
//current_process->status = READY;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user