860 Commits

Author SHA1 Message Date
LoGin
af35431005
使用submodule引入DragonStub (#462)
* 修正构建系统文档: 使用repo工具克隆代码

* 使用submodule管理
2023-12-03 17:16:03 +08:00
LoGin
83ed0ebc29
修正构建系统文档: 使用repo工具克隆代码 (#461) 2023-12-03 14:51:21 +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
LoGin
a1fd1cf1cb
把tar的二进制镜像源更换为国内源 (#458) 2023-11-23 21:12:16 +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
c89d0c1237
修复bootstrap的一系列脚本忘了source最新的shell rc的问题 (#453) 2023-11-21 20:24:43 +08:00
LoGin
c75089286e
调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub (#450)
* 安装musl toolchain以及riscv相关的工具链

* 调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub

```shell
export ARCH=riscv64
make write_diskimage
make qemu
```

即可在serial_opt.txt看到进入grub的提示信息
2023-11-21 13:42:18 +08:00
LoGin
48a3baa9b1
安装musl toolchain以及riscv相关的工具链 (#449) 2023-11-21 13:42:06 +08:00
LoGin
84e7f71006
添加赞助商雅安数字经济运营有限公司的信息到readme (#451) 2023-11-20 15:51:41 +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
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