Home | History | Annotate | Download | only in gmon
History log of /src/common/lib/libc/gmon/mcount.c
RevisionDateAuthorComments
 1.18  23-Feb-2024  christos fix static unused issue until lint understands attributes better.
 1.17  30-Aug-2021  christos remove lint exclusion
 1.16  14-Aug-2021  ryo Improved the performance of kernel profiling on MULTIPROCESSOR, and possible to get profiling data for each CPU.

In the current implementation, locks are acquired at the entrance of the mcount
internal function, so the higher the number of cores, the more lock conflict
occurs, making profiling performance in a MULTIPROCESSOR environment unusable
and slow. Profiling buffers has been changed to be reserved for each CPU,
improving profiling performance in MP by several to several dozen times.

- Eliminated cpu_simple_lock in mcount internal function, using per-CPU buffers.
- Add ci_gmon member to struct cpu_info of each MP arch.
- Add kern.profiling.percpu node in sysctl tree.
- Add new -c <cpuid> option to kgmon(8) to specify the cpuid, like openbsd.
For compatibility, if the -c option is not specified, the entire system can be
operated as before, and the -p option will get the total profiling data for
all CPUs.
 1.15  14-Aug-2021  ryo don't include "opt_multiprocessor.h" inside an ifdef to work "make depend" properly.
 1.14  27-Aug-2019  kamil Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.
 1.13  28-Feb-2016  christos branches: 1.13.16; 1.13.18;
fix infinite recursion through thr_getspecific
 1.12  11-Jan-2016  christos Put back the rump-disabling of mcount for librump. Otherwise the world
breaks because the mcount assembly code is written to call __mcount via
the PLT.
 1.11  10-Jan-2016  ryo __mcount_lock is moved to MI from MD.
because it is needed for all MULTIPROCESSOR arch, but it is exists only in i386 and amd64.

ok christos@, on tech-kern@
 1.10  20-Mar-2012  matt Remove __P usage.
Convert to C89 prototypes.
 1.9  17-Mar-2012  martin shut up lint
 1.8  05-Jan-2009  pooka branches: 1.8.8;
Temporarily define MCOUNT as a dummy for _RUMPKERNEL to allow build
to proceed - the MD macros use processor instructions unavailable
to userspace and should/could be provided as interfaces.
 1.7  27-Oct-2006  uwe branches: 1.7.2;
Simplify the __attribute__ ifdef mess now that __used does the right
thing for older gccs.
 1.6  26-Oct-2006  uwe Do the used/unused dance under #ifdef KERNEL too. Prevents mcount
from being optimized away when compiling sh3 kernels with profiling
enabled (gcc doesn't see that __mcount, which is written in asm,
refers to it).
 1.5  08-Jan-2006  christos always compile in the userland portion. XXX: We might want to change this
to __no_instrument_function__ like the kernel does.
 1.4  21-Dec-2005  christos conditionally build this on GPROF again.
 1.3  21-Dec-2005  christos make this compile again.
 1.2  21-Dec-2005  christos Build also when GPROF is not defined.
 1.1  20-Dec-2005  christos Merge libkern + libc common files. As requested by core.
 1.7.2.2  27-Oct-2006  uwe Simplify the __attribute__ ifdef mess now that __used does the right
thing for older gccs.
 1.7.2.1  27-Oct-2006  uwe file mcount.c was added on branch newlock2 on 2006-10-27 22:14:14 +0000
 1.8.8.1  17-Apr-2012  yamt sync with head
 1.13.18.1  01-Sep-2019  martin Pull up following revision(s) (requested by kamil in ticket #126):

external/bsd/compiler_rt/lib/clang/lib/netbsd/ubsan_minimal-m64/Makefile: revision 1.3
external/bsd/compiler_rt/lib/clang/lib/netbsd/msan_cxx-m64/Makefile: revision 1.3
external/gpl2/lvm2/lvm2tools.mk: revision 1.5
common/lib/libc/gmon/mcount.c: revision 1.14
Makefile: revision 1.331
share/mk/Makefile: revision 1.51
external/bsd/fetch/lib/Makefile: revision 1.12
external/bsd/compiler_rt/lib/clang/lib/netbsd/asan_cxx-m64/Makefile: revision 1.3
tests/lib/libc/net/Makefile: revision 1.12
external/bsd/compiler_rt/lib/clang/lib/netbsd/ubsan_standalone_cxx-m64/Makefile: revision 1.3
external/bsd/compiler_rt/lib/clang/lib/netbsd/msan-m64/Makefile: revision 1.3
distrib/sets/lists/base/mi: revision 1.1213
share/mk/bsd.lib.mk: revision 1.380
external/bsd/compiler_rt/lib/clang/lib/netbsd/ubsan_standalone-m64/Makefile: revision 1.3
external/bsd/compiler_rt/lib/clang/lib/netbsd/asan-m64/Makefile: revision 1.3
share/mk/bsd.sanitizer.mk: revision 1.1
share/mk/bsd.prog.mk: revision 1.323
external/bsd/compiler_rt/lib/clang/lib/netbsd/tsan-m64/Makefile: revision 1.3
external/bsd/compiler_rt/lib/clang/lib/netbsd/tsan_cxx-m64/Makefile: revision 1.3
lib/libc/gen/sysctlgetmibinfo.c: revision 1.14

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.

Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.
 1.13.16.3  21-Apr-2020  martin Ooops, restore accidently removed files from merge mishap
 1.13.16.2  21-Apr-2020  martin Sync with HEAD
 1.13.16.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed