1
0

example_tasklet.c 764 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <linux/delay.h>
  2. #include <linux/interrupt.h>
  3. #include <linux/kernel.h>
  4. #include <linux/module.h>
  5. static void tasklet_fn(unsigned long data)
  6. {
  7. pr_info("Example tasklet starts\n");
  8. mdelay(5000);
  9. pr_info("Example tasklet ends\n");
  10. }
  11. DECLARE_TASKLET(mytask, tasklet_fn, 0L);
  12. static int example_tasklet_init(void)
  13. {
  14. pr_info("tasklet example init\n");
  15. tasklet_schedule(&mytask);
  16. mdelay(200);
  17. pr_info("Example tasklet init continues...\n");
  18. return 0;
  19. }
  20. static void example_tasklet_exit(void)
  21. {
  22. pr_info("tasklet example exit\n");
  23. tasklet_kill(&mytask);
  24. }
  25. module_init(example_tasklet_init);
  26. module_exit(example_tasklet_exit);
  27. MODULE_AUTHOR("Bob Mottram");
  28. MODULE_DESCRIPTION("Tasklet example");
  29. MODULE_LICENSE("GPL");