74 Commits

Author SHA1 Message Date
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
LoGin
7ae6621cfa
feat: 完善sys_reboot (#1084)
* fix(process): 修复copy_process的一些bug & 支持默认init进程传参

- 修复`copy_process`函数对标志位处理不正确的bug
- init进程搜索列表中,支持为默认init程序传入参数

Signed-off-by: longjin <longjin@DragonOS.org>

* feat: 完善sys_reboot

- 校验magic number
- 支持多个cmd (具体内容未实现)

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-02-06 22:55:45 +08:00
LoGin
bcf0382763
fix: 修复wait4系统调用部分语义与Linux不一致的问题 (#1080)
* fix: 修复wait4系统调用部分语义与Linux不一致的问题

解决wait不住/wait之后卡死的bug

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-01-01 14:25:46 +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
linfeng
72423f90bb
feat(ebpf): support Aya framework. (#1070)
* feat(ebpf): support Aya framework.

1. fix the rbpf bug
2. use new Aya template
3. add kprobe related device files and attributes to sysfs

---
Signed-off-by: chenlinfeng <chenlinfeng25@outlook.com>
2024-12-07 16:41:37 +08:00
火花
6e85059fbc
feat:添加sigprocmask系统调用 (#1046)
* 添加sigprocmask系统调用

---------

Signed-off-by: sparkzky <sparkhhhhhhhhh@outlook.com>
Co-authored-by: longjin <longjin@DragonOS.org>
2024-12-07 16:36:55 +08:00
LoGin
ffa8e88c60
fix:命名管道读行为不符合posix规范问题 (#1066)
fix(pipe): 增强FIFO管道的读写逻辑,解决问题一:非阻塞模式下的无写端错误返回
feat(test_fifo_write): 增强FIFO写入测试,添加信号处理、非阻塞模式支持和多场景测试

---------
Signed-off-by: xiaolin2004 <1553367438@qq.com>
Co-authored-by: xiaolin2004 <1553367438@qq.com>
2024-11-28 23:57:19 +08:00
LoGin
e8b1db320d
chore: Bump dadk to 0.2.0 (#1058)
# 概述

把dadk版本升级到0.2.0

dadk 0.2.0能够提升编译速度,并且支持使用dadk对内核进行profiling。
新版dadk的文档: https://docs.dragonos.org.cn/p/dadk/

# 注意

这是一个breaking change,升级后,将无法使用dadk 0.2.0去编译旧的项目。如有需要,请手动降级到dadk 0.1.11:
```shell
cargo install --git  https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK --tag v0.1.11
```

# 更改列表

* chore: 把管理用户程序编译的dadk配置文件改为新格式的

* feat: 使用新版dadk来创建\挂载\卸载磁盘镜像

* chore: bump dadk min version to 0.2.0

* chore: fix ci

* chore: 更新github ci镜像到1.7

* doc: 添加文档

---------
Co-Authored-by: xuzihao <xuzihao@dragonos.org>
Signed-off-by: longjin <longjin@DragonOS.org>
2024-11-27 01:30:31 +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
MemoryShore
2e7e4cecb0
Update NovaShell to cb835e03e4 (#1022) 2024-10-31 13:48:23 +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
MemoryShore
b9966addf1
update novashell to 7bb802ad1e (#1006) 2024-10-22 22:32:50 +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
MemoryShore
a8753f8fff
feat(tty): 实现发送SIGINT终止信号 (#952)
* 实现SIGINT终止信号传递

* 添加test_sigint测试程序
2024-10-09 19:02:14 +08:00
LoGin
047dbfd44b
fix(kbd): 修复键盘命令解析器生成的字节码与Linux不一致的问题 (#946)
Signed-off-by: longjin <longjin@dragonos.org>
2024-09-29 03:15:21 +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
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
Jomo
0648a547da
feat(cred): 初步实现Cred (#846)
* 初步实现Cred

* 添加seteuid和setegid

* 添加cred测试程序

* 修改Cred::fscmp返回结果为CredFsCmp枚举

* 完善root用户相关信息
2024-08-02 09:42:34 +08:00
linfeng
86ee1395de
feat(fs): add eventfd syscall support (#858)
* feat(fs): add eventfd syscall support
2024-07-25 15:08:17 +08:00
SMALLC
1ea2daad81
feat(driver/net): 实现Loopback网卡接口 (#845)
* 初步实现loopback设备
2024-07-22 16:22:45 +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
Jomo
03746da3d9
feat(user): user management tool (#825)
* 用户管理工具

* 重构

* 改为多个bin文件入口

* bin文件的usage显示自身程序名而非固定程序名
2024-06-05 13:00:19 +08:00
LoGin
352ee04918
fix: disable mm debug log to prevent system lockup due to thingbuf issue (#808) 2024-05-11 18:02:13 +08:00
LoGin
182b778a3c
chore: 适配dadk 0.1.11 (#777)
* chore: 适配dadk 0.1.11
2024-04-28 13:39:51 +08:00
zwb0x00
40348dd8d5
feat(fs): add sys_dup3 (#755)
* feat(fs): add sys_dup3
2024-04-23 19:35:02 +08:00
MemoryShore
a17651b14b
feat(mm): 实现缺页中断处理,支持页面延迟分配和写时拷贝,以及用户栈自动拓展 (#715)
* 实现缺页中断处理

* 完善页表拷贝逻辑

* 优化代码结构

* 完善缺页异常信息

* 修改大页映射逻辑

* 修正大页映射错误

* 添加缺页中断支持标志

* 实现用户栈自动拓展功能
2024-04-22 15:10:47 +08:00
SMALLC
fbd63a301c
feat: alarm系统调用实现 (#710)
* alarm系统调用实现
2024-04-16 21:34:36 +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
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
曾俊
eb49bb993a
BlockCache-read cache支持 (#521)
支持block cache的读缓存
2024-04-07 14:03:51 +08:00
hmt
06560afa2a
Patch feat robust futex (#682)
* feat: 实现robust lock机制

* 前面更改vscode,修改回来

* 修改dadk的路径

* 提交.gitnore和.cargo,删除LICENSE,修改README

* 修改一个warn

* 删除.rustc_info.json

* 删除target文件夹

* 恢复DragonOS的LICENSE,删除Cargo.lock

* 将校验用户空间地址的代码写入函数内;将部分match分支用ok_or代替

* 修改wakeup函数获取running queue时unwrap一个None值发生panic

* 测试程序使用syscalls库进行系统调用
2024-04-06 22:26:34 +08:00
GnoCiYeH
dfe53cf087
实现pty,附带测试程序 (#685)
* 实现pty,附带测试程序

* fmt ** clippy

* 将file层的锁粒度缩小,从而不使用no_preempt。更改pipe在sleep部分的bug

* 修复拼写错误
2024-04-05 00:21:55 +08:00
Donkey Kane
b8ed38251d
修复jiffy时钟过快问题,启用gettimeofday测试,修改mount测试 (#680)
1. 把clock tick rate与hpet频率关联起来
2. 修复墙上时间同步错误的问题
3. 启用时间watch dog.
4. 修复时间流逝速度异常

---------

Co-authored-by: longjin <longjin@DragonOS.org>
2024-04-05 00:06:26 +08:00
TTaq
597ecc08c2
新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用 (#667)
* 新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用
2024-03-26 18:28:26 +08:00
Val213
7c958c9ef0
移植dns查询工具dog的--tcp功能 (#652)
* add dog, modify user/Makefile and user.sysconfig

* add dog, modify user/Makefile and user.sysconfig

* fix tty unicode

* 修正无法正确编译dog的问题

---------

Co-authored-by: val213 <val213666@gmail.com>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: longjin <longjin@DragonOS.org>
2024-03-25 13:04:53 +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
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
LoGin
1cd9bb43f0
添加core utils到系统 (#624) 2024-03-19 21:31:02 +08:00
MemoryShore
af59116e1b
Update NovaShell version to c6454d3220 (#593) 2024-03-12 17:52:14 +08:00
GnoCiYeH
4374bd1d11
修复get_random一个问题,添加Held配置文件 (#583) 2024-03-11 19:40:52 +08:00
LoGin
f4a82aa55c
Update Novashell version to 473d5c403c (#574)
- fix: 用户输入不正确的;以及单独输入单引号和双引号造成系统重启
- 修改命令解析算法
- fix: 输出多余的光标和命令信息
2024-03-10 20:42:41 +08:00
裕依
bc6f0a967c
移除relibc和old libc以及旧的shell (#529)
移除relibc和old libc以及旧的shell
2024-03-04 14:20:01 +08:00
MContour
cf45dede2e
让 DragonOS 仓库管理 service 文件 (#548)
* feat: create `user/services` folder to store service files
2024-03-03 17:20:11 +08:00
Donkey Kane
44d051e586
Modify dadk config to switch NovaShell revision (#550) 2024-03-03 15:22:45 +08:00
GnoCiYeH
52da9a5937
完成与Linux兼容的Ntty (#517)
* 已经完成的功能:
- 写:printf能够正常在tty输出
- 读:与键盘驱动接上
- 信号: 能够正常通过ctrl向前台进程发送信号

* 支持目前的shell,改动printk使其与新版tty兼容。

* 删除原有tty文件夹,并更改新tty文件名

* 添加clear清屏程序

* 实现tty部分ioctl,更改部分问题
2024-02-26 15:27:19 +08:00
裕依
0e2c2e8b48
修正systemerror号 (#527)
修正systemerror号
2024-02-19 19:31:17 +08:00