int thread_fn(void *data) { short cpu_temp,gpu_temp,max_temp; set_current_state(TASK_INTERRUPTIBLE); while(!kthread_should_stop()) { SLEEP_MILLI_SEC(30000); cpu_temp = 0; gpu_temp = 0; cpu_temp = read_ec(0xA8); gpu_temp = read_ec(0xAF); max_temp = get_max(cpu_temp, gpu_temp); if (max_temp < 60) { fanSpeed = minFanSpeed; } if (max_temp > 60) { fanSpeed = minFanSpeed+20; } if (max_temp > 70) { fanSpeed = minFanSpeed+40; } if (max_temp > 80) { fanSpeed = maxFanSpeed; } set_speed(fanSpeed); printk(KERN_INFO "cpu temp: %d, gpu temp: %d, fan speed: %d", cpu_temp, gpu_temp, fanSpeed); schedule(); set_current_state(TASK_INTERRUPTIBLE); } set_current_state(TASK_RUNNING); return 0; }
static int print_count(void *data) { while (!kthread_should_stop()) { SLEEP_MILLI_SEC(800); print_io_counter(); } return 0; }