1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-24 08:56:17 +04:00
rCore/kernel/spec.md
2020-07-07 16:57:37 +08:00

71 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 代码结构
## 驱动
按照分类放到 `src/drivers` 目录下。
如果是有 device tree 或者 pci 的平台,应当从对应的 bus 中初始化并传递参数。
如果是全局唯一并且代码不会复用的情况,可以写成 singleton。
## ISA 相关代码结构
路径:`src/arch/ISA`。其余的代码尽量不要出现平台相关的代码。
### consts
- KERNEL_OFFSET 线性映射的偏移
- ARCHISA 的名称
### cpu
- fn id():当前正在运行的 CPU 的 ID
### timer
- fn timer_now():当前的时间
### interrupt
- fn ack(trap: usize):确认中断处理
- fn timer():处理时钟中断
- fn wait_for_interrupt():打开并等待中断
- fn handle_user_page_fault(thread: &Arc\<Thread\>, addr: usize):处理用户态的缺页异常
### interrupt/consts
- fn is_page_fault(trap: usize):是否缺页
- fn is_syscall(trap: usize):是否系统调用
- fn is_intr(trap: usize):是否中断
### interrupt/handler
- fn trap_handler(tf: &mut TrapFrame):处理来自内核的异常
### syscall
含有所有 syscall 的编号的定义
### board/xxx
针对该架构下某个平台的相关代码
- fn early_init():早期初始化串口等
- fn early_final():结束早期初始化串口
- fn init():初始化
### mod
- fn main_start():第一个核的启动
- fn others_start():其他核的启动
### fp
- struct FpState浮点的状态
### signal
- struct MachineContext和 Linux 中的 mcontext 一致
- RETCODE调用 rt_sigreturn syscall 的指令
- set_signal_handler设置 signal handler