Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
鸿蒙内核源码分析
注释鸿蒙内核源码
提交
1cb5f01b
注释鸿蒙内核源码
项目概览
鸿蒙内核源码分析
/
注释鸿蒙内核源码
通知
270
Star
29
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
106
Wiki
分析
仓库
DevOps
项目成员
Pages
注释鸿蒙内核源码
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
106
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1cb5f01b
编写于
4月 14, 2021
作者:
鸿蒙内核源码分析
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
信号模块代码注解
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
https://my.oschina.net/weharmony
上级
3c99c512
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
33 addition
and
16 deletion
+33
-16
README.md
README.md
+10
-10
kernel/base/include/los_process_pri.h
kernel/base/include/los_process_pri.h
+1
-1
kernel/base/include/los_signal.h
kernel/base/include/los_signal.h
+19
-2
kernel/base/ipc/los_signal.c
kernel/base/ipc/los_signal.c
+2
-2
zzz/git/push.sh
zzz/git/push.sh
+1
-1
未找到文件。
README.md
浏览文件 @
1cb5f01b
...
...
@@ -62,7 +62,7 @@
### **鸿蒙源码百篇博客 往期回顾**
*
[
v47.xx (进程回收篇) |
老父亲如何向老祖宗临终托孤 ?
](
https://my.oschina.net/weharmony/blog/5017716
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/115672752) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/47_进程回收篇.html)[>]()**
*
[
v47.xx (进程回收篇) |
进程在临终前如何向老祖宗托孤
](
https://my.oschina.net/weharmony/blog/5017716
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/115672752) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/47_进程回收篇.html)[>]()**
*
[
v46.xx (特殊进程篇) | 龙生龙,凤生凤,老鼠生儿会打洞
](
https://my.oschina.net/weharmony/blog/5014444
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/115556505) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/46_特殊进程篇.html)[>]()**
...
...
@@ -92,7 +92,7 @@
*
[
v33.xx (消息队列篇) | 进程间如何异步解耦传递大数据 ?
](
https://my.oschina.net/weharmony/blog/4952961
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/113815355) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/33_消息队列篇.html)[>]()**
*
[
v32.xx (
CPU篇) | 内核是如何描述CPU
的?
](
https://my.oschina.net/weharmony/blog/4952034
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/113782749) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/32_CPU篇.html)[>]()**
*
[
v32.xx (
cpu篇) | 内核是如何描述cpu
的?
](
https://my.oschina.net/weharmony/blog/4952034
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/113782749) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/32_CPU篇.html)[>]()**
*
[
v31.xx (定时器篇) | 内核最高优先级任务是谁?
](
https://my.oschina.net/weharmony/blog/4951625
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/113774260) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/31_定时器机制篇.html)[>]()**
...
...
@@ -112,15 +112,15 @@
*
[
v23.xx (汇编传参篇) | 汇编如何传递复杂的参数?
](
https://my.oschina.net/u/3751245/blog/4927892
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/113265990) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/23_汇编传参篇.html)[>]()**
*
[
v22.xx (汇编基础篇) |
CPU
在哪里打卡上班?
](
https://my.oschina.net/u/3751245/blog/4920361
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112986628) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/22_汇编基础篇.html)[>]()**
*
[
v22.xx (汇编基础篇) |
cpu
在哪里打卡上班?
](
https://my.oschina.net/u/3751245/blog/4920361
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112986628) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/22_汇编基础篇.html)[>]()**
*
[
v21.xx (线程概念篇) | 是谁在不断的折腾
CPU
?
](
https://my.oschina.net/u/3751245/blog/4915543
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112870193) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/21_线程概念篇.html)[>]()**
*
[
v21.xx (线程概念篇) | 是谁在不断的折腾
cpu
?
](
https://my.oschina.net/u/3751245/blog/4915543
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112870193) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/21_线程概念篇.html)[>]()**
*
[
v20.xx (用栈方式篇) | 栈是构建底层运行的基础
](
https://my.oschina.net/u/3751245/blog/4893388
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112534331) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/20_用栈方式篇.html)[>]()**
*
[
v19.xx (位图管理篇) | 为何进程和线程优先级都是32个?
](
https://my.oschina.net/u/3751245/blog/4888467
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/112394982) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/19_位图管理篇.html)[>]()**
*
[
v18.xx (源码结构篇) |
内核500问你能答对多少?
](
https://my.oschina.net/u/3751245/blog/4869137
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/111938348) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/18_源码结构篇.html)[>]()**
*
[
v18.xx (源码结构篇) |
梳理内核源文件的作用和含义
](
https://my.oschina.net/u/3751245/blog/4869137
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/111938348) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/18_源码结构篇.html)[>]()**
*
[
v17.xx (物理内存篇) | 这样记伙伴算法永远不会忘
](
https://my.oschina.net/u/3751245/blog/4842408
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/111765600) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/17_物理内存篇.html)[>]()**
...
...
@@ -138,19 +138,19 @@
*
[
v10.xx (内存主奴篇) | 紫禁城的主子和奴才如何相处?
](
https://my.oschina.net/u/3751245/blog/4646802
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108723672) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/10_内存主奴篇.html)[>]()**
*
[
v09.xx (调度故事篇) | 用故事说内核调度
](
https://my.oschina.net/u/3751245/blog/4634668
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108745174) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/09_调度故事篇.html)[>]()**
*
[
v09.xx (调度故事篇) | 用故事说内核调度
过程
](
https://my.oschina.net/u/3751245/blog/4634668
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108745174) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/09_调度故事篇.html)[>]()**
*
[
v08.xx (总目录) | 百万汉字注解 百篇博客分析
](
https://my.oschina.net/weharmony
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/08_总目录.html)[>]()**
*
[
v07.xx (调度机制篇) | 任务是如何被调度执行的?
](
https://my.oschina.net/u/3751245/blog/4623040
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108705968) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/07_调度机制篇.html)[>]()**
*
[
v06.xx (调度队列篇) |
就绪队列对调度的作用
](
https://my.oschina.net/u/3751245/blog/4606916
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108626671) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/06_调度队列篇.html)[>]()**
*
[
v06.xx (调度队列篇) |
内核有多少个调度队列?
](
https://my.oschina.net/u/3751245/blog/4606916
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108626671) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/06_调度队列篇.html)[>]()**
*
[
v05.xx (任务管理篇) |
谁在让CPU忙忙碌碌
?
](
https://my.oschina.net/u/3751245/blog/4603919
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108661248) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/05_任务管理篇.html)[>]()**
*
[
v05.xx (任务管理篇) |
任务池是如何管理的
?
](
https://my.oschina.net/u/3751245/blog/4603919
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108661248) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/05_任务管理篇.html)[>]()**
*
[
v04.xx (任务调度篇) | 任务是内核调度的单元
](
https://my.oschina.net/weharmony/blog/4595539
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108621428) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/04_任务调度篇.html)[>]()**
*
[
v03.xx (时钟任务篇) |
触发调度最大的
动力来自哪里?
](
https://my.oschina.net/u/3751245/blog/4574493
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108603468) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/03_时钟任务篇.html)[>]()**
*
[
v03.xx (时钟任务篇) |
调度最大的源
动力来自哪里?
](
https://my.oschina.net/u/3751245/blog/4574493
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108603468) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/03_时钟任务篇.html)[>]()**
*
[
v02.xx (进程管理篇) | 进程是内核资源管理单元
](
https://my.oschina.net/u/3751245/blog/4574429
)
**[<]()[ csdn](https://blog.csdn.net/kuangyufei/article/details/108595941) [ | 51cto ](https://harmonyos.51cto.com/column/34)[ | harmony ](https://weharmony.gitee.io/02_进程管理篇.html)[>]()**
...
...
@@ -195,7 +195,7 @@
### 喜欢请「点赞+关注+收藏」
*
[
关注「鸿蒙内核源码分析」公众号
](
https://gitee.com/weharmony/docs/raw/master/pic/other/so1so.png
)
*
[
![鸿蒙内核源码分析
](
https://gitee.com/weharmony/docs/raw/master/pic/other/so1so.png
)
](https://gitee.com/weharmony/docs/raw/master/pic/other/so1so.png)
*
各大站点搜
**「鸿蒙内核源码分析」**
.欢迎转载,请注明出处.
...
...
kernel/base/include/los_process_pri.h
浏览文件 @
1cb5f01b
...
...
@@ -107,7 +107,7 @@ typedef struct ProcessCB {
UINT32
timerCpu
;
/**< CPU core number of this task is delayed or pended */
//统计各线程被延期或阻塞的时间
#endif
UINTPTR
sigHandler
;
/**< signal handler */
//信号处理函数,处理如 SIGSYS 等信号
sigset_t
sigShare
;
/**< signal share bit */
//信号共享位
sigset_t
sigShare
;
/**< signal share bit */
//信号共享位
sigset_t是个64位的变量,对应64种信号
#if (LOSCFG_KERNEL_LITEIPC == YES)
ProcIpcInfo
ipcInfo
;
/**< memory pool for lite ipc */
//用于进程间通讯的虚拟设备文件系统,设备装载点为 /dev/lite_ipc
#endif
...
...
kernel/base/include/los_signal.h
浏览文件 @
1cb5f01b
...
...
@@ -164,6 +164,23 @@ typedef struct {
unsigned
long
sig
[
MAX_SIG_ARRAY_IN_MUSL
/
sizeof
(
unsigned
long
)];
}
sigset_t_l
;
/***************************************************
struct sigaction {
union {
void (*sa_handler)(int); //信号处理函数——普通版
void (*sa_sigaction)(int, siginfo_t *, void *);//信号处理函数——高级版
} __sa_handler;
sigset_t sa_mask;//指定信号处理程序执行过程中需要阻塞的信号;
int sa_flags; //标示位
// SA_RESTART:使被信号打断的syscall重新发起。
// SA_NOCLDSTOP:使父进程在它的子进程暂停或继续运行时不会收到 SIGCHLD 信号。
// SA_NOCLDWAIT:使父进程在它的子进程退出时不会收到SIGCHLD信号,这时子进程如果退出也不会成为僵 尸进程。
// SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。
// SA_RESETHAND:信号处理之后重新设置为默认的处理方式。
// SA_SIGINFO:使用sa_sigaction成员而不是sa_handler作为信号处理函数。
void (*sa_restorer)(void);
};
****************************************************/
typedef
struct
sigaction
sigaction_t
;
struct
sigactq
{
...
...
@@ -218,8 +235,8 @@ typedef struct {//信号控制块(描述符)
sigset_t
sigprocmask
;
/* Signals that are blocked */
//进程屏蔽了哪些信号
sq_queue_t
sigactionq
;
//信号捕捉队列
LOS_DL_LIST
waitList
;
//等待链表,上面挂的是等待信号到来的任务, 请查找 OsTaskWait(&sigcb->waitList, timeout, TRUE) 理解
sigset_t
sigwaitmask
;
/* Waiting for pending signals */
//任务在等待
某某信号的掩码
siginfo_t
sigunbinfo
;
/* Signal info when task unblocked */
//任务解
除阻止
时的信号信息
sigset_t
sigwaitmask
;
/* Waiting for pending signals */
//任务在等待
阻塞信号
siginfo_t
sigunbinfo
;
/* Signal info when task unblocked */
//任务解
锁
时的信号信息
sig_switch_context
context
;
//信号切换上下文, 用于保存切换现场, 比如发生系统调用时的返回,涉及同一个任务的两个栈进行切换
}
sig_cb
;
...
...
kernel/base/ipc/los_signal.c
浏览文件 @
1cb5f01b
...
...
@@ -513,7 +513,7 @@ int OsPause(void)
oldSigprocmask
=
spcb
->
sig
.
sigprocmask
;
return
OsSigSuspend
(
&
oldSigprocmask
);
}
//用set代替进程的原有掩码,并暂停进程执行,直到收到信号再恢复原有掩码并继续执行进程。
//用
参数
set代替进程的原有掩码,并暂停进程执行,直到收到信号再恢复原有掩码并继续执行进程。
int
OsSigSuspend
(
const
sigset_t
*
set
)
{
unsigned
int
intSave
;
...
...
@@ -545,7 +545,7 @@ int OsSigSuspend(const sigset_t *set)
return
-
EINTR
;
}
/**************************************************
安装信号
,函数用于改变进程接收到特定信号后的行为。
信号安装
,函数用于改变进程接收到特定信号后的行为。
sig:信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号(为这两个信号定义自己的处理函数,将导致信号安装错误)。
act:设置对signal信号的新处理方式。
oldact:原来对信号的处理方式。
...
...
zzz/git/push.sh
浏览文件 @
1cb5f01b
git add
-A
git commit
-m
'
进程回收过程
注解
git commit
-m
'
信号模块代码
注解
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
https://my.oschina.net/weharmony
'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录