Received: by 10.223.164.202 with SMTP id h10csp1868338wrb; Fri, 24 Nov 2017 02:38:00 -0800 (PST) X-Google-Smtp-Source: AGs4zMYbCItdH9hg1QuYWVWnZay68pBS4BbLT6Rj//JbE25LiMrfXu/6XBNTl9Os3A/Lam7AzB/+ X-Received: by 10.101.66.11 with SMTP id c11mr26860120pgq.169.1511519880265; Fri, 24 Nov 2017 02:38:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511519880; cv=none; d=google.com; s=arc-20160816; b=wMu3jbOLDjnyfkYqDTXPZDJ1it6e+WdckCMScs3GfpSMGwwJG1gwWceI6wbcwZjyD9 RAq9qACUGuHFhoZ1aGGObQNo0J8tzGW4eiajNxOV9PZGQCsyATps5l8wZgC/kiaMML/O L2yRRbSQRa2yIZNLqJyxMs4R44agREy4ikTk13TP7FFDOLiJEBg6LOcZWf4sAP6LEInY NIHqK7CPM5giewFWOUVKFQr/0ZkqTHt6APz8o8qQsY5Nb0lbLOgqdLGgiqSP6CUYy3qH NVjT5gTah7j+3zq3AnMYilCBlestanHHipgTq/ZgQeXfz37V+An6/siLitLk51rdU/cR Posg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=xEMUSJOObOc0avYHcoqxP088WLm6CH3yX8LN0J+BikY=; b=WSX0oif4ApCmE8zvmBys7Wbb4lg0eTNe8ti1lZcQBql7cWFTNPejwB+U+PXmIVcCnU QBGn9Kr0KgW6Wm9mS0hI3623hEEaMUO10DfWQ2C9qyUCbTnbFJ1hkmyBrDy4p9xXr5SC NP/4SNzkTgJNUkhJ4VfFfOdLDzeuUL61ZNpdZBGp2mwgOtTvta2pYJkJtKRChCBf/+lu i01EgdfBXMzQPJwAP9FQ2nNA10rIUblVWwGmOXZ2RMRlq/78B8of1XfqQZGEWKXBs6fW Be5ldamC4o6+GCCDYlhAaXFT/1hSl/4m8a1XUL/iaz98/5mt4L2Cb5ZUbfK9a47KNBpQ c7TA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=qFiwSWl8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g34si11469499pld.328.2017.11.24.02.37.48; Fri, 24 Nov 2017 02:38:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=qFiwSWl8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753460AbdKXKf6 (ORCPT + 77 others); Fri, 24 Nov 2017 05:35:58 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:50599 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753230AbdKXKfz (ORCPT ); Fri, 24 Nov 2017 05:35:55 -0500 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20171124103552euoutp01a720c7818674ba297c9d68efe86a3e03~5-zTxOzYr0406204062euoutp01W; Fri, 24 Nov 2017 10:35:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20171124103552euoutp01a720c7818674ba297c9d68efe86a3e03~5-zTxOzYr0406204062euoutp01W DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1511519752; bh=xEMUSJOObOc0avYHcoqxP088WLm6CH3yX8LN0J+BikY=; h=From:To:Cc:Subject:Date:References:From; b=qFiwSWl8TaNL0j1MKSr6WSsfIB0+OYg5ZtCqx+I8CADg+7RXQQdcwdcj1bM3ZG7tq jIsAIB+FlB4gBW/qakVR6bVuEi3wvYE4v2RUmDaWVpSAwpRiwP6pfNP24U0wa7SzY9 SRWtq21JPT4jmjMD+TrlnuEerI73jheEFxN8AyZ8= Received: from eusmges5.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20171124103552eucas1p2472eb1a3f8d1de31614e96710b5efd98~5-zTH_WqE0424504245eucas1p2R; Fri, 24 Nov 2017 10:35:52 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges5.samsung.com (EUCPMTA) with SMTP id 6A.E2.12743.706F71A5; Fri, 24 Nov 2017 10:35:51 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20171124103551eucas1p26478ff926b7694157a0c57906a30ad19~5-zSeBNQj3033330333eucas1p2s; Fri, 24 Nov 2017 10:35:51 +0000 (GMT) X-AuditID: cbfec7f5-f79d06d0000031c7-1b-5a17f607f204 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id A2.69.18832.706F71A5; Fri, 24 Nov 2017 10:35:51 +0000 (GMT) Received: from AMDC2075.DIGITAL.local ([106.120.51.25]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OZX00EFW43MR710@eusync1.samsung.com>; Fri, 24 Nov 2017 10:35:51 +0000 (GMT) From: Maciej Purski To: Greg Kroah-Hartman Cc: Marek Szyprowski , Russell King , linux-kernel@vger.kernel.org, Maciej Purski Subject: [PATCH v3] component: add debugfs support Date: Fri, 24 Nov 2017 11:35:25 +0100 Message-id: <1511519725-11984-1-git-send-email-m.purski@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAIsWRmVeSWpSXmKPExsWy7djP87rs38SjDE5fMLFoXryezeLyrjls Fgte3mKxWHvkLrvFpf6JTA6sHpevXWT22D93DbtH35ZVjB6fN8kFsERx2aSk5mSWpRbp2yVw Zdxd4l/QJl/x5fVa1gbGh5JdjJwcEgImEk/2bWWFsMUkLtxbz9bFyMUhJLCUUeLxv0VsIAkh gc+MEkf7E2Eapq87zQJRtAyoqOc6K4Tzn1Hi/f1mIIeDg01AS2JNezxIg4iAsUT/2VnsIDXM AosYJTYt/gE2VVjASOJ+ZzcLiM0ioCqx4/wHsDivgIvE4/M9bBDb5CRunutkBmmWEHjIKrHr /EyohIvEgUen2SFsYYlXx7dA2TISnR0HmSDsaomLX3dB1ddINN7eAFVjLfF50hZmEJtZgE9i 0rbpzCBHSwjwSnS0CUGUeEhsmnwWGiyOEpM3r2eGhESsxKaL/1gmMEotYGRYxSiSWlqcm55a bKpXnJhbXJqXrpecn7uJERhvp/8d/7qDcekxq0OMAhyMSjy8Eg/EooRYE8uKK3MPMUpwMCuJ 8Mo/BQrxpiRWVqUW5ccXleakFh9ilOZgURLntY1qixQSSE8sSc1OTS1ILYLJMnFwSjUwTs74 ylxfMFMt+tBr2Rfat8/z/JQ8yeejc/3TpYR73e9/yi78YnTtYe0s+5ollTN2rYkI3c74R/37 09nzBPwF6w15y9Jn+C7RWu+x+5dR5ZFc0f/129dN2cWoNffsecXY+SIif9mdFPx99/q9qZor 63gyOGjyuk+v8q87yHGLC3Y5PvZJimJ4pcRSnJFoqMVcVJwIAFivGz6zAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNJMWRmVeSWpSXmKPExsVy+t/xy7rs38SjDFpfils0L17PZnF51xw2 iwUvb7FYrD1yl93iUv9EJgdWj8vXLjJ77J+7ht2jb8sqRo/Pm+QCWKK4bFJSczLLUov07RK4 Mu4u8S9ok6/48notawPjQ8kuRk4OCQETienrTrNA2GISF+6tZ+ti5OIQEljCKLHn/ClWCKeR SeL49EuMXYwcHGwCWhJr2uNBGkQEjCX6z85iB6lhFljEKHH93ERGkISwgJHE/c5usKksAqoS O85/YAOxeQVcJB6f72GD2CYncfNcJ/MERu4FjAyrGEVSS4tz03OLDfWKE3OLS/PS9ZLzczcx AoNg27Gfm3cwXtoYfIhRgINRiYe34JFYlBBrYllxZe4hRgkOZiURXvmnQCHelMTKqtSi/Pii 0pzU4kOM0hwsSuK8vXtWRwoJpCeWpGanphakFsFkmTg4pRoYHdVls9lDF316/n5hmZmGyYVg Na+2sr0L93ZOkXx1T53v7hSWXe8jHkuuujxnomnnuTNOjEf/LhVMZfdd/Eo7VYNnc5aRiTvL 6vMLJ7b0rpyWwsO9Jkb93WKRE8/6/TOccm/v3R58WU4n68kc5Tg53qSbt56k75pusv4tt8L1 d5xL5tTObrgUp8RSnJFoqMVcVJwIANsUX3b+AQAA X-CMS-MailID: 20171124103551eucas1p26478ff926b7694157a0c57906a30ad19 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171124103551eucas1p26478ff926b7694157a0c57906a30ad19 X-RootMTR: 20171124103551eucas1p26478ff926b7694157a0c57906a30ad19 References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add 'component' directory to debugfs. Create a new file for each master, when a master is added. Remove it on a master deletion. Show a list of devices matched with master and indicate if master's components were successfully added and if the whole master is bound. Signed-off-by: Maciej Purski --- Changes in v3: - get rid of useless check - change directory name to "device_component" Changes in v2: - use seq_printf() instead of seq_puts() when printing headers - move whole debugfs code to the file beginning in order to avoid forward declarations or using multiple ifdefs --- drivers/base/component.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/drivers/base/component.c b/drivers/base/component.c index 89b032f..6c8871d 100644 --- a/drivers/base/component.c +++ b/drivers/base/component.c @@ -17,6 +17,7 @@ #include #include #include +#include struct component; @@ -41,6 +42,7 @@ struct master { const struct component_master_ops *ops; struct device *dev; struct component_match *match; + struct dentry *dentry; }; struct component { @@ -56,6 +58,82 @@ static DEFINE_MUTEX(component_mutex); static LIST_HEAD(component_list); static LIST_HEAD(masters); +#ifdef CONFIG_DEBUG_FS + +static struct dentry *component_debugfs_dir; + +static int component_devices_show(struct seq_file *s, void *data) +{ + struct master *m = s->private; + struct component_match *match = m->match; + size_t i; + + mutex_lock(&component_mutex); + seq_printf(s, "%-40s %20s\n", "master name", "status"); + seq_puts(s, "-------------------------------------------------------------\n"); + seq_printf(s, "%-40s %20s\n\n", + dev_name(m->dev), m->bound ? "bound" : "not bound"); + + seq_printf(s, "%-40s %20s\n", "device name", "status"); + seq_puts(s, "-------------------------------------------------------------\n"); + for (i = 0; i < match->num; i++) { + struct device *d = (struct device *)match->compare[i].data; + + seq_printf(s, "%-40s %20s\n", dev_name(d), + match->compare[i].component ? + "registered" : "not registered"); + } + mutex_unlock(&component_mutex); + + return 0; +} + +static int component_devices_open(struct inode *inode, struct file *file) +{ + return single_open(file, component_devices_show, inode->i_private); +} + +static const struct file_operations component_devices_fops = { + .open = component_devices_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init component_debug_init(void) +{ + component_debugfs_dir = debugfs_create_dir("device_component", NULL); + + return 0; +} + +core_initcall(component_debug_init); + +static void component_master_debugfs_add(struct master *m) +{ + m->dentry = debugfs_create_file(dev_name(m->dev), 0444, + component_debugfs_dir, + m, &component_devices_fops); +} + +static void component_master_debugfs_del(struct master *m) +{ + debugfs_remove(m->dentry); + m->dentry = NULL; +} + +#else + +static void component_master_debugfs_add(struct master *m) +{ +} + +static void component_master_debugfs_del(struct master *m) +{ +} + +#endif + static struct master *__master_find(struct device *dev, const struct component_master_ops *ops) { @@ -290,6 +368,7 @@ static void free_master(struct master *master) struct component_match *match = master->match; int i; + component_master_debugfs_del(master); list_del(&master->node); if (match) { @@ -323,6 +402,7 @@ int component_master_add_with_match(struct device *dev, master->ops = ops; master->match = match; + component_master_debugfs_add(master); /* Add to the list of available masters. */ mutex_lock(&component_mutex); list_add(&master->node, &masters); -- 2.7.4 From 1586209551540836399@xxx Fri Dec 08 10:01:49 +0000 2017 X-GM-THRID: 1586209551540836399 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread