xref: /openbmc/linux/include/linux/kcov.h (revision ded97d2c2b2c5f1dcced0bc57133f7753b037dfc)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
25c9a8750SDmitry Vyukov #ifndef _LINUX_KCOV_H
35c9a8750SDmitry Vyukov #define _LINUX_KCOV_H
45c9a8750SDmitry Vyukov 
55c9a8750SDmitry Vyukov #include <uapi/linux/kcov.h>
65c9a8750SDmitry Vyukov 
75c9a8750SDmitry Vyukov struct task_struct;
85c9a8750SDmitry Vyukov 
95c9a8750SDmitry Vyukov #ifdef CONFIG_KCOV
105c9a8750SDmitry Vyukov 
115c9a8750SDmitry Vyukov enum kcov_mode {
125c9a8750SDmitry Vyukov 	/* Coverage collection is not enabled yet. */
135c9a8750SDmitry Vyukov 	KCOV_MODE_DISABLED = 0,
14*ded97d2cSVictor Chibotaru 	/* KCOV was initialized, but tracing mode hasn't been chosen yet. */
15*ded97d2cSVictor Chibotaru 	KCOV_MODE_INIT = 1,
165c9a8750SDmitry Vyukov 	/*
175c9a8750SDmitry Vyukov 	 * Tracing coverage collection mode.
185c9a8750SDmitry Vyukov 	 * Covered PCs are collected in a per-task buffer.
195c9a8750SDmitry Vyukov 	 */
20*ded97d2cSVictor Chibotaru 	KCOV_MODE_TRACE_PC = 2,
21*ded97d2cSVictor Chibotaru 	/* Collecting comparison operands mode. */
22*ded97d2cSVictor Chibotaru 	KCOV_MODE_TRACE_CMP = 3,
235c9a8750SDmitry Vyukov };
245c9a8750SDmitry Vyukov 
25*ded97d2cSVictor Chibotaru void kcov_task_init(struct task_struct *t);
26*ded97d2cSVictor Chibotaru void kcov_task_exit(struct task_struct *t);
27*ded97d2cSVictor Chibotaru 
285c9a8750SDmitry Vyukov #else
295c9a8750SDmitry Vyukov 
305c9a8750SDmitry Vyukov static inline void kcov_task_init(struct task_struct *t) {}
315c9a8750SDmitry Vyukov static inline void kcov_task_exit(struct task_struct *t) {}
325c9a8750SDmitry Vyukov 
335c9a8750SDmitry Vyukov #endif /* CONFIG_KCOV */
345c9a8750SDmitry Vyukov #endif /* _LINUX_KCOV_H */
35