OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4500|回复: 6

linux中断实验-timer函数的入参问题

[复制链接]

21

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2019-5-24
在线时间
39 小时
发表于 2020-4-25 15:54:15 | 显示全部楼层 |阅读模式


请问定时器回调入参的问题
在v1.3版本--p1248
void timer_function(unsigned long arg)
{
}


init_timer(&imx6uirq.timer);
imx6uirq.timer.function = timer_function;
上面的timer_function的入参是从那里来的?

在内核定时器的实验中,有明确的定时器入参设置:
init_timer(&timerdev.timer);
timerdev.timer.function = timer_function;
timerdev.timer.data = (unsigned long)&timerdev; ---定时器入参
为什么中断实验就没有?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2019-5-24
在线时间
39 小时
 楼主| 发表于 2020-4-25 16:07:01 | 显示全部楼层
在中断实验中,
初始化按键 */
        atomic_set(&imx6uirq.keyvalue, INVAKEY);
        atomic_set(&imx6uirq.releasekey, 0);
包括读写按键使用原子锁,为什么没有atomic_dec_and_test()检测有没有使用呢?它是怎么保证并发使用的呢?
回复 支持 反对

使用道具 举报

21

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2019-5-24
在线时间
39 小时
 楼主| 发表于 2020-4-25 19:11:16 | 显示全部楼层
在定时器实验和中断实验中都用到定时器,但是为什么没有调用add_timer()函数注册呢?
回复 支持 反对

使用道具 举报

21

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2019-5-24
在线时间
39 小时
 楼主| 发表于 2020-4-25 19:26:44 | 显示全部楼层
static irqreturn_t key0_handler(int irq, void *dev_id)
{
struct imx6uirq_dev *dev = (struct imx6uirq_dev *)dev_id;---

dev->curkeynum = 0;
dev->timer.data = (volatile long)dev_id;----请问该行是否需要?因为后面是固定延时10ms,在
前面结构体强转过程中dev 已经有值了
mod_timer(&dev->timer, jiffies + msecs_to_jiffies(10));
return IRQ_RETVAL(IRQ_HANDLED);
}
79
回复 支持 反对

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-10-28
在线时间
22 小时
发表于 2020-4-25 20:37:20 | 显示全部楼层
sg_fly 发表于 2020-4-25 19:11
在定时器实验和中断实验中都用到定时器,但是为什么没有调用add_timer()函数注册呢?

中断试验中是调用mod_timer函数来启动定时器的,该函数可以启动定时器并设置定时器周期,取代了定时器实验中的add_timer
回复 支持 反对

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-10-28
在线时间
22 小时
发表于 2020-4-25 20:44:24 | 显示全部楼层
sg_fly 发表于 2020-4-25 19:26
static irqreturn_t key0_handler(int irq, void *dev_id)
{
struct imx6uirq_dev *dev = (struct imx6 ...

这行肯定需要啊,这行目的不是给dev赋值,这行恰好回答了一楼你的问题,它是timer_function的入参
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-4-26 08:45:26 | 显示全部楼层
timer定时处理函数需要参数你就在初始化的时候绑定一个需要传入的参数就行了  你不需要就不用绑定,根据需求来的嘛
森罗万象
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 09:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表