xref: /openbmc/linux/include/linux/kcov.h (revision b24413180f5600bcb3bb70fbed5cf186b60864bd)
1*b2441318SGreg 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 void kcov_task_init(struct task_struct *t);
125c9a8750SDmitry Vyukov void kcov_task_exit(struct task_struct *t);
135c9a8750SDmitry Vyukov 
145c9a8750SDmitry Vyukov enum kcov_mode {
155c9a8750SDmitry Vyukov 	/* Coverage collection is not enabled yet. */
165c9a8750SDmitry Vyukov 	KCOV_MODE_DISABLED = 0,
175c9a8750SDmitry Vyukov 	/*
185c9a8750SDmitry Vyukov 	 * Tracing coverage collection mode.
195c9a8750SDmitry Vyukov 	 * Covered PCs are collected in a per-task buffer.
205c9a8750SDmitry Vyukov 	 */
215c9a8750SDmitry Vyukov 	KCOV_MODE_TRACE = 1,
225c9a8750SDmitry Vyukov };
235c9a8750SDmitry Vyukov 
245c9a8750SDmitry Vyukov #else
255c9a8750SDmitry Vyukov 
265c9a8750SDmitry Vyukov static inline void kcov_task_init(struct task_struct *t) {}
275c9a8750SDmitry Vyukov static inline void kcov_task_exit(struct task_struct *t) {}
285c9a8750SDmitry Vyukov 
295c9a8750SDmitry Vyukov #endif /* CONFIG_KCOV */
305c9a8750SDmitry Vyukov #endif /* _LINUX_KCOV_H */
31