内核线程学习笔记总结2
来源:互联网 发布:有没有网络兼职工作 编辑:程序博客网 时间:2024/05/21 17:00
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
MODULE_AUTHOR("T-bagwell_CU");
MODULE_LICENSE("GPL");
static DECLARE_WAIT_QUEUE_HEAD(myevent_waitqueue);
extern unsigned int myevent_id;
static int example_kernel_thread(void *unused)
{
DECLARE_WAITQUEUE(wait, current);
daemonize("create_by_T-bag");
allow_signal(SIGKILL);
add_wait_queue(&myevent_waitqueue, &wait);
while(1){
set_current_state(TASK_INTERRUPTIBLE);
schedule();
if(signal_pending(current)){
break;
}
}
set_current_state(TASK_RUNNING);
remove_wait_queue(&myevent_waitqueue, &wait);
printk(KERN_WARNING "This is in example_kernel_thread/n");
return 0;
}
static __init int init_hello_kernel_thread(void)
{
int ret;
ret=kernel_thread(example_kernel_thread, NULL,
CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD );
if(unlikely(ret<0)){
printk(KERN_WARNING "kernel_thread create failed /n");
}
else{
printk(KERN_WARNING "kernel_thread create success /n");
}
return 0;
}
static __exit void cleanup_hello_kernel_thread(void)
{
printk(KERN_WARNING "kernel_thread exit /n");
return ;
}
module_init(init_hello_kernel_thread);
module_exit(cleanup_hello_kernel_thread);
写一个Makefile来编译这个module
KERNELDIR = /usr/src/kernels/2.6.27.5-117.fc10.i686
PWD := $(shell pwd)
obj-m := kernel_thread.o
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *.ko test_chrdev Module.* module* *.mod.c
编译完成以后,可以看一下结果:
- 内核线程学习笔记总结2
- 内核线程学习笔记总结1
- 内核线程学习笔记总结3
- 内核线程学习笔记总结4
- 内核线程学习笔记总结5
- 内核线程学习笔记总结6
- 内核线程学习笔记
- Linux学习笔记之内核线程
- 【学习笔记】原子位|内核线程
- 线程学习笔记2
- java学习笔记之线程操作方法总结
- Windows核心编程学习笔记(19)--内核模式下的线程同步2
- EPROCESS 进程/线程优先级 句柄表 GDT LDT 页表 《寒江独钓》内核学习笔记(2)
- [原创]W2k Driving 学习笔记(一)内核线程及同步
- 学习笔记——JAVA线程<7>线程的总结
- linux内核学习笔记2
- linux内核学习笔记2
- 内核线程与用户线程的一点总结 《程序员的自我修养》·笔记
- C语言-Socket通信
- 如何在VC8编译libdecodeqr
- 关于ARP
- SQL创建数据库失败解决办法:(Collation '' is not valid.)
- PHP in the user agent (attacking log analysis tools?)
- 内核线程学习笔记总结2
- Winpeshl.ini
- 开源二维码QR CODE编码/解码(识别)库
- c++字符串大小写转换
- ttl详解
- win7的一个瑕疵
- sybase中几个有用的存储过程
- 【转】Tomcat中设置远程debug方法
- MySQL数据库的安装调试和VC实现