MemoryShore
40d05bcc99
修复vnc启动失败的问题 ( #951 )
2024-10-01 19:44:17 +08:00
LoGin
d031d46fd9
feat: 添加serial console,支持non-graphic启动 ( #947 )
...
Signed-off-by: longjin <longjin@dragonos.org>
2024-10-01 11:35:48 +08:00
曾俊
886ce28516
fix(virtio):修复了特定virtio设备环境下中断号重复错误,以及开机内核panic的bug ( #881 )
2024-09-06 19:56:49 +08:00
Jomo
3c0a1c8fa2
默认nightly-2024-07-23 & config改为config.toml ( #872 )
2024-07-27 01:33:38 +08:00
LoGin
816ee5ae54
refactor: 删除过时的va-pa转换函数,改为统一使用MMArch ( #862 )
2024-07-26 00:27:35 +08:00
LoGin
bd70d2d1f4
chore: 将工具链更新到2024-07-23 ( #864 )
...
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
LoGin
79ad6e5ba4
fix: build-scripts和tools目录下的make check指定工具链版本 ( #861 )
2024-07-22 23:00:37 +08:00
donjuanplatinum
6cf1947dcf
chore(tools): add the gentoo grub_auto_install support ( #827 )
2024-05-23 02:15:44 +08:00
donjuanplatinum
f79998f626
增加rust sparse稀疏索引选项 ( #826 )
2024-05-18 00:22:38 +08:00
donjuanplatinum
1df85daf8f
添加支持gentoo系统的一键安装脚本 ( #809 )
2024-05-12 22:58:59 +08:00
LoGin
731bc2b32d
feat(virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 ( #761 )
2024-04-23 17:19:54 +08:00
LoGin
e32effb150
feat(driver): 把virtio添加到sysfs ( #752 )
2024-04-22 15:11:47 +08:00
Chiichen
4b0170bd6b
chore(tools): add bootstrap support for Centos/RHEL8/fedora ( #713 )
...
Co-authored-by: kejianchi <kejianchi@tencent.com>
2024-04-10 18:58:54 +08:00
栗子
4f8f484930
修复Archlinux下的bootstrap脚本问题, ( #552 )
...
* 修复Archlinux下的bootstrap脚本问题,
由于archlinux 的 texinfo版本太新导致的gcc docs构建失败
使用 MAKEINFO=true 的make环境变量跳过gcc docs构建,绕过问题
---------
Co-authored-by: longjin <longjin@dragonos.org>
2024-03-09 21:20:12 +08:00
裕依
bc6f0a967c
移除relibc和old libc以及旧的shell ( #529 )
...
移除relibc和old libc以及旧的shell
2024-03-04 14:20:01 +08:00
栗子
d2b28acb4d
tools/bootstrap.sh: fix archlinux and zsh issue ( #535 )
...
1. archlinux上没有libssl-dev包,相对应的包名是openssl
2. zsh用户使用bootstrap.sh 会因为 source ~/.zshrc
导致bash执行很多zsh built-in 指令出现非常多错误
3. mkdir命令加-p选项避免对象目录存在时(反复执行脚本)报错
4. 修复简单错误(typo gcc 为 binutils)
5. 修复bootstrap.sh等脚本无法在非tools/目录执行的错误
2024-02-25 19:57:30 +08:00
LoGin
ca318c376b
update dragonreach to 3d99c3a9d9 ( #519 )
2024-02-17 01:51:10 +08:00
裕依2439
4ad52e57e6
添加socketpair ( #505 )
...
* 添加对socketpair系统调用的处理
---------
Co-authored-by: LoGin <longjin@DragonOS.org>
2024-02-07 18:06:15 +08:00
LoGin
9284987850
riscv: 完成UEFI初始化,能正确设置memblock的信息 ( #501 )
...
* riscv: 完成UEFI初始化,能正确设置memblock的信息
* sbi增加reset功能
* 把虚拟CPU修改为sifive-u54,使qemu能更正确地模拟硬件行为
* 修复内存页面映射未设置“DIRTY”、”ACCESSED“、”GLOBAL“位,导致真机page fault的问题
2024-01-26 18:08:39 +08:00
Jomo
8d72b68da9
实现内核日志系统 ( #489 )
...
* 实现写日志和读取日志,并且能够在用户态下执行dmesg命令查看日志
* 通过klogctl实现dmesg
* 改用ConstGenericRingBuffer作内核缓冲区
* 更改缓冲区容量
* 将能够输出到控制台的日志级别改为日志级别枚举类,使用SpinLock控制KMSG,使用枚举类定义SYSLOG_ACTION,将do_syslog系统调用接口放在syscall.rs
* fix warning
* 完善do_syslog注释
* 将KMSG接入kinfo、kdebug等
* fix warning
* 修复显示的秒数不正确,·以及无法通过CI的问题
2024-01-24 16:13:15 +08:00
裕依2439
d46c6d2794
修复tty的buf满时始终阻塞的问题 ( #493 )
...
* 修复tty的buf满时始终阻塞的问题
2024-01-23 23:36:52 +08:00
LoGin
7a29d4fcbc
riscv64: 映射uefi systemtable,并完善了riscv64页表填写的部分内容 ( #498 )
...
* 从fdt的chosen段获取几个需要的字段
* merge patch-early-ioremap
* feature: 增加early io remap的fixmap功能
允许在内存管理初始化之前,使用fixmap功能,映射一些物理内存,并记录.
* riscv64: 映射uefi systemtable,并完善了riscv64页表填写的部分内容
* 更新仓库网址
2024-01-21 15:38:12 +08:00
LoGin
dcf232f378
当找不到内核日志缓冲区的时候,重试 ( #491 )
2024-01-14 17:00:42 +08:00
LoGin
e3eb08d4d7
fix: 修复安装musl-gcc的脚本没能正确设置x86_64下的环境变量的问题 ( #482 )
2023-12-30 16:23:26 +08:00
LoGin
81294aa2e6
fix: 修正bootstrap脚本安装docker后会使得当前终端进入root的问题 ( #481 )
2023-12-27 20:32:25 +08:00
LoGin
f110d330d5
修复bootstrap在安装riscv gcc依赖时出现冲突的问题 ( #476 )
2023-12-25 21:54:00 +08:00
LoGin
cf44232423
修复x86下第二次编译的时候内核没有拷贝到磁盘的问题 ( #467 )
2023-12-13 14:44:57 +08:00
LoGin
1a72a751b1
在riscv输出hello world ( #466 )
...
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +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
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
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
edaf015400
默认安装gnu tar到dragonos的/usr/bin目录下 ( #442 )
2023-11-15 17:17:56 +08:00
LoGin
393f691574
增加gettid以及线程组group leader相关的逻辑 ( #430 )
...
* 增加gettid以及线程组group leader相关的逻辑
2023-11-09 16:48:45 +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
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
Wu Mianzhi
77799ccaac
完成e1000e驱动 ( #393 )
...
* 测试RESET
* 测试RESET
* 基于轮询的实现
* 规范化部分unsafe的使用
* 完成中断处理函数,同时去除了不必要的内存拷贝行为,准备编写napi机制
* 实现现有协议栈下的部分napi机制;修复了内存泄漏的问题;添加了一部分代码注释
* 去除部分无用代码
* 去除一些无用代码
* 适配新的驱动模型
* 完成msi中断测试
* 去除一些无用代码
* 格式化代码
* 增加了一些注释,提高代码可读性
* 去除无关文件
* 优化了读取mac地址的方式,提高可读性
2023-10-30 00:08:52 +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
YJwu2023
0dd8ff4332
添加中断 ( #370 )
...
* 添加中断
* dhcp更改为全局socketset
* 解决异常中断的问题,使得能够使用中断来处理网卡数据
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-09-21 23:23:57 +08:00
LoGin
1496ba7b24
进程管理模块重构完成 ( #380 )
...
* 添加新版pcb的数据结构 (#273 )
* 将pcb中的内容分类,分别加锁 (#305 )
* 进程管理重构:完成fork的主体逻辑 (#309 )
1.完成fork的主体逻辑
2.将文件系统接到新的pcb上
3.经过思考,暂时弃用signal机制,待进程管理重构完成后,重写signal机制.原因是原本的signal机制太烂了
* chdir getcwd pid pgid ppid (#310 )
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* 删除旧的fork以及signal的代码,并调整fork/vfork/execve系统调用 (#325 )
1.删除旧的fork
2.删除signal相关代码,等进程管理重构结束之后,再重新写.
3.调整了fork/vfork/execve系统调用
* 实现切换进程的代码 (#331 )
* 实现切换进程的代码
* Patch modify preempt (#332 )
* 修改设置preempt的代码
* 删除rust的list和refcount
* 为每个核心初始化idle进程 (#333 )
* 为每个核心初始化idle进程
* 完成了新的内核线程机制 (#335 )
* 调度器的pcb替换为新的Arc<ProcessControlBlock>,把调度器队列锁从 RwSpinLock 替换为了 SpinLock (#336 )
* 把调度器的pcb替换为新的Arc<ProcessControlBlock>
* 把调度器队列锁从 RwSpinLock 替换为了 SpinLock ,修改了签名以通过编译
* 修正一些双重加锁、细节问题
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* github workflow自动检查代码是否格式化
* cache toolchain yml
* 调整rust版本的waitqueue中的pcb为新版的pcb (#343 )
* 解决设置rust workspace带来的“工具链不一致”的问题 (#344 )
* 解决设置rust workspace带来的“工具链不一致”的问题
更改workflow
* 调整pcb的sched_info和rwlock,以避免调度器死锁问题 (#341 )
* 调整pcb的sched_info和rwlock,以避免调度器死锁问题
* 修改为在 WriterGuard 中维护 Irq_guard
* 修正了 write_irqsave方法
* 优化了代码
* 把 set state 操作从 wakup 移动到 sched_enqueue 中
* 修正为在 wakeup 中设置 running ,以保留 set_state 的私有性
* 移除了 process_wakeup
* 实现进程退出的逻辑 (#340 )
实现进程退出的逻辑
* 标志进程sleep
* 修复wakeup的问题
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* rust 重构 completion (#350 )
* 完成了completion的基本结构,待完善上级调用
* 用SpinLock保护结构体并发安全
* 修改原子变量为u32,修复符号错误
* irq guard
* 修改为具有内部可变性的结构体
* temp fix
* 修复了由于进程持有自旋锁导致的不被调度的问题
* 对 complete 系列方法上锁,保护 done 数据并发安全
* 移除了未使用的依赖
* 重写显示刷新驱动 (#363 )
* 重构显示刷新驱动
* Patch refactor process management (#366 )
* 维护进程树
* 维护进程树
* 更改代码结构
* 新建进程时,设置cwd
* 调整adopt childern函数,降低开销
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* waitqueue兼容C部分 (#351 )
* PATH
* safe init
* waitqueue兼容C部分
* waitqueue兼容C部分
* 删除semaphore.c,在ps2_keyboard中使用waitqueue
* 删除semaphore.c,在ps2_keyboard中使用waitqueue
* current_pcb的C兼容
* current_pcb的C兼容
* current_pcb的C兼容
* fmt
* current_pcb的兼容
* 针对修改
* 调整代码
* fmt
* 删除pcb的set flags
* 更改函数名
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* merge master
* Patch debug process management refactor (#372 )
* 能够调通,执行完textui_init
* 能跑到initial kernel thread
* fmt
* 能够正常初始化所有服务(尚未能切换到用户程序)
* 删除部分无用的extern
* 存在问题:ap处理器启动后,bsp的smp_init函数return之后就出错了,怀疑是栈损坏
* 解决smp启动由于未换栈导致的内存访问错误
* debug
* 1
* 1
* lock no preempt
* 调通
* 优化代码,删除一些调试日志
* fix
* 使用rust重写wait4 (#377 )
* 维护进程树
* 维护进程树
* 更改代码结构
* 新建进程时,设置cwd
* 调整adopt childern函数,降低开销
* wait4
* 删除c_sys_wait4
* 使用userbuffer保护裸指针
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
* 消除warning
* 1. 修正未设置cpu executing的问题
* 修正kthread机制可能存在的内存泄露问题
* 删除pcb文档
* 删除C的tss struct
---------
Co-authored-by: Bullet <93781792+GP-Bullet@users.noreply.github.com>
Co-authored-by: Chiichen <39649411+Chiichen@users.noreply.github.com>
Co-authored-by: hanjiezhou <zhouhanjie@dragonos.org>
Co-authored-by: GnoCiYeH <118462160+GnoCiYeH@users.noreply.github.com>
Co-authored-by: houmkh <1119644616@qq.com>
2023-09-15 14:58:19 +08:00
zhaoyao73
285de542f3
modify kernel link script ( #373 )
...
put rust text between _text and _etext, so rust symbols are included in
kallsyms, traceback could use them.
modify grub_auto_install.sh to add arch linux support
2023-09-06 18:08:52 +08:00