七度黑光--当感到一切都毫无头绪的时候,最好静下心来从基础开始.
tasklet学习实例
上一篇 / 下一篇 2008-05-07 03:42:08 / 个人分类:linux学习笔记
查看( 963 ) /
评论( 8 )
相关阅读:
- gtk2.0编成实践--最简单的例子 (helight, 2008-3-22)
- Printk的loglevel和日志记录分析 (helight, 2008-3-31)
- Linux select学习笔记 (helight, 2008-4-01)
- qt学习最简单的例子 (helight, 2008-4-08)
- 字符设备学习实例 (helight, 2008-4-10)
- ubuntu设置vim语法高亮显示和自动缩进 (helight, 2008-4-11)
- 2.6.22下基于Netfilter的网络监听程序 (helight, 2008-4-13)
- Linux下基于Netfilter的网络监听程序设计与实现 (helight, 2008-4-14)
- 日志学习--写了一个有dmesg功能的程序 (helight, 2008-4-17)
- fork vfork exec wait使用 (helight, 2008-4-26)
TAG:
-
infohunter 发布于2008-05-07 10:33:57
-
OK,that's it

-
xdd123www发布于2008-05-09 01:42:15
-
问题
以这样的初始化形式出现时,编译出现错误。
static unsigned long data = 0 ;
DECLARE_TASKLET(mytasklet,tasklethandler,data);
源程序
-------------------------------------------------------------
/*
tasklettest.c
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
MODULE_LICENSE("GPL");
static unsigned long data = 0 ;
void tasklethandler(unsigned long data)
{
printk("I am the process for tasklet.\n");
return;
}
DECLARE_TASKLET(mytasklet,tasklethandler,data); /* line 19*/
static int __init myinit(void)
{
tasklet_schedule(&mytasklet); printk("hello!\n");
return 0 ;
}
static void __exit myexit(void)
{
printk("bye!\n");
}
module_init(myinit);
module_exit(myexit);
----------------------------------------------
make: Entering directory `/usr/src/linux-headers-2.6.22-14-generic'
CC [M] /home/ganxiebin/tasklettest.o
/home/ganxiebin/tasklettest.c:19: 错误: 初始值设定元素不是常量
/home/ganxiebin/tasklettest.c:19: 错误: (在 ‘mytasklet.data’ 的初始化附近)
make[1]: *** [/home/ganxiebin/tasklettest.o] 错误 1
make: *** [_module_/home/ganxiebin] 错误 2
make: Leaving directory `/usr/src/linux-headers-2.6.22-14-generic'
原因?
还有个问题:如果在退出时候不用tasklet_kill函数,会出现什么问题吗?
-
helight 发布于2008-05-10 02:44:04
-
DECLARE_TASKLET(mytasklet,tasklethandler,data); /* line 19*/
你吧这句话放到 tasklet_schedule(&mytasklet);之前试试 ,应该在退出的时候使用tasklet_kill,他会将后半部分终止执行。
-
helight 发布于2008-05-10 03:01:37
-
DECLARE_TASKLET知是一个宏,并不是一个单独的函数,在内核源码中其实就是一句
struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
这样的话但让不应该在代码的中间的,要么在文件的程序中使用,要么和全局变量方在一起,怎么能出现在函数中间呢?
-
helight 发布于2008-05-10 03:02:49
-
上面说错了是 ,怎么能出现在函数之间
-
zhull1052 发布于2008-05-12 00:35:03
-
不知说了些什么东西,也不给程序做个说明
-
xdd123www发布于2008-05-13 06:20:02
-
^^
谢谢师兄的耐心讲解~
-
helight 发布于2008-05-13 12:03:57
-
这里的程序我都是在调试过后的,解答也是在调试之后的结果,我的文字描述不是很好,当是我会尽量的。
