kernel_thread函数中能不能用msleep?如果能用msleep的参数大小有什么限制?
各位大佬, 在网上找了一圈, 没有找到对应的问题, 求助一下高手。
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!