#ifdef CONFIG_PM // Powermanagement static int template_suspend(struct device *dev, pm_message_t state) { switch (state.event) { case PM_EVENT_ON: printk("on ...\n"); break; case PM_EVENT_FREEZE: printk("freeze ...\n"); break; case PM_EVENT_SUSPEND: // Stromsparmodus einschalten printk("suspend ...\n"); break; case PM_EVENT_HIBERNATE: // Tiefschlaf einschalten printk("hibernate ...\n"); break; default: printk("pm_event: 0x%x\n", state.event); break; } printk("template_suspend(%p)\n", dev); return 0; } static int template_resume(struct device *dev) { // Stromsparmodus ausschalten, Gerät reaktivieren printk("template_resume(%p)\n", dev); return 0; } #endif [...] static int __init template_init(void) { init_waitqueue_head(&wq_read); init_waitqueue_head(&wq_write); [...] template_class = class_create(THIS_MODULE, TEMPLATE); if (IS_ERR(template_class)) { printk("template: no udev support\n"); goto free_cdev; } #ifdef CONFIG_PM template_class->suspend = template_suspend; template_class->resume = template_resume; #endif [...]