| // SPDX-License-Identifier: GPL-2.0 |
| /// Use DEFINE_DEBUGFS_ATTRIBUTE rather than DEFINE_SIMPLE_ATTRIBUTE |
| /// for debugfs files. |
| /// |
| //# Rationale: DEFINE_SIMPLE_ATTRIBUTE + debugfs_create_file() |
| //# imposes some significant overhead as compared to |
| //# DEFINE_DEBUGFS_ATTRIBUTE + debugfs_create_file_unsafe(). |
| // |
| // Copyright (C): 2016 Nicolai Stange |
| // Options: --no-includes |
| // |
| |
| virtual context |
| virtual patch |
| virtual org |
| virtual report |
| |
| @dsa@ |
| declarer name DEFINE_SIMPLE_ATTRIBUTE; |
| identifier dsa_fops; |
| expression dsa_get, dsa_set, dsa_fmt; |
| position p; |
| @@ |
| DEFINE_SIMPLE_ATTRIBUTE@p(dsa_fops, dsa_get, dsa_set, dsa_fmt); |
| |
| @dcf@ |
| expression name, mode, parent, data; |
| identifier dsa.dsa_fops; |
| @@ |
| debugfs_create_file(name, mode, parent, data, &dsa_fops) |
| |
| |
| @context_dsa depends on context && dcf@ |
| declarer name DEFINE_DEBUGFS_ATTRIBUTE; |
| identifier dsa.dsa_fops; |
| expression dsa.dsa_get, dsa.dsa_set, dsa.dsa_fmt; |
| @@ |
| * DEFINE_SIMPLE_ATTRIBUTE(dsa_fops, dsa_get, dsa_set, dsa_fmt); |
| |
| |
| @patch_dcf depends on patch expression@ |
| expression name, mode, parent, data; |
| identifier dsa.dsa_fops; |
| @@ |
| - debugfs_create_file(name, mode, parent, data, &dsa_fops) |
| + debugfs_create_file_unsafe(name, mode, parent, data, &dsa_fops) |
| |
| @patch_dsa depends on patch_dcf && patch@ |
| identifier dsa.dsa_fops; |
| expression dsa.dsa_get, dsa.dsa_set, dsa.dsa_fmt; |
| @@ |
| - DEFINE_SIMPLE_ATTRIBUTE(dsa_fops, dsa_get, dsa_set, dsa_fmt); |
| + DEFINE_DEBUGFS_ATTRIBUTE(dsa_fops, dsa_get, dsa_set, dsa_fmt); |
| |
| |
| @script:python depends on org && dcf@ |
| fops << dsa.dsa_fops; |
| p << dsa.p; |
| @@ |
| msg="%s should be defined with DEFINE_DEBUGFS_ATTRIBUTE" % (fops) |
| coccilib.org.print_todo(p[0], msg) |
| |
| @script:python depends on report && dcf@ |
| fops << dsa.dsa_fops; |
| p << dsa.p; |
| @@ |
| msg="WARNING: %s should be defined with DEFINE_DEBUGFS_ATTRIBUTE" % (fops) |
| coccilib.report.print_report(p[0], msg) |