1 Why we want a copy of kernel headers in tools? 2 ============================================== 3 4 There used to be no copies, with tools/ code u 5 directly. From time to time tools/perf/ broke 6 hacking. At some point Linus complained about 7 adopted the current model. 8 9 The way these headers are used in perf are not 10 including them to compile something. 11 12 There are sometimes used in scripts that conve 13 tables, etc, so some change may break one of t 14 may use some different #define pattern, etc. 15 16 E.g.: 17 18 $ ls -1 tools/perf/trace/beauty/*.sh | head 19 tools/perf/trace/beauty/arch_errno_names.sh 20 tools/perf/trace/beauty/drm_ioctl.sh 21 tools/perf/trace/beauty/fadvise.sh 22 tools/perf/trace/beauty/fsconfig.sh 23 tools/perf/trace/beauty/fsmount.sh 24 $ 25 $ tools/perf/trace/beauty/fadvise.sh 26 static const char *fadvise_advices[] = { 27 [0] = "NORMAL", 28 [1] = "RANDOM", 29 [2] = "SEQUENTIAL", 30 [3] = "WILLNEED", 31 [4] = "DONTNEED", 32 [5] = "NOREUSE", 33 }; 34 $ 35 36 The tools/perf/check-headers.sh script, part o 37 process, points out changes in the original fi 38 39 So its important not to touch the copies in to 40 the original kernel headers, that will be done 41 check-headers.sh inform about the change to th 42 43 Another explanation from Ingo Molnar: 44 It's better than all the alternatives we tried 45 46 - Symbolic links and direct #includes: this w 47 was pushed back on from the kernel side, wh 48 headers and broke them accidentally for ker 49 50 - Duplicate self-defined ABI headers like gli 51 burden, double the chance for mistakes, plu 52 notification mechanism to look at new kerne 53 54 What we are doing now is a third option: 55 56 - A software-enforced copy-on-write mechanism 57 tooling, driven by non-fatal warnings on th 58 kernel headers get modified: 59 60 Warning: Kernel ABI header differences: 61 diff -u tools/include/uapi/drm/i915_drm. 62 diff -u tools/include/uapi/linux/fs.h in 63 diff -u tools/include/uapi/linux/kvm.h i 64 ... 65 66 The tooling policy is to always pick up the 67 and integate them into the tooling build. T 68 notification to tooling maintainers that th 69 side. 70 71 We've been using this for many years now, and 72 works surprisingly well. 73
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.