Example #1
0
static int start_kicker(void)
{
#ifdef CONFIG_LOCAL_WDT	
	int i;
	
	for(i = 0; i < CPU_NR; i++){
		wk_tsk[i] = kthread_create(kwdt_thread, (void *)(unsigned long)i, "wdtk-%d", i);
		if (IS_ERR(wk_tsk[i])) {
			int ret = PTR_ERR(wk_tsk[i]);
			wk_tsk[i] = NULL;
			return ret;
		}	
	wk_start_kick_cpu(i);
}
#else
	//spin_lock(&lock);
	wk_tsk = kthread_create(kwdt_thread, &data, "wdtk");
	//spin_unlock(&lock);
	if (IS_ERR(wk_tsk)) {
		int ret = PTR_ERR(wk_tsk);
		wk_tsk = NULL;
		return ret;
	}
	wake_up_process(wk_tsk);
#endif
	return 0;
}
static int start_kicker(void)
{

	int i;
	wk_cpu_update_bit_flag(0, 1);
	for (i = 0; i < CPU_NR; i++) {
		wk_tsk[i] = kthread_create(kwdt_thread, (void *)(unsigned long)i, "wdtk-%d", i);
		if (IS_ERR(wk_tsk[i])) {
			int ret = PTR_ERR(wk_tsk[i]);
			wk_tsk[i] = NULL;
			return ret;
		}
		/* wk_cpu_update_bit_flag(i,1); */
		wk_start_kick_cpu(i);
	}
	g_kicker_init = 1;
	printk("[WDK] WDT start kicker  done\n");
	return 0;
}