Received: by 10.223.164.202 with SMTP id h10csp592106wrb; Wed, 15 Nov 2017 05:01:44 -0800 (PST) X-Google-Smtp-Source: AGs4zMZLex3nfPa1ZN6HNCF11rrIi+/Qc4g0APeZfAB3bLYJLqesRcgS1tfbD+EurHW+bl7K4dOR X-Received: by 10.159.234.75 with SMTP id c11mr2363158plr.422.1510750904030; Wed, 15 Nov 2017 05:01:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510750903; cv=none; d=google.com; s=arc-20160816; b=jMJgsuVBkRR/37yGEsOjZ+7vWS/372lbO+PsmuQrs2zIjZA8N7LfTiofYRGuc+GefE EuIaatfEgVJBPzNE5ZIZOEPmEtKrO7lQYbUqNaGC6CMndkq6MVzLjzzaGW9z1ziHhTUN MzDiMrMh4SNpn4/bYY7xJBkd/vtfmnuQ0tF/hue5HVqK+8NsFZfknmQvwvhLasTtVOw1 5bDw1/5cr/iQwAOmKWgw6ZDyC+ENNevTsXFRhBCqt94jaagMbjmZt6RMHkm8vY4uh/tl wGQ9FgqBqWLtUARUE/vluQi9OYgcAPnMduE1EDYOwRYmxx2Bmc+4XuAiQwkoCFOmxheM JMOg== 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=d0crIk7UedOyYzLPpPY/+uKpJ2zsq8KHOkrrsWI4/po=; b=Hrf1gCHxUMIUzSgyliD/qDIGoGw4gL12+DBLPmIEH6/xrn7TyMHW+jmHBhozc4Khf+ Rpg3Zzuh2MdG5iQPPMf19NMnm96ny4zP5/PAtlxw3p56/ForRyqTfY6EDN+RS/vl6nHZ 4zO1nEfWQcKfhyBNv+9gzM46Q9fvzW3JxpnIVkx3CyHKaLbdmxqLPLh4rHqyIF73Mm39 lF4QD+VVm+zfAA9w/GaYd75OaLZ1FLFi7gp4rzdgeoj1lEtuex/CJAaDFaAB3ISRmRxo kWsnl034i1vGjowsZGfGnig9W8ZqbFzZks1Irp4r/W4+eR6b5Mbucwv05NzAufX3xUP1 cOew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=oUhqv3z+; 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 i8si17722157pgv.239.2017.11.15.05.01.31; Wed, 15 Nov 2017 05:01:43 -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=oUhqv3z+; 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 S1757666AbdKOLEw (ORCPT + 88 others); Wed, 15 Nov 2017 06:04:52 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:60774 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753437AbdKOLEp (ORCPT ); Wed, 15 Nov 2017 06:04:45 -0500 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20171115110443euoutp02f6087176f38fb84deace6f5b2422eb57~3PY6tKbaN0791307913euoutp02W; Wed, 15 Nov 2017 11:04:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20171115110443euoutp02f6087176f38fb84deace6f5b2422eb57~3PY6tKbaN0791307913euoutp02W DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1510743883; bh=d0crIk7UedOyYzLPpPY/+uKpJ2zsq8KHOkrrsWI4/po=; h=From:To:Cc:Subject:Date:References:From; b=oUhqv3z+C1+NMDARGWolavFOJSL4Ln0XbghnCFbDZWrhJCtfCTmXvKSQYuLe3nBV6 XAOq+zSV123f0ywFmI5PFTmoFOY6utCipxzCtZ9ZqAcCTjv/VoC2SehKnEIAfX2zCl 5s07qDejeFaKqHfPMzoAFhCAl4KhpVndWukqo9V8= Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20171115110442eucas1p1616a9cedc454c565de91b7a88f85e728~3PY6DiM6y1767317673eucas1p1N; Wed, 15 Nov 2017 11:04:42 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 77.14.12907.94F1C0A5; Wed, 15 Nov 2017 11:04:42 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20171115110441eucas1p2555810a1e10e270fd944c2c031d92305~3PY5YVMUs0373403734eucas1p2_; Wed, 15 Nov 2017 11:04:41 +0000 (GMT) X-AuditID: cbfec7f1-f793a6d00000326b-f3-5a0c1f49d182 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 02.09.18832.94F1C0A5; Wed, 15 Nov 2017 11:04:41 +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 <0OZG00KP4HFNFI30@eusync1.samsung.com>; Wed, 15 Nov 2017 11:04:41 +0000 (GMT) From: Maciej Purski To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , Russell King , Maciej Purski Subject: [PATCH] component: add debugfs support Date: Wed, 15 Nov 2017 12:04:26 +0100 Message-id: <1510743866-21636-1-git-send-email-m.purski@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDIsWRmVeSWpSXmKPExsWy7djP87pe8jxRBpuvMVk0L17PZnF51xw2 iwUvb7FYXOqfyOTA4nH52kVmj/1z17B79G1ZxejxeZNcAEsUl01Kak5mWWqRvl0CV8b5K1fY Ch7JV+x+cYG1gfGzZBcjJ4eEgIlE76d/7BC2mMSFe+vZuhi5OIQEljJKtB6YyQ7hfGaUuLV4 ISNMx44TXxghEssYJWbff8cE4fxnlNh89hhzFyMHB5uAlsSa9niQBhEBBYnNvc9YQWqYBdoY JfoObmUDSQgL6Ess/HGGHaSeRUBVYsvlKJAwr4CLxOm+pSwQy+Qkbp7rZAbplRC4ySoxZ0cX E0TCReJJ03you4UlXh3fAmXLSHR2HISqqZa4+HUXG4RdI9F4ewNUjbXE50lbmEFsZgE+iUnb poPdLCHAK9HRJgRR4iGx9N0GVgjbUeL5kjaw54UEYiWmzupmm8AotYCRYRWjSGppcW56arGR XnFibnFpXrpecn7uJkZgnJ3+d/zjDsb3J6wOMQpwMCrx8GYoc0cJsSaWFVfmHmKU4GBWEuFN 7gcK8aYkVlalFuXHF5XmpBYfYpTmYFES57WNaosUEkhPLEnNTk0tSC2CyTJxcEo1MArLbKrW anW4oGD0h6nslDfvMb5Pr/f8u3PBc3nlvq/P5AVYLoRkH/pj9PBp2odOx1VxKhezmW2OTZzZ ujCQvXrqc7arW04KXLs00yRyR/6v/erfBeI09q4XubZs8tz5qy6IVtvo7gitK2iySBZgVX45 QX6lwsdHzhXXdec/n1j9jlc670b6anclluKMREMt5qLiRAD0ekeYrwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGJMWRmVeSWpSXmKPExsVy+t/xy7qe8jxRBjv7lCyaF69ns7i8aw6b xYKXt1gsLvVPZHJg8bh87SKzx/65a9g9+rasYvT4vEkugCWKyyYlNSezLLVI3y6BK+P8lSts BY/kK3a/uMDawPhZsouRk0NCwERix4kvjBC2mMSFe+vZuhi5OIQEljBKPF59khnCaWSSWHyk FaiKg4NNQEtiTXs8SIOIgILE5t5nrCA1zAJtjBIrr+5kAUkIC+hLLPxxhh2knkVAVWLL5SiQ MK+Ai8TpvqUsEMvkJG6e62SewMi9gJFhFaNIamlxbnpusaFecWJucWleul5yfu4mRqDvtx37 uXkH46WNwYcYBTgYlXh4M5S5o4RYE8uKK3MPMUpwMCuJ8Cb3A4V4UxIrq1KL8uOLSnNSiw8x SnOwKInz9u5ZHSkkkJ5YkpqdmlqQWgSTZeLglGpg7Jvxm0n7U35J4APtHQ7tfnLurpmeF2qY Th/TmbrEbe7kX5N+8Lw2yn5lb7Vvxb57F8pam08fMmg0edRmcdHm3e60Kr7ZWoUfZ4XvYRd/ +mXP5Usnrl0vZHupNY3TfXlIyBNT1ZkLv23f8L98Fm9R0/MGs0TvkuVdHAYPfp+JOVxluPqG ttT8eUosxRmJhlrMRcWJAJ6cLjP5AQAA X-CMS-MailID: 20171115110441eucas1p2555810a1e10e270fd944c2c031d92305 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171115110441eucas1p2555810a1e10e270fd944c2c031d92305 X-RootMTR: 20171115110441eucas1p2555810a1e10e270fd944c2c031d92305 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 --- drivers/base/component.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/drivers/base/component.c b/drivers/base/component.c index 89b032f..7a55888 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,9 @@ static DEFINE_MUTEX(component_mutex); static LIST_HEAD(component_list); static LIST_HEAD(masters); +static void component_master_debugfs_add(struct master *m); +static void component_master_debugfs_del(struct master *m); + static struct master *__master_find(struct device *dev, const struct component_master_ops *ops) { @@ -290,6 +295,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 +329,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); @@ -527,4 +534,83 @@ void component_del(struct device *dev, const struct component_ops *ops) } EXPORT_SYMBOL_GPL(component_del); +#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_puts(s, "master name status\n"); + seq_puts(s, "-------------------------------------------------------------\n"); + seq_printf(s, "%-40s %20s\n\n", + dev_name(m->dev), m->bound ? "bound" : "not bound"); + + seq_puts(s, "device name status\n"); + 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("component", NULL); + + if (!component_debugfs_dir) + return -ENOMEM; + + 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 + MODULE_LICENSE("GPL v2"); -- 2.7.4 From 1584130856174921837@xxx Wed Nov 15 11:21:51 +0000 2017 X-GM-THRID: 1584130856174921837 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread