Samuel Dai
Samuel Dai
## 问题 现在的系统调用进入时是直接在 handle 函数手动添加系统调用内容,而非可以直接在各模块中注册,不像linux使用 `SYSCALL_DEFINE` 宏直接注册。 ## 需求 注册机制应引入以下几方面考量: 1. 让各系统调用可以在各自模块内部完成注册 2. 注册系统调用时声明使用的参数数量,以允许发生系统调用时安全的打印调用的参数(比如 linux 中的 `SYSCALL_DEFINE2\3\4\5`) 3. 允许以模块为单位启用/禁用系统调用打印 ## 设计 - 引入像Linux那样的"syscall table"机制 - 使用类似unified init的过程宏实现
- [x] 重构事件通知链 - [x] 使网络子系统更易读 - [ ] 引入uevent/netlink socket - [x] 使http_server可中断 - [x] 正确实现unix stream, seqpacket socket框架 - [x] 解决资源依赖导致的潜在死锁 - [ ] 部分网络调用待完善 - [ ]...
目前仅实现了inet socket的port分配,但没有很好利用raii释放port资源。考虑引入结构实现inet port资源的获取与释放。 源码位于重构后的网络子系统:kernel/src/net/socket/inet/common/port.rs
目前的Socket仅添加了shutdown字段,未进行状态维护及shutdown操作。 - [x] 添加shutdown字段与结构 - [x] 允许系统调用更改shutdown状态 - [ ] 实现shutdown逻辑
**描述错误** #1128 PR 之后,riscv64 启动经常在不定位置爆栈 ``` [ DEBUG ] (src/driver/char/virtio_console.rs:593) virtio console: add_device: to init tty device [ DEBUG ] (src/driver/tty/tty_driver.rs:312) init_tty_device: create TtyCore [ DEBUG ] (src/driver/tty/tty_driver.rs:315) init_tty_device: to...
### 现象 使用 https://github.com/DragonOS-Community/DragonOS/pull/1139 中引入的 busybox 框架来编译,给定编译环境变量 ARCH=riscv64,能成功加载程序,但是在系统调用 `SYS_BRK` 中卡死。 在载入 busybox 时会进行两次分配,不是卡死在第一次就是第二次: ```log [ DEBUG ] (src/init/initial_kthread.rs:131) Trying to run init process at "/bin/busybox" [ DEBUG ] (src/arch/riscv64/syscall/mod.rs:32) syscall_handler:...
- [ ] 引入 ext4 - [ ] 架构隔离构建产物(`bin/kernel...` -> `bin//kernel...`)(DADK 合并主线后) - [ ] 引入 devcontainer - [ ] 引入新的 CI 构建,兼容旧的构建命令(将 ci-* 引回 *) - [ ] 将...
> [!NOTE] > ~~由于 riscv64 尚不支持完全在容器环境下在 QEMU 中运行镜像,因此若想看到在 riscv64 上做的修改,请在主机上运行 `cd tools && bash bootstrap.sh` 以完善运行环境。鉴于这种方式容易带来环境依赖上的污染,我们正在迁移至 Dev Container 环境中,由此造成的不便我们十分抱歉~~~ 自4月26日起,riscv64可以稳定在 `devcontainer` 内编译并启动。 目前已将 DragonOS oscomp 分支迁移到 riscv64 作为默认编译条件。 目前 DragonOS...
**您的功能请求是否与问题/故障有关?请描述一下。** 我们来看 `IndexNode` 的 `create` 签名 https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/mod.rs#L277-L293 注释中描述 `vfs::syscall::ModeType` 是权限,但实际上包含了文件类型: https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/syscall.rs#L42-L89 其中 47-55 行的部分显然与 `vfs::FileType` 相重复 https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/mod.rs#L99-L113 重复将 bitflags 类型实现 enum 的抽象是有意义的,因为语义上考虑到一个文件不可能即是块设备又是符号链接。然而,这里的问题是重复的传参,及其造成的开销。 **描述您想要的解决方案** 或许直接在 `vfs::syscall::ModeType` 中提供 `.file_type()` 类型,转换为 `enum`,是不错的选择? **上下文**...
#977 中断上下文内,管理tcp状态的inner的锁没有lock_irqsave; 另一方面,全部TCP锁都irq_save不现实,可能需要解耦一下。