80 Commits

Author SHA1 Message Date
houmkh
be63f3b2b6
实现系统调用Fstat (#295)
* fstat

* 修改syscall.rs中的verify_area
2023-08-05 18:52:46 +08:00
LoGin
1a62e7767c
解决relibc的头文件没能识别__dragonos__定义的问题 (#315) 2023-08-02 18:11:05 +08:00
LoGin
40fe15e095
新的内存管理模块 (#303)
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。

  内存管理模块主要由以下类型的组件组成:

- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
    - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
    - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。


除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug

---------

Co-authored-by: kong <kongweichao@dragonos.org>
2023-07-22 16:27:02 +08:00
LoGin
bb5f098a86
Revert "新的内存管理模块 (#301)" (#302)
This reverts commit d8ad0a5e7724469abd5cc3cf271993538878033e.
2023-07-22 16:24:55 +08:00
LoGin
d8ad0a5e77
新的内存管理模块 (#301)
&emsp;&emsp;实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。

&emsp;&emsp;内存管理模块主要由以下类型的组件组成:

- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
    - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
    - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。


除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug
2023-07-22 16:22:17 +08:00
YJwu2023
cc36cf4a18
PCI设备中断重构,删去USB相关代码 (#285)
* 修复ecam无法获取MCFG table的问题

* 完善pcie

* 完善irq的错误检测机制
2023-07-08 17:22:42 +08:00
hanjiezhou
f678331a33
匿名管道重构&增加IrqArch trait以及IrqFlags及其守卫 (#253)
* 实现匿名管道

* 增加IrqArch trait以及IrqFlags及其守卫

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-04-23 21:05:10 +08:00
TingHuang
dd9f1fc1a4
新增SysFS (#250)
* 添加sysfs

* 注册sysfs

* 添加sysfs相关

* 添加rust-anlyzer辅助配置

* 将设备与sysfs相关联

* 添加单独的文件管理sysfs下的文件夹
2023-04-21 16:03:42 +08:00
login
ac48398d3f
调整brk系统调用,使得参数、返回值与Linux一致 (#238)
* 新增用于测试relibc的app

* 为适配relibc,修改do_execve中关于用户栈的内容的设置

* 调整brk系统调用,使得参数、返回值与Linux一致
2023-04-11 16:54:14 +08:00
login
004e86ff19
新版文件系统重构完成 (#198)
1.重构:VFS
2. 重构:ProcFS
3. 重构:DevFS
4. 重构:FAT32
5. 重构:AHCI驱动
6. 新增:RamFS
7. 新增:MountFS
8. 新增:FAT12
9. 新增:FAT16
10. 重构:设备抽象

Co-authored-by: guanjinquan <1666320330@qq.com>
Co-authored-by: DaJiYuQia <88259094+DaJiYuQia@users.noreply.github.com>
2023-03-12 22:36:11 +08:00
YJwu2023
26d84a3139
新增VirtIO网卡驱动 (#194)
* 修复内存bug与grub安装脚本的错误

* 修改小bug

* PCI增加功能与virtio-net驱动

* little fix

* virtio-net小修改
2023-03-11 21:09:50 +08:00
login
2bf5ee0e3c
修改libc的编译相关内容(#171)
1.将libc的include文件夹分为export和internal
2.将所有app都直接链接libc.a,而不是都执行一遍"搜索.o"的过程
2023-02-11 13:04:24 +08:00
login
2726f101b4
删除无用的cfs.h (#136) 2023-01-03 21:01:56 +08:00
guanjinquan
74bde36e01
Patch porting gcc v2 (#124)
* 更改编译器的Include路径,使得include时不需要加`<libc/src/include/>`前缀

* 修改include路径

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-31 17:35:39 +08:00
login
7a818da88a
Patch about auto gen version string (#114)
* new: about app中,显示当前构建的git commit sha1以及构建时间

* bugfix: 修复shell的exec命令对绝对路径的拼接错误问题
2022-12-17 17:49:12 +08:00
login
6efd474033
允许用户自定义信号处理函数 (#112)
* new: 用户注册信号处理函数,能够进入自定义的handler

* 修复忘了传信号的数字给用户的处理函数的bug

* new:sigreturn

* 删除注释
2022-12-17 16:27:50 +08:00
login
0e0c187484
在内核代码中加入自定义的stdint.h文件 (#109) 2022-12-16 16:20:09 +08:00
wwc-15172310230
237e95c6dd
调整user下libs的libc目录结构 (#103)
* 调整user下libs的libc目录结构

* 修正.gitignore文件的问题

* 修复无法编译的问题

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-11 22:22:10 +08:00
DaJiYuQia
27a97abd24
Patch procf (#90)
* 1234

* 123

* 合并master

* procfs

* 1

* procfs展示进程基本信息

* modified code

* 恢复权限

* 恢复权限

 #恢复权限

* modify permission

* 删除run.sh

* 解决第一次编译时磁盘镜像权限错误的问题

* 恢复.vscode/c_cpp_properties.json

* 删除process.c中错误的do_fork

* remake procfs

* 修改一些变量名

* 修改类型

* modified

* data_puts缓冲区溢出后return

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-11-26 17:34:00 +08:00
login
cffd7144fb
signal相关数据结构&代码结构优化 (#84)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题

* new: 初步实现signal的数据结构
2022-11-16 15:18:03 +08:00
login
2813126e31
新增rust ffi (#77)
* 引入cargo

* 取消对Cargo.lock的跟踪

* 解决vscode报错问题

* new: rust的代码能够调用c语言的printk_color

* 1、将原本run.sh的工作拆解,变为几个不同的make命令
2、在docker镜像中编译rust

* 更改workflow

* update workflow

* new: 解决workflow无法通过编译的问题
2022-11-11 15:35:37 +08:00
houmkh
d9ee9a0f5b
Release worker private (#74)
* 释放worker private,to_thread问题待解决

* 增加process_free_task_

* 测试free_kthread_struct,process_free_task

* free_kthread_struct测试ok

* 修正函数重复的问题

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-11-04 14:19:24 +08:00
guanjinquan
09f8d6f577
添加completion模块+wait_queue_head模块+schedule_timeout (#70)
* 添加completion模块+wait_queue_head模块+schedule_timeout

* 修复一些bug

* 实现设置pcb名字和vsnprintf (#72)

* 实现pcb设置名字

* 实现设置pcb名字,实现vsnprintf

* 修改set_pcb_name和va_end

* bugfix: 修正一些小问题

Co-authored-by: longjin <longjin@RinGoTek.cn>

* new: FAT32删除文件的功能 (#73)

* new: 将sys_rmdir更改为sys_unlink,.且完成删除文件操作的vfs部分

* new: fat32删除文件

*bugfix: 解决创建文件时的bug

* new: 将可执行文件移动到bin目录下

* 完善completion和wait_queue_head文档,并确保测试ok。

Co-authored-by: longjin <longjin@RinGoTek.cn>
Co-authored-by: houmkh <100781004+houmkh@users.noreply.github.com>
2022-11-03 21:54:59 +08:00
login
31b7b49d8c
new: FAT32删除文件的功能 (#73)
* new: 将sys_rmdir更改为sys_unlink,.且完成删除文件操作的vfs部分

* new: fat32删除文件

*bugfix: 解决创建文件时的bug
2022-11-02 15:42:44 +08:00
kong
34205659b5
Patch isolate sched_cfs (#62)
* 独立cfs到新的文件

* update

* bugfix: 解决调度器卡住的问题

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-10-17 18:04:41 +08:00
login
39f11c5b4b
新增usb hid report解析器 (#58)
* new: usb hid parser
2022-10-14 18:45:10 +08:00
login
efa38a7d5d
使用内核线程来刷新屏幕 (#57)
* 修改了test-idr的错误

* new: 修复切换双缓冲的时候的卡顿问题

Signed-off-by: guanjinquan <1666320330@qq.com>
Co-authored-by: guanjinquan <1666320330@qq.com>
Co-authored-by: fslongjin <longjin@RinGoTek.cn>
2022-10-12 18:45:58 +08:00
guanjinquan
1067ae7da8
Patch add idr (#52)
* 增加了idr模块

* 增加了IDR模块,并尝试覆盖上一个错误版本.

* 增加了IDR模块

* 完善了注释内容

* 修改了test-idr.c文件

* 进一步完善函数注释

Signed-off-by: guanjinquan <1666320330@qq.com>
Co-authored-by: fslongjin <longjin@RinGoTek.cn>
2022-10-06 16:13:29 +08:00
fslongjin
7e0835c92f new: devfs设备卸载 2022-10-06 14:48:44 +08:00
fslongjin
35345cae6c doc: 内核线程文档 2022-09-30 18:00:10 +08:00
liric
fcdd6f5fa9 完成了tty设备在devfs中的注册 2022-09-15 23:09:15 +08:00
fslongjin
72f9c430c5 new: rootfs 2022-09-14 23:51:58 +08:00
fslongjin
26eebaf03a 删除文件夹时回收dentry缓存 2022-09-13 16:17:35 +08:00
fslongjin
9f2b080cda new: devfs删除文件夹 2022-09-12 23:56:31 +08:00
fslongjin
339053a20e 将具体磁盘类型与fat32文件系统进行分离 2022-09-06 14:10:17 +08:00
fslongjin
4713a1a152 new: 移植了LZ4库 2022-09-03 16:13:29 +08:00
fslongjin
0223232f3f new: 初步完成了mmio地址空间自动分配(未测试)
bugfix: mmio虚拟地址分配的bug
2022-08-20 14:54:19 +08:00
fslongjin
77633e2f19 new: 初步实现了mmio的伙伴系统 2022-08-18 22:06:29 +08:00
fslongjin
06af77bd79 fix: 解决了page的锁未被初始化的bug 2022-08-15 12:09:04 +08:00
fslongjin
1dd9195d69 new: vma反向映射 2022-08-15 01:42:34 +08:00
fslongjin
f3cd2b7777 merge master and fix conflicts 2022-08-14 21:43:39 +08:00
Eugene
618b612754 将 kernel\common\math\pow.c 的求幂运算优化为快速幂 2022-08-14 21:27:21 +08:00
fslongjin
17d5fea2cf new: 初步完成了textui的基本显示功能 2022-08-04 21:40:26 +08:00
fslongjin
de3324ed7d 实现屏幕管理器大致的框架 2022-08-03 14:11:14 +08:00
fslongjin
fadeee36a2 Merge branch 'master' into patch-screen-manager 2022-08-02 10:14:57 +08:00
fslongjin
e806bbc0c8 o3能运行 2022-08-01 20:55:47 +08:00
fslongjin
fd1b4220be 创建了screen manager文件 2022-08-01 19:43:57 +08:00
fslongjin
4bc64de8f9 🆕 测定tsc频率 2022-07-27 21:05:33 +08:00
fslongjin
813c3f9bf8 bitree: delete node 2022-07-25 17:01:37 +08:00
fslongjin
2b0b727893 🔧 将enable msi的部分更新为使用msi_desc来完成 2022-07-25 13:50:03 +08:00