Re: [PATCH v2] perf clang-format: Add a perf clang-format that overrides some kernel behaviors

From: Ian Rogers

Date: Wed May 20 2026 - 11:43:50 EST


On Mon, Apr 27, 2026 at 11:54 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
>
> In particular, header file ordering is an issue in the tools/perf
> directory given the larger number of depended upon libraries.
>
> The order of header file includes was proposed in:
> https://lore.kernel.org/linux-perf-users/CAP-5=fUitzKwJONTngiW17XkS7kVr2cDS4cDL_HccJKcnR2EgQ@xxxxxxxxxxxxxx/
>
> Sorting headers is desirable to avoid issues like duplicate includes.
>
> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> ---
> v2: Move the .clang-format file under tools/perf rather than tools/.

This change helps format header files in tools/perf, otherwise
following the parent linux clang-format options. Could we land this in
perf-tools-next?

Thanks,
Ian

> ---
> tools/perf/.clang-format | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
> create mode 100644 tools/perf/.clang-format
>
> diff --git a/tools/perf/.clang-format b/tools/perf/.clang-format
> new file mode 100644
> index 000000000000..902b2f7456f6
> --- /dev/null
> +++ b/tools/perf/.clang-format
> @@ -0,0 +1,20 @@
> +BasedOnStyle: InheritParentConfig
> +SortIncludes: true
> +IncludeBlocks: Regroup
> +IncludeCategories:
> + # Implicitly the corresponding header for the C file has Priority 0
> + # C Standard Library Headers
> + - Regex: '^<(assert|complex|ctype|errno|fenv|float|inttypes|iso646|limits|locale|math|setjmp|signal|stdalign|stdarg|stdatomic|stdbool|stddef|stdint|stdio|stdlib|stdnoreturn|string|tgmath|threads|time|uchar|wchar|wctype)\.h>'
> + Priority: 1
> + # OS/System-Specific Headers (directories)
> + - Regex: '^<(sys|linux|asm|arpa|net|netinet|x86_64|machine)/.*>'
> + Priority: 2
> + # OS/System-Specific Headers (POSIX/System flat headers)
> + - Regex: '^<(unistd|pthread|fcntl|dirent|dlfcn|poll|sched|semaphore|spawn|syslog|termios|pwd|grp|netdb|sysexits|err|paths|pty|utmp|resolv|ifaddrs|elf|libelf|gelf)\.h>'
> + Priority: 2
> + # Third-Party Library Headers
> + - Regex: '^<.*>'
> + Priority: 3
> + # Your Project's Other Headers
> + - Regex: '^".*"'
> + Priority: 4
> --
> 2.54.0.545.g6539524ca2-goog
>