History log of /openbsd-current/sys/ddb/db_prof.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.5 03-Sep-2021 jasper

add kprobes provider for dt

this allows us to dynamically trace function boundaries with btrace by patching
prologues and epilogues with a breakpoint upon which the handler records the data,
sends it back to userland for btrace to consume.
currently it's hidden behind DDBPROF, and there is still a lot to cleanup and
improve, but basic scripts that observe return codes from a probed function
work.

from Tom Rollet, with various changes by me
feedback and ok mpi@


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.4 11-Aug-2017 nayden

Kernel compilation with DDBPROF enabled fails as db_sym_t is no longer
defined (removed in "Kill db_sym_t." from 2017-05-30 11:39 mpi). This
change fixes the problem.

OK mpi@


Revision tags: OPENBSD_6_1_BASE
# 1.3 08-Feb-2017 guenther

Use ELF_ST_{BIND,TYPE} instead of ELFDEFNNAME(ST_{BIND,TYPE})

ok jca@


# 1.2 06-Feb-2017 mpi

Implement Dynamic Profiling, a ddb(4) based & gprof compatible kernel
profiling framework, for i386.

Code patching is used to enable probes when entering functions. The
probes will call a mcount()-like function to match the behavior of a
GPROF kernel.

A new sysctl knob, ddb.profile, need to be set to 1 in securelevel 0
to be able to use this feature.

ok jasper@, guenther@, mlarkin@


# 1.1 04-Sep-2016 mpi

Introduce Dynamic Profiling, a ddb(4) based & gprof compatible kernel
profiling framework.

Code patching is used to enable probes when entering functions. The
probes will call a mcount()-like function to match the behavior of a
GPROF kernel.

Currently only available on amd64 and guarded under DDBPROF. Support
for other archs will follow soon.

A new sysctl knob, ddb.console, need to be set to 1 in securelevel 0
to be able to use this feature.

Inputs and ok guenther@


Revision tags: OPENBSD_6_2_BASE
# 1.4 11-Aug-2017 nayden

Kernel compilation with DDBPROF enabled fails as db_sym_t is no longer
defined (removed in "Kill db_sym_t." from 2017-05-30 11:39 mpi). This
change fixes the problem.

OK mpi@


Revision tags: OPENBSD_6_1_BASE
# 1.3 08-Feb-2017 guenther

Use ELF_ST_{BIND,TYPE} instead of ELFDEFNNAME(ST_{BIND,TYPE})

ok jca@


# 1.2 06-Feb-2017 mpi

Implement Dynamic Profiling, a ddb(4) based & gprof compatible kernel
profiling framework, for i386.

Code patching is used to enable probes when entering functions. The
probes will call a mcount()-like function to match the behavior of a
GPROF kernel.

A new sysctl knob, ddb.profile, need to be set to 1 in securelevel 0
to be able to use this feature.

ok jasper@, guenther@, mlarkin@


# 1.1 04-Sep-2016 mpi

Introduce Dynamic Profiling, a ddb(4) based & gprof compatible kernel
profiling framework.

Code patching is used to enable probes when entering functions. The
probes will call a mcount()-like function to match the behavior of a
GPROF kernel.

Currently only available on amd64 and guarded under DDBPROF. Support
for other archs will follow soon.

A new sysctl knob, ddb.console, need to be set to 1 in securelevel 0
to be able to use this feature.

Inputs and ok guenther@