Android 添加内核线程 :
实例说明:
1、该实例用一个简单的开关使能或关闭内核线程;
2、通过线程函数进入线程;
3、通过线程函数的do…while(),来实现过程循环。
参考代码:
#include <linux/thread.h>
static struct task_struct *thread_gpio;
......
//#################### 线程循环 ####################//
static ktime_t auto_water_light_proc(void* NULL)
{
do{
if(flag)
{
led_display_dynamic();
}
else
{
led_display_static();
}
} while (!kthread_should_stop());
}
//#################### 启动线程 ####################//
static void charger_water_light_start(int ON_OFF)
{
int thread_error = 0;
printk("[dc_pin] %s ON_OFF = %d \n",__func__,ON_OFF);
if (ON_OFF == 0)//停止线程
{
if (thread_gpio)
{
kthread_stop(thread_gpio);
thread_gpio = NULL;
printk("[dc_pin] %s thread_gpio stop.\n",__func__);
}
return;
}
//建立线程
thread_gpio = kthread_run(auto_water_light_proc, (void*)NULL, "CHARGER_LED_thread");
if (IS_ERR(thread_gpio))
{
thread_error = PTR_ERR(thread_gpio);
printk("[dc_pin] %s status = %d \n",__func__, thread_error);
}
}