summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMike Chan <mike@android.com>2010-02-16 14:18:55 -0800
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:38:15 -0800
commit3840df53cda29bd78dc10fdfe371579c3455893b (patch)
tree2cba7b5f16fe6b17f2b0d65d230449bda6633933 /kernel
parent32b0858996b465913dfde49aa2c568dc273fd47c (diff)
power: wakelock: Print active wakelocks when has_wake_lock() is called
When DEBUG_SUSPEND is enabled print active wakelocks when we check if there are any active wakelocks. In print_active_locks(), print expired wakelocks if DEBUG_EXPIRE is enabled Change-Id: Ib1cb795555e71ff23143a2bac7c8a58cbce16547 Signed-off-by: Mike Chan <mike@android.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/power/wakelock.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/kernel/power/wakelock.c b/kernel/power/wakelock.c
index 4b0e26065be0..ca48bb8d316b 100644
--- a/kernel/power/wakelock.c
+++ b/kernel/power/wakelock.c
@@ -208,20 +208,23 @@ static void expire_wake_lock(struct wake_lock *lock)
/* Caller must acquire the list_lock spinlock */
static void print_active_locks(int type)
{
- unsigned long irqflags;
struct wake_lock *lock;
+ bool print_expired = true;
BUG_ON(type >= WAKE_LOCK_TYPE_COUNT);
list_for_each_entry(lock, &active_wake_locks[type], link) {
if (lock->flags & WAKE_LOCK_AUTO_EXPIRE) {
long timeout = lock->expires - jiffies;
- if (timeout <= 0)
- pr_info("wake lock %s, expired\n", lock->name);
- else
+ if (timeout > 0)
pr_info("active wake lock %s, time left %ld\n",
lock->name, timeout);
- } else
+ else if (print_expired)
+ pr_info("wake lock %s, expired\n", lock->name);
+ } else {
pr_info("active wake lock %s\n", lock->name);
+ if (!debug_mask & DEBUG_EXPIRE)
+ print_expired = false;
+ }
}
}
@@ -250,6 +253,8 @@ long has_wake_lock(int type)
unsigned long irqflags;
spin_lock_irqsave(&list_lock, irqflags);
ret = has_wake_lock_locked(type);
+ if (ret && (debug_mask & DEBUG_SUSPEND) && type == WAKE_LOCK_SUSPEND)
+ print_active_locks(type);
spin_unlock_irqrestore(&list_lock, irqflags);
return ret;
}