Linux内核中的wake_lock[【转】
本文转载自:https://blog.csdn.net/wuyb2011/article/details/78542233?locationNum=11&fps=1
#include <linux/wakelock.h>
#include <linux/jiffies.h>
struct wake_lock wlock;
初始化(一般放在probe或者register函数里):
wake_lock_init(&wlock, WAKE_LOCK_SUSPEND, "wlock name");
判断是否已加锁,释放锁
if (wake_lock_active(&pon->wlock)) {
wake_unlock(&pon->wlock);
}
判断是否已加锁,加锁
if (!wake_lock_active(&pon->wlock)) {
wake_lock(&pon->wlock);
}
销毁锁(一般放在remove或者unregister函数里)
wake_lock_destroy(&pon->wlock);
超时锁
wake_lock_timeout(&pon->wlock, msecs_to_jiffies(N)); //N ms之后自动释放锁