MCPcopy Create free account

hub / github.com/croakexciting/forfun-os / functions

Functions443 in github.com/croakexciting/forfun-os

↓ 44 callersMethodexclusive_access
(&self)
os/src/utils/type_extern.rs:16
↓ 44 callersMethodlen
(&self)
os/src/driver/block/mod.rs:28
↓ 29 callersFunctionsyscall
(id: usize, args: [usize; 4])
user/src/syscall.rs:39
↓ 27 callersMethodcurrent_task
(&mut self, must: bool)
os/src/process/app.rs:428
↓ 18 callersMethodinner_access
(&self)
os/src/process/app.rs:51
↓ 12 callersFunctionkernel_phys_to_virt
(phys: PhysAddr)
os/src/arch/memory/page.rs:262
↓ 12 callersMethodset_status
(&mut self, status: ProcessStatus)
os/src/process/app.rs:852
↓ 11 callersMethodwrite
(&self, fd: usize, buf: *mut u8, len: usize)
os/src/process/app.rs:167
↓ 10 callersMethodppn
(&self)
os/src/arch/memory/page.rs:219
↓ 10 callersMethodread
(&self, fd: usize, buf: *mut u8, len: usize)
os/src/process/app.rs:177
↓ 8 callersFunctioncopy_str_with_user
(src: *const i8)
os/src/arch/memory/copy.rs:11
↓ 8 callersMethodmap
事实上你可以将虚拟地址看成是 index,用于寻找到对应的 PTE,然后根据物理页帧信息修改 PTE
os/src/mm/pt.rs:118
↓ 7 callersMethodis_valid
(&self)
os/src/arch/memory/page.rs:227
↓ 6 callersMethodclear
(&mut self)
os/src/arch/memory/page.rs:235
↓ 6 callersFunctionread
(fd: usize, buf: *mut u8, len: usize)
os/src/process/mod.rs:72
↓ 6 callersFunctionsys_fork
()
user/src/syscall.rs:100
↓ 6 callersFunctionsys_nanosleep
(duration: usize)
user/src/syscall.rs:96
↓ 5 callersFunctionback_to_idle
()
os/src/process/mod.rs:51
↓ 5 callersMethodback_to_idle
(&self)
os/src/process/app.rs:107
↓ 5 callersMethodbytes_array
(&self)
os/src/arch/memory/page.rs:136
↓ 5 callersFunctioncopy_from_user_into_vector
(from: *const u8, n: usize)
os/src/arch/memory/copy.rs:15
↓ 5 callersMethodfind_pte
在过程中,会自动创建树干页表中的页表项,但是不会创建叶子页表中的页表项 之所以这么做,是因为树干页表中的页表项指向的是页表,这在页表类中可以管理 而叶子页表中的页表项指向的是 text, data 等段,这是页表类无法管理的,也无需负责管理 而且还有一个原因是,根据虚拟页号查询时,得到树干页表中的页
os/src/mm/pt.rs:42
↓ 5 callersMethodmap_one
(&mut self, pt: &mut PageTable, vpn: VirtPage, defined_ppn: Option<PhysPage>)
os/src/mm/area.rs:75
↓ 5 callersFunctionnanoseconds
()
os/src/board/timer.rs:1
↓ 5 callersMethodunmap
(&mut self, vpn: VirtPage)
os/src/mm/pt.rs:129
↓ 4 callersMethodindex
(&self)
os/src/arch/memory/page.rs:164
↓ 4 callersMethodpte_array
(&self)
os/src/arch/memory/page.rs:131
↓ 4 callersMethodreduce
(&self, i: usize)
os/src/arch/memory/page.rs:79
↓ 4 callersMethodset_pte_with_level
(&mut self, new_pte: PageTableEntry, vpn: VirtPage, level: usize)
os/src/mm/pt.rs:158
↓ 4 callersFunctionset_signal
(pid: Option<usize>, signal: usize)
os/src/process/mod.rs:92
↓ 4 callersFunctionsys_wait
(pid: usize)
user/src/syscall.rs:108
↓ 4 callersFunctionsys_yield
()
user/src/syscall.rs:92
↓ 3 callersMethodactivate
使能虚地址模式,并且将该进程的页表写到 satp 中
os/src/process/app.rs:895
↓ 3 callersMethodadd
(&self, i: usize)
os/src/arch/memory/page.rs:75
↓ 3 callersMethodalloc
按照顺序
os/src/mm/allocator.rs:24
↓ 3 callersFunctioncopy_usize_with_user
(src: usize, dst: *mut usize)
os/src/arch/memory/copy.rs:7
↓ 3 callersFunctioncopy_vector_to_user
(v: Vec<u8>, dst: *mut u8)
os/src/arch/memory/copy.rs:22
↓ 3 callersFunctioncow
(va: usize)
os/src/process/mod.rs:55
↓ 3 callersMethodctx_ptr
(&mut self)
os/src/process/app.rs:856
↓ 3 callersMethoddealloc
(&mut self, ppn: PhysPage)
os/src/mm/allocator.rs:38
↓ 3 callersFunctionenable_user_access
()
os/src/arch/memory/copy.rs:37
↓ 3 callersFunctionexit
(exit_code: isize)
os/src/process/mod.rs:42
↓ 3 callersMethodidle_ctx
get idle ctx
os/src/process/app.rs:389
↓ 3 callersFunctionkernel_frame_alloc
()
os/src/mm/allocator.rs:96
↓ 3 callersMethodkmap
(&mut self, pa: PhysAddr)
os/src/mm/pt.rs:185
↓ 3 callersMethodkunmap
(&mut self, pa: PhysAddr)
os/src/mm/pt.rs:190
↓ 3 callersMethodload_elf
(&mut self, current_pt: &mut PageTable, data: &[u8])
os/src/process/app.rs:860
↓ 3 callersMethodrcvid
(&self)
os/src/ipc/server.rs:65
↓ 3 callersFunctionset_trigger
()
os/src/board/timer.rs:5
↓ 3 callersFunctionsys_read
(fd: usize, buffer: &mut [u8])
user/src/syscall.rs:68
↓ 3 callersMethodtask
pub fn app(&self)
os/src/process/app.rs:374
↓ 3 callersFunctionwrite
(fd: usize, buf: *mut u8, len: usize)
os/src/process/mod.rs:64
↓ 2 callersMethodadd_kernel_pt
(&mut self)
os/src/mm/mod.rs:296
↓ 2 callersFunctionalloc
()
os/src/process/pid.rs:65
↓ 2 callersMethodalloc
(&mut self, pn: usize)
os/src/mm/mod.rs:59
↓ 2 callersMethodalloc
(&mut self, pn: usize)
os/src/mm/buddy.rs:29
↓ 2 callersMethodalloc
按照顺序
os/src/ipc/id.rs:32
↓ 2 callersFunctionasid_alloc
()
os/src/mm/allocator.rs:145
↓ 2 callersMethodblock_size_log2
(&self)
os/src/driver/block/qemu_blk.rs:46
↓ 2 callersMethodclaim
(&self, hart_id: usize, level: Level)
os/src/driver/ic/plic.rs:83
↓ 2 callersMethodclaim_complete_ptr
(&self, hart_id: usize, level: Level)
os/src/driver/ic/plic.rs:41
↓ 2 callersMethodcomplete
(&self, hart_id: usize, level: Level, completion: u32)
os/src/driver/ic/plic.rs:88
↓ 2 callersFunctioncopy_with_user
(to: *mut u8, from: *const u8, n: usize)
os/src/arch/memory/copy.rs:3
↓ 2 callersMethoddata
(&self)
os/src/ipc/server.rs:69
↓ 2 callersMethoddealloc
(&mut self, vpn: VirtPage, pn: usize)
os/src/mm/buddy.rs:59
↓ 2 callersMethoddealloc
(&mut self, id: usize)
os/src/ipc/id.rs:46
↓ 2 callersFunctiondisable_user_access
()
os/src/arch/memory/copy.rs:41
↓ 2 callersMethodenable
(&self, hart_id: usize, level: Level, interrupt_id: usize)
os/src/driver/ic/plic.rs:61
↓ 2 callersMethodenable_ptr
(&self, hart_id: usize, level: Level, interrupt_id: usize)
os/src/driver/ic/plic.rs:27
↓ 2 callersMethodfilesize
(&self, fd: usize)
os/src/process/app.rs:193
↓ 2 callersFunctionflags
(pte: usize)
os/src/arch/aarch64/memory/page.rs:75
↓ 2 callersMethodflags
(&self)
os/src/arch/memory/page.rs:223
↓ 2 callersFunctionframe_alloc
()
os/src/mm/allocator.rs:92
↓ 2 callersFunctiongetchar
()
user/src/console.rs:22
↓ 2 callersMethodis_full
(&self)
os/src/driver/block/mod.rs:32
↓ 2 callersFunctionis_set
(pte: usize, flags: PTEFlags)
os/src/arch/riscv64/memory/page.rs:94
↓ 2 callersMethodmap
(&mut self, pt: &mut PageTable)
os/src/mm/area.rs:96
↓ 2 callersMethodmap_defined
(&mut self, ppns: &Vec<PhysPage>, permission: Permission, user: bool)
os/src/mm/mod.rs:274
↓ 2 callersMethodnext
(&mut self)
os/src/mm/pt.rs:199
↓ 2 callersMethodnext_task
(&mut self)
os/src/process/app.rs:444
↓ 2 callersFunctionopen
(name: String)
os/src/process/mod.rs:76
↓ 2 callersMethodopen
(&self, name: String)
os/src/process/app.rs:183
↓ 2 callersMethodpage_number
(&self)
os/src/arch/memory/page.rs:71
↓ 2 callersMethodpriority_ptr
(&self, interrupt_id: usize)
os/src/driver/ic/plic.rs:18
↓ 2 callersMethodpush_context
return kernel stack pointer
os/src/mm/mod.rs:77
↓ 2 callersMethodread_block
(&mut self, block_id: usize, buf: &mut [u8])
os/src/driver/block/qemu_blk.rs:39
↓ 2 callersMethodruntime_pull_context
(&mut self)
os/src/mm/mod.rs:91
↓ 2 callersMethodruntime_push_context
(&mut self, ctx: TrapContext)
os/src/mm/mod.rs:99
↓ 2 callersFunctionsave_trap_ctx
()
os/src/process/mod.rs:104
↓ 2 callersMethodset_priority
(&self, interrupt_id: usize, priority: u32)
os/src/driver/ic/plic.rs:50
↓ 2 callersMethodset_pte
(&mut self, new_pte: PageTableEntry, vpn: VirtPage)
os/src/mm/pt.rs:150
↓ 2 callersMethodset_sfs
(&mut self, device: BlkDeviceForFs)
os/src/file/fs.rs:24
↓ 2 callersMethodset_signalmask
(&self, signal: usize)
os/src/process/app.rs:208
↓ 2 callersMethodset_threshold
(&self, hart_id: usize, level: Level, threshold: u32)
os/src/driver/ic/plic.rs:72
↓ 2 callersFunctionsignal_handler
()
os/src/process/mod.rs:100
↓ 2 callersFunctionsignal_hook
(ctx: &mut TrapContext)
os/src/arch/aarch64/trap.rs:108
↓ 2 callersFunctionsleep
nano time
os/src/process/mod.rs:47
↓ 2 callersFunctionsys_kill
(pid: usize, signal: usize)
user/src/syscall.rs:136
↓ 2 callersFunctionsys_mmap
(size: usize, permission: usize)
user/src/syscall.rs:140
↓ 2 callersFunctionsyscall
(id: usize, args: [usize; 4])
os/src/syscall/mod.rs:46
next →1–100 of 443, ranked by callers