Commit Graph

69 Commits

Author SHA1 Message Date
1a046769ee merge main 2024-11-13 20:08:46 +08:00
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
2e7e4cecb0 Update NovaShell to cb835e03e4 (#1022) 2024-10-31 13:48:23 +08:00
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
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
b9966addf1 update novashell to 7bb802ad1e (#1006) 2024-10-22 22:32:50 +08:00
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
886504ff9b remove uevent test 2024-10-16 12:33:40 +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
a8753f8fff feat(tty): 实现发送SIGINT终止信号 (#952)
* 实现SIGINT终止信号传递

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

* 添加seteuid和setegid

* 添加cred测试程序

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

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

* 重构

* 改为多个bin文件入口

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

* 完善页表拷贝逻辑

* 优化代码结构

* 完善缺页异常信息

* 修改大页映射逻辑

* 修正大页映射错误

* 添加缺页中断支持标志

* 实现用户栈自动拓展功能
2024-04-22 15:10:47 +08:00
fbd63a301c feat: alarm系统调用实现 (#710)
* alarm系统调用实现
2024-04-16 21:34:36 +08:00
1074eb34e7 feat(filesystem): 引入Umount系统调用 (#719)
* feat(filesystem): 引入Umount系统调用

* 将所有ENOSYS误用更正

* 修复了一个使同一个挂载点可以挂载2个文件系统的bug

* 统一注释,增强程序稳定性,统一接口。注意:Umount时在fatfs的路径要使用大写,此受限于当前文件系统设计。
2024-04-15 13:02:04 +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
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
dfe53cf087 实现pty,附带测试程序 (#685)
* 实现pty,附带测试程序

* fmt ** clippy

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

* 修复拼写错误
2024-04-05 00:21:55 +08:00
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
597ecc08c2 新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用 (#667)
* 新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用
2024-03-26 18:28:26 +08:00
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
b4eb05a17f Statx (#632)
* 实现statx及测试的应用程序
2024-03-21 19:59:10 +08:00
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 e1991314ce.

* 修复用户程序参数传入错误

* Revert "small changes"

This reverts commit e1991314ce.

* 解决合并冲突,最终提交

* 将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
1cd9bb43f0 添加core utils到系统 (#624) 2024-03-19 21:31:02 +08:00
af59116e1b Update NovaShell version to c6454d3220 (#593) 2024-03-12 17:52:14 +08:00
4374bd1d11 修复get_random一个问题,添加Held配置文件 (#583) 2024-03-11 19:40:52 +08:00
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
cf45dede2e 让 DragonOS 仓库管理 service 文件 (#548)
* feat: create `user/services` folder to store service files
2024-03-03 17:20:11 +08:00
44d051e586 Modify dadk config to switch NovaShell revision (#550) 2024-03-03 15:22:45 +08:00
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
ca318c376b update dragonreach to 3d99c3a9d9 (#519) 2024-02-17 01:51:10 +08:00
472f0b3931 update dragonreach to 40362c48d6 (#516) 2024-02-13 12:14:12 +08:00
4ad52e57e6 添加socketpair (#505)
* 添加对socketpair系统调用的处理

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
2024-02-07 18:06:15 +08:00
8d72b68da9 实现内核日志系统 (#489)
* 实现写日志和读取日志,并且能够在用户态下执行dmesg命令查看日志

* 通过klogctl实现dmesg

* 改用ConstGenericRingBuffer作内核缓冲区

* 更改缓冲区容量

* 将能够输出到控制台的日志级别改为日志级别枚举类,使用SpinLock控制KMSG,使用枚举类定义SYSLOG_ACTION,将do_syslog系统调用接口放在syscall.rs

* fix warning

* 完善do_syslog注释

* 将KMSG接入kinfo、kdebug等

* fix warning

* 修复显示的秒数不正确,·以及无法通过CI的问题
2024-01-24 16:13:15 +08:00
cfd642e283 更新nova shell的revision为64ad1b282a (#477)
- 修复tab补全时始终基于根目录的问题
- 修复touch命令提示已存在文件的bug
2023-12-27 15:07:01 +08:00