MCPcopy Create free account

hub / github.com/chyyuu/os_kernel_lab / functions

Functions600 in github.com/chyyuu/os_kernel_lab

↓ 51 callersMethodexclusive_access
Panic if the data has been borrowed.
os/src/sync/up.rs:109
↓ 50 callersMethodlen
(&self)
os/src/mm/page_table.rs:206
↓ 49 callersMethodinner_exclusive_access
(&self)
os/src/task/task.rs:19
↓ 48 callersFunctionclone
(_: *const ())
user/src/bin/stackless_coroutine.rs:101
↓ 47 callersMethodpush
Add a new MapArea into this MemorySet. Assuming that there are no conflicts in the virtual address space.
os/src/mm/memory_set.rs:77
↓ 39 callersMethodlock
(&self)
os/src/sync/mutex.rs:25
↓ 34 callersFunctionexit
(exit_code: i32)
user/src/task.rs:3
↓ 32 callersFunctiondrop
(_: *const ())
user/src/bin/stackless_coroutine.rs:106
↓ 31 callersFunctionsyscall
(id: usize, args: [usize; 3])
user/src/syscall.rs:33
↓ 28 callersMethodpush
(&mut self, closure: C)
user/src/bin/stackless_coroutine.rs:66
↓ 27 callersFunctionclose
(fd: usize)
user/src/file.rs:19
↓ 22 callersFunctionget_block_cache
( block_id: usize, block_device: Arc<dyn BlockDevice>, )
easy-fs/src/block_cache.rs:128
↓ 22 callersFunctionget_time
()
user/src/task.rs:9
↓ 21 callersFunctioncurrent_process
()
os/src/task/processor.rs:67
↓ 21 callersMethodmap
(&mut self, page_table: &mut PageTable)
os/src/mm/memory_set.rs:307
↓ 19 callersFunctionwaittid
(tid: usize)
user/src/task.rs:73
↓ 18 callersMethodfind
(&self, name: &str)
easy-fs/src/vfs.rs:62
↓ 18 callersFunctionthread_create
(entry: usize, arg: usize)
user/src/task.rs:67
↓ 16 callersMethodmodify
(&mut self, offset: usize, f: impl FnOnce(&mut T) -> V)
easy-fs/src/block_cache.rs:59
↓ 15 callersMethodinto_iter
(self)
user/src/bin/gui_snake.rs:35
↓ 14 callersFunctioncurrent_task
()
os/src/task/processor.rs:63
↓ 14 callersFunctionfork
()
user/src/task.rs:15
↓ 14 callersMethodis_empty
(&self)
os/src/drivers/input/mod.rs:49
↓ 14 callersFunctionread
(fd: usize, buf: &mut [u8])
user/src/file.rs:25
↓ 13 callersMethodclear
(&self)
easy-fs/src/vfs.rs:174
↓ 13 callersFunctionsleep
(sleep_ms: usize)
user/src/task.rs:63
↓ 11 callersMethodcontains
(&self, this: Point)
user/src/bin/gui_snake.rs:69
↓ 11 callersMethodexclusive_session
(&self, f: F)
os/src/sync/up.rs:114
↓ 11 callersFunctionyield_
()
user/src/task.rs:6
↓ 9 callersMethodas_bytes
(&self)
easy-fs/src/layout.rs:396
↓ 9 callersMethodinner_exclusive_access
(&self)
os/src/task/process.rs:70
↓ 9 callersFunctionopen
(path: &str, flags: OpenFlags)
user/src/file.rs:16
↓ 9 callersFunctionwait
(exit_code: &mut i32)
user/src/task.rs:21
↓ 9 callersFunctionwrite
(fd: usize, buf: &[u8])
user/src/file.rs:28
↓ 8 callersMethoddraw
(&mut self, target: &mut D)
user/src/bin/gui_snake.rs:213
↓ 8 callersMethodfloor
(&self)
os/src/mm/address.rs:100
↓ 8 callersMethodgetpid
(&self)
os/src/task/process.rs:255
↓ 8 callersMethodnext
(&mut self)
os/src/mm/address.rs:252
↓ 8 callersMethodppn
(&self)
os/src/mm/page_table.rs:35
↓ 8 callersMethodread
(&self, offset: usize, f: impl FnOnce(&T) -> V)
easy-fs/src/block_cache.rs:55
↓ 8 callersMethodtoken
(&self)
os/src/mm/memory_set.rs:48
↓ 7 callersMethodget_top
(&self)
os/src/task/id.rs:106
↓ 7 callersFunctionmutex_lock
(mutex_id: usize)
user/src/sync.rs:9
↓ 7 callersFunctionmutex_unlock
(mutex_id: usize)
user/src/sync.rs:12
↓ 7 callersMethodpage_offset
(&self)
os/src/mm/address.rs:106
↓ 7 callersFunctionschedule
(switched_task_cx_ptr: *mut TaskContext)
os/src/task/processor.rs:97
↓ 6 callersMethodcreate
( block_device: Arc<dyn BlockDevice>, total_blocks: u32, inode_bitmap_blocks: u32,
easy-fs/src/efs.rs:20
↓ 6 callersFunctioncurrent_user_token
()
os/src/task/processor.rs:71
↓ 6 callersFunctionframe_alloc
()
os/src/mm/frame_allocator.rs:100
↓ 6 callersMethodget_bytes_array
(&self)
os/src/mm/address.rs:175
↓ 6 callersFunctionget_time_u
()
user/src/bin/phil_din_mutex.rs:19
↓ 6 callersMethodget_trap_cx
(&self)
os/src/task/task.rs:39
↓ 6 callersMethodset_direction
(&mut self, direction: Direction)
user/src/bin/gui_snake.rs:66
↓ 6 callersFunctiontranslated_refmut
(token: usize, ptr: *mut T)
os/src/mm/page_table.rs:189
↓ 6 callersMethodwrite
(&mut self, ch: u8)
os/src/drivers/chardev/ns16550a.rs:111
↓ 5 callersFunctionadd_task
(task: Arc<TaskControlBlock>)
os/src/task/manager.rs:33
↓ 5 callersFunctionexec
(path: &str, args: &[*const u8])
user/src/task.rs:18
↓ 5 callersMethodflags
(&self)
os/src/mm/page_table.rs:38
↓ 5 callersMethodget_disk_inode_pos
(&self, inode_id: u32)
easy-fs/src/efs.rs:111
↓ 5 callersMethodinto_iter
(self)
os/src/mm/address.rs:228
↓ 5 callersFunctionsemaphore_down
(sem_id: usize)
user/src/sync.rs:21
↓ 5 callersFunctionsemaphore_up
(sem_id: usize)
user/src/sync.rs:18
↓ 5 callersFunctionsuspend_current_and_run_next
()
os/src/task/mod.rs:29
↓ 5 callersMethodwrite_at
(&self, offset: usize, buf: &[u8])
easy-fs/src/vfs.rs:164
↓ 4 callersMethodalloc_fd
(&mut self)
os/src/task/process.rs:43
↓ 4 callersFunctionblock_cache_sync_all
()
easy-fs/src/block_cache.rs:137
↓ 4 callersFunctionblock_current_and_run_next
()
os/src/task/mod.rs:55
↓ 4 callersMethodhandle_irq
(&self)
os/src/drivers/input/mod.rs:66
↓ 4 callersMethodmodify_disk_inode
(&self, f: impl FnOnce(&mut DiskInode) -> V)
easy-fs/src/vfs.rs:39
↓ 4 callersFunctionpipe
(pipe_fd: &mut [usize])
user/src/file.rs:22
↓ 4 callersMethodread_at
(&self, offset: usize, buf: &mut [u8])
easy-fs/src/vfs.rs:159
↓ 4 callersMethodsignal
(&self)
os/src/sync/condvar.rs:27
↓ 4 callersMethodspawn
While `yield` is the logically interesting function I think this the technically most interesting. When we spawn a new task we first check if there a
user/src/bin/stackful_coroutine.rs:181
↓ 4 callersMethodstep
(&mut self)
os/src/mm/address.rs:189
↓ 4 callersMethodtranslate
(&self, vpn: VirtPageNum)
os/src/mm/memory_set.rs:241
↓ 4 callersMethodtranslate_va
(&self, va: VirtAddr)
os/src/mm/page_table.rs:127
↓ 4 callersFunctiontrap_cx_bottom_from_tid
(tid: usize)
os/src/task/id.rs:118
↓ 4 callersMethodwait_no_sched
(&self)
os/src/sync/condvar.rs:43
↓ 4 callersFunctionwakeup_task
(task: Arc<TaskControlBlock>)
os/src/task/manager.rs:37
↓ 4 callersFunctionyield_task
We know that Runtime is alive the length of the program and that we only access from one core (so no datarace). We yield execution of the current task
user/src/bin/stackful_coroutine.rs:220
↓ 3 callersMethodadd
(&mut self, task: Arc<TaskControlBlock>)
os/src/task/manager.rs:18
↓ 3 callersMethodalloc
(&mut self)
os/src/task/id.rs:23
↓ 3 callersFunctioncondvar_signal
(condvar_id: usize)
user/src/sync.rs:27
↓ 3 callersMethoddata_blocks
Return block number correspond to size.
easy-fs/src/layout.rs:96
↓ 3 callersFunctionf
()
user/src/bin/adder.rs:25
↓ 3 callersMethodfind_pte
(&self, vpn: VirtPageNum)
os/src/mm/page_table.rs:95
↓ 3 callersFunctionframebuffer_flush
()
user/src/io.rs:15
↓ 3 callersMethodget_mut
(&self)
os/src/sync/up.rs:48
↓ 3 callersMethodget_start
(&self)
os/src/mm/address.rs:215
↓ 3 callersFunctionget_time_ms
()
os/src/timer.rs:19
↓ 3 callersFunctiongetchar
()
user/src/console.rs:35
↓ 3 callersMethodinit
(&mut self, l: PhysPageNum, r: PhysPageNum)
os/src/mm/frame_allocator.rs:48
↓ 3 callersMethodinitialize
( &mut self, total_blocks: u32, inode_bitmap_blocks: u32, inode_area_blocks: u
easy-fs/src/layout.rs:39
↓ 3 callersMethodinsert_framed_area
Assume that no conflicts.
os/src/mm/memory_set.rs:52
↓ 3 callersFunctionkernel_stack_position
Return (bottom, top) of a kernel stack in kernel space.
os/src/task/id.rs:64
↓ 3 callersMethodls
(&self)
easy-fs/src/vfs.rs:142
↓ 3 callersMethodmake_step
(&mut self)
user/src/bin/gui_snake.rs:82
↓ 3 callersMethodmap_trampoline
Mention that trampoline is not collected by areas.
os/src/mm/memory_set.rs:85
↓ 3 callersMethodread
(&mut self)
os/src/drivers/chardev/ns16550a.rs:101
↓ 3 callersMethodread_disk_inode
(&self, f: impl FnOnce(&DiskInode) -> V)
easy-fs/src/vfs.rs:33
next →1–100 of 600, ranked by callers