diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2025-12-27 21:56:42 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2025-12-27 21:56:42 +0800 |
| commit | 7ececbe2818510a8acaa2a2e513085c768b14d15 (patch) | |
| tree | d884b6ad1b7e28bc22528b8433a80456fa1f7895 /include/kernel/proc.h | |
| parent | be71d44b9dfcf65fba3394fbd3dc2b3e06962897 (diff) | |
| download | lume-7ececbe2818510a8acaa2a2e513085c768b14d15.tar.gz lume-7ececbe2818510a8acaa2a2e513085c768b14d15.tar.xz | |
feat: Implement the first user program of the lume OS
Diffstat (limited to 'include/kernel/proc.h')
| -rw-r--r-- | include/kernel/proc.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/include/kernel/proc.h b/include/kernel/proc.h index 89a3db7..559b137 100644 --- a/include/kernel/proc.h +++ b/include/kernel/proc.h @@ -1,5 +1,6 @@ #pragma once #include "common/types.h" +#include "kernel/trap.h" struct Context { @@ -32,18 +33,20 @@ enum ProcState{ struct Proc { struct Context context; + struct Trapframe *tf; + + uint64 *pagetable; enum ProcState state; int pid; void* kstack; char name[16]; + uint64 sz; // }; -inline void intr_on() { asm volatile("csrs sstatus, 0x2"); } -inline void intr_off() { asm volatile("csrc sstatus, 0x2"); } namespace ProcManager { @@ -52,4 +55,10 @@ namespace ProcManager void yield(); void create_kernel_thread(void (*func)(), const char *name); -}
\ No newline at end of file + + void user_init(); +} + +void forkret(); +struct Proc *myproc(); +void usertrapret();
\ No newline at end of file |
