91511c9de9
Merge branch 'master' into feat-network-rebuild
2025-03-18 20:43:41 +08:00
LoGin
488718dc2e
feat: 实现poll系统调用实现并修复相关bug ( #1098 )
...
feat: 实现poll系统调用实现并修复相关bug
- 实现poll系统调用,增加对EPollEvent的处理逻辑
- 修复LockedPipeInode中epitems的锁管理问题
- 添加RestartBlock支持,处理系统调用重启逻辑
- 修复EventPoll中epoll_wait的超时处理逻辑
- 新增test_poll测试程序,验证poll功能
Signed-off-by: longjin <longjin@DragonOS.org>
2025-03-14 10:48:06 +08:00
c4c35ed0cc
Merge remote-tracking branch 'upstream/master' into feat-network-rebuild
2025-01-12 20:30:27 +08:00
MemoryShore
e92424df8d
fix(mm): 修复fat文件系统的PageCache同步问题 ( #1005 )
...
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2025-01-01 23:38:00 +08:00
LoGin
a08191c719
feat(fs/syscall): 实现fchdir系统调用 ( #1081 )
...
Signed-off-by: longjin <longjin@DragonOS.org>
2025-01-01 23:36:37 +08:00
LoGin
2b72148cae
feat(syscall): 实现syscall restart ( #1075 )
...
能够在系统调用返回ERESTARTSYS时,信号处理结束后,自动重启系统调用.
TODO: 实现wait等需要restart_block的系统调用的重启
Signed-off-by: longjin <longjin@DragonOS.org>
2024-12-13 00:56:20 +08:00
1a046769ee
merge main
2024-11-13 20:08:46 +08:00
linfeng
7c28051e8c
chore: update toolchain version to 2024-11-05 ( #1031 )
...
* chore: update toolchain version to 2024-11-05
* update dragon reach to e945c217b3
* update dog to 6f2c0c8f12
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-11-11 21:29:15 +08:00
codeironman
f5b2038871
ospp project (feature) add namespace overlayfs cgroup ( #949 )
...
## 开发进展:
## namespace
- pid_namespace 基本实现,基于pid_struct等数据结构实现隔离
- mnt_namespace 基本实现,挂载点的隔离通过不同的挂载树来实现
- usernamespace 作为支持性的namespace,目前受限实现全局静态
## overlayfs
- 实现若干个文件系统的叠加,在mount中传入多个路径作为多个fs的mount路径以及最后merge层的fs路径
- copy-up机制的,除最上层外其他层为只读层,满足写时拷贝,需要修改的时候copy到上层修改
- whiteout特殊文件,用于标记在下层需要被删除的文件用来掩盖需要删除的文件
## cgroups
- 目前cgroups还处于框架阶段,之后具体实现具体的内存、CPU等子系统
2024-10-31 00:50:34 +08:00
火花
55e6f0b65f
feat:添加chown系统调用 ( #962 )
...
* 添加chown系统调用
---------
Co-authored-by: sparkzky <sparkhhhhhhhhh@outlook.com>
Co-authored-by: longjin <longjin@DragonOS.org>
2024-10-26 18:13:25 +08:00
linfeng
fae6e9ade4
feat(ebpf):[WIP] add eBPF support ( #948 )
...
* feat(kprobe): Add basic kprobe support for x86_64
* feat: add ebpf support (#912 )
- 实现bpf()一部分命令,包括几种基本map,相关的helper函数
- 实现部分perf相关的数据结构
- 暂时为文件实现简单mmap
- 实现一个使用kprobe统计syscall 调用次数的ebpf程序
对eBPF支持程度(基本):
- 简单的eBPF程序(没有指定特殊的Map)
- 使用内核已经实现的Map的eBPF程序
- 可以和kprobe配合使用
- 内核Map相关的接口定义已经实现,添加新的Map较为简单
不支持的功能:
- 区分不同的eBPF程序类型(Network/Cgroup)并限定可调用的helper函数集
- 与内核其它跟踪机制配合(tracepoint)
- 其它helper和Map
todo
- [ ] 修改mmap,需要讨论,因为这个和块缓存层相关
- [x] 添加文档
- [x] 修复可能的错误
- [x] 增加rbpf版本信息
* feat: add /sys/devices/system/cpu/possible file
* feat: add /sys/devices/system/cpu/online
2024-10-25 15:59:57 +08:00
sparkzky
01c18c64b1
feat:添加symlink系统调用 ( #984 )
...
* 添加symlink系统调用
* 修改FATInode的dname的获取逻辑
* 修改fat对Dname的处理,分离dname和inode缓存的key
---------
Co-authored-by: sparkzky <sparkhhhhhhhhh@outlook.com>
Co-authored-by: longjin <longjin@DragonOS.org>
2024-10-20 20:56:11 +08:00
7cd11b4ff8
feat: remove syscall prettier printing ( #988 )
...
* 重新组织代码分布
* remove unused imports
* fix it back to old syscall printing style
* regulate naming to posix
* todo: socket close 及 port 接触占用
* fix: format check
2024-10-17 14:46:35 +08:00
LoGin
dcd345f6d3
feat: 添加SYS_MKDIRAT系统调用 ( #986 )
...
将内核原本实现的do_mkdir_at暴露出来,实现SYS_MKDIRAT
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-17 11:38:40 +08:00
63ccb53a91
merge master
2024-10-14 12:27:38 +00:00
LoGin
f9fe30be89
feat(boot): 内核启动命令行参数解析 ( #969 )
...
支持解析启动命令行参数,行为与Linux一致。具体见文档。
bbs链接:https://bbs.dragonos.org.cn/t/topic/362
issue: https://github.com/DragonOS-Community/DragonOS/issues/865
支持了三种参数:
- Arg (不带Value的参数)
- KV (正常的KV参数)
- EarlyKV (在内存管理初始化之前解析)
# TODO
- 支持在`/proc/cmdline`下面查看内核启动时的命令行参数。
- 支持回调函数,允许更加灵活的设置参数的值(目前用不到,就没写了)
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-13 23:39:55 +08:00
GnoCiYeH
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
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
LoGin
013ffb708f
feat(ida): IDA内部改为使用XArray实现 ( #934 )
...
目前可以记录哪些ID已经分配,支持了ID释放的功能.
Signed-off-by: longjin <longjin@DragonOS.org>
2024-09-25 11:20:52 +08:00
MemoryShore
cf7f801e1d
feat(mm): 简单实现fat文件系统的文件映射 ( #840 )
...
- 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
- 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
- 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
- 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
- 参考linux使用protection_map映射表进行页面标志的获取
- 添加页面回收机制
- 添加页面回收内核线程
- 缺页中断使用的锁修改为irq_save; 添加脏页回写机制
- 修复do_cow_page死锁问题
- 访问非法地址时发送信号终止进程
- 修复重复插入反向vma表的错误
- 添加test_filemap文件映射测试程序
2024-09-05 00:35:27 +08:00
LoGin
9fa0e95eee
feat: 添加gendisk抽象 ( #903 )
...
* feat: 添加gendisk抽象.
* 支持使用virtio磁盘作为根文件系统
* Update initial_kthread.rs to resolve conflict.
---------
Co-authored-by: Donkey Kane <109840258+xiaolin2004@users.noreply.github.com>
2024-09-02 23:37:55 +08:00
LoGin
dc9b4fea1b
fix: pipe 读取/写入阻塞时,无法kill进程的问题 ( #889 )
2024-08-27 13:01:11 +08:00
linfeng
4afc5b7b7b
feat: 增加tokio异步运行时支持 ( #894 )
...
* fix the EventFdFlags error
* feat: support tokio (Single thread version)
Fix deadlock issue on closing file.
Add function for PipeInode and EventFdInode.
2024-08-19 18:50:17 +08:00
MemoryShore
f4acaec4ea
修复unlink、unlinkat系统调用的路径错误 ( #892 )
2024-08-15 00:31:38 +08:00
Jomo
0648a547da
feat(cred): 初步实现Cred ( #846 )
...
* 初步实现Cred
* 添加seteuid和setegid
* 添加cred测试程序
* 修改Cred::fscmp返回结果为CredFsCmp枚举
* 完善root用户相关信息
2024-08-02 09:42:34 +08:00
LoGin
703ce5a77c
fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。 ( #870 )
...
* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。
2024-07-27 17:34:05 +08:00
LoGin
bd70d2d1f4
chore: 将工具链更新到2024-07-23 ( #864 )
...
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
linfeng
6f189d2743
feat(time): Add syscall support for utime* ( #838 )
...
* feat(vfs): Add syscall support for utime*
impl sys_utimensat
impl sys_utimes
add utimensat test
fix some warning
* fix(vfs): Verify pointer validity
* fix: remove bad cfg
2024-06-27 17:43:25 +08:00
laokengwt
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
donjuanplatinum
3d4cd853a3
feat(procfs): update procfs ( #831 )
...
为procfs增加是否是kthread的显示
增加返回进程已经占用的文件描述符数量
2024-05-28 13:18:12 +08:00
LoGin
0897bd8e75
fix(log): 修复pr #814 的问题 ( #821 )
2024-05-16 17:32:39 +08:00
曾俊
2eab6dd743
feat(log): 将内核日志统一为新的logger ( #814 )
2024-05-16 17:25:23 +08:00
LoGin
942cf26b48
fix(riscv/process): 把riscv的调度时钟节拍率与HZ同步,并且修复切换到用户态的时候忘了在内核态关中断的bug ( #780 )
2024-04-28 16:49:40 +08:00
zwb0x00
40348dd8d5
feat(fs): add sys_dup3 ( #755 )
...
* feat(fs): add sys_dup3
2024-04-23 19:35:02 +08:00
LoGin
731bc2b32d
feat(virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 ( #761 )
2024-04-23 17:19:54 +08:00
GnoCiYeH
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
Samuel Dai
1074eb34e7
feat(filesystem): 引入Umount系统调用 ( #719 )
...
* feat(filesystem): 引入Umount系统调用
* 将所有ENOSYS误用更正
* 修复了一个使同一个挂载点可以挂载2个文件系统的bug
* 统一注释,增强程序稳定性,统一接口。注意:Umount时在fatfs的路径要使用大写,此受限于当前文件系统设计。
2024-04-15 13:02:04 +08:00
Saga1718
c719ddc631
feat(net): 实现tcp backlog功能 ( #714 )
...
* feat:实现tcp的backlog功能
2024-04-14 23:51:47 +08:00
LoGin
9621ab16ef
让riscv64能正常切换进程,并运行完所有的initcall ( #721 )
2024-04-14 20:39:20 +08:00
GnoCiYeH
9365e8017b
完善pty,目前pty能够支持ssh ( #708 )
2024-04-10 19:00:12 +08:00
Jomo
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
GnoCiYeH
dfe53cf087
实现pty,附带测试程序 ( #685 )
...
* 实现pty,附带测试程序
* fmt ** clippy
* 将file层的锁粒度缩小,从而不使用no_preempt。更改pipe在sleep部分的bug
* 修复拼写错误
2024-04-05 00:21:55 +08:00
TTaq
597ecc08c2
新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用 ( #667 )
...
* 新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用
2024-03-26 18:28:26 +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
LoGin
4e4c8c41e9
添加clippy检测的自动化工作流 ( #649 )
...
* 添加clippy检测的自动化工作流
* fmt
* 1
2024-03-22 23:56:30 +08:00
LoGin
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
Chenzx
4695947e1b
实现SYS_LINK和SYS_LINKAT ( #611 )
...
* 实现do_linkat及SYS_LINK和SYS_LINKAT
* 未在riscv上测试,添加target_arch
* 将c字符串检查移动到vfs/syscall.rs,修改do_linkat()逻辑
* 修改部分注释
2024-03-22 18:27:07 +08:00
TTaq
b4eb05a17f
Statx ( #632 )
...
* 实现statx及测试的应用程序
2024-03-21 19:59:10 +08:00
Donkey Kane
1d37ca6d17
添加mount系统调用 ( #561 )
...
* Modify dadk config to switch NovaShell revision
* finish primary build of mount(2), usable now
* 使用read_from_cstr函数优化代码可读性 , 针对文件系统新增错误EUNSUPFS
* small changes
* 添加系统调用文档
* cargo fmt
* Revert "small changes"
This reverts commit e1991314ce687faa2d652479e8ef64f5bea25fa1.
* 修复用户程序参数传入错误
* Revert "small changes"
This reverts commit e1991314ce687faa2d652479e8ef64f5bea25fa1.
* 解决合并冲突,最终提交
* 将dadk_config切换为相对路径以修复依赖问题
* Update settings.json
* Delete user/apps/test-mount/LICENSE
* 换用更好的c字符串读取函数,优化系统调用函数注释,修复错误处理bug,删除无用文件,修改测试程序readme
* 修改用户程序readme
* 代码格式化,初级版本
* 初级版本,未实现文件系统管理器,未支持设备挂载
* 为文件系统添加name方法,返回文件系统名字字符串,为挂载查询服务
* mount系统调用:添加统一文件系统初始化管理器
* null
* 解除冲突
* 删除无用kdebug
2024-03-20 15:31:20 +08:00
hmt
82df0a1310
fix: mkdir输出错误信息; feat: 实现get_pathname ( #615 )
...
* fix: mkdir输出错误信息; feat: 实现get_pathname
* fix: 将处理路径的操作放入vfs而不是在syscall/mod.rs中
* 调整入参类型
---------
Co-authored-by: longjin <longjin@DragonOS.org>
2024-03-19 16:45:44 +08:00