4736fad057
重新组织代码分布
2024-10-16 07:48:05 +00:00
63ccb53a91
merge master
2024-10-14 12:27:38 +00:00
bca536ec9b
clean debug messages
2024-10-14 12:20:46 +00:00
8fe49e190e
make fmt
2024-10-14 12:11:27 +00:00
7cebb88792
can ctrl-c interupt from blocking accept
2024-10-14 12:01:32 +00:00
c709f79fda
feat(tty): 将tty设备适配epoll,修改串口部分问题 ( #968 )
...
- tty文件适配epoll,使epoll能够监听tty
- 修改串口handle_irq,原有每次只读取一个字节会导致:输入left(esc+[+A)被错误解析为(esc)+([)+(A)三个字符
- 为串口加上vcdata用于控制输入输出的格式问题(未解决,这个pr捎带)
2024-10-13 01:10:36 +08:00
4e4ce68e03
updates uevent and make fmt
2024-10-11 23:56:12 +08:00
40d9375b6b
ready for merge in master ( #964 )
...
uevent should be format
Enum of smoltcp socket should be optimized.
need to add interface for routing subsys
actix is still not abled to run.
clean some casual added code to other places
2024-10-10 17:53:39 +08:00
013ffb708f
feat(ida): IDA内部改为使用XArray实现 ( #934 )
...
目前可以记录哪些ID已经分配,支持了ID释放的功能.
Signed-off-by: longjin <longjin@DragonOS.org >
2024-09-25 11:20:52 +08:00
28fe4ad2a0
feat(driver/net): 将网络设备注册到sysfs, 添加设备类属性文件 ( #919 )
2024-09-11 14:30:53 +08:00
2b7818e80e
feat: 添加对内核引导协议的抽象 ( #913 )
...
* 添加multiboot header
* head.S传参增加bootloader类型
* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.
* 把framebuffer的映射地址改为从early ioremap和mmio pool分配
* riscv64能运行
2024-09-05 21:12:20 +08:00
09836e1b39
fix: socket shutdown wrong implement ( #893 )
2024-08-15 18:30:44 +08:00
bd70d2d1f4
chore: 将工具链更新到2024-07-23 ( #864 )
...
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
634349e0eb
fix: tcp poll没有正确处理posix socket的listen状态的问题 ( #859 )
2024-07-24 18:21:39 +08:00
1ea2daad81
feat(driver/net): 实现Loopback网卡接口 ( #845 )
...
* 初步实现loopback设备
2024-07-22 16:22:45 +08:00
415e14e9c3
fix(driver): fix memory security problem in tty device ioctl ( #833 )
...
* add soft link to musl-gcc
* fix the tty_ioctl
* modified
* modified
2024-05-31 10:20:51 +08:00
2eab6dd743
feat(log): 将内核日志统一为新的logger ( #814 )
2024-05-16 17:25:23 +08:00
37cef00bb4
fix(net): Fix TCP Unresponsiveness and Inability to Close Connections ( #791 )
...
* fix(net): Improve stability. 为RawSocket与UdpSocket实现close时调用close方法,符合smoltcp的行为。为SocketInode实现drop,保证程序任何情况下退出时都能正确close对应socket, 释放被占用的端口。
* fix(net): Correct socket close behavior.
2024-05-11 17:17:43 +08:00
e32effb150
feat(driver): 把virtio添加到sysfs ( #752 )
2024-04-22 15:11:47 +08:00
93c379703e
feat(net): 实现raw socket的poll ( #739 )
...
feat(net): 实现raw socket的poll
2024-04-21 13:36:44 +08:00
881ff6f95e
将smoltcp升级到0.11.0版本 ( #740 )
2024-04-21 11:39:00 +08:00
d623e90231
socket统一改用GlobalSocketHandle
,并且修复fcntl SETFD的错误 ( #730 )
...
* socket统一改用`GlobalSocketHandle`,并且修复fcntl SETFD的错误
---------
Co-authored-by: longjin <longjin@DragonOS.org >
2024-04-15 22:01:32 +08:00
c719ddc631
feat(net): 实现tcp backlog功能 ( #714 )
...
* feat:实现tcp的backlog功能
2024-04-14 23:51:47 +08:00
6fc066ac11
实现SystemV共享内存 ( #690 )
...
* 实现SystemV共享内存
* 测试shm
* 添加测试程序
* 完善细节
* 修正shm的时间数据错误的问题
* fix: devfs的metadata权限为0x777的错误
---------
Co-authored-by: longjin <longjin@DragonOS.org >
2024-04-07 14:04:19 +08:00
f0c87a897f
重写调度模块 ( #679 )
...
## PR:重写调度模块
---
### 完成的部分
- 实现cfs调度策略
- 搭建框架,后续功能可以迭代开发
- 目前能跑,未测试性能
### 需要后续接力的部分
- 实现组内调度(task_group)
- 实现跨核负载均衡(pelt算法)
- 接入sysfs,实现参数动态调节(sched_stat等)
- nice值以及priority等参数的设置及调优
2024-04-05 17:54:48 +08:00
dfe53cf087
实现pty,附带测试程序 ( #685 )
...
* 实现pty,附带测试程序
* fmt ** clippy
* 将file层的锁粒度缩小,从而不使用no_preempt。更改pipe在sleep部分的bug
* 修复拼写错误
2024-04-05 00:21:55 +08:00
9d9a09841c
修复udp bind的时候,对port0处理不正确的问题( #676 )
2024-03-31 15:11:10 +08:00
6046f77591
Patch socketpair ( #576 )
...
* 将sockets分成inet和unix域
- 添加File端点
- 添加SocketPair trait并将Socket trait中的pair相关方法移动
- 添加对SockAddrUn的处理
* 精简SocketHandleItem
* 重构socketpair相关逻辑
- 将File端点换成Inode端点
- 尝试使用SocketInode进行socketpair(未成功)
* 将SocketPair trait合并到Socket trait中,去除downcast
2024-03-23 15:56:49 +08:00
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
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
840045af94
引入clippy,并根据clippy的提示,修改部分代码 ( #575 )
2024-03-10 21:45:34 +08:00
4ad52e57e6
添加socketpair ( #505 )
...
* 添加对socketpair系统调用的处理
---------
Co-authored-by: LoGin <longjin@DragonOS.org >
2024-02-07 18:06:15 +08:00
e7071df6a4
把opengrok.ringotek.cn替换为code.dragonos.org.cn ( #484 )
2024-01-01 11:53:49 +08:00
5e948c5650
修正pipe逻辑,将pipe接入epoll。 ( #478 )
2023-12-27 15:02:29 +08:00
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
91e9d4ab55
实现unified-init库,支持收集初始化函数到一个数组,并统一初始化 ( #474 )
...
* 添加“统一初始化”的过程宏,并把SystemError独立成crate
* 使用unified-init来初始化fbmem
* 更新workflow,增加内核自动化静态测试
2023-12-25 23:12:27 +08:00
406099704e
增加epoll机制 ( #455 )
...
* ## 增加epoll机制
- 增加epoll机制
- 添加事件等待队列,提升socket性能
- 优化poll,删除不能poll的文件系统中的poll方法
* 添加细节注释
* 修复文件关闭后epoll还持有对应描述符的文件弱引用的bug
* 将EPollEvent设计为POSIX标准
* 修改s到us转换的计算错误
2023-12-25 18:08:12 +08:00
1a72a751b1
在riscv输出hello world ( #466 )
...
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +08:00
4fda81ce81
使得DragonOS kernel 能为riscv64编译通过(尚未能启动) ( #457 )
...
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)
* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
2023-11-25 12:07:39 +08:00
c47fe90440
增加accept4系统调用 ( #431 )
2023-11-09 18:20:27 +08:00
393f691574
增加gettid以及线程组group leader相关的逻辑 ( #430 )
...
* 增加gettid以及线程组group leader相关的逻辑
2023-11-09 16:48:45 +08:00
2f6f547ae0
Patch fix sched ( #419 )
...
1.解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug
2.修复socket inode 的read和write方法里面没有使用no_preempt的问题
3. 修复cpu0的内核栈由于脏数据导致new_idle的时候set pcb报错的问题
---------
Co-authored-by: longjin <longjin@DragonOS.org >
2023-11-04 21:35:25 +08:00
afc95d5c25
完善pci中断的设计 ( #392 )
...
* 完善pci中断的设计
2023-10-03 12:09:29 +08:00
0dd8ff4332
添加中断 ( #370 )
...
* 添加中断
* dhcp更改为全局socketset
* 解决异常中断的问题,使得能够使用中断来处理网卡数据
---------
Co-authored-by: longjin <longjin@RinGoTek.cn >
2023-09-21 23:23:57 +08:00
6b4e7a2972
增加kernfs ( #386 )
...
* 增加kernfs
* kernfs文档
2023-09-19 19:46:59 +08:00
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
68312d3c68
修正造成 http server 的错误 ( #378 )
...
* 修正造成 http server 的错误
2023-09-13 00:26:41 +08:00
821bb9a2dc
增加 ListenTable 来检测端口占用 ( #291 )
...
* 增加 ListenTable 来检测端口占用
* 使用Arc封装GlobalSocketHandle
* 删除 listen 处的端口检测逻辑,延至实现端口复用时完成
* 设立两张表,分别记录TCP和UDP的端口占用
* 实现 meatadata 相关逻辑
* 实现socket关闭时,端口在表中移除
* 使用端口管理器重构端口记录表
* 修正与RawSocket相关的端口管理逻辑
* 补充测试文件
* 修正 unbind_port 在逻辑错误
* 修正格式问题
---------
Co-authored-by: longjin <longjin@RinGoTek.cn >
2023-07-28 17:51:05 +08:00
36fd013004
实现gettimeofday()系统调用和clocksource+timekeeping子模块 ( #278 )
...
- 实现gettimeofday()系统调用
- 实现clocksource+timekeeping子模块部分功能
- 实现了timespec转换成日期时间
2023-06-17 22:48:15 +08:00
ab5c8ca46d
重构系统调用模块 ( #267 )
...
* 完成系统调用模块重构
* 更新github workflow
2023-05-24 17:05:33 +08:00