From a2b2dbaa71278769e9dbf5ca611cd0d5f3b896ed Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Wed, 13 Mar 2024 23:30:21 -0400 Subject: kernel/amd64: machdep: Add processor_free_pcb() Add routine to deallocate resources within the process control block. Signed-off-by: Ian Moffett --- sys/arch/amd64/amd64/machdep.c | 13 +++++++++++++ sys/include/sys/machdep.h | 1 + 2 files changed, 14 insertions(+) diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c index 7ad3e6a..fa6c1f5 100644 --- a/sys/arch/amd64/amd64/machdep.c +++ b/sys/arch/amd64/amd64/machdep.c @@ -180,6 +180,19 @@ processor_init_pcb(struct proc *proc) return 0; } +int +processor_free_pcb(struct proc *proc) +{ + struct pcb *pcb = &proc->pcb; + + if (pcb->fpu_state == NULL) { + return -1; + } + + vm_free_pageframe(VIRT_TO_PHYS(pcb->fpu_state), 1); + return 0; +} + void processor_switch_to(struct proc *old_td, struct proc *new_td) { diff --git a/sys/include/sys/machdep.h b/sys/include/sys/machdep.h index b6edf14..0c06374 100644 --- a/sys/include/sys/machdep.h +++ b/sys/include/sys/machdep.h @@ -39,6 +39,7 @@ #define MAXCPUS 32 int processor_init_pcb(struct proc *proc); +int processor_free_pcb(struct proc *proc); void processor_switch_to(struct proc *old_td, struct proc *new_td); void processor_init(void); void processor_halt(void); -- cgit v1.2.3