From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 4/8] PM: suspend_block: Add debugfs file Date: Thu, 13 May 2010 21:11:09 -0700 Message-ID: <1273810273-3039-5-git-send-email-arve@android.com> References: <1273810273-3039-1-git-send-email-arve@android.com> <1273810273-3039-2-git-send-email-arve@android.com> <1273810273-3039-3-git-send-email-arve@android.com> <1273810273-3039-4-git-send-email-arve@android.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1273810273-3039-4-git-send-email-arve@android.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: linux-pm@lists.linux-foundation.org, linux-kernel@vger.kernel.org Cc: Len Brown , Tejun Heo List-Id: linux-pm@vger.kernel.org UmVwb3J0IGFjdGl2ZSBhbmQgaW5hY3RpdmUgc3VzcGVuZCBibG9ja2VycyBpbgovc3lzL2tlcm5l bC9kZWJ1Zy9zdXNwZW5kX2Jsb2NrZXJzLgoKU2lnbmVkLW9mZi1ieTogQXJ2ZSBIasO4bm5ldsOl ZyA8YXJ2ZUBhbmRyb2lkLmNvbT4KLS0tCiBrZXJuZWwvcG93ZXIvb3Bwb3J0dW5pc3RpY19zdXNw ZW5kLmMgfCAgIDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZXMg Y2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9r ZXJuZWwvcG93ZXIvb3Bwb3J0dW5pc3RpY19zdXNwZW5kLmMgYi9rZXJuZWwvcG93ZXIvb3Bwb3J0 dW5pc3RpY19zdXNwZW5kLmMKaW5kZXggYWNjMTY1MS4uYzJkYWQ3NiAxMDA2NDQKLS0tIGEva2Vy bmVsL3Bvd2VyL29wcG9ydHVuaXN0aWNfc3VzcGVuZC5jCisrKyBiL2tlcm5lbC9wb3dlci9vcHBv cnR1bmlzdGljX3N1c3BlbmQuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3J0Yy5oPgogI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQu aD4KKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CiAKICNpbmNsdWRlICJwb3dlci5oIgogCkBA IC0xMzgsNyArMTM5LDggQEAgRVhQT1JUX1NZTUJPTChzdXNwZW5kX2Jsb2NrZXJfcmVnaXN0ZXIp OwogLyoqCiAgKiBzdXNwZW5kX2Jsb2NrZXJfaW5pdCAtIEluaXRpYWxpemUgYSBzdXNwZW5kIGJs b2NrZXIncyBuYW1lIGFuZCByZWdpc3RlciBpdC4KICAqIEBibG9ja2VyOiBTdXNwZW5kIGJsb2Nr ZXIgdG8gaW5pdGlhbGl6ZS4KLSAqIEBuYW1lOiAgICBUaGUgbmFtZSBvZiB0aGUgc3VzcGVuZCBi bG9ja2VyIHRvIHNob3cgaW4gZGVidWcgbWVzc2FnZXMuCisgKiBAbmFtZTogICAgVGhlIG5hbWUg b2YgdGhlIHN1c3BlbmQgYmxvY2tlciB0byBzaG93IGluIGRlYnVnIG1lc3NhZ2VzIGFuZAorICoJ ICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9zdXNwZW5kX2Jsb2NrZXJzLgogICoKICAqIFRoZSBzdXNw ZW5kIGJsb2NrZXIgc3RydWN0IGFuZCBuYW1lIG11c3Qgbm90IGJlIGZyZWVkIGJlZm9yZSBjYWxs aW5nCiAgKiBzdXNwZW5kX2Jsb2NrZXJfdW5yZWdpc3RlcigpLgpAQCAtMjgyLDMgKzI4NCw0MiBA QCB2b2lkIF9faW5pdCBvcHBvcnR1bmlzdGljX3N1c3BlbmRfaW5pdCh2b2lkKQogCXN1c3BlbmRf YmxvY2tlcl9yZWdpc3RlcigmbWFpbl9zdXNwZW5kX2Jsb2NrZXIpOwogCXN1c3BlbmRfYmxvY2so Jm1haW5fc3VzcGVuZF9ibG9ja2VyKTsKIH0KKworc3RhdGljIHN0cnVjdCBkZW50cnkgKnN1c3Bl bmRfYmxvY2tlcl9zdGF0c19kZW50cnk7CisKK3N0YXRpYyBpbnQgc3VzcGVuZF9ibG9ja2VyX3N0 YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCit7CisJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKKwlzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyOworCisJc2Vx X3B1dHMobSwgIm5hbWVcdGFjdGl2ZVxuIik7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9j aywgaXJxZmxhZ3MpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2tlciwgJmluYWN0aXZlX2Js b2NrZXJzLCBsaW5rKQorCQlzZXFfcHJpbnRmKG0sICJcIiVzXCJcdDBcbiIsIGJsb2NrZXItPm5h bWUpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2tlciwgJmFjdGl2ZV9ibG9ja2VycywgbGlu aykKKwkJc2VxX3ByaW50ZihtLCAiXCIlc1wiXHQxXG4iLCBibG9ja2VyLT5uYW1lKTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgc3Vz cGVuZF9ibG9ja2VyX3N0YXRzX3Nob3csIE5VTEwpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyBzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfZm9wcyA9IHsKKwkub3duZXIg PSBUSElTX01PRFVMRSwKKwkub3BlbiA9IHN1c3BlbmRfYmxvY2tlcl9zdGF0c19vcGVuLAorCS5y ZWFkID0gc2VxX3JlYWQsCisJLmxsc2VlayA9IHNlcV9sc2VlaywKKwkucmVsZWFzZSA9IHNpbmds ZV9yZWxlYXNlLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc3VzcGVuZF9ibG9ja2VyX2RlYnVn ZnNfaW5pdCh2b2lkKQoreworCXN1c3BlbmRfYmxvY2tlcl9zdGF0c19kZW50cnkgPSBkZWJ1Z2Zz X2NyZWF0ZV9maWxlKCJzdXNwZW5kX2Jsb2NrZXJzIiwKKwkJCVNfSVJVR08sIE5VTEwsIE5VTEws ICZzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfZm9wcyk7CisJcmV0dXJuIDA7Cit9CisKK3Bvc3Rjb3Jl X2luaXRjYWxsKHN1c3BlbmRfYmxvY2tlcl9kZWJ1Z2ZzX2luaXQpOwotLSAKMS42LjUuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcG0gbWFp bGluZyBsaXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlz dHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1wbQ== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752795Ab0ENENI (ORCPT ); Fri, 14 May 2010 00:13:08 -0400 Received: from mail-px0-f174.google.com ([209.85.212.174]:52482 "EHLO mail-px0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751405Ab0ENELg (ORCPT ); Fri, 14 May 2010 00:11:36 -0400 From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= To: linux-pm@lists.linux-foundation.org, linux-kernel@vger.kernel.org Cc: "Rafael J. Wysocki" , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Len Brown , Pavel Machek , Tejun Heo Subject: [PATCH 4/8] PM: suspend_block: Add debugfs file Date: Thu, 13 May 2010 21:11:09 -0700 Message-Id: <1273810273-3039-5-git-send-email-arve@android.com> X-Mailer: git-send-email 1.6.5.1 In-Reply-To: <1273810273-3039-4-git-send-email-arve@android.com> References: <1273810273-3039-1-git-send-email-arve@android.com> <1273810273-3039-2-git-send-email-arve@android.com> <1273810273-3039-3-git-send-email-arve@android.com> <1273810273-3039-4-git-send-email-arve@android.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Report active and inactive suspend blockers in /sys/kernel/debug/suspend_blockers. Signed-off-by: Arve Hjønnevåg --- kernel/power/opportunistic_suspend.c | 43 +++++++++++++++++++++++++++++++++- 1 files changed, 42 insertions(+), 1 deletions(-) diff --git a/kernel/power/opportunistic_suspend.c b/kernel/power/opportunistic_suspend.c index acc1651..c2dad76 100644 --- a/kernel/power/opportunistic_suspend.c +++ b/kernel/power/opportunistic_suspend.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "power.h" @@ -138,7 +139,8 @@ EXPORT_SYMBOL(suspend_blocker_register); /** * suspend_blocker_init - Initialize a suspend blocker's name and register it. * @blocker: Suspend blocker to initialize. - * @name: The name of the suspend blocker to show in debug messages. + * @name: The name of the suspend blocker to show in debug messages and + * /sys/kernel/debug/suspend_blockers. * * The suspend blocker struct and name must not be freed before calling * suspend_blocker_unregister(). @@ -282,3 +284,42 @@ void __init opportunistic_suspend_init(void) suspend_blocker_register(&main_suspend_blocker); suspend_block(&main_suspend_blocker); } + +static struct dentry *suspend_blocker_stats_dentry; + +static int suspend_blocker_stats_show(struct seq_file *m, void *unused) +{ + unsigned long irqflags; + struct suspend_blocker *blocker; + + seq_puts(m, "name\tactive\n"); + spin_lock_irqsave(&list_lock, irqflags); + list_for_each_entry(blocker, &inactive_blockers, link) + seq_printf(m, "\"%s\"\t0\n", blocker->name); + list_for_each_entry(blocker, &active_blockers, link) + seq_printf(m, "\"%s\"\t1\n", blocker->name); + spin_unlock_irqrestore(&list_lock, irqflags); + return 0; +} + +static int suspend_blocker_stats_open(struct inode *inode, struct file *file) +{ + return single_open(file, suspend_blocker_stats_show, NULL); +} + +static const struct file_operations suspend_blocker_stats_fops = { + .owner = THIS_MODULE, + .open = suspend_blocker_stats_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init suspend_blocker_debugfs_init(void) +{ + suspend_blocker_stats_dentry = debugfs_create_file("suspend_blockers", + S_IRUGO, NULL, NULL, &suspend_blocker_stats_fops); + return 0; +} + +postcore_initcall(suspend_blocker_debugfs_init); -- 1.6.5.1