LoGin
|
b5b571e026
|
修复内核的clippy检查报错 (#637)
修复内核的clippy检查报错
---------
Co-authored-by: Samuel Dai <947309196@qq.com>
Co-authored-by: Donkey Kane <109840258+xiaolin2004@users.noreply.github.com>
Co-authored-by: themildwind <107623059+themildwind@users.noreply.github.com>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: MemoryShore <105195940+MemoryShore@users.noreply.github.com>
Co-authored-by: 曾俊 <110876916+ZZJJWarth@users.noreply.github.com>
Co-authored-by: sun5etop <146408999+sun5etop@users.noreply.github.com>
Co-authored-by: hmt <114841534+1037827920@users.noreply.github.com>
Co-authored-by: laokengwt <143977175+laokengwt@users.noreply.github.com>
Co-authored-by: TTaq <103996388+TTaq@users.noreply.github.com>
Co-authored-by: Jomo <2512364506@qq.com>
Co-authored-by: Samuel Dai <samuka007@qq.com>
Co-authored-by: sspphh <112558065+sspphh@users.noreply.github.com>
|
2024-03-22 23:26:39 +08:00 |
|
Chenzx
|
4695947e1b
|
实现SYS_LINK和SYS_LINKAT (#611)
* 实现do_linkat及SYS_LINK和SYS_LINKAT
* 未在riscv上测试,添加target_arch
* 将c字符串检查移动到vfs/syscall.rs,修改do_linkat()逻辑
* 修改部分注释
|
2024-03-22 18:27:07 +08:00 |
|
TTaq
|
b4eb05a17f
|
Statx (#632)
* 实现statx及测试的应用程序
|
2024-03-21 19:59:10 +08:00 |
|
Donkey Kane
|
1d37ca6d17
|
添加mount系统调用 (#561)
* Modify dadk config to switch NovaShell revision
* finish primary build of mount(2), usable now
* 使用read_from_cstr函数优化代码可读性 , 针对文件系统新增错误EUNSUPFS
* small changes
* 添加系统调用文档
* cargo fmt
* Revert "small changes"
This reverts commit e1991314ce687faa2d652479e8ef64f5bea25fa1.
* 修复用户程序参数传入错误
* Revert "small changes"
This reverts commit e1991314ce687faa2d652479e8ef64f5bea25fa1.
* 解决合并冲突,最终提交
* 将dadk_config切换为相对路径以修复依赖问题
* Update settings.json
* Delete user/apps/test-mount/LICENSE
* 换用更好的c字符串读取函数,优化系统调用函数注释,修复错误处理bug,删除无用文件,修改测试程序readme
* 修改用户程序readme
* 代码格式化,初级版本
* 初级版本,未实现文件系统管理器,未支持设备挂载
* 为文件系统添加name方法,返回文件系统名字字符串,为挂载查询服务
* mount系统调用:添加统一文件系统初始化管理器
* null
* 解除冲突
* 删除无用kdebug
|
2024-03-20 15:31:20 +08:00 |
|
hmt
|
82df0a1310
|
fix: mkdir输出错误信息; feat: 实现get_pathname (#615)
* fix: mkdir输出错误信息; feat: 实现get_pathname
* fix: 将处理路径的操作放入vfs而不是在syscall/mod.rs中
* 调整入参类型
---------
Co-authored-by: longjin <longjin@DragonOS.org>
|
2024-03-19 16:45:44 +08:00 |
|
TTaq
|
9e481b3bfe
|
实现了sys_rename (#578)
* 基本实现了rename的系统调用
* 实现相对路径的mv
* confilct resolve
* make fmt
* 更改校验位置,
增加了SYS_RENAMEAT与SYS_RENAMEAT2两个系统调用,其实现与SYS_RENAME基本一致
* 删除了fat中的link
* fix
* 修改注释格式,删除管道文件判断
* 1
|
2024-03-18 14:47:59 +08:00 |
|
GnoCiYeH
|
52bcb59e92
|
完善Tty的RawMode (#577)
* 完善rowmode,改掉一部分bug
* 增加两个ansi拓展功能功能,以及标记部分函数nerve inline
* 修改do_signal和其他中断上下文锁未关中断,以及拓展tty功能,修改tty几个算法bug
* 修改两个锁
* 修改syscall_64
* update
|
2024-03-11 15:13:37 +08:00 |
|
Chenzx
|
5eeefb8c80
|
实现SYS_RMDIR (#566)
* 实现rmdir系统调用,整理do_remove_dir逻辑
|
2024-03-08 16:01:22 +08:00 |
|
LoGin
|
e28411791f
|
完成中断管理模块重构 (#554)
- 支持中断共享
- 把现有驱动程序移植到新的irq模块
- 使用`ProcessorId`标识处理器id
- 尚未实现threaded_irq
性能上,edge irq flow handler里面,对于锁的使用,可能有点问题。为了获取/修改common data还有其他几个结构体的状态,进行了多次加锁和放锁,导致性能降低。这是接下来需要优化的点。
|
2024-03-03 16:31:08 +08:00 |
|
GnoCiYeH
|
52da9a5937
|
完成与Linux兼容的Ntty (#517)
* 已经完成的功能:
- 写:printf能够正常在tty输出
- 读:与键盘驱动接上
- 信号: 能够正常通过ctrl向前台进程发送信号
* 支持目前的shell,改动printk使其与新版tty兼容。
* 删除原有tty文件夹,并更改新tty文件名
* 添加clear清屏程序
* 实现tty部分ioctl,更改部分问题
|
2024-02-26 15:27:19 +08:00 |
|
裕依
|
27b967a38a
|
添加pread&pwrite (#528)
添加pread&pwrite
|
2024-02-19 14:53:34 +08:00 |
|
LoGin
|
196b75dc17
|
把irqdesc添加到sysfs (#525)
* 把irqdesc添加到sysfs
|
2024-02-19 00:56:58 +08:00 |
|
裕依2439
|
4ad52e57e6
|
添加socketpair (#505)
* 添加对socketpair系统调用的处理
---------
Co-authored-by: LoGin <longjin@DragonOS.org>
|
2024-02-07 18:06:15 +08:00 |
|
LoGin
|
5b59005f93
|
x86_64: 使用Rust重写内核初始化代码 (#507)
* x86_64: 使用Rust重写内核初始化代码
|
2024-02-04 15:46:24 +08:00 |
|
LoGin
|
453452cc02
|
初始化riscv的内存管理模块,并且设置保留内存 (#506)
|
2024-02-04 14:35:18 +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 |
|
LoGin
|
02343d0b5b
|
增加/dev/fb0,能够在用户程序读写帧缓冲区 (#485)
|
2024-01-02 14:16:10 +08:00 |
|
LoGin
|
e7071df6a4
|
把opengrok.ringotek.cn替换为code.dragonos.org.cn (#484)
|
2024-01-01 11:53:49 +08:00 |
|
LoGin
|
c566df451c
|
添加帧缓冲区抽象并实现vesafb的驱动 (#483)
- 添加bootparams对象
- 修正由于bus的driver、device强弱引用关系 不正确从而导致对象被释放的bug
- 添加vesafb的驱动
- 实现framebuffer抽象层
- 为通用帧缓冲区抽象实现sysfs的属性
- 修改设备号DeviceNumber的定义
- 仿照linux,添加initcall,并在第一个内核线程中,调用他们。
|
2024-01-01 11:46:51 +08:00 |
|
GnoCiYeH
|
5e948c5650
|
修正pipe逻辑,将pipe接入epoll。 (#478)
|
2023-12-27 15:02:29 +08:00 |
|
LoGin
|
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 |
|
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
|
1a72a751b1
|
在riscv输出hello world (#466)
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
|
2023-12-07 02:13:22 +08:00 |
|
LoGin
|
4fda81ce81
|
使得DragonOS kernel 能为riscv64编译通过(尚未能启动) (#457)
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)
* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
|
2023-11-25 12:07:39 +08:00 |
|
LoGin
|
46e234aef6
|
使用cargo管理一些C文件的编译,并且移动部分汇编到arch目录 (#447)
* 使用cargo管理main.c的编译
* 使用build-scripts编译架构相关的c代码
* 删除elf.h
|
2023-11-17 21:25:15 +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
|
709498cac1
|
feat: sys_readlink && sys_readlinkat (#436)
|
2023-11-12 17:40: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 |
|
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
|
971462be94
|
添加thread和futex机制 (#411)
* 初步实现clone系统调用
* 实现了线程,初步实现futex机制,添加了几个小的系统调用
* 更改pcb引用计数问题
* 解决死锁bug
---------
Co-authored-by: LoGin <longjin@DragonOS.org>
|
2023-11-01 20:55:57 +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
|
7eda31b2f0
|
在Sysfs中引入ACPI Firmware (#405)
- bugfix: multiboot2启动的信息因为没及时转存导致后面无法从其中进行查询的bug
- feature: 把acpi表、acpi bus加入sysfs
|
2023-10-22 22:00:16 +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 |
|
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 |
|
GnoCiYeH
|
876cb89ecf
|
修复pipe2在读端或写端关闭后还阻塞问题 (#396)
* 修复pipe2在读端或写端关闭后还阻塞问题。
* update
* update
* 修改cloexec
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
|
2023-10-03 12:03:34 +08:00 |
|
GnoCiYeH
|
bb0e4d4131
|
使用DragonReach启动shell,修改getdents (#391)
* 使用DragonReach启动shell,修改getdents
* 更改关闭pipe时断言报错问题,以及DragonReach启动shell阶段版本
* 修改目录结构
* update
* 解决小问题
* 调整dragon reach版本号
* 设置make clean的时候不清空应用程序的缓存。
指定relibc版本号
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
|
2023-09-30 16:36:06 +08:00 |
|
LoGin
|
6b4e7a2972
|
增加kernfs (#386)
* 增加kernfs
* kernfs文档
|
2023-09-19 19:46:59 +08:00 |
|
LoGin
|
ae5ede03be
|
bugfix: bus/device manager对卸载逻辑的处理错误 (#385)
* 移动位置
* bugfix: bus/device manager对卸载逻辑的处理错误
|
2023-09-18 07:38:04 +08:00 |
|
LoGin
|
7ae679ddd6
|
ahci内存越界问题修复+ mm的bug修复+在rust中解析acpi table (#384)
* bugfix: 修复了Flusher Drop的时候没有自动刷新TLB的bug
* 解决进程管理未初始化时,trap.c尝试打印pid导致错误的问题
* 设置kmalloc默认强制清0
* 修复ahci驱动的内存越界问题
* 修复mmio buddy忘记归还buddy block的问题
* 新增acpi模块,暂时能解析acpi tables
|
2023-09-17 15:41:01 +08:00 |
|
LoGin
|
71474bc682
|
修复drop fd时,文件描述符引用不为0的问题 (#382)
|
2023-09-16 16:16:43 +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 |
|