1
0

example_mutex.c 774 B

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