ksync.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <linux/version.h>
  2. #include <linux/init.h>
  3. #include <linux/kernel.h>
  4. #include <linux/module.h>
  5. #include <linux/syscalls.h>
  6. #include <linux/mutex.h>
  7. #include <linux/errno.h>
  8. #include "defines.h"
  9. #include "ksync.h"
  10. /////////////////////////////////////////////////////////////////////////////
  11. static DEFINE_MUTEX(g_mutex);
  12. /////////////////////////////////////////////////////////////////////////////
  13. void ksync_lock(void)
  14. {
  15. mutex_lock(&g_mutex);
  16. }
  17. /////////////////////////////////////////////////////////////////////////////
  18. void ksync_unlock(void)
  19. {
  20. mutex_unlock(&g_mutex);
  21. }
  22. /////////////////////////////////////////////////////////////////////////////
  23. int ksync_sleep_jiffies(long jiffies)
  24. {
  25. if(jiffies <= 0)
  26. return 0;
  27. set_current_state(TASK_INTERRUPTIBLE); // may return early if a signal is delivered to the current task
  28. return schedule_timeout(jiffies);
  29. }
  30. /////////////////////////////////////////////////////////////////////////////
  31. int ksync_sleep_ms(long ms)
  32. {
  33. return ksync_sleep_jiffies(msecs_to_jiffies(ms));
  34. }