您是否需要在del_timer()之后再次调用init_timer()

奥娜的萨雷夫

我有一个Linux创建计时器模块,其中一些计时器可能会在其处理程序功能期间再次添加自己。

在其他一些情况下,可以使用删除计时器(也许在关闭计时器之前)del_timer_sync()

在那种情况下,我是否需要init_timer()在next之前在结构上再次进行调用,add_timer(还是浪费(宝贵的)中断等待时间?

奥娜的萨雷夫

为了回答我自己的问题,如果我想再次访问结构,例如在进行timer_pending()或在模块清理过程中进行某些操作,我相信我确实需要在任何del_timer()或del_timer_sync()之后初始化结构体init_timer() 。

我认为在编写可能重复使用计时器的内核模块的情况下,最好的做法是:

static struct timer_list my_timer;

...

static void remove_my_timer(void)
{
  if (timer_pending(&my_timer))
  {
    del_timer_sync(&my_timer);
    init_timer(&my_timer);
  }
}

static void arm_my_timer(...)
{
  remove_my_timer();
  my_timer.expires  = ...;
  my_timer.data     = ...;
  my_timer.function = ...;
  add_timer(&my_timer);
}

...

int __init init_my_device(void)
{
  ...
  init_timer(&my_timer);
  ...
}

void __exit cleanup_my_device(void)
{
  ...
  remove_my_timer();
  ...
}

希望以后能对其他人有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在init_timer()之前调用timer_pending()是否安全?

来自分类Linux

从旧的init_timer适应新的timer_setup

来自分类Dev

您是否需要在ARC下调用dispatch_group_release?

来自分类Dev

SpriteKit-您是否需要执行内存管理?(不再需要在场景之后删除节点,等等。)

来自分类Dev

是否需要在 Timer.5 boost::asio 教程中运行新线程?

来自分类Dev

您是否需要在sklearn中缩放Vectorizer?

来自分类Javascript

您是否需要在<script>标记中指定的文本/ javascript?

来自分类Dev

您是否需要在Redis脚本中提前声明密钥?

来自分类Dev

您是否需要在项目中附带原始文件?

来自分类Dev

您是否需要在主类中扩展JApplet?

来自分类Dev

再次调用函数时如何保留System.Threading.Timer

来自分类Java

我是否需要在实现时再次使用@Nonnull?

来自分类Dev

System.Timers.Timer在调用timer.Stop()之后执行的已发生事件

来自分类Dev

使用流时是否需要在 cudamalloc 之后同步

来自分类Dev

您是否需要在kdevelop中创建2个用于调试和发布的独立项目?

来自分类Dev

您是否需要在Dart中使用“ new”关键字?

来自分类Dev

您是否需要在switch语句JS中使用默认值

来自分类Dev

您是否需要在分区表上添加索引(postgres 11)?

来自分类Dev

您是否需要在node.js中使用path.join?

来自分类Dev

在C ++中,您是否需要在两个方向上重载operator ==?

来自分类Dev

您是否需要在 gtag 中为默认事件设置 non_interaction 参数?

来自分类Dev

您是否需要在.NET中同时设置Response.Status和Response.StatusCode?

来自分类Dev

WorkManager:您是否需要在Worker中手动处理Observables?

来自分类Dev

您是否需要在ac#应用程序的多个oracle sql执行之间“提交”?

来自分类Dev

您是否需要在fstab中指定“默认值”选项?

来自分类Java

Android:是否一定要在finish()之后调用onPause()?

来自分类Dev

更改LayoutParams对象的属性后,是否需要再次调用setLayoutParams?

来自分类Dev

刷新令牌后是否需要再次调用firebase.database.on()?

来自分类Dev

您是否需要清空对象?

Related 相关文章

  1. 1

    在init_timer()之前调用timer_pending()是否安全?

  2. 2

    从旧的init_timer适应新的timer_setup

  3. 3

    您是否需要在ARC下调用dispatch_group_release?

  4. 4

    SpriteKit-您是否需要执行内存管理?(不再需要在场景之后删除节点,等等。)

  5. 5

    是否需要在 Timer.5 boost::asio 教程中运行新线程?

  6. 6

    您是否需要在sklearn中缩放Vectorizer?

  7. 7

    您是否需要在<script>标记中指定的文本/ javascript?

  8. 8

    您是否需要在Redis脚本中提前声明密钥?

  9. 9

    您是否需要在项目中附带原始文件?

  10. 10

    您是否需要在主类中扩展JApplet?

  11. 11

    再次调用函数时如何保留System.Threading.Timer

  12. 12

    我是否需要在实现时再次使用@Nonnull?

  13. 13

    System.Timers.Timer在调用timer.Stop()之后执行的已发生事件

  14. 14

    使用流时是否需要在 cudamalloc 之后同步

  15. 15

    您是否需要在kdevelop中创建2个用于调试和发布的独立项目?

  16. 16

    您是否需要在Dart中使用“ new”关键字?

  17. 17

    您是否需要在switch语句JS中使用默认值

  18. 18

    您是否需要在分区表上添加索引(postgres 11)?

  19. 19

    您是否需要在node.js中使用path.join?

  20. 20

    在C ++中,您是否需要在两个方向上重载operator ==?

  21. 21

    您是否需要在 gtag 中为默认事件设置 non_interaction 参数?

  22. 22

    您是否需要在.NET中同时设置Response.Status和Response.StatusCode?

  23. 23

    WorkManager:您是否需要在Worker中手动处理Observables?

  24. 24

    您是否需要在ac#应用程序的多个oracle sql执行之间“提交”?

  25. 25

    您是否需要在fstab中指定“默认值”选项?

  26. 26

    Android:是否一定要在finish()之后调用onPause()?

  27. 27

    更改LayoutParams对象的属性后,是否需要再次调用setLayoutParams?

  28. 28

    刷新令牌后是否需要再次调用firebase.database.on()?

  29. 29

    您是否需要清空对象?

热门标签

归档