查看linux进程超时,linux 进程等待超时

#include #include #include #include #include #include #include #include wait_queue_head_t select_wait;

static int num=1;

void hello()

{

int val=0;

while(1){

printk("ddddd\n");

schedule_timeout_uninterruptible(100);

val =    wait_event_interruptible_timeout(select_wait,num,20000);

printk("fffff\n");

num=0;

if (val==0)

printk("val ==0\n");

else

printk("val =%d\n",val);

}

}

void ok()

{

printk("0k\n");

while(1){

schedule_timeout_uninterruptible(400);

if(waitqueue_active(&select_wait)){//其实这个if语句直接用num =1,就行。wake_up_interruptibe(&select_wait)感觉没有效果。

num=1;

wake_up_interruptible(&select_wait);

printk("wake up\n");

}

}

}

int HS_init(void)

{

init_waitqueue_head(&select_wait);

int res = 0;

printk(KERN_ALERT "Hello ...\n");

kernel_thread(hello,NULL,CLONE_FS | CLONE_FILES | CLONE_SIGHAND);

kernel_thread(ok,NULL,CLONE_FS | CLONE_FILES | CLONE_SIGHAND);

return res;

}

void HS_exit(void)

{

num=0;

printk(KERN_ALERT "Bye ...\n");

}

static int __init hsdrv_init(void)

{

printk(KERN_ALERT " driver loading ...\n");

return HS_init();

}

static void __exit hsdrv_exit(void)

{

printk(KERN_ALERT "HS driver unloaded.\n");

HS_exit();

}

MODULE_LICENSE("GPL");

module_init(hsdrv_init);

module_exit(hsdrv_exit);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值