/DragonOS/kernel/src/arch/riscv64/syscall/ |
H A D | mod.rs | 31 pub(super) fn syscall_handler(syscall_num: usize, frame: &mut TrapFrame) -> () { in syscall_handler() 37 let args = [frame.a0, frame.a1, frame.a2, frame.a3, frame.a4, frame.a5]; in syscall_handler() 39 Syscall::catch_handle(syscall_num, &args, frame) in syscall_handler() 41 frame, in syscall_handler()
|
/DragonOS/kernel/src/arch/x86_64/process/ |
H A D | kthread.rs | 30 let mut frame = TrapFrame::new(); in __inner_create() localVariable 31 frame.rbx = create_info as usize as u64; in __inner_create() 32 frame.ds = KERNEL_DS.bits() as u64; in __inner_create() 33 frame.es = KERNEL_DS.bits() as u64; in __inner_create() 34 frame.cs = KERNEL_CS.bits() as u64; in __inner_create() 35 frame.ss = KERNEL_DS.bits() as u64; in __inner_create() 38 frame.rflags |= 1 << 9; in __inner_create() 40 frame.rip = kernel_thread_bootstrap_stage1 as usize as u64; in __inner_create() 43 let pid = ProcessManager::fork(&frame, clone_flags).inspect_err(|_e| { in __inner_create()
|
/DragonOS/kernel/src/exception/ |
H A D | debug.rs | 12 pub fn handle(frame: &mut TrapFrame) -> Result<(), SystemError> { in handle() 13 Self::post_kprobe_handler(frame) in handle() 16 fn post_kprobe_handler(frame: &mut TrapFrame) -> Result<(), SystemError> { in post_kprobe_handler() 17 let pc = frame.debug_address(); in post_kprobe_handler() 22 guard.call_post_handler(frame); in post_kprobe_handler() 23 guard.call_event_callback(frame); in post_kprobe_handler() 27 clear_single_step(frame, return_address); in post_kprobe_handler()
|
H A D | ebreak.rs | 12 pub fn handle(frame: &mut TrapFrame) -> Result<(), SystemError> { in handle() 13 Self::kprobe_handler(frame) in handle() 15 fn kprobe_handler(frame: &mut TrapFrame) -> Result<(), SystemError> { in kprobe_handler() 16 let break_addr = frame.break_address(); in kprobe_handler() 23 guard.call_pre_handler(frame); in kprobe_handler() 28 setup_single_step(frame, single_step_address); in kprobe_handler() 33 DebugException::handle(frame)?; in kprobe_handler()
|
/DragonOS/kernel/src/arch/x86_64/syscall/ |
H A D | mod.rs | 67 pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) { in syscall_handler() 68 let syscall_num = frame.rax as usize; in syscall_handler() 81 frame.rdi as usize, in syscall_handler() 82 frame.rsi as usize, in syscall_handler() 83 frame.rdx as usize, in syscall_handler() 84 frame.r10 as usize, in syscall_handler() 85 frame.r8 as usize, in syscall_handler() 86 frame.r9 as usize, in syscall_handler() 105 X86_64SignalArch::sys_rt_sigreturn(frame) as usize, in syscall_handler() 106 frame, in syscall_handler() [all …]
|
/DragonOS/kernel/crates/rbpf/src/ |
H A D | stack.rs | 7 frame: Vec<u8>, field 19 frame: vec![0; STACK_SIZE], in new() 30 frame: vec![0; capacity], in with_capacity() 36 self.frame.len() in len() 40 self.frame.as_ptr() in as_ptr() 44 self.frame.as_slice() in as_slice()
|
/DragonOS/kernel/src/arch/x86_64/ipc/ |
H A D | signal.rs | 335 pub frame: TrapFrame, // 暂存的系统调用/中断返回时,原本要弹出的内核栈帧 field 359 frame: &TrapFrame, in setup_sigcontext() 366 self.frame = *frame; in setup_sigcontext() 385 pub fn restore_sigcontext(&mut self, frame: &mut TrapFrame) -> bool { in restore_sigcontext() 388 (*frame) = self.frame; in restore_sigcontext() 409 unsafe extern "C" fn do_signal(frame: &mut TrapFrame) { in do_signal() 410 X86_64SignalArch::do_signal(frame); in do_signal() 417 unsafe fn do_signal(frame: &mut TrapFrame) { in do_signal() 429 if siginfo_read_guard.sig_pending().signal().bits() == 0 || !frame.is_from_user() { in do_signal() 492 handle_signal(sig_number, &mut sigaction, &info.unwrap(), &oldset, frame); in do_signal() [all …]
|
/DragonOS/kernel/src/arch/x86_64/ |
H A D | kprobe.rs | 3 pub fn setup_single_step(frame: &mut TrapFrame, step_addr: usize) { in setup_single_step() 4 frame.rflags |= 0x100; in setup_single_step() 5 frame.set_pc(step_addr); in setup_single_step() 8 pub fn clear_single_step(frame: &mut TrapFrame, return_addr: usize) { in clear_single_step() 9 frame.rflags &= !0x100; in clear_single_step() 10 frame.set_pc(return_addr); in clear_single_step()
|
/DragonOS/kernel/src/arch/riscv64/process/ |
H A D | kthread.rs | 32 let mut frame = TrapFrame::new(); in __inner_create() localVariable 33 frame.a2 = create_info as usize; in __inner_create() 36 frame.status.update_sie(true); in __inner_create() 37 frame.status.update_spp(SPP::Supervisor); in __inner_create() 38 frame.status.update_sum(true); in __inner_create() 40 frame.ra = kernel_thread_bootstrap_stage1 as usize; in __inner_create() 43 let pid = ProcessManager::fork(&frame, clone_flags).map_err(|e| { in __inner_create()
|
/DragonOS/kernel/src/mm/allocator/ |
H A D | page_frame.rs | 350 let frame = unsafe { LockedFrameAllocator.allocate(count)? }; in allocate_page_frames() localVariable 351 return Some(frame); in allocate_page_frames() 359 frame: PhysPageFrame, in deallocate_page_frames() 364 LockedFrameAllocator.free(frame.phys_address(), count); in deallocate_page_frames() 367 let mut frame = frame; in deallocate_page_frames() localVariable 369 let paddr = frame.phys_address(); in deallocate_page_frames() 382 frame = frame.next(); in deallocate_page_frames()
|
H A D | bump.rs | 200 let frame = PageFrameUsage::new(PageFrameCount::new(used), PageFrameCount::new(total)); in usage() localVariable 201 return frame; in usage()
|
/DragonOS/kernel/src/arch/riscv64/ |
H A D | kprobe.rs | 3 pub fn setup_single_step(frame: &mut TrapFrame, step_addr: usize) { in setup_single_step() 4 frame.set_pc(step_addr); in setup_single_step() 7 pub fn clear_single_step(frame: &mut TrapFrame, return_addr: usize) { in clear_single_step() 8 frame.set_pc(return_addr); in clear_single_step()
|
/DragonOS/docs/kernel/ipc/ |
H A D | signal.md | 59 │ frame │ │ 64 │ sig handler │ └────────────┘ │ frame. │
|
/DragonOS/tools/debugging/logmonitor/src/ |
H A D | ui.rs | 13 pub fn render(app: &mut App, frame: &mut Frame) { in render() 40 .split(frame.size()); in render() 51 frame.render_widget(tabs, chunks[0]); in render() 54 0 => draw_first_tab(frame, app, chunks[1]), in render()
|
H A D | tui.rs | 55 self.terminal.draw(|frame| ui::render(app, frame))?; in draw()
|
/DragonOS/kernel/src/syscall/ |
H A D | mod.rs | 85 frame: &mut TrapFrame, in catch_handle() 87 let res = unwinding::panic::catch_unwind(|| Self::handle(syscall_num, args, frame)); in catch_handle() 100 frame: &mut TrapFrame, in handle() 162 let from_user = frame.is_from_user(); in handle() 173 let from_user = frame.is_from_user(); in handle() 196 UserBufferWriter::new(buf_vaddr as *mut u8, len, frame.is_from_user())?; in handle() 208 UserBufferReader::new(buf_vaddr as *const u8, len, frame.is_from_user())?; in handle() 222 SYS_FORK => Self::fork(frame), in handle() 224 SYS_VFORK => Self::vfork(frame), in handle() 251 let res = if frame.is_from_user() && verify_area(virt_addr, len).is_err() { in handle() [all …]
|
/DragonOS/kernel/src/process/ |
H A D | syscall.rs | 86 pub fn fork(frame: &TrapFrame) -> Result<usize, SystemError> { in fork() 87 ProcessManager::fork(frame, CloneFlags::empty()).map(|pid| pid.into()) in fork() 90 pub fn vfork(frame: &TrapFrame) -> Result<usize, SystemError> { in vfork() 93 Self::fork(frame) in vfork() 107 frame: &mut TrapFrame, in execve() 139 Self::do_execve(path, argv, envp, frame)?; in execve()
|
/DragonOS/kernel/src/mm/ |
H A D | page.rs | 619 let frame = MMArch::phys_2_virt(phys).unwrap(); in clone() localVariable 620 MMArch::write_bytes(frame, 0, MMArch::PAGE_SIZE); in clone() 649 let frame = MMArch::phys_2_virt(phys).unwrap().data() as *mut u8; in clone() localVariable 650 frame.copy_from_nonoverlapping( in clone() 1241 let frame = self.frame_allocator.allocate_one()?; in map_phys() localVariable 1244 MMArch::write_bytes(MMArch::phys_2_virt(frame).unwrap(), 0, MMArch::PAGE_SIZE); in map_phys() 1250 table.set_entry(i, PageEntry::new(frame, flags)); in map_phys() 1323 let frame = self.frame_allocator.allocate_one()?; in allocate_table() localVariable 1326 MMArch::write_bytes(MMArch::phys_2_virt(frame).unwrap(), 0, MMArch::PAGE_SIZE); in allocate_table() 1332 table.set_entry(i, PageEntry::new(frame, flags)); in allocate_table()
|
H A D | ucontext.rs | 1255 for frame in virt_iter { in extract() 1256 if let Some((paddr, _)) = utable.translate(frame.virt_address()) { in extract() 1268 for frame in virt_iter { in extract() 1269 if let Some((paddr, _)) = utable.translate(frame.virt_address()) { in extract() 1651 for frame in virt_iter { in zeroed() 1652 let paddr = mapper.translate(frame.virt_address()).unwrap().0; in zeroed()
|
/DragonOS/kernel/src/ |
H A D | Makefile | 18 LDFLAGS_UNWIND = --eh-frame-hdr
|
/DragonOS/docs/kernel/debug/ |
H A D | debug-kernel-with-gdb.md | 268   您可以通过`frame`或者`f`命令来切换对应的栈帧获取更多信息以及操作。 271 frame <frame_number>
|
/DragonOS/kernel/ |
H A D | Cargo.toml | 75 "fde-gnu-eh-frame-hdr",
|
/DragonOS/kernel/src/ipc/ |
H A D | signal_types.rs | 545 unsafe fn do_signal(frame: &mut TrapFrame); in do_signal()
|