Home
last modified time | relevance | path

Searched refs:trap_frame (Results 1 – 13 of 13) sorted by relevance

/DragonOS/kernel/src/arch/riscv64/interrupt/
H A Dhandle.rs35 unsafe extern "C" fn riscv64_do_irq(trap_frame: &mut TrapFrame) { in riscv64_do_irq()
36 if trap_frame.cause.is_interrupt() { in riscv64_do_irq()
37 riscv64_do_interrupt(trap_frame); in riscv64_do_irq()
38 } else if trap_frame.cause.is_exception() { in riscv64_do_irq()
39 riscv64_do_exception(trap_frame); in riscv64_do_irq()
44 fn riscv64_do_interrupt(trap_frame: &mut TrapFrame) { in riscv64_do_interrupt()
45 riscv_intc_irq(trap_frame); in riscv64_do_interrupt()
49 fn riscv64_do_exception(trap_frame: &mut TrapFrame) { in riscv64_do_exception()
50 let code = trap_frame.cause.code(); in riscv64_do_exception()
54 handler(trap_frame).ok(); in riscv64_do_exception()
[all …]
/DragonOS/kernel/src/init/
H A Dinitial_kthread.rs75 let mut trap_frame = TrapFrame::new(); in switch_to_user() localVariable
77 if try_to_run_init_process("/bin/dragonreach", &mut trap_frame).is_err() in switch_to_user()
78 && try_to_run_init_process("/bin/init", &mut trap_frame).is_err() in switch_to_user()
79 && try_to_run_init_process("/bin/sh", &mut trap_frame).is_err() in switch_to_user()
87 unsafe { arch_switch_to_user(trap_frame) }; in switch_to_user()
90 fn try_to_run_init_process(path: &str, trap_frame: &mut TrapFrame) -> Result<(), SystemError> { in try_to_run_init_process()
91 if let Err(e) = run_init_process(path, trap_frame) { in try_to_run_init_process()
103 fn run_init_process(path: &str, trap_frame: &mut TrapFrame) -> Result<(), SystemError> { in run_init_process()
108 Syscall::do_execve(path.to_string(), argv, envp, trap_frame)?; in run_init_process()
/DragonOS/kernel/src/time/
H A Dtick_common.rs12 pub fn tick_handle_periodic(trap_frame: &TrapFrame) { in tick_handle_periodic()
15 tick_periodic(cpu_id, trap_frame); in tick_handle_periodic()
18 fn tick_periodic(cpu_id: ProcessorId, trap_frame: &TrapFrame) { in tick_periodic()
24 ProcessManager::update_process_times(trap_frame.is_from_user()); in tick_periodic()
/DragonOS/kernel/src/arch/x86_64/interrupt/
H A Dhandle.rs16 unsafe extern "C" fn x86_64_do_irq(trap_frame: &mut TrapFrame, vector: u32) { in x86_64_do_irq()
19 if trap_frame.is_from_user() { in x86_64_do_irq()
31 handler.unwrap().handle(&desc, trap_frame); in x86_64_do_irq()
/DragonOS/kernel/src/arch/x86_64/ipc/
H A Dsignal.rs501 fn sys_rt_sigreturn(trap_frame: &mut TrapFrame) -> u64 { in sys_rt_sigreturn()
502 let frame = (trap_frame.rsp as usize - size_of::<u64>()) as *mut SigFrame; in sys_rt_sigreturn()
509 return trap_frame.rax; in sys_rt_sigreturn()
514 if !unsafe { &mut (*frame).context }.restore_sigcontext(trap_frame) { in sys_rt_sigreturn()
521 return trap_frame.rax; in sys_rt_sigreturn()
555 trap_frame: &mut TrapFrame, in setup_frame()
619 let frame: *mut SigFrame = get_stack(trap_frame, size_of::<SigFrame>()); in setup_frame()
650 .setup_sigcontext(oldset, trap_frame) in setup_frame()
667 trap_frame.rdi = sig as u64; in setup_frame()
668 trap_frame.rsi = unsafe { &(*frame).info as *const SigInfo as u64 }; in setup_frame()
[all …]
/DragonOS/kernel/src/driver/clocksource/
H A Dtimer_riscv.rs40 fn handle_irq(trap_frame: &mut TrapFrame) -> Result<(), SystemError> { in handle_irq()
47 tick_handle_periodic(trap_frame); in handle_irq()
134 fn handle(&self, _irq_desc: &Arc<IrqDesc>, trap_frame: &mut TrapFrame) { in handle()
135 RiscVSbiTimer::handle_irq(trap_frame).unwrap(); in handle()
/DragonOS/kernel/src/driver/irqchip/
H A Driscv_intc.rs213 pub fn riscv_intc_irq(trap_frame: &mut TrapFrame) { in riscv_intc_irq()
214 let hwirq = HardwareIrqNumber::new(trap_frame.cause.code() as u32); in riscv_intc_irq()
217 do_plic_irq(trap_frame); in riscv_intc_irq()
222 trap_frame, in riscv_intc_irq()
H A Driscv_sifive_plic.rs625 pub(super) fn do_plic_irq(trap_frame: &mut TrapFrame) { in do_plic_irq()
655 if let Err(e) = GenericIrqHandler::handle_domain_irq(domain.clone(), hwirq, trap_frame) { in do_plic_irq()
/DragonOS/kernel/src/arch/x86_64/driver/apic/
H A Dapic_timer.rs70 fn handle(&self, _irq_desc: &Arc<IrqDesc>, trap_frame: &mut TrapFrame) { in handle()
71 LocalApicTimer::handle_irq(trap_frame).ok(); in handle()
279 pub(super) fn handle_irq(trap_frame: &TrapFrame) -> Result<IrqReturn, SystemError> { in handle_irq()
281 tick_handle_periodic(trap_frame); in handle_irq()
/DragonOS/kernel/src/arch/x86_64/process/
H A Dmod.rs510 pub unsafe fn arch_switch_to_user(trap_frame: TrapFrame) -> ! { in arch_switch_to_user()
553 ready_to_switch_to_user(trap_frame, trap_frame_vaddr.data(), new_rip.data()); in arch_switch_to_user()
559 trap_frame: TrapFrame, in ready_to_switch_to_user()
563 *(trapframe_vaddr as *mut TrapFrame) = trap_frame; in ready_to_switch_to_user()
/DragonOS/kernel/src/arch/riscv64/process/
H A Dmod.rs51 pub unsafe fn arch_switch_to_user(trap_frame: TrapFrame) -> ! { in arch_switch_to_user()
73 *(trap_frame_vaddr.data() as *mut TrapFrame) = trap_frame; in arch_switch_to_user()
80 unsafe extern "C" fn ready_to_switch_to_user(trap_frame: usize, new_pc: usize) -> ! { in ready_to_switch_to_user()
/DragonOS/kernel/src/exception/
H A Dirqdesc.rs47 fn handle(&self, irq_desc: &Arc<IrqDesc>, trap_frame: &mut TrapFrame); in handle()
1030 trap_frame: &mut TrapFrame, in handle_domain_irq()
1035 irq_desc.handler().unwrap().handle(&irq_desc, trap_frame); in handle_domain_irq()
/DragonOS/kernel/src/ipc/
H A Dsignal_types.rs548 fn sys_rt_sigreturn(trap_frame: &mut TrapFrame) -> u64; in sys_rt_sigreturn()