#include // 调度程序头文件,定义了任务结构task_struct、初始任务0 的数据,// 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。8 #include // 内核头文件。含有一些内核常用函数的原形定义。9 #include // 段操作头文件。定义了有关段寄存器操作的嵌入式汇编函数。1011 #include // 信号头文件。定义信号符号常量,信号结构以及信号操作函数原型。1213 volatile void do_exit(int error_code); // 前面的限定符volatile 要求编译器不要对其进行优化。14// 获取当前任务信号屏蔽位图(屏蔽码)。15 int sys_sgetmask()16 {17 return current->blocked;18 }19// 设置新的信号屏蔽位图。SIGKILL 不能被屏蔽。返回值是原信号屏蔽位图。20 int sys_ssetmask(int newmask)21 {22 int old=current->blocked;2324 current->blocked = newmask & ~(1<<(SIGKILL-1));25 return old;26 }27// 复制sigaction 数据到fs 数据段to 处。。28 static inline void save_old(char * from,char * to)调用相应功能的C函数处理程序。对信号进行识别预处理。调用do_signal()函数。将信号处理程序句柄插入到用户堆栈中。IRET内核系统调用中断处理程序系统调用int 0x80下一语句信号处理程序用户程序更多电子书教程下载请登陆http://down.zzbaike.com/ebook本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。第5 章 内核代码 linux/kernel/11329 {30 int i;3132 verify_area(to, sizeof(struct sigaction)); // 验证to 处的内存是否足够。33 for (i=0 ; i< si
linux内核学习-6信号量(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
最新推荐文章于 2022-12-01 12:36:58 发布