Skip to main content

Crate user_lib

Crate user_lib 

Source
Expand description

教程阅读建议:

  • _start 展示用户程序最小运行时(初始化控制台、堆、调用 main);
  • 其余辅助函数(sleep/pipe_*)展示了常见 syscall 组合用法。

Modules§

native
非 riscv64 架构的 stub 实现。

Macros§

print
格式化打印。
println
格式化打印并换行。

Structs§

AtomicStats
共享统计器。
ClockId
时钟类型标识(与 clock_gettime 等接口配合使用)。
FairRwLock
公平读写锁。
KernelMetricSnapshot
内核计数器快照。
OpenFlags
ReaderPreferRwLock
读者优先读写锁。
SignalAction
信号处理函数的定义
Stat
文件状态信息
StatMode
文件类型标志
StatsSnapshot
统计快照。
SyscallId
系统调用号。
TicketSpinLock
公平 ticket spinlock。
TimeSpec
秒 + 纳秒表示的时间结构。

Enums§

SignalNo
信号编号。

Constants§

LAB_TICK_REQUEST
t2l4 实验使用的虚拟 tick 请求号。
MAX_SIG
最大的信号编号
STDDEBUG
标准错误/调试输出文件描述符。
STDIN
标准输入文件描述符。
STDOUT
标准输出文件描述符。
T2L5_TRACE_GET_BLOCKED_SYNC
t2l5 trace 请求:读取同步阻塞次数。
T2L5_TRACE_GET_CONTEXT_SWITCHES
t2l5 trace 请求:读取上下文切换次数。
T2L5_TRACE_GET_WAKEUPS
t2l5 trace 请求:读取同步唤醒次数。
T2L5_TRACE_RESET_METRICS
t2l5 trace 请求:清零内核计数器。

Functions§

_start
busy_spin
用纯计算制造一个可重复的 CPU burst。
clock_gettime
获取时钟时间。
close
关闭文件描述符。
condvar_create
创建条件变量。
condvar_signal
唤醒等待条件变量的线程。
condvar_wait
等待条件变量。
condvar_wait_contended
包装 condvar_wait,返回是否发生过阻塞。
count_syscall
enable_deadlock_detect
启用死锁检测。
exec
执行新程序。
exit
退出当前进程。
fork
创建子进程。
fstat
获取文件状态。
get_time
getchar
getpid
获取当前进程 ID。
gettid
获取当前线程 ID。
kernel_metrics
读取内核计数器。
kill
向进程发送信号。
lab_tick
主动向内核发送一个“虚拟时钟 tick”。
link
创建一个文件的一个硬链接。
mmap
映射内存。
munmap
取消内存映射。
mutex_create
创建互斥锁。
mutex_lock
获取互斥锁。
mutex_lock_contended
包装 mutex_lock,返回是否发生过阻塞。
mutex_unlock
释放互斥锁。
now_us
读取当前时间(微秒)。
open
打开文件。
pipe
创建管道
pipe_read
从管道读取数据 返回实际读取的总字节数,负数表示错误
pipe_write
向管道写入数据 返回实际写入的总字节数,负数表示错误
read
从文件描述符读取数据。
reset_kernel_metrics
清零内核计数器。
sbrk
调整进程堆大小
sched_yield
主动让出 CPU。
semaphore_create
创建信号量。
semaphore_down
获取信号量(P 操作)。
semaphore_down_contended
包装 semaphore_down,返回是否发生过阻塞。
semaphore_up
释放信号量(V 操作)。
set_priority
设置进程优先级。
sigaction
设置信号处理函数。
sigprocmask
设置信号掩码。
sigreturn
从信号处理函数返回。
sleep
spawn
创建并运行一个新进程。
thread_create
创建新线程。
trace
记录系统调用。
trace_read
trace_write
unlink
取消一个文件路径到文件的链接。
wait
等待任意子进程退出。
waitpid
等待指定子进程退出。
waittid
等待指定线程退出。
write
向文件描述符写入数据。