kernel_thread函数中能不能用msleep?如果能用msleep的参数大小有什么限制?

gogo_566 2011-12-15 09:08:27
各位大佬, 在网上找了一圈, 没有找到对应的问题, 求助一下高手。

kernel_thread(battery_thread, NULL, CLONE_KERNEL);

static int battery_thread()
{
struct task_struct *tsk = current;
daemonize("battery";
allow_signal(SIGKILL);

while ( ! signal_pending(tsk))
{
int i;
read_adc();
ac_charger_detect_process();
battery_process();

for(i=0; i<10; i++)
{
msleep(10);
printk("%s, %d, index:%d\n", __FILE__, __LINE__, i);
ac_charger_detect_process();
}
printk("%s, %d\n", __FILE__, __LINE__);
msleep(1500);
printk("%s, %d\n", __FILE__, __LINE__);
}
}

msleep(10);的都会跑完, msleep(1500);前的会跑完, 但msleep(1500);后的printk有时没有打印, 系统重启, 重启的机率很少, 一两个小时出现一次。 哪位大虾能帮忙解说一下吗?
Thanks!
...全文
288 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogo_566 2011-12-16
  • 打赏
  • 举报
回复
社区里没有玩linux kernel的吗?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧