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
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
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
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
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
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
91cc4adba9
fix the panic error for riscv64 ( #1123 )
...
* fix the panic error for riscv64
2025-04-02 13:49:57 +08:00
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
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
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
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
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
df3bf6d60a
fix: 修复无唤醒事件时,核心卡死在idle进程的问题 ( #1063 )
...
Signed-off-by: longjin <longjin@DragonOS.org >
2024-11-28 14:33:14 +08:00
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
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
0f094e50de
fix: 修复了do execve 加载程序失败时,没能正确返回错误码给用户态的问题 ( #1042 )
...
* fix: 修复了do execve 加载程序失败时,没能正确返回错误码给用户态的问题
2024-11-12 14:01:26 +08:00
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
20c58101dd
fix: do_signal函数在处理SIG_KILL时,有一处pcb强引用未归零的问题 ( #1039 )
...
Signed-off-by: longjin <longjin@DragonOS.org >
2024-11-11 11:38:57 +08:00
f5b2038871
ospp project (feature) add namespace overlayfs cgroup ( #949 )
...
## 开发进展:
## namespace
- pid_namespace 基本实现,基于pid_struct等数据结构实现隔离
- mnt_namespace 基本实现,挂载点的隔离通过不同的挂载树来实现
- usernamespace 作为支持性的namespace,目前受限实现全局静态
## overlayfs
- 实现若干个文件系统的叠加,在mount中传入多个路径作为多个fs的mount路径以及最后merge层的fs路径
- copy-up机制的,除最上层外其他层为只读层,满足写时拷贝,需要修改的时候copy到上层修改
- whiteout特殊文件,用于标记在下层需要被删除的文件用来掩盖需要删除的文件
## cgroups
- 目前cgroups还处于框架阶段,之后具体实现具体的内存、CPU等子系统
2024-10-31 00:50:34 +08:00
a9e28e9ce9
fix: 临时修复键盘驱动与鼠标驱动冲突导致键盘无响应 ( #1014 )
...
暂时通过条件编译的方式解决. 目前认为是鼠标驱动问题,没有正确判断是不是自己的数据...
但是因为我们场景下,鼠标驱动几乎用不到,因此先条件编译屏蔽.
Signed-off-by: longjin <longjin@DragonOS.org >
2024-10-26 12:55:19 +08:00
fae6e9ade4
feat(ebpf):[WIP] add eBPF support ( #948 )
...
* feat(kprobe): Add basic kprobe support for x86_64
* feat: add ebpf support (#912 )
- 实现bpf()一部分命令,包括几种基本map,相关的helper函数
- 实现部分perf相关的数据结构
- 暂时为文件实现简单mmap
- 实现一个使用kprobe统计syscall 调用次数的ebpf程序
对eBPF支持程度(基本):
- 简单的eBPF程序(没有指定特殊的Map)
- 使用内核已经实现的Map的eBPF程序
- 可以和kprobe配合使用
- 内核Map相关的接口定义已经实现,添加新的Map较为简单
不支持的功能:
- 区分不同的eBPF程序类型(Network/Cgroup)并限定可调用的helper函数集
- 与内核其它跟踪机制配合(tracepoint)
- 其它helper和Map
todo
- [ ] 修改mmap,需要讨论,因为这个和块缓存层相关
- [x] 添加文档
- [x] 修复可能的错误
- [x] 增加rbpf版本信息
* feat: add /sys/devices/system/cpu/possible file
* feat: add /sys/devices/system/cpu/online
2024-10-25 15:59:57 +08:00
415e46ea47
build: Remove DragonOS_GCC And make CI use docker image ( #954 )
...
* build: 不再需要x86_64-elf-gcc的支持
* ci: 添加ci用的docker镜像
* 切换workflow到构建用的容器上
---------
Signed-off-by: longjin <longjin@DragonOS.org >
2024-10-10 00:59:50 +08:00
59a6bcf6ae
feat: Add HVM boot support for x86_64 ( #953 )
...
Signed-off-by: longjin <longjin@DragonOS.org >
2024-10-09 21:36:18 +08:00
d031d46fd9
feat: 添加serial console,支持non-graphic启动 ( #947 )
...
Signed-off-by: longjin <longjin@dragonos.org >
2024-10-01 11:35:48 +08:00
28fe4ad2a0
feat(driver/net): 将网络设备注册到sysfs, 添加设备类属性文件 ( #919 )
2024-09-11 14:30:53 +08:00
db7c782a9a
feat: 允许通过multiboot引导(直到acpi初始化报错) ( #914 )
2024-09-06 20:04:36 +08:00
2b7818e80e
feat: 添加对内核引导协议的抽象 ( #913 )
...
* 添加multiboot header
* head.S传参增加bootloader类型
* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.
* 把framebuffer的映射地址改为从early ioremap和mmio pool分配
* riscv64能运行
2024-09-05 21:12:20 +08:00
cf7f801e1d
feat(mm): 简单实现fat文件系统的文件映射 ( #840 )
...
- 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
- 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
- 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
- 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
- 参考linux使用protection_map映射表进行页面标志的获取
- 添加页面回收机制
- 添加页面回收内核线程
- 缺页中断使用的锁修改为irq_save; 添加脏页回写机制
- 修复do_cow_page死锁问题
- 访问非法地址时发送信号终止进程
- 修复重复插入反向vma表的错误
- 添加test_filemap文件映射测试程序
2024-09-05 00:35:27 +08:00
dc9b4fea1b
fix: pipe 读取/写入阻塞时,无法kill进程的问题 ( #889 )
2024-08-27 13:01:11 +08:00
703ce5a77c
fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。 ( #870 )
...
* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。
2024-07-27 17:34:05 +08:00
816ee5ae54
refactor: 删除过时的va-pa转换函数,改为统一使用MMArch ( #862 )
2024-07-26 00:27:35 +08:00
bd70d2d1f4
chore: 将工具链更新到2024-07-23 ( #864 )
...
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
af097f9f4b
fix(time): modify update wall time ( #836 )
...
更改了时间子系统的update_wall_time函数,通过读取当前周期数,计算delta值进行更新,而不是通过传入delta值进行更新
2024-07-16 21:51:21 +08:00
6f189d2743
feat(time): Add syscall support for utime* ( #838 )
...
* feat(vfs): Add syscall support for utime*
impl sys_utimensat
impl sys_utimes
add utimensat test
fix some warning
* fix(vfs): Verify pointer validity
* fix: remove bad cfg
2024-06-27 17:43:25 +08:00
de199e3c86
feat(mm): 修复mmap未延迟分配内存的问题 ( #837 )
...
* 20240524 3:40
* 20240527 0010
* 修复mmap未延迟分配内存的问题
* Revert "Merge branch 'patch-add-file-mapping' into patch-fix-mmap"
This reverts commit 8eb687c60b
, reversing
changes made to 33e9f0b34f
.
2024-05-28 20:06:23 +08:00
bde08cded6
feat(driver/pci): 完善pci root结构体,增加portio的pci配置空间访问 ( #818 )
...
* feat(driver/pci): 完善pci root结构体,增加portio的pci配置空间访问
2024-05-16 17:47:01 +08:00
2eab6dd743
feat(log): 将内核日志统一为新的logger ( #814 )
2024-05-16 17:25:23 +08:00
236e88d5ef
fix(driver/apic_timer): 修复local apic timer初始化顺序导致的在某些云服务器上无法收到中断的bug ( #815 )
2024-05-14 02:50:58 +08:00
0102d69fdd
feat:(riscv/intr) 实现riscv plic驱动,能处理外部中断 ( #799 )
...
* feat:(riscv/intr) 实现riscv plic驱动,能处理外部中断
- 实现riscv plic驱动,能处理外部中断
- 能收到virtio-blk的中断
- 实现fasteoi interrupt handler
2024-05-01 21:11:32 +08:00
0722a06a09
fix: (riscv/timer): 修复riscv下没有更新墙上时钟以及没有处理软中断的bug ( #783 )
2024-04-28 19:40:09 +08:00
942cf26b48
fix(riscv/process): 把riscv的调度时钟节拍率与HZ同步,并且修复切换到用户态的时候忘了在内核态关中断的bug ( #780 )
2024-04-28 16:49:40 +08:00
dd8e74ef0d
feat(driver/acpi_pm): Implement ACPI PM Timer ( #772 )
...
* feat: Implement ACPI PM Timer
2024-04-28 13:25:12 +08:00
f75cb0f8ed
refactor(process): 调整arch_switch_to_user函数,把riscv和x86_64的共用逻辑抽取出来。 ( #773 )
...
* refactor(process): Extract common logic for riscv and x86_64 in arch_switch_to_user to run_init_process
调整arch_switch_to_user函数,把riscv和x86_64的共用逻辑抽取出来。写成run_init_process函数,并且能够尝试运行多个不同的init程序,直到某个运行成功
2024-04-27 15:35:24 +08:00
471d65cf15
feat(riscv): riscv下能够运行hello world用户程序 ( #770 )
...
* feat(riscv): riscv下能够运行hello world用户程序
2024-04-26 11:59:47 +08:00
731bc2b32d
feat(virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 ( #761 )
2024-04-23 17:19:54 +08:00
e32effb150
feat(driver): 把virtio添加到sysfs ( #752 )
2024-04-22 15:11:47 +08:00
a17651b14b
feat(mm): 实现缺页中断处理,支持页面延迟分配和写时拷贝,以及用户栈自动拓展 ( #715 )
...
* 实现缺页中断处理
* 完善页表拷贝逻辑
* 优化代码结构
* 完善缺页异常信息
* 修改大页映射逻辑
* 修正大页映射错误
* 添加缺页中断支持标志
* 实现用户栈自动拓展功能
2024-04-22 15:10:47 +08:00