/DragonOS/kernel/src/arch/riscv64/interrupt/ |
H A D | handle.rs | 35 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 D | initial_kthread.rs | 75 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 D | tick_common.rs | 12 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 D | handle.rs | 16 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 D | signal.rs | 501 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 D | timer_riscv.rs | 40 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 D | riscv_intc.rs | 213 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 D | riscv_sifive_plic.rs | 625 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 D | apic_timer.rs | 70 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 D | mod.rs | 510 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 D | mod.rs | 51 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 D | irqdesc.rs | 47 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 D | signal_types.rs | 548 fn sys_rt_sigreturn(trap_frame: &mut TrapFrame) -> u64; in sys_rt_sigreturn()
|