LUPA首页
|
资讯
|
教程
|
下载
|
求职
|
方案
|
博客
|
交易
|
英文版
游客:
注册
|
登录
|
会员
|
统计
|
帮助
LUPA论坛
»
内核问题答疑
» tasklet学习实例
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
|
开通个人空间
|
加入资讯
标题: tasklet学习实例
本帖已经被作者加入个人空间
helight
开源主力军
UID 151392
精华 0
积分 626
帖子 44
LUPA币 604 点
阅读权限 30
注册 2008-3-8
#1
发表于 2008-5-7 15:42
资料
个人空间
短消息
tasklet学习实例
#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/kdev_t.h>
#include <linux/cdev.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
static unsigned long data=0;
static struct tasklet_struct tasklet;
static void mylet(unsigned long data)
{
printk(KERN_ALERT "tasklet running.\n");
return;
}
static int __init mytasklet_init(void)
{
printk(KERN_ALERT "init...\n");
tasklet_init(&tasklet, mylet,data);
tasklet_schedule(&tasklet);
return 0;
}
static void __exit mytasklet_exit(void)
{
tasklet_kill(&tasklet);
printk(KERN_ALERT "exit...\n");
return;
}
MODULE_LICENSE("GPL");
module_init(mytasklet_init);
module_exit(mytasklet_exit);
[广告]
推荐个超酷的web2.0相册
infohunter
(InfoHunter)
特约撰稿人
UID 23340
精华 0
积分 1832
帖子 245
LUPA币 1709 点
阅读权限 100
注册 2006-7-25
来自 沈阳
#2
发表于 2008-5-7 22:33
资料
主页
个人空间
短消息
OK,that's it
[广告]
推荐个超酷的web2.0相册
xdd123www
关注开源
UID 161580
精华 0
积分 42
帖子 3
LUPA币 40 点
阅读权限 20
注册 2008-3-20
#3
发表于 2008-5-9 13:42
资料
短消息
问题
以这样的初始化形式出现时,编译出现错误。
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函数,会出现什么问题吗?
[广告]
推荐个超酷的web2.0相册
helight
开源主力军
UID 151392
精华 0
积分 626
帖子 44
LUPA币 604 点
阅读权限 30
注册 2008-3-8
#4
发表于 2008-5-10 14:44
资料
个人空间
短消息
DECLARE_TASKLET(mytasklet,tasklethandler,data); /* line 19*/
你吧这句话放到 tasklet_schedule(&mytasklet);之前试试 ,应该在退出的时候使用tasklet_kill,他会将后半部分终止执行。
helight
开源主力军
UID 151392
精华 0
积分 626
帖子 44
LUPA币 604 点
阅读权限 30
注册 2008-3-8
#5
发表于 2008-5-10 15:01
资料
个人空间
短消息
DECLARE_TASKLET知是一个宏,并不是一个单独的函数,在内核源码中其实就是一句
struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
这样的话但让不应该在代码的中间的,要么在文件的程序中使用,要么和全局变量方在一起,怎么能出现在函数中间呢?
helight
开源主力军
UID 151392
精华 0
积分 626
帖子 44
LUPA币 604 点
阅读权限 30
注册 2008-3-8
#6
发表于 2008-5-10 15:02
资料
个人空间
短消息
上面说错了是 ,怎么能出现在函数之间
zhull1052
开源主力军
UID 73681
精华 0
积分 1441
帖子 117
LUPA币 1382 点
阅读权限 30
注册 2007-10-19
#7
发表于 2008-5-12 12:35
资料
个人空间
短消息
不知说了些什么东西,也不给程序做个说明
xdd123www
关注开源
UID 161580
精华 0
积分 42
帖子 3
LUPA币 40 点
阅读权限 20
注册 2008-3-20
#8
发表于 2008-5-13 18:20
资料
短消息
^^
谢谢师兄的耐心讲解~
helight
开源主力军
UID 151392
精华 0
积分 626
帖子 44
LUPA币 604 点
阅读权限 30
注册 2008-3-8
#9
发表于 2008-5-14 00:03
资料
个人空间
短消息
这里的程序我都是在调试过后的,解答也是在调试之后的结果,我的文字描述不是很好,当是我会尽量的。
投票
交易
悬赏
活动
LUPA论坛
专题指导
> 内核问题答疑
> FreeBSD专版
LUPA论坛
> 开源思想交流
> 人物专栏
> LUPA足迹
> 推进员之家
> 网页标准化
> 投稿区
> 技术交流
> 初级问答[新手区]
> 有奖评书专区
> 社区茶馆
> 美景美图
> 创业就业
> 游戏专版
> IT界评论
> 技术文档
> Linux基础
> 跨平台应用
> ErLang专区
> 软件应用
> LAMP专区
> Shell编程
> JAVA
> 高级应用
> PHP
> 邮件服务器
> 嵌入式开发
> 数据库
> FTP技术
> 网络安全
> Solaris专区
> 其他Unix系列
> windows平台开源软件介绍
> 其他编程语言
> 高校教学认证专版
> 认证公告和教学指导
> 技术支持
> 操作员认证专题
> 网管员认证专题
> LAMP工程师认证专题
> 社区管理
> 社区活动
> LUPA基金会
> 开源社区广告同盟
> 人员调整公告
> 回收垃圾
Linux平台开发专版
> C/C++语言基础
> 开发工具使用
> GTK/QT图形库
> 开发包调用
> 软件包制作
合作专区
> 开源项目合作建设
> X-Vake威客系统
> Serious Game底层引擎
> 蓝迪游戏
> ExtMail
> WiseReal教育软件
> Works.lt信息化平台
> LGsearch桌面搜索
> FireFox插件开发
> LUPA考试系统
> Linuxer电子杂志
> Easyjf专版(简易JAVA框架)
> 恩信ERP
> 希瑞CRM
> Zen Cart购物车
> Klinux 发行版定制
当前时区 GMT+8, 现在时间是 2008-7-21 02:41
浙ICP备06002895号
Powered by
Discuz!
5.0.0
© 2001-2006
Comsenz Inc.
Processed in 0.034417 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
LUPA开源社区
-
Archiver
-
WAP
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计