846 Commits

Author SHA1 Message Date
LoGin
e4fb6c9754
美化readme (#446)
* 美化readme
2023-11-17 12:26:10 +08:00
LoGin
e26ca418df
把内核构建脚本单独独立成一个crate (#444) 2023-11-17 11:26:26 +08:00
Jomo
a0c98cd4df
解决textui framework初始化成功后串口无法正常换行 (#443) 2023-11-16 21:37:04 +08:00
LoGin
edaf015400
默认安装gnu tar到dragonos的/usr/bin目录下 (#442) 2023-11-15 17:17:56 +08:00
LoGin
0fb515b011
完善pipe系统调用以及openat系统调用 (#441) 2023-11-15 15:39:35 +08:00
LoGin
bf4a48994a
新增系统调用,并对照linux-6.1.9改写sys_wait4 (#440)
* 1. 新增以下系统调用
            - SYS_LSTAT
            - SYS_READV
            - SYS_ACCESS
            - SYS_UNLINK
            - SYS_CHMOD
            - SYS_FCHMOD
            - SYS_UMASK
            - SYS_SYSINFO
            - SYS_CLOCK_GETTIME
            - SYS_FCHMODAT
            - SYS_FACCESSAT

2. 修改sys_wait4,使得其部分符合Linux的行为(还是有些地方不符合的,详情请对比linux-6.1.9的sys_wait4接口)
2023-11-13 23:02:21 +08:00
LoGin
9b0abe6da7
添加access、faccessat、faccessat2 (#439) 2023-11-12 21:23:48 +08:00
LoGin
0d9b7d9240
添加prlimit64系统调用 (#438)
注意: 目前仅支持读取默认的rlimit值,尚不支持设置rlimit值.
2023-11-12 18:44:15 +08:00
LoGin
4a2d7191a3
bugfix: 解决shell在exec的时候传递的argv不正确的bug (#437) 2023-11-12 17:53:36 +08:00
LoGin
709498cac1
feat: sys_readlink && sys_readlinkat (#436) 2023-11-12 17:40:45 +08:00
LoGin
be8cdf4b8e
增加getrusage,并把apic timer的频率调整为系统HZ (#435) 2023-11-12 16:36:17 +08:00
LoGin
02e249f30b
添加uid、gid的系统调用(暴力封装返回0) (#434) 2023-11-12 14:11:33 +08:00
LoGin
ea8ad4d42e
修正fork的时候没有正确拷贝vm holes的bug (#433) 2023-11-12 13:40:17 +08:00
LoGin
c47fe90440
增加accept4系统调用 (#431) 2023-11-09 18:20:27 +08:00
LoGin
393f691574
增加gettid以及线程组group leader相关的逻辑 (#430)
* 增加gettid以及线程组group leader相关的逻辑
2023-11-09 16:48:45 +08:00
LoGin
0facf623d6
修正文件open和写入的错误 (#429)
1. 修正文件open的时候可能错误的把inode清空的问题(如果当前inode是mknod创建的)
2. 修正fat和block device中,对文件写入部分的错误问题
2023-11-09 00:10:34 +08:00
MemoryShore
04babc3fab
实现fat文件系统的truncate方法 (#428) 2023-11-08 21:42:51 +08:00
LoGin
df2f5051ac
添加read the docs yml文件 (#427) 2023-11-08 20:01:51 +08:00
LoGin
5eaf536d5b
添加初始化DragonOS的Rust-Musl工具链的脚本. (#426) 2023-11-08 19:41:08 +08:00
LoGin
7b32f5080f
增加内存分配日志监视器 (#424)
* 完成内存日志监视,并输出日志到文件
* 修复进程退出后,procfs查看进程status文件会崩溃的问题
* 修复signal唤醒进程的判断条件问题
2023-11-07 21:39:27 +08:00
LoGin
70a4e5550a
使用rust重写了apic的驱动 (#425)
* 使用rust重写了apic的驱动。

* 修正signal和调度器的部分加锁逻辑,增加回退策略。

* 把pcb的flags字段替换为无锁的

* 使用cargo管理apic的编译

* 删除makefile中指定PIC的变量

---------

Co-authored-by: Gou Ngai <ymd7823@outlook.com>
Co-authored-by: 櫻井桃華 <89176634+TihayaKousaka@users.noreply.github.com>
2023-11-07 20:32:06 +08:00
LoGin
4935c74f32
添加自定义的crc库(支持crc64) (#423) 2023-11-06 17:27:05 +08:00
GnoCiYeH
1effcfe519
修复readdir以及读磁盘时buf传错问题 (#422)
* 修复readdir以及读磁盘时buf传错问题

* fix potential memory problem

---------

Co-authored-by: longjin <longjin@DragonOS.org>
2023-11-05 23:15:46 +08:00
GnoCiYeH
1603395155
支持syscall快速系统调用指令 (#417)
* 支持syscall快速系统调用指令

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
2023-11-04 21:39:44 +08:00
GnoCiYeH
2f6f547ae0
Patch fix sched (#419)
1.解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug
2.修复socket inode 的read和write方法里面没有使用no_preempt的问题
3. 修复cpu0的内核栈由于脏数据导致new_idle的时候set pcb报错的问题

---------

Co-authored-by: longjin <longjin@DragonOS.org>
2023-11-04 21:35:25 +08:00
LoGin
8058ccb307
修复bootstrap.sh未能自动更换gcc镜像源, 未能自动安装docker的问题 (#418) 2023-11-03 21:01:09 +08:00
LoGin
d470019b1e
patch add mini backtrace (#416)
* support rust panic backtrace

mini-backtrace has llvm's unwind cpp source to support backtrace/unwind.
as unwind/backtrace needs dynamically allocates memory, mini-backtrace
uses stack memory to capture fixed number of backtrace to avoid heap
allocation.
as unwind library needed, it needs to turn on eh_frame_hdr

* 修改忘了生成kernel.elf的问题

* 设置backtrace是默认的feature

---------

Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
2023-11-01 22:12:19 +08:00
yuyi2439
8b3d1688da
把pci驱动的读取acpi mcfg的代码,调整为从新的acpi驱动来读取 (#413)
* 把pci驱动的读取acpi mcfg的代码,调整为从新的acpi驱动来读取
2023-11-01 21:11:55 +08:00
GnoCiYeH
971462be94
添加thread和futex机制 (#411)
* 初步实现clone系统调用

* 实现了线程,初步实现futex机制,添加了几个小的系统调用

* 更改pcb引用计数问题

* 解决死锁bug

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
2023-11-01 20:55:57 +08:00
Chiichen
665f4a7707
更新了使用clangd的.gitignore (#415)
Co-authored-by: chiichen <chiichen@qq.com>
2023-11-01 14:18:00 +08:00
Wu Mianzhi
77799ccaac
完成e1000e驱动 (#393)
* 测试RESET

* 测试RESET

* 基于轮询的实现

* 规范化部分unsafe的使用

* 完成中断处理函数,同时去除了不必要的内存拷贝行为,准备编写napi机制

* 实现现有协议栈下的部分napi机制;修复了内存泄漏的问题;添加了一部分代码注释

* 去除部分无用代码

* 去除一些无用代码

* 适配新的驱动模型

* 完成msi中断测试

* 去除一些无用代码

* 格式化代码

* 增加了一些注释,提高代码可读性

* 去除无关文件

* 优化了读取mac地址的方式,提高可读性
2023-10-30 00:08:52 +08:00
LoGin
fbe6becd6d
添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率 (#412)
* 添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率

* 把hpet.c移动到arch文件夹下
2023-10-26 23:08:39 +08:00
GnoCiYeH
ad1d649edd
更新系统调用号 (#410)
* 更新系统调用号

* 更改DragonReach和relibc版本

* update

* update

* fix warning

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-10-24 19:59:01 +08:00
LoGin
f4082b86b1
更改系统调用的寄存器传参顺序 (#409) 2023-10-24 16:40:49 +08:00
Xiaoye Zheng
40314b30ab
DragonOS虚拟化 (#389)
* try some ioctl flow & kvm device

* add sys ioctl

* 删掉一些debug信息

* 修改run-qemu.sh脚本,在QEMU中enable vmx

* 修改cr0,cr4,msr寄存器enable VMX operations

* enable vmx operation

* allocate memory for vmcs with bug

* allocate memory for vmcs

* cpu virt-50%

* single vcpu virt

* add vmcs fields

* CPU virt overall flow with bug

* run vmlaunch success

* run CPU virt with bug

* 成功运行non-root模式的guest

* 成功运行vmexit,进入vmx_return函数

* 成功运行vmlaunch, vmexit, vmresume

* vmexit handler with bug

* 完成vmexit cpuid handler

* fix vmresume guest状态恢复的bug

* 增加vm ioctl

* refactor kvm 50%

* refactor kvm 80%

* FIXME: kvm vmlaunch failed

* vmlaunch success

* FIXME: output error

* update guest_rsp

* cpu virt refactor

* add mmu related struct

* add usermemory region workflow

* add mem-virt workflow

* add mem-virt

* refactor code

* add vcpu ioctl set_regs

* rename hypervisor to vm & solve some deadlock bugs

* workout mem pipeline

* fix vmcs control setting bugs

* refactor segment regs initialization

* resovle conficts

* resovle conficts

* format code
2023-10-24 14:31:56 +08:00
LoGin
485e248761
修改脚本,只有当磁盘未安装Grub的时候,才执行grub-install. 节省编译时间 (#408) 2023-10-24 14:19:26 +08:00
LoGin
46795849a2
修复bootstrap.sh安装顺序导致的问题 (#407) 2023-10-24 13:56:57 +08:00
Chiichen
3c82aa56d1
Signal refactor (#402)
* 初步完成对 signal_types 和 部分signal代码的初始化

* 重构了一部分架构相关代码进入 arch 中

* 基本修改完成,编译通过,后续补上系统调用

* signal基本完成,能实现 Sigaction 系统调用

* 增加了一组枚举抽象

* 进一步重构了一部分C风格的代码

* 继续重构了一部分C风格代码

* 继续完善了一部分逻辑

* 修改了部分代码逻辑

* 补充了 fork 中复制信号信息的逻辑

* 修复了 kallsysms 未转义引号的问题

* 修复了无法跳转到 sigreturn 的bug

* 调通了 signal

* 实现了 signal 架构抽象层的 trait

* 为信号提供了默认处理函数

* 基本完成了 signal 的大体逻辑

* 修复了 Sigreturn 的一个小错误,格式化

* 修复了一个编译器漏报错误

* 删除了多余的代码

* 修改测试程序为链接 relibc

* 修复了信号处理过程中浮点寄存器错误保存的问题

* 修复了一个结构体错误引起的无法在relibc下正确运行的错误

* 修复了链接 relibc 时无法正常从信号处理返回的 bug

* 修复了 signal 处理流程中 rsp 指针错误导致的浮点运算触发GP

* 修复了一个死锁问题,解决了默认处理函数无法进入调度导致的bug

* 修复了一些错误

* 修改了 relibc 依赖版本号

* 删除了多余的 imports

* 删除一些debug日志

* 删除内核 signal.h 文件

* 删除一个依赖项

* 删除了 binding 相关依赖项
2023-10-24 12:02:20 +08:00
LoGin
d7f5742a20
初步编写cpu信息获取的代码 (#406)
1. 启动时从acpi获取所有的cpu信息并存到SMP_BOOT_DATA
2. 注册cpu subsystem/bus到sysfs(暂时未添加内容)

todo:
1. build_cpu_map(在X86_64SmpManager中)
2. 实现cpu mask
3. 把cpu设备注册到sysfs
2023-10-23 21:40:39 +08:00
LoGin
7eda31b2f0
在Sysfs中引入ACPI Firmware (#405)
- bugfix: multiboot2启动的信息因为没及时转存导致后面无法从其中进行查询的bug
- feature: 把acpi表、acpi bus加入sysfs
2023-10-22 22:00:16 +08:00
LoGin
01bd5258cf
解决shell无法输入大写字母'P'的问题 (#404) 2023-10-22 12:22:41 +08:00
LoGin
a03c4f9dee
设备驱动模型:完善platform bus相关内容。并注册串口到sysfs (#403)
* 完成初始化platform bus
* 删除旧的sysfs
* 把uart驱动移动到tty/serial文件夹下
* 完成将串口挂载到sysfs
* 修复vfs系统调用未能follow symlink的问题
* 修复shell未能正确获取pwd的问题
2023-10-20 22:11:33 +08:00
LoGin
06d5e24726
完善设备驱动模型,基于kset、kobj来维护对象之间的关系 (#401)
* 使用kobj和kset管理/sys文件夹下的对象

* 修改notifier,把action从u64换为泛型。

* 完善设备驱动模型,基于kset、kobj来维护对象之间的关系
2023-10-11 00:53:15 +08:00
LoGin
6abb8bd7c0
在github workflow的工具链配置文件里面添加rust-src组件 (#400) 2023-10-09 01:55:58 +08:00
Plucky923
9e9ffedfc5
syscall: 完善syscall代码 (#387)
* syscall: 完善syscall代码

修改代码使这段代码可以使用语法糖。修改SYS_READ和SYS_WRITE的安全检查为userbuffer

Signed-off-by: plucky <m202372036@hust.edu.cn>

* syscall: 修改SYS_READ和SYS_WRITE的权限检查为userbuffer

Signed-off-by: plucky <m202372036@hust.edu.cn>

* syscall: 有不知道如何修改的错误

Signed-off-by: plucky <m202372036@hust.edu.cn>

* syscall: 修改SYS_READ和SYS_WRITE并编译通过

Signed-off-by: plucky <m202372036@hust.edu.cn>
2023-10-09 01:11:14 +08:00
GnoCiYeH
865f4ba4cd
修改shell执行exec时传参错误问题 (#399)
* 修改shell执行exec时传参错误问题
2023-10-09 01:10:14 +08:00
GnoCiYeH
b7b843bedd
wait4系统调用支持options字段 (#398) 2023-10-09 00:58:08 +08:00
GnoCiYeH
2dbef7859f
命名管道系统调用以及文件系统兼容特殊文件类型的接口 (#397)
* 修复pipe2在读端或写端关闭后还阻塞问题。

* 实现命名管道机制,增加特殊文件类型兼容普通文件系统的接口。

* 普通文件系统能够适配特殊文件(命名管道等)
2023-10-09 00:28:08 +08:00
yuyi2439
34e6d6c80f
实现free指令+修复 mountfs的内存泄露问题(#394)
* 实现meminfo文件

* 成功实现free指令,添加了一些string有关函数,并进行一些无影响的小改动


* 解决内存泄露的问题:mountfs inode的wrap方法使用了Arc::into_raw而没有from_raw,导致inode始终无法释放

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-10-08 14:26:17 +08:00
YJwu2023
afc95d5c25
完善pci中断的设计 (#392)
* 完善pci中断的设计
2023-10-03 12:09:29 +08:00