Skip to contentSkip to conversation

Handle space after for_each_* macros gracefully in checkpatch

PATCH In review Andi Kleen 2 participants 2 messages Oct 24, 2008 Checkpatch

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 Handle space after for_each_* macros gracefully in checkpatch

Handle space after for_each_* macros gracefully in checkpatch.pl

Anyone else seeing the irony of checkpatch.pl recommending to use for_each_cpu_mask, but then not actually parsing it correctly.

When you write

	for_each_cpu_mask (...) { 

it would complain about the space between mask and the open bracket because it thinks it's a normal function call.

Fix this in a generic way. In theory someone could construct a normal function that starts with for_each_* and it would not warn, but I think that would be uncommon. The alternative of listing all macros was tried first, but turned out to be unwieldly.

I think I covered most of the common ones available, the only exceptions are a few oddballs with leading prefix like pnp_for_each* or zorro_for_each.

scripts/checkpatch.pl +1 -0
Index: linux-2.6.27-misc/scripts/checkpatch.pl
===================================================================
@@ -1513,6 +1513,7 @@ sub process {
 				if|for|while|switch|return|case|
 				volatile|__volatile__|
 				__attribute__|format|__extension__|
+				([ph]?list_)?for_each_[a-z_]+|
 				asm|__asm__)$/x)
 			{
 
#1 lore raw
Quoted 19 lines · Andi Kleen

Handle space after for_each_* macros gracefully in checkpatch.pl

Anyone else seeing the irony of checkpatch.pl recommending to use for_each_cpu_mask, but then not actually parsing it correctly.

When you write

	for_each_cpu_mask (...) { 

it would complain about the space between mask and the open bracket because it thinks it's a normal function call.

Fix this in a generic way. In theory someone could construct a normal function that starts with for_each_* and it would not warn, but I think that would be uncommon. The alternative of listing all macros was tried first, but turned out to be unwieldly.

Quoted 3 lines

I think I covered most of the common ones available, the only exceptions are a few oddballs with leading prefix like pnp_for_each* or zorro_for_each.

I am happy with this conceptually. However when this was suggested before there was a concensus that that it was not obvious whether this was meant to be written as a function or a control and nothing was done.

So if people are with you on this, I am happy.

-apw