feat: 添加对内核引导协议的抽象 (#913)* 添加multiboot header* head.S传参增加bootloader类型* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.* 把framebuffer的映射地址改为从early ioremap和mmio pool分配* riscv64能运行
chore: 将工具链更新到2024-07-23 (#864)* chore: 将工具链更新到2024-07-23
feat(log): 将内核日志统一为新的logger (#814)
chore: move setup_arch_post timepoint to before clocksource_boot_finish (#820)This commit adjusts the timing of the setup_arch_post event to occur before the clocksource_boot_finish event, allowing
chore: move setup_arch_post timepoint to before clocksource_boot_finish (#820)This commit adjusts the timing of the setup_arch_post event to occur before the clocksource_boot_finish event, allowing the time subsystem to properly register architecture-specific clock sources.
show more ...
fix(riscv/process): 把riscv的调度时钟节拍率与HZ同步,并且修复切换到用户态的时候忘了在内核态关中断的bug (#780)
feat(driver/acpi_pm): Implement ACPI PM Timer (#772)* feat: Implement ACPI PM Timer
feat(filesystem): 引入Umount系统调用 (#719)* feat(filesystem): 引入Umount系统调用 * 将所有ENOSYS误用更正 * 修复了一个使同一个挂载点可以挂载2个文件系统的bug * 统一注释,增强程序稳定性,统一接口。注意:Umount时在fatfs的路径要使用大写,此受限于当前文件系统设计。
把irqdesc添加到sysfs (#525)* 把irqdesc添加到sysfs
把opengrok.ringotek.cn替换为code.dragonos.org.cn (#484)
实现unified-init库,支持收集初始化函数到一个数组,并统一初始化 (#474)* 添加“统一初始化”的过程宏,并把SystemError独立成crate * 使用unified-init来初始化fbmem * 更新workflow,增加内核自动化静态测试
添加FrameBuffer的接口抽象&完善设备驱动模型的class相关代码 (#472)* 添加FrameBuffer的接口抽象(参考Linux 6.1.9) * feature: 完善设备驱动模型的class的抽象,并创建graphics class * feature: 完善设备驱动模型中Device对class的处理,使得能够在class下注册设备 目前注册了fbco
添加FrameBuffer的接口抽象&完善设备驱动模型的class相关代码 (#472)* 添加FrameBuffer的接口抽象(参考Linux 6.1.9) * feature: 完善设备驱动模型的class的抽象,并创建graphics class * feature: 完善设备驱动模型中Device对class的处理,使得能够在class下注册设备 目前注册了fbcon设备,但是由于虚拟终端还没写,因此fbcon的到终端以及帧缓冲区的映射还没加上去.
bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug (#454)bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug
把pci驱动的读取acpi mcfg的代码,调整为从新的acpi驱动来读取 (#413)* 把pci驱动的读取acpi mcfg的代码,调整为从新的acpi驱动来读取
添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率 (#412)* 添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率 * 把hpet.c移动到arch文件夹下
初步编写cpu信息获取的代码 (#406)1. 启动时从acpi获取所有的cpu信息并存到SMP_BOOT_DATA 2. 注册cpu subsystem/bus到sysfs(暂时未添加内容) todo: 1. build_cpu_map(在X86_64SmpManager中) 2. 实现cpu mask 3. 把cpu设备注册到sysfs
在Sysfs中引入ACPI Firmware (#405)- bugfix: multiboot2启动的信息因为没及时转存导致后面无法从其中进行查询的bug - feature: 把acpi表、acpi bus加入sysfs
设备驱动模型:完善platform bus相关内容。并注册串口到sysfs (#403)* 完成初始化platform bus * 删除旧的sysfs * 把uart驱动移动到tty/serial文件夹下 * 完成将串口挂载到sysfs * 修复vfs系统调用未能follow symlink的问题 * 修复shell未能正确获取pwd的问题
完善设备驱动模型,基于kset、kobj来维护对象之间的关系 (#401)* 使用kobj和kset管理/sys文件夹下的对象 * 修改notifier,把action从u64换为泛型。 * 完善设备驱动模型,基于kset、kobj来维护对象之间的关系
wait4系统调用支持options字段 (#398)
ahci内存越界问题修复+ mm的bug修复+在rust中解析acpi table (#384)* bugfix: 修复了Flusher Drop的时候没有自动刷新TLB的bug * 解决进程管理未初始化时,trap.c尝试打印pid导致错误的问题 * 设置kmalloc默认强制清0 * 修复ahci驱动的内存越界问题 * 修复mmio buddy忘记归还buddy bl
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
优化makefile (#352)
新的内存管理模块 (#303)  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理
新的内存管理模块 (#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>
Revert "新的内存管理模块 (#301)" (#302)This reverts commit d8ad0a5e7724469abd5cc3cf271993538878033e.
新的内存管理模块 (#301)  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理
新的内存管理模块 (#301)  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(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
pci重构+pcie支持 (#235)* pci重构+pcie支持 * pci重构测试完成 * 修正makefile的问题 * 小修改 * 修改函数名字
12