Received: by 10.223.164.202 with SMTP id h10csp661234wrb; Wed, 15 Nov 2017 06:03:49 -0800 (PST) X-Google-Smtp-Source: AGs4zMbUD6Ql0I1YJRdNWrP4aCFx0WF9UbGYuW9HRD1Q+wqhRHpwR1KDSK6gCZczcL2GynNOV5oS X-Received: by 10.159.247.136 with SMTP id e8mr14135060pls.335.1510754629512; Wed, 15 Nov 2017 06:03:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510754629; cv=none; d=google.com; s=arc-20160816; b=lmQNkN9MtnM6jYSZdXSymBrym0ChW6rDVh9+d6V2eCgdeSX3lboa6HlZgGN7D2n6ww AOgwV2YpqrLzdKh6JNlX1Rgd1jtzB3YB38u37UOyle/lJhehTWfHtQ9kWqGx5efGiDuh FZXktQAKg+uCk7AUoHd6tmBNhZBobxQJLs0RZSvLisx94ivO7hmYqz1SR8Q8JJRJyIgA 62MzRxiSH9Tr46pscK3xEGndK7o4LXdhzXUchdXa3i+QpyK0ush82oywgUhFbVzu8H/q IoCWFAu7hdrHYx0xuMAJSflOZCSXK48X0cenY/lnqDrfTNVoXN5EeD+9fFc0wpnIiurK yMkw== 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=r+XPAKrRDTrj+v1/Sd9lsraNzbo665F33HWx/qr2RVU=; b=0lAaagvPzdqa+su6wEx/pDh4OQAWtGSmBOM1+iEt/md6SsfKnAN+AtiPfYdYHY1std Bu23IfzLPhwzlgMUOxAF41JuWdt/slW41O8NeNnF22MD4ea7nCyLURNYV7iqPu+jAtVO EzmHhakKQHV90qdm8kl1qEomQtMFHBPUbqN3tS5Klvy2EZJrCoZNRXs8zOWjgmH6P+Vl mAs3MZzXa3WF5+YnVeYfxA7+d+ahhVSIeyZvMe9CTpSAiuVyW/6AN3lfiMrQ4jgeeKS2 aBefawiDBg/0b/m/jDo/dOQxqMesDloY3ypivdtxHLytHfvqT1Ni8a6p1lodPPrQMKI9 Jocg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=pbvCoWUZ; 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 e4si18045889pgq.203.2017.11.15.06.03.36; Wed, 15 Nov 2017 06:03:49 -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=pbvCoWUZ; 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 S932505AbdKOMFn (ORCPT + 90 others); Wed, 15 Nov 2017 07:05:43 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:55286 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752424AbdKOMFi (ORCPT ); Wed, 15 Nov 2017 07:05:38 -0500 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20171115120536euoutp010b8465ec8112184745c6e14eb96e3916~3QOE-2CWw0175301753euoutp01q; Wed, 15 Nov 2017 12:05:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20171115120536euoutp010b8465ec8112184745c6e14eb96e3916~3QOE-2CWw0175301753euoutp01q DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1510747536; bh=r+XPAKrRDTrj+v1/Sd9lsraNzbo665F33HWx/qr2RVU=; h=From:To:Cc:Subject:Date:References:From; b=pbvCoWUZlV/l+0VWbRIMe8y0+QuusWNR27kumAB9E8f36bbV4gzsjFH0Wo2ZdVhTw 6O14cLdtuCsr9g0aDqxyEdUR+rnkWsh9C80IxuDsa8KPpbuUjorZJyxYPt+OripMXr 9fkwEHUE2FeRYcn+t+OOzVsM1o00LhkGQ0sKEOk4= Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20171115120535eucas1p2f1503d4c496b94d0b252d32a7c88e3ae~3QOEVCxYZ2412524125eucas1p24; Wed, 15 Nov 2017 12:05:35 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 3D.E8.12907.F8D2C0A5; Wed, 15 Nov 2017 12:05:35 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20171115120534eucas1p25315c9e71abea9b7be93d66f97406523~3QODrS7U92412524125eucas1p23; Wed, 15 Nov 2017 12:05:34 +0000 (GMT) X-AuditID: cbfec7f1-f793a6d00000326b-2d-5a0c2d8f728a Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id C3.DE.20118.E8D2C0A5; Wed, 15 Nov 2017 12:05:34 +0000 (GMT) Received: from AMDC2075.DIGITAL.local ([106.120.51.25]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OZG00C04K96X910@eusync3.samsung.com>; Wed, 15 Nov 2017 12:05:34 +0000 (GMT) From: Maciej Purski To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , Russell King , Maciej Purski Subject: [PATCH v2] component: add debugfs support Date: Wed, 15 Nov 2017 13:05:26 +0100 Message-id: <1510747526-24831-1-git-send-email-m.purski@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsWy7djPc7r9ujxRButu8Fo0L17PZnF51xw2 iwUvb7FYXOqfyOTA4nH52kVmj/1z17B79G1ZxejxeZNcAEsUl01Kak5mWWqRvl0CV8aVhZuZ C27IVUw/+4CtgXGPZBcjJ4eEgInE1g1PmSFsMYkL99azdTFycQgJLGWUeL5iASOE85lRYvKE k2wwHXuOzYSqWsYo0fVxLiuE859RYsrJw0AtHBxsAloSa9rjQRpEBBQkNvc+A6thFmhjlOg7 uBVskrCAkcTFtTfYQOpZBFQlTqzxADF5BVwk+o+wQ+ySk7h5rpMZpFVC4CarxLarW6GOcJF4 9KaDBcIWlnh1fAtUg4zE5cndUPFqiYtfd0HV10g03t4AVWMt8XnSFrCXmQX4JCZtm84MsldC gFeio00IosRDort1FiOE7Sgx69Z2sFYhgViJe+cfsk1glFrAyLCKUSS1tDg3PbXYSK84Mbe4 NC9dLzk/dxMjMMpO/zv+cQfj+xNWhxgFOBiVeHgzlLmjhFgTy4orcw8xSnAwK4nwJvcDhXhT EiurUovy44tKc1KLDzFKc7AoifPaRrVFCgmkJ5akZqemFqQWwWSZODilGhiviXTfOPrLYOti 521L9nZcql4WfmbelejdKvz6LwTez+CZ3xHRf0ByOkMlv49Zxu1IL4cFhoEFdz49Wfma5fuC p8VWje+tNq1dXsKwUyNta2CjU7HU3y62jit3TK04v2R4TVXTC5WfIHPj+4O/VQ+6rkRO0fuu /k3qTeaVdwxh3ZeWPk6OUlitxFKckWioxVxUnAgAp1uDGa4CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCJMWRmVeSWpSXmKPExsVy+t/xq7p9ujxRBr/v61o0L17PZnF51xw2 iwUvb7FYXOqfyOTA4nH52kVmj/1z17B79G1ZxejxeZNcAEsUl01Kak5mWWqRvl0CV8aVhZuZ C27IVUw/+4CtgXGPZBcjJ4eEgInEnmMz2SBsMYkL99YD2VwcQgJLGCUmfrsHlhASaGSSuLTW oYuRg4NNQEtiTXs8SFhEQEFic+8zVpB6ZoE2RomVV3eygCSEBYwkLq69wQZSzyKgKnFijQeI ySvgItF/hB1ilZzEzXOdzBMYuRcwMqxiFEktLc5Nzy020itOzC0uzUvXS87P3cQI9Pu2Yz+3 7GDsehd8iFGAg1GJh1dAkTtKiDWxrLgy9xCjBAezkghvcj9QiDclsbIqtSg/vqg0J7X4EKM0 B4uSOG/vntWRQgLpiSWp2ampBalFMFkmDk6pBsaCw12HJTvv77zJGxy48Pvb9bImyybfuXPp lYrlPLlH10+vLfc5tM372bbDTptFpZeaLGQuWeP38b7xrKDu7Ju6SSFrTgcpcHutT0z327Dx Za2G07UpFkv7jEL7Mj/c5rsq+qErT1hO7JemecX5vP7EnJIGJjX5N6bmbUz3SwpeySv9b8wJ qlBiKc5INNRiLipOBACahLRs9wEAAA== X-CMS-MailID: 20171115120534eucas1p25315c9e71abea9b7be93d66f97406523 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20171115120534eucas1p25315c9e71abea9b7be93d66f97406523 X-RootMTR: 20171115120534eucas1p25315c9e71abea9b7be93d66f97406523 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 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 | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/drivers/base/component.c b/drivers/base/component.c index 89b032f..8745ad9 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,85 @@ 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("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 + static struct master *__master_find(struct device *dev, const struct component_master_ops *ops) { @@ -290,6 +371,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 +405,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 1584160595900334137@xxx Wed Nov 15 19:14:33 +0000 2017 X-GM-THRID: 1584153253907596517 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread