example_mutex.c 785 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <linux/kernel.h>
  2. #include <linux/module.h>
  3. #include <linux/init.h>
  4. #include <linux/mutex.h>
  5. DEFINE_MUTEX(mymutex);
  6. static int example_mutex_init(void)
  7. {
  8. int ret;
  9. pr_info("example_mutex init\n");
  10. ret = mutex_trylock(&mymutex);
  11. if (ret != 0) {
  12. pr_info("mutex is locked\n");
  13. if (mutex_is_locked(&mymutex) == 0)
  14. pr_info("The mutex failed to lock!\n");
  15. mutex_unlock(&mymutex);
  16. pr_info("mutex is unlocked\n");
  17. }
  18. else
  19. pr_info("Failed to lock\n");
  20. return 0;
  21. }
  22. static void example_mutex_exit(void)
  23. {
  24. pr_info("example_mutex exit\n");
  25. }
  26. module_init(example_mutex_init);
  27. module_exit(example_mutex_exit);
  28. MODULE_AUTHOR("Bob Mottram");
  29. MODULE_DESCRIPTION("Mutex example");
  30. MODULE_LICENSE("GPL");