Thread (17 messages) 17 messages, 11 authors, 2018-01-10

Re: [-next PATCH 2/4] treewide: Use DEVICE_ATTR_RW

From: Julia Lawall <hidden>
Date: 2017-12-20 13:26:32
Also in: alsa-devel, dri-devel, intel-gfx, linux-omap, linux-pm, linux-s390, linux-scsi, linux-serial, linux-usb, lkml, platform-driver-x86


On Wed, 20 Dec 2017, Joe Perches wrote:
On Wed, 2017-12-20 at 10:59 +0100, Greg Kroah-Hartman wrote:
quoted
quoted
quoted
Why you didn't send that patch to the sysfs maintainer is a bit odd...  :)
So here's an opportunity for you:

The sysfs maintainer hasn't added include/linux/sysfs.h to
the list of maintained files...

DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
M:	Greg Kroah-Hartman [off-list ref]
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
S:	Supported
F:	Documentation/kobject.txt
F:	drivers/base/
F:	fs/debugfs/
F:	fs/sysfs/
F:	include/linux/debugfs.h
F:	include/linux/kobj*
F:	lib/kobj*
Heh, good point, but using get_maintainer.pl does put me at the top of
the list that you should be cc:ing:

$ ./scripts/get_maintainer.pl --file include/linux/sysfs.h
Greg Kroah-Hartman [off-list ref] (commit_signer:3/30%,authored:2/3g%,added_lines:7/8ˆ%)
Kate Stewart [off-list ref] (commit_signer:1/33%)
Thomas Gleixner [off-list ref] (commit_signer:1/33%)
Philippe Ombredanne [off-list ref] (commit_signer:1/33%)
Nick Desaulniers [off-list ref] (commit_signer:1/33%,authored:1/33%,added_lines:1/8%,removed_lines:1/10%)
linux-kernel@vger.kernel.org (open list)
The script I use to send patches adds --nogit --nogit-fallback
to copy only listed maintainers because people that send cleanup
patches don't generally like to get random patches.
quoted
quoted
btw: there are many uses of a reversed declaration style of DEVICE_ATTR

Here's another thing that could be done for more DEVICE_ATTR_<FOO> uses.

=> > >
Some DEVICE_ATTR definitions use a reversed static function form from
the typical.  Convert them to use the more common macro form so it is
easier to grep for the style.
[]
quoted
quoted
$ git grep --name-only -w DEVICE_ATTR | \
  xargs perl -i dev_attr_rw_backwards.perl
Ah, nice, I love perl :
That was a bad copy/paste of the script.

The actual script for RW is:

$ cat dev_attr_rw_backwards.perl
local $/;
while (<>) {
    my $file = $_;
    while ($file =~ m/\bDEVICE_ATTR\s*\(\s*(\w+)\s*,/g) {
	my $var = $1;
	if ($file =~ s/\bDEVICE_ATTR\s*\(\s*${var}\s*,\s*\(?(\s*S_IRUGO\s*\|\s*S_IWUSR|\s*S_IWUSR\s*\|\s*S_IRUGO\s*|\s*0644\s*)\)?\s*,\s*show_${var}\s*,\s*store_${var}\s*\)/DEVICE_ATTR_RW(${var})/g) {
	    $file =~ s/\bshow_${var}\b/${var}_show/g;
	    $file =~ s/\bstore_${var}\b/${var}_store/g;
	}
    }
    print $file;
}

There are 3 different perl scripts for rw, ro, and wo.
and these scripts, because of function renaming and
possible reuse of the original function names by other
string concatenated macros, create some bad conversions
so they need some manual cleanups too.

Perhaps coccinelle could do a better job of it, but
likely string concatenation macro uses are going to
be hard to deal with in any case.
I made a rule for this at one point, but there are cases where the
functions have the wrong names, and then these functions may be used
elsewhere.

julia
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help