diff options
author | Ian Moffett <ian@osmora.org> | 2025-10-10 18:49:43 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-10-10 18:49:43 -0400 |
commit | 2f8da5a5eb726f3c05b8fca19e82928d8acb147d (patch) | |
tree | 59bcbbddb3dbf86879821e40fe4d65693a5e2ddc /src/sys/arch/amd64/os | |
parent | fe317f8e7cb245cc36c0c6ac8fdef5d54168e978 (diff) |
kern: proc: Add initial penv block support
This commit introduces the initial support for the process environment
block and implements argv and argc.
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/arch/amd64/os')
-rw-r--r-- | src/sys/arch/amd64/os/os_proc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sys/arch/amd64/os/os_proc.c b/src/sys/arch/amd64/os/os_proc.c index b8e7c99..f2eb2b3 100644 --- a/src/sys/arch/amd64/os/os_proc.c +++ b/src/sys/arch/amd64/os/os_proc.c @@ -38,6 +38,7 @@ #include <machine/gdt.h> #include <machine/frame.h> #include <machine/lapic.h> +#include <os/kalloc.h> #include <string.h> extern struct proc g_rootproc; @@ -237,6 +238,7 @@ md_proc_kill(struct proc *procp, int flags) { const size_t PSIZE = DEFAULT_PAGESIZE; struct proc *self; + struct penv_blk *envblk; struct pcore *core = this_core(); struct md_pcb *pcbp; struct vm_range *range; @@ -259,6 +261,12 @@ md_proc_kill(struct proc *procp, int flags) vm_free_frame(range->pa_base, range->len / PSIZE); } + if ((envblk = procp->envblk) != NULL) { + ptrbox_terminate(procp->envblk_box); + kfree(envblk->argv); + procp->envblk = NULL; + } + /* Release the VAS */ pcbp = &procp->pcb; mmu_free_vas(&pcbp->vas); |