fn start(&self) -> Self::Resumer {
        let kcb = kcb::get_kcb();
        assert_eq!(kcb.arch.node(), self.affinity, "Run on remote replica?");

        self.maybe_switch_vspace();
        let entry_point = unsafe { (*self.vcpu_kernel()).resume_with_upcall };

        if entry_point == INVALID_EXECUTOR_START {
            Ring3Resumer::new_start(self.entry_point, self.stack_top())
        } else {
            // This is similar to `upcall` as it starts executing the defined upcall
            // handler, but on the regular stack (for that dispatcher) and not
            // the upcall stack. It's used to add a new core to a process.

            let entry_point = unsafe { (*self.vcpu_kernel()).resume_with_upcall };
            trace!("Added core entry point is at {:#x}", entry_point);
            let cpu_ctl = self.vcpu().vaddr().as_u64();

            Ring3Resumer::new_upcall(
                entry_point,
                self.stack_top(),
                cpu_ctl,
                kpi::upcall::NEW_CORE,
                kcb.arch.id() as u64,
            )
        }
    }
/// Start the process (run it for the first time).
Start the process (run it for the first time).
Start the process ( run it for the first time ) .
fn start(&self) -> Self::Resumer {
        let kcb = kcb::get_kcb();
        assert_eq!(kcb.arch.node(), self.affinity, "Run on remote replica?");
        self.maybe_switch_vspace();
        let entry_point = unsafe { (*self.vcpu_kernel()).resume_with_upcall };
        if entry_point == INVALID_EXECUTOR_START {
            Ring3Resumer::new_start(self.entry_point, self.stack_top())
        } else {
            // This is similar to `upcall` as it starts executing the defined upcall
            // handler, but on the regular stack (for that dispatcher) and not
            // the upcall stack. It's used to add a new core to a process.
            let entry_point = unsafe { (*self.vcpu_kernel()).resume_with_upcall };
            trace!("Added core entry point is at {:#x}", entry_point);
            let cpu_ctl = self.vcpu().vaddr().as_u64();
            Ring3Resumer::new_upcall(
                entry_point,
                self.stack_top(),
                cpu_ctl,
                kpi::upcall::NEW_CORE,
                kcb.arch.id() as u64,
            )
        }
    }
fn start ( & self ) -> Self :: Resumer { let kcb = kcb :: get_kcb ( ) ; assert_eq ! ( kcb arch node ( ) self affinity " " ) ; self . maybe_switch_vspace ( ) ; let entry_point = unsafe { ( * self . vcpu_kernel ( ) ) . resume_with_upcall } ; if entry_point == INVALID_EXECUTOR_START { Ring3Resumer :: new_start ( self . entry_point , self . stack_top ( ) ) } else { // This is similar to `upcall` as it starts executing the defined upcall // handler, but on the regular stack (for that dispatcher) and not // the upcall stack. It's used to add a new core to a process. let entry_point = unsafe { ( * self . vcpu_kernel ( ) ) . resume_with_upcall } ; trace ! ( " " entry_point ) ; let cpu_ctl = self . vcpu ( ) . vaddr ( ) . as_u64 ( ) ; Ring3Resumer :: new_upcall ( entry_point , self . stack_top ( ) , cpu_ctl , kpi :: upcall :: NEW_CORE , kcb . arch . id ( ) as u64 , ) } }
Start the process (run it for the first time).
Start the process ( run it for the first time ) .
&self
&self