很多博客都会说一堆这几个内核函数的理解定义等,烦的要死。这里直接上代码demo!当然这里的demo是要有自己的代码支撑的,想了解更多关于线程操作请看别的博文分析。
wait_queue_head_t memo_wqueue;
#define g_thread_timeout 5000
#define THREAD_WAKEUP 0 /* 线程唤醒标志 */
#define THREAD_SLEEP 1 /* 线程睡眠标志 */
int wakeup_flag = 0;
int init()
{
/* 初始化线程 */
init_waitqueue_head(&memo_wqueue);
static struct task_struct *memo_tsk;
memo_tsk = kthread_run(functions_loop, NULL, "functions_name");
if (IS_ERR(memo_tsk))
{
printk(KERN_INFO "Failed to create functionsk thread!\n");
}
else
{
printk(KERN_INFO "Seccesefully to create functions thread ok!\n");
}
}
void functions_loop()
{
while(!kthread_should_stop())
{
/* 线程进入阻塞性休眠,直到参数三超时,或者等待wake_up函数 唤醒 */
ret = wait_event_interruptible_timeout(memo_wqueue,
(test_bit(THREAD_WAKEUP,