LoGin
91e9d4ab55
实现unified-init库,支持收集初始化函数到一个数组,并统一初始化 ( #474 )
...
* 添加“统一初始化”的过程宏,并把SystemError独立成crate
* 使用unified-init来初始化fbmem
* 更新workflow,增加内核自动化静态测试
2023-12-25 23:12:27 +08:00
GnoCiYeH
406099704e
增加epoll机制 ( #455 )
...
* ## 增加epoll机制
- 增加epoll机制
- 添加事件等待队列,提升socket性能
- 优化poll,删除不能poll的文件系统中的poll方法
* 添加细节注释
* 修复文件关闭后epoll还持有对应描述符的文件弱引用的bug
* 将EPollEvent设计为POSIX标准
* 修改s到us转换的计算错误
2023-12-25 18:08:12 +08:00
LoGin
08a2ee4084
添加FrameBuffer的接口抽象&完善设备驱动模型的class相关代码 ( #472 )
...
* 添加FrameBuffer的接口抽象(参考Linux 6.1.9)
* feature: 完善设备驱动模型的class的抽象,并创建graphics class
* feature: 完善设备驱动模型中Device对class的处理,使得能够在class下注册设备
目前注册了fbcon设备,但是由于虚拟终端还没写,因此fbcon的到终端以及帧缓冲区的映射还没加上去.
2023-12-20 17:24:05 +08:00
LoGin
8612b6ce7a
bugfix: 修复无法sleep的问题以及进程处于block(true)状态时无法被信号唤醒&唤醒后不处理信号的问题 ( #470 )
2023-12-19 11:56:14 +08:00
LoGin
111c5407cc
设置idle进程的时间片为0,降低调度延迟 ( #469 )
2023-12-17 21:08:03 +08:00
LoGin
666cffedab
riscv: 映射内核到指定的虚拟地址,使得kinfo能正常工作 ( #468 )
...
* riscv: 映射内核到指定的虚拟地址,使得kinfo能正常工作
2023-12-16 22:26:26 +08:00
LoGin
1a72a751b1
在riscv输出hello world ( #466 )
...
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +08:00
MemoryShore
6c7f966c2f
NovaShell替换为默认shell ( #456 )
...
* NovaShell替换为默认shell
* delete some envvar
* 自动从dragonos镜像站更新dadk
* 更新github ci环境
* 修复yml格式问题
* 更新novashell到95738b235f
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2023-12-04 22:07:30 +08:00
LoGin
09d2bf52a6
update-dragon-stub-bf2617 ( #463 )
2023-12-03 21:27:43 +08:00
LoGin
af35431005
使用submodule引入DragonStub ( #462 )
...
* 修正构建系统文档: 使用repo工具克隆代码
* 使用submodule管理
2023-12-03 17:16:03 +08:00
LoGin
01090de77e
使用DragonStub引导riscv下的DragonOS内核 ( #460 )
2023-12-03 14:40:13 +08:00
LoGin
4fda81ce81
使得DragonOS kernel 能为riscv64编译通过(尚未能启动) ( #457 )
...
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)
* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
2023-11-25 12:07:39 +08:00
Jomo
cc5feaf67b
bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug ( #454 )
...
bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug
2023-11-23 21:04:32 +08:00
LoGin
99dbf38d2e
bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. ( #448 )
...
* bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题.
解决方案:
1. 分区域把空闲页添加到buddy
2. 将内核链接到16M的位置,以避免uefi带来的内存空洞.
这个值是因为我看到linux的救援内核也是在16M的地址,因此猜测厂商不会使用这块内存.
尽管uefi规范讲的是固件可以采用任何地址,内核需要使用内核重定位技术去避免遇到内存空洞,但我没有这么做.
2023-11-19 11:42:53 +08:00
LoGin
46e234aef6
使用cargo管理一些C文件的编译,并且移动部分汇编到arch目录 ( #447 )
...
* 使用cargo管理main.c的编译
* 使用build-scripts编译架构相关的c代码
* 删除elf.h
2023-11-17 21:25:15 +08:00
Jomo
e4600f7f7d
Kconfig ( #432 )
...
* 内核编译配置
* 将kernel.config的解析代码搬入crate
* 将设置feature函数放入CargoHandler中
2023-11-17 21:23:01 +08:00
LoGin
11f78b73e7
使用kernel-build脚本来编译所有的asm文件 ( #445 )
2023-11-17 20:05:57 +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
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
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
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
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
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