power: wakelock: Print active wakelocks when has_wake_lock() is called
authorMike Chan <mike@android.com>
Tue, 16 Feb 2010 22:18:55 +0000 (14:18 -0800)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:05:03 +0000 (12:05 -0800)
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>
kernel/power/wakelock.c

index 4b0e260..ca48bb8 100644 (file)
@@ -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;
 }