DragonOS
DragonOS copied to clipboard
使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算轻量化场景而设计。DragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for lightweight...
在sysfs中实现uevent的逻辑,并在设备驱动模型中,发送通用的uevent. 然后用户测试程序能够通过epoll感知到这些uevent,并输出。
## 需求 目前,dragonos的大部分log是使用`kdebug!`、`kinfo!`等宏来打印的。但是这样无法在依赖库中打印日志。 因此,在pr https://github.com/DragonOS-Community/DragonOS/pull/761 中,添加了`CustomLogger`,使得能够打印依赖库中的日志。 目前需要: 1. [x] 把新的logger接入kmsg机制 2. [x] 把旧的kdebug等宏,改为使用rust的log库。 3. [ ] 添加模块相关的日志抽象,使得能够针对特定模块调整日志级别
## 问题 acpi pm timer 没有更新墙上时间,并且没有触发软中断。 这会导致: 1. 软中断没法触发 2. 各种定时任务无法运行。 要实现以上功能,我认为需要设置acpi pm timer的定时器中断,然后在中断里面模仿hpet的处理逻辑去做。 ## 参考 1. https://wiki.osdev.org/ACPI_Timer > IRQs The ACPI Power Management Timer generates a SCI when the...
方便对sched增加新功能时,保持基础功能稳定 参考:https://github.com/torvalds/linux/blob/master/tools/testing/selftests/sched/cs_prctl_test.c
## 需求 把PCI驱动以及virtio网卡驱动接入设备驱动模型。 ## 任务 - [x] 把pci子系统接入sysfs - [ ] 把virtio over pci的设备跟pci子系统对接起来
## 描述 目前内核暂时没有引入动态链接的解释器(interpreter),本任务需要实现动态链接的功能,让DragonOS能够加载动态链接的应用程序。 注意,由于目前页面共享机制尚未实现,暂时可以不考虑动态库的共享.
## 现状 目前dragonos的中断子系统实现了动态注册中断的功能,但是对于中断域的管理还有很多没实现的。然后,虚拟中断号目前是由驱动手动指定的。但是因为为了避免冲突,以及当机器上具有多个中断域(比如riscv的clint和plic)的时候,手动指定虚拟中断号会造成冲突。因此需要动态分配。 ## 需求 实现虚拟中断号的动态分配。 ## 清单 - [ ] x86_64 - [ ] riscv64
## 需求 ## 子任务 - [ ] 1. riscv在`prepare_cpus`里面获取多核信息 - [ ] 2. 实现多核ipi处理(页面刷新\kick cpu用到) - [ ] 3. 启动ap核心的idle线程 ## 子任务1: 获取多核信息 仿照x86_64下的功能,实现多核信息获取,设置到smp_cpu_manager里面。 x86_64下的: https://code.dragonos.org.cn/xref/DragonOS/kernel/src/arch/x86_64/smp/mod.rs?r=3959e94df38073fdb80b199777015f95611ba05f#197
## 需求 目前系统已经引入了virtio网卡,但是还没有在riscv上完成初始化(可以参考riscv下的virtio-blk)。该任务需要初始化网卡,并且能正常收到中断。然后需要能够运行http_server程序来验证功能。