信号模块代码注解

    百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
    https://my.oschina.net/weharmony
上级 3c99c512
......@@ -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)
* 各大站点搜 **「鸿蒙内核源码分析」**.欢迎转载,请注明出处.
......
......@@ -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
......
......@@ -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;
......
......@@ -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:原来对信号的处理方式。
......
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.
先完成此消息的编辑!
想要评论请 注册