首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核模块关键部分的延迟

问Linux内核模块关键部分的延迟
EN

Stack Overflow用户
提问于 2017-07-18 11:23:36
回答 1查看 5.7K关注 0票数 1

我需要在USB内核模块中添加一个很短的延迟,以避免在小型嵌入式Linux设备启动时出现极其罕见的内核恐慌。下面是有问题的代码。如果我在代码中输入一个prink,设备就会在以前失败的地方成功运行一整晚。我想添加一个小的延迟,但是usleep_range和msleep会导致内核跟踪“调度时原子”。如何在这一段代码中添加延迟而不休眠呢?一段时间循环是实现它的方法吗?

代码语言:javascript
复制
usb_hub_for_each_child(udev, chix, childdev) {
    printk(KERN_ERR "r8a66597: Start USB Discover\n");
    //usleep_range(10000, 11000);
    //preempt_disable();
    //msleep(1);
    collect_usb_address_map(childdev, map);
    //usleep_range(10000, 11000);
    printk(KERN_ERR "r8a66597: Stop USB Discover\n");
    //msleep(1);
    //preempt_enable();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 11:51:55

Header linux/delay.h提供没有睡眠的延迟函数。这些函数可用于中断(原子)上下文:

  • ndelay(ns) -等待给定的纳秒数,
  • 尤德莱(我们)-等待给定的微秒数,
  • mdelay(ms) -等待给定的毫秒数。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45165401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档