NAME
kcov_remote_register
,
kcov_remote_unregister
,
kcov_remote_enter
,
kcov_remote_leave
—
remote kernel code coverage collection
interface
SYNOPSIS
#include
<sys/kcov.h>
void
kcov_remote_register
(int
subsystem, void
*id);
void
kcov_remote_unregister
(int
subsystem, void
*id);
void
kcov_remote_enter
(int
subsystem, void
*id);
void
kcov_remote_leave
(int
subsystem, void
*id);
DESCRIPTION
These functions provide an interface to collect code coverage from various kernel subsystems using kcov(4). The subsystem must be one of the following:
#define KCOV_REMOTE_COMMON
0
The id must be a unique identifier for a resource tied to subsystem that is known both by kernel and user space. For instance, a network interface driver could form a subsystem using the unique interface identifier as the id.
kcov_remote_register
()
registers a new instance of the given subsystem.
Calling this function more than once with the same arguments is
idempotent.
kcov_remote_unregister
()
unregisters an existing instance of the given
subsystem, if present. If one or many threads are
currently within a remote section,
kcov_remote_unregister
() will sleep until all the
sections have been left.
kcov_remote_enter
()
enters a remote section. If the current thread has
kcov(4) enabled, code coverage will collected inside the remote
section. Remote sections may not be nested.
kcov_remote_leave
()
leaves a remote section.
CONTEXT
kcov_remote_register
() and
kcov_remote_unregister
() can be called from process
context. kcov_remote_enter
() and
kcov_remote_leave
() can be called from interrupt and
process context.
CODE REFERENCES
These functions are implemented in sys/dev/kcov.c.
SEE ALSO
HISTORY
These functions first appeared in OpenBSD 6.8.
AUTHORS
Anton Lindqvist <anton@openbsd.org>