Linux内核线程中信号处理
来源:互联网 发布:淘宝开店要交押金吗 编辑:程序博客网 时间:2024/05/22 15:42
创建线程
允许信号
屏蔽指定信号
信号处理
#include <linux/module.h>#include <linux/sched.h>#include <linux/kthread.h>#include <linux/err.h>#include <linux/delay.h>static struct task_struct *test_thread;static int test_thread_func(void *arg){sigset_t hupmask;siginitset(&hupmask, sigmask(SIGHUP));allow_signal(SIGKILL);allow_signal(SIGSTOP);allow_signal(SIGCONT);allow_signal(SIGHUP);set_user_nice(current, 10);while (!kthread_should_stop()) {signed long timeout = 10 * HZ;sigprocmask(SIG_UNBLOCK, &hupmask, NULL);printk("1 jiffies: %ld\n", jiffies);ssleep(5);printk("2 jiffies: %ld\n", jiffies);//while (timeout) {timeout = schedule_timeout_interruptible(timeout);//}while (signal_pending(current)) {siginfo_t info;unsigned long signr;signr = dequeue_signal_lock(current, ¤t->blocked, &info);printk("%s, signr: %ld, %ld\n", __func__, signr, jiffies);switch(signr) {case SIGSTOP:printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);set_current_state(TASK_STOPPED);schedule();break;case SIGKILL:printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);goto die;case SIGHUP:printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);break;case SIGCONT:printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);break;default:printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);}}sigprocmask(SIG_BLOCK, &hupmask, NULL);printk("3 jiffies: %ld\n", jiffies);ssleep(5);printk("4 jiffies: %ld\n", jiffies);}die:return 0;}static int __init test_init(void){test_thread = kthread_run(test_thread_func, NULL, "test_thread");if (IS_ERR(test_thread)) {printk("Failed to create the test thread\n");test_thread = NULL;}return 0;}static void __exit test_exit(void){if (test_thread) {kthread_stop(test_thread);test_thread = NULL;}}module_init(test_init);module_exit(test_exit);MODULE_AUTHOR("tony");MODULE_DESCRIPTION("test");MODULE_LICENSE("GPL");MODULE_ALIAS("test");
0 0
- Linux内核线程中信号处理
- Linux内核移植 part4:内核线程对信号的处理
- linux内核信号处理
- linux内核线程对信号的处理过程
- linux内核线程对信号的处理过程
- linux内核线程对信号的处理过程
- linux内核线程对信号的处理过程
- Linux 线程信号处理
- linux内核中的信号机制--信号处理
- Linux内核信号处理机制
- linux内核中异步通知机制--信号处理机制
- linux内核中异步通信机制--信号处理机制
- linux内核中异步通信机制--信号处理机制
- Linux中信号处理
- Linux中线程与信号
- linux-0.11内核 信号处理小结
- Linux内核信号处理机制介绍
- Linux内核信号处理机制介绍
- Android让一个Service成为系统Service
- Python基础语法学习笔记
- java获取系统信息
- Reader和InputSteam区别
- Unity3D中的Coroutine 与 Yield
- Linux内核线程中信号处理
- 基于Crypto++/Cryptopp的rsa密钥生成,rsa加密、解密,rsa签名、验签
- 支付宝登录界面size_class
- 分析一下定价策略的影响因素
- hdu 2059龟兔赛跑(DP)
- mysql 常用类型
- IOS导航栏的使用方法
- Linux软连接和硬链接
- 超过长度自动加省略号