Browse Source

Merge branch 'master' into usb

fslongjin 2 years ago
parent
commit
63de30bbe0
5 changed files with 38 additions and 4 deletions
  1. 2 1
      README.md
  2. 1 1
      README_EN.md
  3. 1 1
      docs/community/contact/index.rst
  4. 33 1
      docs/kernel/debug/traceback.md
  5. 1 0
      kernel/main.c

+ 2 - 1
README.md

@@ -10,6 +10,7 @@
 - 项目官网  **[DragonOS.org](https://dragonos.org)**
 - 项目文档  **[docs.DragonOS.org](https://docs.dragonos.org)**
 - 开源论坛  **[bbs.DragonOS.org](https://bbs.dragonos.org)**
+- 开发交流QQ群 **115763565**
  
 ## 开发环境
 
@@ -101,7 +102,7 @@ fslongjin
 
 ## 赞赏
 
-如果你愿意的话,点击下面的链接,请我喝杯咖啡吧~请在付款备注处留下您的github ID,我会将其贴到这个页面
+如果你愿意的话,点击下面的链接,请我喝杯咖啡吧~请在付款备注处留下您的github ID,我会将其贴到这个页面. 捐赠所得资金将用于网站、论坛社区维护以及一切与本项目所相关的用途。
 
 [捐赠 | 龙进的博客](https://longjin666.cn/?page_id=54)
 

+ 1 - 1
README_EN.md

@@ -102,7 +102,7 @@ Blog:[longjin666.cn](https://longjin666.cn)
 
 ## Reward
 
-If you like, click the link below and buy me a cup of coffee ~ please leave your GitHub ID in the payment remarks and I will post it to this page
+If you like, click the link below and buy me a cup of coffee ~ please leave your GitHub ID in the payment remarks and I will post it to this page. The donated funds will be used for website, forum community maintenance and all purposes related to the project.
 
 [The reward webpage](https://longjin666.cn/?page_id=54)
 

+ 1 - 1
docs/community/contact/index.rst

@@ -5,4 +5,4 @@
 
 工作邮箱: longjin@RinGoTek.cn
 
-[内容待完善]
+开发交流QQ群: 115763565

+ 33 - 1
docs/kernel/debug/traceback.md

@@ -1,3 +1,35 @@
 # 内核栈traceback
 
-[内容待完善]
+## 简介
+
+  内核栈traceback的功能位于`kernel/debug/traceback/`文件夹中。为内核态提供traceback的功能,打印调用栈到屏幕上。
+
+---
+
+## API
+
+### `void traceback(struct pt_regs * regs)`
+
+#### 作用
+
+  该接口定义于`kernel/debug/traceback/traceback.h`中,将会对给定内核栈进行traceback,并打印跟踪结果到屏幕上。
+
+#### 参数
+
+##### regs
+
+  要开始追踪的第一层内核栈栈帧(也就是栈的底端)
+
+---
+
+## 实现原理
+
+  当内核第一次链接之后,将会通过Makefile中的命令,运行`kernel/debug/kallsyms`程序,提取内核文件的符号表,然后生成`kernel/debug/kallsyms.S`。该文件的rodata段中存储了text段的函数的符号表。接着,该文件将被编译为`kallsyms.o`。最后,Makefile中再次调用`ld`命令进行链接,将kallsyms.o链接至内核文件。
+
+  当调用`traceback`函数时,其将遍历该符号表,找到对应的符号并输出。
+
+---
+
+## 未来发展方向
+
+- 增加写入到日志文件的功能

+ 1 - 0
kernel/main.c

@@ -103,6 +103,7 @@ void system_initialize()
 
     // =========== 重新设置initial_tss[0]的ist
     uchar *ptr = (uchar *)kmalloc(STACK_SIZE, 0) + STACK_SIZE;
+    memset(ptr, 0, STACK_SIZE); // 将ist清空
     ((struct process_control_block *)(ptr - STACK_SIZE))->cpu_id = 0;
 
     initial_tss[0].ist1 = (ul)ptr;