diff options
author | Jonathan Corbet <corbet@lwn.net> | 2016-08-07 17:13:00 -0400 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2016-08-18 19:41:27 -0400 |
commit | 758f726e7f7c5a09d8627e6e6ad914e568b31a5c (patch) | |
tree | 9a2c1a7b211ab46de6f93ab15ded3a5bd5ba15fa | |
parent | d228af5bcb60fda50f8b3a100c0539c4994df040 (diff) |
docs: sphinxify kcov.txt and move to dev-tools
Another document added to the dev-tools collection.
Cc: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
-rw-r--r-- | Documentation/dev-tools/kcov.rst (renamed from Documentation/kcov.txt) | 84 | ||||
-rw-r--r-- | Documentation/dev-tools/tools.rst | 1 |
2 files changed, 43 insertions, 42 deletions
diff --git a/Documentation/kcov.txt b/Documentation/dev-tools/kcov.rst index 779ff4ab1c1d..aca0e27ca197 100644 --- a/Documentation/kcov.txt +++ b/Documentation/dev-tools/kcov.rst | |||
@@ -12,38 +12,38 @@ To achieve this goal it does not collect coverage in soft/hard interrupts | |||
12 | and instrumentation of some inherently non-deterministic parts of kernel is | 12 | and instrumentation of some inherently non-deterministic parts of kernel is |
13 | disbled (e.g. scheduler, locking). | 13 | disbled (e.g. scheduler, locking). |
14 | 14 | ||
15 | Usage: | 15 | Usage |
16 | ====== | 16 | ----- |
17 | 17 | ||
18 | Configure kernel with: | 18 | Configure the kernel with:: |
19 | 19 | ||
20 | CONFIG_KCOV=y | 20 | CONFIG_KCOV=y |
21 | 21 | ||
22 | CONFIG_KCOV requires gcc built on revision 231296 or later. | 22 | CONFIG_KCOV requires gcc built on revision 231296 or later. |
23 | Profiling data will only become accessible once debugfs has been mounted: | 23 | Profiling data will only become accessible once debugfs has been mounted:: |
24 | 24 | ||
25 | mount -t debugfs none /sys/kernel/debug | 25 | mount -t debugfs none /sys/kernel/debug |
26 | 26 | ||
27 | The following program demonstrates kcov usage from within a test program: | 27 | The following program demonstrates kcov usage from within a test program:: |
28 | 28 | ||
29 | #include <stdio.h> | 29 | #include <stdio.h> |
30 | #include <stddef.h> | 30 | #include <stddef.h> |
31 | #include <stdint.h> | 31 | #include <stdint.h> |
32 | #include <stdlib.h> | 32 | #include <stdlib.h> |
33 | #include <sys/types.h> | 33 | #include <sys/types.h> |
34 | #include <sys/stat.h> | 34 | #include <sys/stat.h> |
35 | #include <sys/ioctl.h> | 35 | #include <sys/ioctl.h> |
36 | #include <sys/mman.h> | 36 | #include <sys/mman.h> |
37 | #include <unistd.h> | 37 | #include <unistd.h> |
38 | #include <fcntl.h> | 38 | #include <fcntl.h> |
39 | 39 | ||
40 | #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) | 40 | #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) |
41 | #define KCOV_ENABLE _IO('c', 100) | 41 | #define KCOV_ENABLE _IO('c', 100) |
42 | #define KCOV_DISABLE _IO('c', 101) | 42 | #define KCOV_DISABLE _IO('c', 101) |
43 | #define COVER_SIZE (64<<10) | 43 | #define COVER_SIZE (64<<10) |
44 | 44 | ||
45 | int main(int argc, char **argv) | 45 | int main(int argc, char **argv) |
46 | { | 46 | { |
47 | int fd; | 47 | int fd; |
48 | unsigned long *cover, n, i; | 48 | unsigned long *cover, n, i; |
49 | 49 | ||
@@ -83,24 +83,24 @@ int main(int argc, char **argv) | |||
83 | if (close(fd)) | 83 | if (close(fd)) |
84 | perror("close"), exit(1); | 84 | perror("close"), exit(1); |
85 | return 0; | 85 | return 0; |
86 | } | 86 | } |
87 | 87 | ||
88 | After piping through addr2line output of the program looks as follows: | 88 | After piping through addr2line output of the program looks as follows:: |
89 | 89 | ||
90 | SyS_read | 90 | SyS_read |
91 | fs/read_write.c:562 | 91 | fs/read_write.c:562 |
92 | __fdget_pos | 92 | __fdget_pos |
93 | fs/file.c:774 | 93 | fs/file.c:774 |
94 | __fget_light | 94 | __fget_light |
95 | fs/file.c:746 | 95 | fs/file.c:746 |
96 | __fget_light | 96 | __fget_light |
97 | fs/file.c:750 | 97 | fs/file.c:750 |
98 | __fget_light | 98 | __fget_light |
99 | fs/file.c:760 | 99 | fs/file.c:760 |
100 | __fdget_pos | 100 | __fdget_pos |
101 | fs/file.c:784 | 101 | fs/file.c:784 |
102 | SyS_read | 102 | SyS_read |
103 | fs/read_write.c:562 | 103 | fs/read_write.c:562 |
104 | 104 | ||
105 | If a program needs to collect coverage from several threads (independently), | 105 | If a program needs to collect coverage from several threads (independently), |
106 | it needs to open /sys/kernel/debug/kcov in each thread separately. | 106 | it needs to open /sys/kernel/debug/kcov in each thread separately. |
diff --git a/Documentation/dev-tools/tools.rst b/Documentation/dev-tools/tools.rst index d4bbda319e79..9dcd0236a1ff 100644 --- a/Documentation/dev-tools/tools.rst +++ b/Documentation/dev-tools/tools.rst | |||
@@ -16,3 +16,4 @@ whole; patches welcome! | |||
16 | 16 | ||
17 | coccinelle | 17 | coccinelle |
18 | sparse | 18 | sparse |
19 | kcov | ||