History

vsprintf: Add %p extension "%pOF" for device tree

90% of the usage of device node's full_name is printing it out in a kernel message. However, storing the full path for every node is wasteful and redundant. With a custom format specifier, we can generate the full path at run-time and eventually remove the full path from every node. For instance typical use is: pr_info("Frobbing node %s\n", node->full_name); Which can be written now as: pr_info("Frobbing node %pOF\n", node); '%pO' is the base specifier to represent kobjects with '%pOF' representing struct device_node. Currently, struct device_node is the only supported type of kobject. More fine-grained control of formatting includes printing the name, flags, path-spec name and others, explained in the documentation entry. Originally written by Pantelis, but pretty much rewrote the core function using existing string/number functions. The 2 passes were unnecessary and have been removed. Also, updated the checkpatch.pl check. The unittest code was written by Grant Likely.

Pantelis Antoniou committed 11 years ago

Commit ce4fecf1 parent 27497e15 files · +234 −2Browse files

Showing the changes to scripts/checkpatch.pl (1 of 5 files). Show all

Unified · Split

scripts/checkpatch.pl+1−1
@@ -5709,7 +5709,7 @@ sub process { · 5708 unmodified lines
5709 for (my $count = $linenr; $count <= $lc; $count++) {5709 for (my $count = $linenr; $count <= $lc; $count++) {
5710 my $fmt = get_quoted_string($lines[$count - 1], raw_line($count, 0));5710 my $fmt = get_quoted_string($lines[$count - 1], raw_line($count, 0));
5711 $fmt =~ s/%%//g;5711 $fmt =~ s/%%//g;
5712 if ($fmt =~ /(\%[\*\d\.]*p(?![\WFfSsBKRraEhMmIiUDdgVCbGN]).)/) {5712 if ($fmt =~ /(\%[\*\d\.]*p(?![\WFfSsBKRraEhMmIiUDdgVCbGNO]).)/) {
5713 $bad_extension = $1;5713 $bad_extension = $1;
5714 last;5714 last;
5715 }5715 }