static void __exit aotom_cleanup_module(void) { int i; if (aotom_standby == pm_power_off) pm_power_off = NULL; if(!draw_thread_stop && draw_task) kthread_stop(draw_task); for (i = 0; i < LASTLED; i++) if(!led_state[i].stop && led_state[i].led_task) { up(&led_state[i].led_sem); kthread_stop(led_state[i].led_task); } while(!draw_thread_stop && !led_thread_active()) msleep(1); dprintk(5, "[BTN] unloading ...\n"); button_dev_exit(); unregister_chrdev(VFD_MAJOR,"VFD"); YWPANEL_VFD_Term(); printk("Fulan front panel module unloading\n"); }
static void __exit aotom_cleanup_module(void) { remove_proc_entry(NAME_NODE, own_proc_dir); dprintk(5, "Remove .../proc/%s\n", NAME_DIR); remove_proc_entry(NAME_DIR, NULL); dprintk(5, "Remove .../proc/%s/%s\n", NAME_DIR, NAME_NODE); dprintk(5, "[BTN] unloading ...\n"); button_dev_exit(); //kthread_stop(time_thread); unregister_chrdev(VFD_MAJOR,"VFD"); printk("Fulan front panel module unloading\n"); }
void __exit button_exit(void) { dprintk("unloading ...\n"); button_dev_exit(); }