49 Commits

Author SHA1 Message Date
login
004e86ff19
新版文件系统重构完成 (#198)
1.重构:VFS
2. 重构:ProcFS
3. 重构:DevFS
4. 重构:FAT32
5. 重构:AHCI驱动
6. 新增:RamFS
7. 新增:MountFS
8. 新增:FAT12
9. 新增:FAT16
10. 重构:设备抽象

Co-authored-by: guanjinquan <1666320330@qq.com>
Co-authored-by: DaJiYuQia <88259094+DaJiYuQia@users.noreply.github.com>
2023-03-12 22:36:11 +08:00
login
2bf5ee0e3c
修改libc的编译相关内容(#171)
1.将libc的include文件夹分为export和internal
2.将所有app都直接链接libc.a,而不是都执行一遍"搜索.o"的过程
2023-02-11 13:04:24 +08:00
login
a8b621c8d1
修正由于libc中具有crti.S和crtn.S,造成的与x86_64-elf-gcc不兼容的问题 (#144) 2023-01-08 15:47:44 +08:00
login
e9fdc57bf8
简单添加了fopen对mode参数的处理。请注意,它没有完全遵循posix,也与Linux的不一致,将来使用Rust的时候完善它。 (#141) 2023-01-07 22:36:49 +08:00
guanjinquan
2224c93ea9
完善libc,构建了OS-specific工具链,编译了基于gcc-11.3.0的DragonOS userland compiler,移植了mpfr,gmp,mpc库 (#134)
* 修改include路径

* 添加了创建libsysapi.a和/bin/sysroot/usr/include/+lib/的代码

* 修补.gitignore

* 删除多余项

* 优化脚本可读性

* 新增crt0 crti crtn

* 编译binutils所需的东西

* fflush()和fprintf()的简单实现

* 应用程序启动前,调用初始化libc的函数

* 自动创建sysroot

* 添加了stderr的初始化

* 修改了stderr的初始化

* 内核添加对stdio的简略处理

* 格式化代码

* 修正打开stdio文件描述符的问题

* bugfix: 修复fprintf忘记释放buf的问题

* 修复shell错误地把入口设置为main而不是_start的问题

* 新增__cxa_atexit  (gcc要求libc提供这个)

* 增加putchar puts

* 更新写入磁盘镜像的脚本,默认无参数时,使用legacy方式安装

* 更新编译脚本

* stdio增加eof的定义

* 新增extern cplusplus

* mpfr gmp mpc 构建脚本

* 更新libsysapi.a为libc.a

* 加上ferror fopen fclose

* 更新移植的软件的构建脚本

* 更改build_gcc_toolchain.sh中的-save参数名为-save-cache

Co-authored-by: longjin <longjin@RinGoTek.cn>
2023-01-06 21:29:23 +08:00
guanjinquan
74bde36e01
Patch porting gcc v2 (#124)
* 更改编译器的Include路径,使得include时不需要加`<libc/src/include/>`前缀

* 修改include路径

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-31 17:35:39 +08:00
guanjinquan
5ed4cd4602
Patch gcc toolchain (#111)
* 添加了GCC_cross_compile——tool_chain

* - 解决环境变量路径拼接时,多了`/`的问题
- apt安装时增加-y,不需用户确认

* 解决添加环境变量的命令有误的问题

* 修正编译错误时,还会执行下一步的问题

* new: 编译完成后清理临时文件

* 更新makefile

* 调整:把grub安装在 $HOME/opt/dragonos-grub下

* new: 新增dockerfile

* 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip)

* 修改为基于debian bullseye构建

* 取消指定版本

* 修复MBR磁盘镜像未设置启动标志的bug

* 取消在docker中安装grub

* 安装grub的过程改到客户机上进行

* bootstrap.sh 添加--no-docker

* 使用新版的docker编译镜像

* 修补, 添加了一些关于gcc的check

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-22 21:09:12 +08:00
login
c588d6f77f
Patch add abort func (#120)
* 对于除了sigkill以外的信号,也加入队列

* bugfix:libc中,注册信号处理函数时,总是注册sigkill的问题

* 增加getpid系统调用

* 增加了raise、kill、abort
2022-12-19 15:03:44 +08:00
login
6efd474033
允许用户自定义信号处理函数 (#112)
* new: 用户注册信号处理函数,能够进入自定义的handler

* 修复忘了传信号的数字给用户的处理函数的bug

* new:sigreturn

* 删除注释
2022-12-17 16:27:50 +08:00
wwc-15172310230
237e95c6dd
调整user下libs的libc目录结构 (#103)
* 调整user下libs的libc目录结构

* 修正.gitignore文件的问题

* 修复无法编译的问题

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-11 22:22:10 +08:00
login
66f67c6a95
signal的发送(暂时父子进程之间共享信号及相应的结构体) (#89)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题

* new: 初步实现signal的数据结构

* new:signal相关数据结构

* fix: 解决bindings.rs报一堆警告的问题

* new: rust下的kdebug kinfo kwarn kBUG kerror宏

* 移动asm.h和cmpxchg.h

* new: signal的发送(暂时只支持父子进程共享信号及处理函数)
2022-11-23 11:38:20 +08:00
login
0bfe94f46b
new: rust下的kdebug kinfo kwarn kBUG kerror宏 (#86)
* new: rust下的kdebug kinfo kwarn kBUG kerror宏
2022-11-18 16:32:15 +08:00
login
31b7b49d8c
new: FAT32删除文件的功能 (#73)
* new: 将sys_rmdir更改为sys_unlink,.且完成删除文件操作的vfs部分

* new: fat32删除文件

*bugfix: 解决创建文件时的bug
2022-11-02 15:42:44 +08:00
login
8a080f3cce
new: 将sys_rmdir更改为sys_unlink,.且完成删除文件操作的vfs部分 (#69) 2022-10-25 23:02:35 +08:00
login
d328bfce6b
bugfix: 修正潜在的错误路径 (#64)
* bugfix: 修正潜在的错误路径

* 修正格式
2022-10-22 20:17:40 +08:00
longjin
fbe1e23e97 将makefile中的gcc字样用$(CC)环境变量代替 2022-10-16 11:08:32 +08:00
DaJiYuQia
e62bbf13e5
swab函数 (#53)
* swab函数

Signed-off-by: Yuqia <15287042733@163.com>

* 修正格式

Signed-off-by: Yuqia <15287042733@163.com>
Co-authored-by: fslongjin <longjin@RinGoTek.cn>
2022-10-07 15:45:49 +08:00
fslongjin
f5ae770ffc 用户态memcpy 2022-10-06 21:29:12 +08:00
fslongjin
9f2b080cda new: devfs删除文件夹 2022-09-12 23:56:31 +08:00
zzy666-hw
554b73ec99
add ipc pipe (#28) 2022-08-20 21:47:41 +08:00
wang904
d0d79c828d fix keyboard 2022-08-18 10:35:52 +08:00
fslongjin
fb51b0dd6f new: mstat()函数,查询内存信息 2022-08-06 23:31:25 +08:00
fslongjin
b2614801ac 更新Makefile,提升编译速度 2022-08-01 16:03:17 +08:00
fslongjin
da4867d662 🆕 clock()函数 2022-07-12 13:20:01 +08:00
fslongjin
7670031b11 bugfix: 修复浮点数打印错误的bug 2022-07-12 13:19:51 +08:00
fslongjin
676260c537 🆕 usleep()、nanosleep() 2022-07-12 12:01:51 +08:00
fslongjin
8c8352e748 🆕 fat32_create 2022-07-07 00:55:33 +08:00
fslongjin
0d6957294d 消除了libc的_start方法的编译警告 2022-06-25 20:57:49 +08:00
fslongjin
d775af70c7 🆕 fat32文件系统的mkdir 2022-06-25 20:55:59 +08:00
fslongjin
d7d449bddd 🆕 libc新增_start函数,实现main的返回值的捕获 2022-06-25 00:51:29 +08:00
fslongjin
d64ddfa0b6 debuging... 2022-06-02 14:20:53 +08:00
fslongjin
e2a59dbd43 🆕 exec (存在bug 2022-05-31 21:55:06 +08:00
fslongjin
85707bd8cc 🆕 cat命令 2022-05-30 17:39:45 +08:00
fslongjin
9ee6d33318 🆕 完成了ls的功能 2022-05-29 14:36:46 +08:00
fslongjin
a4157bb4a7 部分完成了readdir 2022-05-27 13:41:10 +08:00
fslongjin
37669ebf87 🆕 cd命令 2022-05-25 22:50:32 +08:00
fslongjin
8bd7b64a0b 🆕 增加重启命令reboot 2022-05-25 14:38:15 +08:00
fslongjin
8246c1c9e2 🆕 pwd命令 2022-05-24 16:37:28 +08:00
fslongjin
e6108602df 🆕 用户态解析键盘扫描码 2022-05-21 21:49:56 +08:00
fslongjin
46ee327742 🐛 修复malloc扩容时int32溢出的bug,以及扩容堆内存后,由于未执行合并从而导致产生大量碎片的bug 2022-05-21 00:47:30 +08:00
fslongjin
1cc3db5e88 🆕 回收堆内存给操作系统 2022-05-11 20:42:53 +08:00
fslongjin
c120a0e992 完成了malloc和free 2022-05-11 11:33:29 +08:00
fslongjin
8b8583cad9 🔧 内存分配的时候将指针的空间当做可用空间一并分配出去 2022-05-11 00:11:43 +08:00
fslongjin
edc62ea818 🔧 将malloc链表结点元素调整为2个 2022-05-10 23:51:59 +08:00
fslongjin
a7596e6ff1 🐛 修复了malloc的bug 2022-05-07 14:14:11 +08:00
fslongjin
37da6ef19e 🐛 修复printf的bug 2022-05-07 13:54:28 +08:00
fslongjin
fd0147e04c 🆕 malloc 、printf 2022-05-07 13:46:23 +08:00
fslongjin
c9784b457c 🆕 fork vfork 2022-05-06 11:44:38 +08:00
fslongjin
0aec6827ee 🆕 运行文件系统中的二进制程序 2022-05-06 00:25:32 +08:00