diff --git a/README.md b/README.md index 04c6438..8032493 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,4 @@ See also: worker + rmmod workqueue + +Creates a separate thread. So init_module can return, but some work will still get done. +*/ + +#include +#include +#include + +MODULE_LICENSE("GPL"); + +static struct workqueue_struct *queue; + +static void worker_func(struct work_struct *work) +{ + printk(KERN_INFO "worker\n"); +} + +int init_module(void) +{ + DECLARE_WORK(work, worker_func); + queue = create_singlethread_workqueue("myworkqueue"); + queue_work(queue, &work); + return 0; +} + +void cleanup_module(void) +{ + destroy_workqueue(queue); +}