Proc refcnting wrappers
[akaros.git] / kern / arch / i686 / process.c
index ac798e7..ddae33d 100644 (file)
@@ -49,14 +49,6 @@ void proc_secure_trapframe(struct trapframe *tf)
        tf->tf_eflags |= 0x00000200; // bit 9 is the interrupts-enabled
 }
 
-/* For cases that we won't return from a syscall via the normal path, and need
- * to set the syscall return value in the registers manually.  Like in a syscall
- * moving to RUNNING_M */
-void proc_set_syscall_retval(trapframe_t *SAFE tf, intreg_t value)
-{
-       tf->tf_regs.reg_eax = value;
-}
-
 /* Called when we are currently running an address space on our core and want to
  * abandon it.  We need a known good pgdir before releasing the old one.  We
  * decref, since current no longer tracks the proc (and current no longer
@@ -64,8 +56,9 @@ void proc_set_syscall_retval(trapframe_t *SAFE tf, intreg_t value)
  * unmapping the address space!) */
 void __abandon_core(void)
 {
+       struct per_cpu_info *pcpui = &per_cpu_info[core_id()];
        asm volatile ("movw %%ax,%%gs; lldt %%ax" :: "a"(0));
        lcr3(boot_cr3);
-       proc_decref(current, 1);
-       set_current_proc(NULL);
+       proc_decref(pcpui->cur_proc);
+       pcpui->cur_proc = 0;
 }