linfeng
7486ad438c
fix bugs in poll and epoll ( #1135 )
...
* fix bugs in poll and epoll
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* fix: wakeup all epitems instead of the first
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* Fix wakeup_epoll error
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* Make test_epoll pass
Signed-off-by: Godones <chenlinfeng25@outlook.com>
---------
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-05-09 23:08:50 +08:00
LoGin
cd3289e4b4
feat: 实现并测试 newfstatat 系统调用 ( #1153 )
...
* feat: 实现并测试 newfstatat 系统调用
新增了 newfstatat 系统调用的实现,并添加了相应的测试应用。
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(loongarch64/riscv64): 添加文件系统模块并实现GenericPosixStat结构
为loongarch64和riscv64架构添加filesystem模块,包含stat子模块,并实现GenericPosixStat结构用于处理文件状态信息。
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-09 23:04:58 +08:00
火花
5422256d63
fix: 修复无法执行当前目录下程序的bug ( #1154 )
...
* 更改pcb中的fs以及fNsSet结构体,以便从fs中获取pwd inode
* fmt
* 更改run-qemu.sh,为x86_64传入KERNEL_CMDLINE参数
* 提取FsStruct中的root和pwd信息
* chore(run-qemu.sh): 重构内核启动参数处理逻辑
- 优化KERNEL_CMDLINE拼接逻辑,确保参数顺序正确
- 统一使用sh -c执行QEMU命令
Signed-off-by: longjin <longjin@DragonOS.org>
* refactor(mnt_namespace): 重构FsStruct使用ModeType并移除Arc包装
- 将umask类型从u32改为ModeType
- 移除path_context的Arc包装,改为直接使用RwLock
- 实现Clone trait替代自动derive
- 更新默认umask值为ModeType::S_IWUGO
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(run-qemu): 修改x86_64架构的init程序路径
将x86_64架构的init程序从/bin/busybox改为/bin/dragonreach
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-05-09 15:16:10 +08:00
LoGin
0b89d7130e
refactor(vfs): 重构statx系统调用的实现 ( #1149 )
...
- 将kstat的获取,与posix statx的获取进行分离.
- 修复statx没有处理dirfd的bug
- 在Metadata结构体中新增btime字段,表示文件的创建时间
- 更新多个文件系统的metadata实现,添加对btime的支持
- 引入derive_builder crate以简化Metadata构建过程
- 重构vfs模块,将core重命名为vcore以避免命名冲突
- 实现vfs_statx和vfs_getattr函数,支持更详细的文件属性查询
- 新增LookUpFlags定义,用于路径查找时的标志位
Signed-off-by: longjin <longjin@dragonos.org>
2025-05-09 14:46:10 +08:00
火花
bc9bb9607f
Feat(tty): Supplement process group logic ( #1139 )
...
* 添加busybox的编译
* 完善tty job control的逻辑
* 修改copy_sighand的逻辑,符合Linux语义
* 以busybox作为启动shell去运行
* 修改setsid的逻辑
* 解决前台进程组无法处理信号的问题
* 移除ProcessBasicInfo其中的pgid和sid信息
* 修改setsid
* 新增get_pcb_info
* 在etc目录下新增必要的文件
* 改用busybox init作为引导程序
* 恢复dragonreach文件
* 修改busybox编译选项,能够读取环境变量
* 先让SYS_RT_SIGTIMEDWAIT返回Ok(0),能够正常进入系统
* 一些小更改
* 删除get_pcb_info
* 增加对默认termios的判断
* 完成backspace的修复
* 更改inittab,在shell启动之后更改termios
* 增加executable_path信息
* 补充proc下的exe链接文件以及读取逻辑
* 更改PosixTermios,使用stty完成erase的设置
* 用busybox作为引导程序
* 修改波特率的获取
* 修改函数方法
* 在baud_rate方法中添加对于cbaud的与操作
* 为rv64下的SigSet实现From<Signal>
* refactor(driver): 移除`#[derive(Debug)]`并手动实现`Debug` trait
移除`VirtIOBlkDevice`、`VirtIOConsoleDevice`和`VirtIONetDevice`的`#[derive(Debug)]`,并手动实现`Debug` trait以提供更详细的调试信息。
Co-authored-by: longjin <longjin@DragonOS.org>
2025-05-08 15:05:02 +08:00
f3bfe77712
fix(boot): won't fail to boot when kvm not available ( #1152 )
...
* fix(boot): won't fail to boot when kvm not available
* feat(kvm): add additional debug message on kvm init fail
2025-05-07 23:23:10 +08:00
LoGin
5e87c41d96
chore: 更新loongArch64依赖版本至0.2.5 ( #1151 )
...
将loongArch64依赖从git版本切换为crates.io注册表版本0.2.5,
Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-07 19:00:02 +08:00
LoGin
4cc267146a
feat(la64): 实现了较为早期的la64的异常处理的注册 ( #1138 )
...
* feat(la64): 实现了较为早期的la64的异常处理的注册
- 栈保存&恢复
- 开机时临时设置异常处理程序,并验证可进入异常处理程序
Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-07 13:14:54 +08:00
火花
fcb5bf4496
Feat(process): 增加ProcessGroup以及Session机制 ( #1115 )
...
* 添加make run-nographic
* 添加session和processgroup结构体
* 添加一些有关进程组的syscall
* 在fork中加入set_group
* 修改broadcast未实现的信息
* 添加对kill缺失的进程组的逻辑的补充
2025-04-22 13:22:42 +08:00
linfeng
50bbcae01a
feat:Add tracepoint prototype ( #1088 )
...
* feat:Add tracepoint prototype
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-04-22 01:58:44 +08:00
LoGin
e80796eb82
feat: la64 boot ( #1132 )
...
* la64能够进入到kernel_main
* ci: 添加为ubuntu编译qemu-loongarch64的脚本
* feat: la64能输出hello world
* la64 安装gcc && 配置github ci
* chore: 更新CI工作流和构建脚本中的Docker镜像版本至v1.10
Signed-off-by: longjin <longjin@DragonOS.org>
2025-04-20 18:51:45 +08:00
linfeng
167d272792
refactor epoll related implementation ( #1128 )
...
* Refactor epoll related implementation
Add PollableInode trait
Implement PollableInode for pollable inodes
fix https://github.com/DragonOS-Community/DragonOS/issues/1094
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-04-20 16:41:49 +08:00
0f827fb191
fix(build): filter out mislinked debug symbol in the first link stage ( #1129 )
2025-04-14 10:11:14 +08:00
linfeng
1485456bf3
refacotr: remove all c files ( #1131 )
...
* refacotr: remove all c files
Use Rust to implement the symbol table generator.
Delete unused header files and c files
Adjust the makefile in the debug directory
Signed-off-by: Godones <chenlinfeng25@outlook.com>
* fix: remove extern "C" rs_* functions
move gen_kallsyms.rs to build-scripts
Signed-off-by: Godones <chenlinfeng25@outlook.com>
2025-04-14 09:56:14 +08:00
LoGin
2d06264d79
feat: 实现ppoll系统调用并优化poll相关功能 ( #1127 )
...
- 新增ppoll系统调用,支持信号屏蔽和精确超时控制
- 优化poll系统调用,修复超时处理逻辑
- 新增ProcessControlBlock::has_pending_not_masked_signal方法,优化信号检测
- 添加Instant::saturating_sub方法,改进时间计算
- 新增rt_sigpending系统调用,支持获取待处理信号
- 添加ppoll测试程序,验证ppoll功能
Signed-off-by: longjin <longjin@DragonOS.org>
2025-04-02 21:10:52 +08:00
linfeng
91cc4adba9
fix the panic error for riscv64 ( #1123 )
...
* fix the panic error for riscv64
2025-04-02 13:49:57 +08:00
LoGin
03015e2559
feat: 支持在rv64下,运行rust编写的helloworld程序 ( #1125 )
...
* 添加 riscv_rust_init 这个helloworld程序
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 支持在riscv下启动rust编写的hello world程序
TODO: 支持sys ppoll
Signed-off-by: longjin <longjin@DragonOS.org>
* chore: 更新构建容器版本至v1.9
Signed-off-by: longjin <longjin@DragonOS.org>
* 1
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-30 01:28:41 +08:00
LoGin
55833537f1
fix: 修复elf加载器在读取解释器路径时的越界问题 ( #1124 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-29 23:46:55 +08:00
LoGin
b6db20c072
feature: virtio console support ( #1113 )
...
feat(virtio): add virtio console driver support
- Implement virtio console driver with TTY interface
- Add HVC device support for console output
- Update devfs to handle HVC devices
- Fix virtio driver registration and initialization
- Improve virtio net driver interrupt handling
- Clean up block device naming implementation
- Add clippy lint checks to multiple crates
- Fix slab allocator alignment issues
- Update QEMU run script for virtio consoleagonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-27 20:48:40 +08:00
linfeng
3d663af8a2
fix: remove useless c code ( #1116 )
...
* fix: remove useless c code
remove printk.c file
remove old test_ebpf file
implement `lookup_kallsyms` and `addr_from_symbol` using rust
* fix the weak linkage
* feat(kernel): 添加cfg-if依赖并优化panic模块的条件编译
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-03-27 14:16:10 +08:00
Z Fan
4729ec69c4
feat(kvm): 删除了旧版本kvm的代码 ( #1093 )
...
* feat(kvm): 删除了旧版本kvm的代码
* chore(kernel): 将release profile中的debug选项设置为false
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2025-03-25 13:41:30 +08:00
LoGin
8b8f2f7981
chore: 将cargo.lock恢复提交到git ( #1114 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-25 11:27:50 +08:00
LoGin
f8c5e12d70
fix: 修复slab分配器的UAF\内存越界问题 ( #1111 )
...
- 新增 `tests.rs` 模块,包含多个测试用例以验证内存分配器的正确性和性能。
- 优化 `pages.rs` 中的 `Bitfield` 实现,移除不必要的 `get_offset_for_align` 函数。
- 在 `zone.rs` 中新增 `try_reclaim_pages_in_slab` 方法,用于在特定 slab 中回收页面。
- 修复 `kernel_allocator.rs` 中的 `allocator_select_condition` 逻辑,移除对 `slab_init_state` 的依赖。
- 移除 `slab.rs` 中的 `slab_init_state` 函数,简化初始化状态检查。
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-24 23:21:22 +08:00
LoGin
13514f6695
fix: 修复nttyData的buffer导致初始化时,栈溢出的问题 ( #1112 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-24 23:17:06 +08:00
LoGin
488718dc2e
feat: 实现poll系统调用实现并修复相关bug ( #1098 )
...
feat: 实现poll系统调用实现并修复相关bug
- 实现poll系统调用,增加对EPollEvent的处理逻辑
- 修复LockedPipeInode中epitems的锁管理问题
- 添加RestartBlock支持,处理系统调用重启逻辑
- 修复EventPoll中epoll_wait的超时处理逻辑
- 新增test_poll测试程序,验证poll功能
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-14 10:48:06 +08:00
火花
24b102b030
添加set_user_sigmask ( #1090 )
2025-03-11 23:25:42 +08:00
LoGin
6fa06ff08a
fix: 在插入新的timer时,边界条件判断不正确的问题 ( #1091 )
...
修复split_pos 初始值错误导致原本应该被插入到链表末尾的定时器,插入到了链表头
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-07 12:05:45 +08:00
Z Fan
597315b04d
feat(virtualization): 内核虚拟化支持 ( #1073 )
...
* 几个结构体
* 通过vmx_init以及create_vm,create_vcpu部分TODO
* kvm_run完成一半
* 能够成功vmlaunch,但是在vmexit时候还有些问题未排查出来
* 解决了vmlaunch导致的cpu_reset的问题
* 整理代码
* 暂时性push到hyc仓库
* 修改内存虚拟化部分参数传入,解决死锁问题
* 初步完成ept映射.但不停EPT_VIOLATION
* 初步完成了EPT映射,但是读写内存还是有点问题
* fixme
* 更新了一些truncate到from_bits_unchecked的实现
* 完成内存虚拟化EPT_VIOLATION的映射
* fmt
* Remove /fixme from .gitignore
* Remove /fixme file
* Update kernel/src/init/init.rs
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
* Update kernel/src/init/init.rs
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
* 修改了注释格式,删除了附带的一些文件操作
* feat(syscall): 实现syscall restart (#1075 )
能够在系统调用返回ERESTARTSYS时,信号处理结束后,自动重启系统调用.
TODO: 实现wait等需要restart_block的系统调用的重启
Signed-off-by: longjin <longjin@DragonOS.org>
* chore: update docker image version in script && update doc (#1076 )
* chore: update docker image version in script
* chore: replace lots of spaces with newline in doc
* fix: 修复wait4系统调用部分语义与Linux不一致的问题 (#1080 )
* fix: 修复wait4系统调用部分语义与Linux不一致的问题
解决wait不住/wait之后卡死的bug
---------
Signed-off-by: longjin <longjin@DragonOS.org>
* feat(fs/syscall): 实现fchdir系统调用 (#1081 )
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(mm): 修复fat文件系统的PageCache同步问题 (#1005 )
---------
Co-authored-by: longjin <longjin@DragonOS.org>
* fix: 修正nographic启动时,控制台日志未能输出到文件的问题 (#1082 )
Signed-off-by: longjin <longjin@DragonOS.org>
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参 (#1083 )
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot (#1084 )
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot
- 校验magic number
- 支持多个cmd (具体内容未实现)
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
* fix: 修复do_wait函数在wait所有子进程时,忘了释放锁就sleep的bug (#1089 )
Signed-off-by: longjin <longjin@DragonOS.org>
* pull主线并且fmt
---------
Signed-off-by: longjin <longjin@DragonOS.org>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: Samuel Dai <samuka007@dragonos.org>
Co-authored-by: LoGin <longjin@DragonOS.org>
Co-authored-by: LIU Yuwei <22045841+Marsman1996@users.noreply.github.com>
Co-authored-by: MemoryShore <1353318529@qq.com>
2025-03-04 10:56:20 +08:00
LoGin
01dcb5d7a8
fix: 修复do_wait函数在wait所有子进程时,忘了释放锁就sleep的bug ( #1089 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-02-08 23:35:09 +08:00
LoGin
7ae6621cfa
feat: 完善sys_reboot ( #1084 )
...
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
* feat: 完善sys_reboot
- 校验magic number
- 支持多个cmd (具体内容未实现)
Signed-off-by: longjin <longjin@DragonOS.org>
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-02-06 22:55:45 +08:00
LoGin
a3011dd24a
fix(process): 修复copy_process的一些bug & 支持默认init进程传参 ( #1083 )
...
- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数
Signed-off-by: longjin <longjin@DragonOS.org>
2025-02-06 22:51:51 +08:00
MemoryShore
e92424df8d
fix(mm): 修复fat文件系统的PageCache同步问题 ( #1005 )
...
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2025-01-01 23:38:00 +08:00
LoGin
a08191c719
feat(fs/syscall): 实现fchdir系统调用 ( #1081 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-01-01 23:36:37 +08:00
LoGin
bcf0382763
fix: 修复wait4系统调用部分语义与Linux不一致的问题 ( #1080 )
...
* fix: 修复wait4系统调用部分语义与Linux不一致的问题
解决wait不住/wait之后卡死的bug
---------
Signed-off-by: longjin <longjin@DragonOS.org>
2025-01-01 14:25:46 +08:00
LoGin
2b72148cae
feat(syscall): 实现syscall restart ( #1075 )
...
能够在系统调用返回ERESTARTSYS时,信号处理结束后,自动重启系统调用.
TODO: 实现wait等需要restart_block的系统调用的重启
Signed-off-by: longjin <longjin@DragonOS.org>
2024-12-13 00:56:20 +08:00
linfeng
72423f90bb
feat(ebpf): support Aya framework. ( #1070 )
...
* feat(ebpf): support Aya framework.
1. fix the rbpf bug
2. use new Aya template
3. add kprobe related device files and attributes to sysfs
---
Signed-off-by: chenlinfeng <chenlinfeng25@outlook.com>
2024-12-07 16:41:37 +08:00
火花
6e85059fbc
feat:添加sigprocmask系统调用 ( #1046 )
...
* 添加sigprocmask系统调用
---------
Signed-off-by: sparkzky <sparkhhhhhhhhh@outlook.com>
Co-authored-by: longjin <longjin@DragonOS.org>
2024-12-07 16:36:55 +08:00
LoGin
4f8f269baf
fix: 解决进程退出时没有主动释放fdtable的问题 ( #1069 )
...
会导致http server被kill时,pcb没有drop
Signed-off-by: longjin <longjin@DragonOS.org>
2024-12-02 00:39:52 +08:00
LoGin
ffa8e88c60
fix:命名管道读行为不符合posix规范问题 ( #1066 )
...
fix(pipe): 增强FIFO管道的读写逻辑,解决问题一:非阻塞模式下的无写端错误返回
feat(test_fifo_write): 增强FIFO写入测试,添加信号处理、非阻塞模式支持和多场景测试
---------
Signed-off-by: xiaolin2004 <1553367438@qq.com>
Co-authored-by: xiaolin2004 <1553367438@qq.com>
2024-11-28 23:57:19 +08:00
LoGin
df3bf6d60a
fix: 修复无唤醒事件时,核心卡死在idle进程的问题 ( #1063 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2024-11-28 14:33:14 +08:00
LoGin
62da73bbe5
fix: 修正进程pcb的on_cpu
字段未设置导致的panic问题 ( #1057 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2024-11-28 01:04:48 +08:00
linfeng
539ee3eaeb
fix(backtrace):Use more reasonable compile options ( #1056 )
...
* fix(backtrace):Use more reasonable compile options
* 调整代码,同时解决rust analyzer未能提示warning的问题
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-11-25 16:28:05 +08:00
linfeng
081428c0d8
feat: update to new backtrace lib ( #1049 )
...
* feat: update to new backtrace lib
* feat: enable unwind for riscv64
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-11-19 21:55:22 +08:00
linfeng
750b3b5d91
feat(debug)[WIP]: add static-keys support ( #1025 )
...
* feat: add static-keys support
2024-11-16 16:21:20 +08:00
MemoryShore
ff76b0fcb8
修复tty处理信号时错误地将前台进程组置空的问题 & clone时未拷贝父进程tty的问题 ( #1043 )
...
* 修复clone时未拷贝父进程tty的问题
* 修复tty处理信号时错误地将前台进程组置空的问题
2024-11-12 16:31:13 +08:00
LoGin
0f094e50de
fix: 修复了do execve 加载程序失败时,没能正确返回错误码给用户态的问题 ( #1042 )
...
* fix: 修复了do execve 加载程序失败时,没能正确返回错误码给用户态的问题
2024-11-12 14:01:26 +08:00
linfeng
7c28051e8c
chore: update toolchain version to 2024-11-05 ( #1031 )
...
* chore: update toolchain version to 2024-11-05
* update dragon reach to e945c217b3
* update dog to 6f2c0c8f12
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-11-11 21:29:15 +08:00
曾俊
69715438f2
feat(pci): 解决了pci总线子系统中pci结构一致性问题,增加了pci设备的可读属性 ( #1009 )
...
---------
Co-authored-by: 黄铭涛 <1037827920@qq.com>
2024-11-11 20:57:08 +08:00
LoGin
20c58101dd
fix: do_signal函数在处理SIG_KILL时,有一处pcb强引用未归零的问题 ( #1039 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2024-11-11 11:38:57 +08:00
曾俊
f5c732d8dc
fix(video): 增加了对frame buffer操作的安全检查 ( #1034 )
...
fix(video): 增加了对frame buffer操作的安全检查
2024-11-10 23:46:56 +08:00