25 Commits

Author SHA1 Message Date
Xshine
729a96ef47
实现内核通知链 notifier chain (#316)
* 实现通知链块结构

* 实现通知链的基本功能

* 实现 atomic notifier chain

* 实现 blocking notifier chain

* 使用 rust 范式完成功能

* 支持回调次数 nr_to_call

* 移动至 libs 目录

* 完善通知链相关方法

* 修正相关格式

* 文档编写

* 更改文档路径
2023-08-06 12:53:47 +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
houmkh
8fd71f2772
增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
* 增加定时器和软中断文档

* 修改softirq对c的接口和文档

* 修改文档格式
2023-04-17 17:17:06 +08:00
login
77c928f6ce
new: DowncastArc and its docs (#244) 2023-04-16 20:29:04 +08:00
longjin
a274d5a01d 暂时解决idr不能跑的问题(目前只能在o1下运行,o0存在栈损坏错误) 2022-10-23 16:43:57 +08:00
guanjinquan
d53ddde95d
Patch add idr (#56)
* 增加了idr模块

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

* 增加了IDR模块

* 修改了test-idr.c文件

* 进一步完善函数注释

* 更新idr文档同时修改了test-idr的错误


* 将lz4库改为使用系统的clz函数

* idr和test-idr O1

* bugfix: 修复测试用例中的移位问题

* 修正问题

Signed-off-by: guanjinquan <1666320330@qq.com>
Co-authored-by: fslongjin <longjin@RinGoTek.cn>
2022-10-23 16:07:28 +08:00
fslongjin
53233d5e3b doc: 更正文档错误 2022-10-04 22:05:31 +08:00
fslongjin
7087e9fbc1 doc: 更新List文档 2022-10-04 22:02:41 +08:00
Mustang
cbbf79b2cf
crc库(#46)
* crc

* 更改crc7

* add crc.h,crc.md

* 调整文件编码格式

* 调整文档

Co-authored-by: fslongjin <longjin@RinGoTek.cn>
2022-09-20 15:12:45 +08:00
fslongjin
357343b0d3 doc: memcpy文档 2022-09-03 16:23:24 +08:00
fslongjin
2c4f8b9c50 doc: mmio文档 2022-08-20 18:42:12 +08:00
fslongjin
0223232f3f new: 初步完成了mmio地址空间自动分配(未测试)
bugfix: mmio虚拟地址分配的bug
2022-08-20 14:54:19 +08:00
fslongjin
f513286f53 new:kzalloc 2022-08-15 17:57:05 +08:00
fslongjin
16ad3e8719 doc: mm_stat文档 2022-08-06 23:41:44 +08:00
fslongjin
d9ee6ea859 new: string.h 2022-08-03 15:13:01 +08:00
fslongjin
a02acbdbe6 将进程同步原语移动到common文件夹下 2022-07-31 14:17:26 +08:00
fslongjin
c1f51bf4cb kfifo文档 2022-07-29 17:18:55 +08:00
fslongjin
aacb77e0c6 doc: 原子变量文档 2022-07-27 12:11:29 +08:00
fslongjin
6352836902 doc: 锁机制的文档 2022-07-27 11:17:11 +08:00
fslongjin
1b4f812fe4 doc: 内存管理api 2022-07-27 00:09:19 +08:00
fslongjin
5c9e03236d doc: 内存分配指南 2022-07-26 18:45:11 +08:00
fslongjin
b0474540d4 增加printk文档 2022-07-26 18:05:17 +08:00
fslongjin
39a09ffd72 🆕 内核核心api文档 2022-07-12 20:39:33 +08:00