Commit Graph

932 Commits

Author SHA1 Message Date
02343d0b5b 增加/dev/fb0,能够在用户程序读写帧缓冲区 (#485) 2024-01-02 14:16:10 +08:00
e7071df6a4 把opengrok.ringotek.cn替换为code.dragonos.org.cn (#484) 2024-01-01 11:53:49 +08:00
c566df451c 添加帧缓冲区抽象并实现vesafb的驱动 (#483)
- 添加bootparams对象
- 修正由于bus的driver、device强弱引用关系 不正确从而导致对象被释放的bug
- 添加vesafb的驱动
- 实现framebuffer抽象层
- 为通用帧缓冲区抽象实现sysfs的属性
- 修改设备号DeviceNumber的定义
- 仿照linux,添加initcall,并在第一个内核线程中,调用他们。
2024-01-01 11:46:51 +08:00
e3eb08d4d7 fix: 修复安装musl-gcc的脚本没能正确设置x86_64下的环境变量的问题 (#482) 2023-12-30 16:23:26 +08:00
81294aa2e6 fix: 修正bootstrap脚本安装docker后会使得当前终端进入root的问题 (#481) 2023-12-27 20:32:25 +08:00
cfd642e283 更新nova shell的revision为64ad1b282a (#477)
- 修复tab补全时始终基于根目录的问题
- 修复touch命令提示已存在文件的bug
2023-12-27 15:07:01 +08:00
5e948c5650 修正pipe逻辑,将pipe接入epoll。 (#478) 2023-12-27 15:02:29 +08:00
0d6cf65aa1 Patch fix sched and net lockdep error (#479)
- fix: 修复调度器,软中断,定时器,网络子系统的部分锁的使用不符合锁依赖安全规范的问题
- fix: 修复创建pcb时内核栈爆栈的问题
- 把异常的trap gate改成intr gate

---------

Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
2023-12-27 14:27:12 +08:00
91e9d4ab55 实现unified-init库,支持收集初始化函数到一个数组,并统一初始化 (#474)
* 添加“统一初始化”的过程宏,并把SystemError独立成crate

* 使用unified-init来初始化fbmem

* 更新workflow,增加内核自动化静态测试
2023-12-25 23:12:27 +08:00
f110d330d5 修复bootstrap在安装riscv gcc依赖时出现冲突的问题 (#476) 2023-12-25 21:54:00 +08:00
406099704e 增加epoll机制 (#455)
* ## 增加epoll机制
- 增加epoll机制
- 添加事件等待队列,提升socket性能
- 优化poll,删除不能poll的文件系统中的poll方法

* 添加细节注释

* 修复文件关闭后epoll还持有对应描述符的文件弱引用的bug

* 将EPollEvent设计为POSIX标准

* 修改s到us转换的计算错误
2023-12-25 18:08:12 +08:00
070e991008 解决由于Makefile问题导致make run-uefi无法正常启动的问题 (#473) 2023-12-22 16:01:23 +08:00
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
8612b6ce7a bugfix: 修复无法sleep的问题以及进程处于block(true)状态时无法被信号唤醒&唤醒后不处理信号的问题 (#470) 2023-12-19 11:56:14 +08:00
24ff1faffb doc: 修改Rust代码注释风格文档 (#471) 2023-12-18 17:44:53 +08:00
111c5407cc 设置idle进程的时间片为0,降低调度延迟 (#469) 2023-12-17 21:08:03 +08:00
666cffedab riscv: 映射内核到指定的虚拟地址,使得kinfo能正常工作 (#468)
* riscv: 映射内核到指定的虚拟地址,使得kinfo能正常工作
2023-12-16 22:26:26 +08:00
cf44232423 修复x86下第二次编译的时候内核没有拷贝到磁盘的问题 (#467) 2023-12-13 14:44:57 +08:00
1a72a751b1 在riscv输出hello world (#466)
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +08:00
fca83acef4 修复cache-toolchain.yml的格式问题 (#464) 2023-12-04 22:10:10 +08:00
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
09d2bf52a6 update-dragon-stub-bf2617 (#463) 2023-12-03 21:27:43 +08:00
af35431005 使用submodule引入DragonStub (#462)
* 修正构建系统文档: 使用repo工具克隆代码

* 使用submodule管理
2023-12-03 17:16:03 +08:00
83ed0ebc29 修正构建系统文档: 使用repo工具克隆代码 (#461) 2023-12-03 14:51:21 +08:00
01090de77e 使用DragonStub引导riscv下的DragonOS内核 (#460) 2023-12-03 14:40:13 +08:00
4fda81ce81 使得DragonOS kernel 能为riscv64编译通过(尚未能启动) (#457)
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)

* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
2023-11-25 12:07:39 +08:00
a1fd1cf1cb 把tar的二进制镜像源更换为国内源 (#458) 2023-11-23 21:12:16 +08:00
cc5feaf67b bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug (#454)
bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug
2023-11-23 21:04:32 +08:00
c89d0c1237 修复bootstrap的一系列脚本忘了source最新的shell rc的问题 (#453) 2023-11-21 20:24:43 +08:00
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
48a3baa9b1 安装musl toolchain以及riscv相关的工具链 (#449) 2023-11-21 13:42:06 +08:00
84e7f71006 添加赞助商雅安数字经济运营有限公司的信息到readme (#451) 2023-11-20 15:51:41 +08:00
99dbf38d2e bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. (#448)
* bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题.

解决方案:
1. 分区域把空闲页添加到buddy
2. 将内核链接到16M的位置,以避免uefi带来的内存空洞.

这个值是因为我看到linux的救援内核也是在16M的地址,因此猜测厂商不会使用这块内存.
尽管uefi规范讲的是固件可以采用任何地址,内核需要使用内核重定位技术去避免遇到内存空洞,但我没有这么做.
2023-11-19 11:42:53 +08:00
46e234aef6 使用cargo管理一些C文件的编译,并且移动部分汇编到arch目录 (#447)
* 使用cargo管理main.c的编译

* 使用build-scripts编译架构相关的c代码

* 删除elf.h
2023-11-17 21:25:15 +08:00
e4600f7f7d Kconfig (#432)
* 内核编译配置

* 将kernel.config的解析代码搬入crate

* 将设置feature函数放入CargoHandler中
2023-11-17 21:23:01 +08:00
11f78b73e7 使用kernel-build脚本来编译所有的asm文件 (#445) 2023-11-17 20:05:57 +08:00
e4fb6c9754 美化readme (#446)
* 美化readme
2023-11-17 12:26:10 +08:00
e26ca418df 把内核构建脚本单独独立成一个crate (#444) 2023-11-17 11:26:26 +08:00
a0c98cd4df 解决textui framework初始化成功后串口无法正常换行 (#443) 2023-11-16 21:37:04 +08:00
edaf015400 默认安装gnu tar到dragonos的/usr/bin目录下 (#442) 2023-11-15 17:17:56 +08:00
0fb515b011 完善pipe系统调用以及openat系统调用 (#441) 2023-11-15 15:39:35 +08:00
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
9b0abe6da7 添加access、faccessat、faccessat2 (#439) 2023-11-12 21:23:48 +08:00
0d9b7d9240 添加prlimit64系统调用 (#438)
注意: 目前仅支持读取默认的rlimit值,尚不支持设置rlimit值.
2023-11-12 18:44:15 +08:00
4a2d7191a3 bugfix: 解决shell在exec的时候传递的argv不正确的bug (#437) 2023-11-12 17:53:36 +08:00
709498cac1 feat: sys_readlink && sys_readlinkat (#436) 2023-11-12 17:40:45 +08:00
be8cdf4b8e 增加getrusage,并把apic timer的频率调整为系统HZ (#435) 2023-11-12 16:36:17 +08:00
02e249f30b 添加uid、gid的系统调用(暴力封装返回0) (#434) 2023-11-12 14:11:33 +08:00
ea8ad4d42e 修正fork的时候没有正确拷贝vm holes的bug (#433) 2023-11-12 13:40:17 +08:00
c47fe90440 增加accept4系统调用 (#431) 2023-11-09 18:20:27 +08:00