40 Commits

Author SHA1 Message Date
hanjiezhou
22c9db312a
Patch pipe2 (#364) 2023-09-13 00:58:01 +08:00
hanjiezhou
abe3a6ea3c
Patch refactor scm and textui (#289)
* 重构屏幕管理器和textui框架

* 切换字体为spleen,并增加对字体的抽象

* 修正文档

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-08-20 00:19:36 +08:00
LoGin
40fe15e095
新的内存管理模块 (#303)
&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

---------

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
HoshuChiu
7149abaa49
修复Issue#220;vnc的端口号恢复5900 (#243)
* 修复Issue#220

* qemu-vnc端口号恢复为5900
2023-04-16 14:47:51 +08:00
login
20e3152e1e
将TTY与stdio进行连接,实现基本的stdio功能 (#217)
* 将stdio与tty接上
2023-03-31 12:54:37 +08:00
Gou Ngai
64aea4b349
增加x87FPU支持 (#212)
* remove `ret_from_syscall`
*修复ps2键盘驱动程序inode在进程fork的时候导致死锁的问题.
*更新: VFS每次拷贝文件描述符的时候,都会去调用inode的open函数

---------

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-03-28 20:44:26 +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
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
c588d6f77f
Patch add abort func (#120)
* 对于除了sigkill以外的信号,也加入队列

* bugfix:libc中,注册信号处理函数时,总是注册sigkill的问题

* 增加getpid系统调用

* 增加了raise、kill、abort
2022-12-19 15:03:44 +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
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
login
1a2eaa402f
signal的处理(kill命令)以及一些其他的改进 (#100)
* 将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all

* new: 增加判断pt_regs是否来自用户态的函数

* new: rust的cli和sti封装

* 将原有的判断pt_regs是否来自用户态的代码,统一改为调用user_mode函数

* ffz函数:获取u64中的第一个值为0的bit

* spinlock增加 spinlock irq spin_unlock_irq

* 临时解决显示刷新线程迟迟不运行的问题

* 更改ffi_convert的生命周期标签

* new: 测试signal用的app

* 解决由于编译器优化导致local_irq_restore无法获取到正确的rflags的值的问题

* new: exec命令增加"&"后台运行选项

* procfs->status增加显示preempt和虚拟运行时间

* 更改引用计数的FFIBind2Rust trait中的生命周期标签

* new: signal处理(kill)

* 更正在review中发现的一些细节问题
2022-12-08 22:59:51 +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
66f67c6a95
signal的发送(暂时父子进程之间共享信号及相应的结构体) (#89)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题

* new: 初步实现signal的数据结构

* new:signal相关数据结构

* fix: 解决bindings.rs报一堆警告的问题

* new: rust下的kdebug kinfo kwarn kBUG kerror宏

* 移动asm.h和cmpxchg.h

* new: signal的发送(暂时只支持父子进程共享信号及处理函数)
2022-11-23 11:38:20 +08:00
longjin
c811947dd0 new: 将可执行文件移动到bin目录下 2022-11-02 15:54:04 +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
login
d328bfce6b
bugfix: 修正潜在的错误路径 (#64)
* bugfix: 修正潜在的错误路径

* 修正格式
2022-10-22 20:17:40 +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
005b962f33 注释修改 2022-09-07 23:30:29 +08:00
fslongjin
ee9658b5d5 new:支持dev目录下的readdir 2022-09-07 23:25:39 +08:00
zzy666-hw
554b73ec99
add ipc pipe (#28) 2022-08-20 21:47:41 +08:00
fslongjin
7fd5330195 new: shell中的free命令 2022-08-07 21:17:02 +08:00
fslongjin
da4867d662 🆕 clock()函数 2022-07-12 13:20:01 +08:00
fslongjin
d32aa2d99c 增加touch到绝对路径的功能 2022-07-07 10:27:40 +08:00
fslongjin
8c8352e748 🆕 fat32_create 2022-07-07 00:55:33 +08:00
fslongjin
b79ba099df bugfix: 修复了fat32_mkdir的bug(在非根目录下创建文件夹会出错)(在/dev中创建子文件夹,opendir时属性设置错误的bug) 2022-07-06 17:10:54 +08:00
fslongjin
52b5c2731d 🐛 解决cd到相对路径后,新路径字符串拼接错误的问题 2022-07-06 00:39:18 +08:00
fslongjin
2a47569473 bugfix: exec执行的文件不存在时,自动退出进程。 2022-06-09 21:56:32 +08:00
fslongjin
8f180254bc 🆕 输入about即可展示系统的“关于”信息 2022-06-08 00:19:08 +08:00
fslongjin
4e04ab9eee 🆕 在shell中启动另一个程序 2022-06-07 23:18:26 +08:00
fslongjin
e2a59dbd43 🆕 exec (存在bug 2022-05-31 21:55:06 +08:00
fslongjin
85707bd8cc 🆕 cat命令 2022-05-30 17:39:45 +08:00
fslongjin
9ee6d33318 🆕 完成了ls的功能 2022-05-29 14:36:46 +08:00
fslongjin
156c2c2389 bugfix: 修复shell中,用户可以删除多余的字符的bug,以及\b会被录入到参数字符串的bug 2022-05-25 23:18:30 +08:00
fslongjin
37669ebf87 🆕 cd命令 2022-05-25 22:50:32 +08:00
fslongjin
8bd7b64a0b 🆕 增加重启命令reboot 2022-05-25 14:38:15 +08:00
fslongjin
8246c1c9e2 🆕 pwd命令 2022-05-24 16:37:28 +08:00