menuconfig INSTRUMENTATION
	bool "Instrumentation Support"
	default y
	---help---
	  Say Y here to get to see options related to performance measurement,
	  system-wide debugging, and testing. This option alone does not add any
	  kernel code.

	  If you say N, all options in this submenu will be skipped and
	  disabled. If you're trying to debug the kernel itself, go see the
	  Kernel Hacking menu.

if INSTRUMENTATION

config PROFILING
	bool "Profiling support (EXPERIMENTAL)"
	help
	  Say Y here to enable the extended profiling support mechanisms used
	  by profilers such as OProfile.

config OPROFILE
	tristate "OProfile system profiling (EXPERIMENTAL)"
	depends on PROFILING
	depends on (ALPHA || ARM || BLACKFIN || X86_32 || IA64 || M32R || MIPS || PARISC || PPC || S390 || SUPERH || SPARC || X86_64) && !UML
	help
	  OProfile is a profiling system capable of profiling the
	  whole system, include the kernel, kernel modules, libraries,
	  and applications.

	  If unsure, say N.

config KPROBES
	bool "Kprobes"
	depends on KALLSYMS && MODULES
	depends on (X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32) && !UML
	help
	  Kprobes allows you to trap at almost any kernel address and
	  execute a callback function.  register_kprobe() establishes
	  a probepoint and specifies the callback.  Kprobes is useful
	  for kernel debugging, non-intrusive instrumentation and testing.
	  If in doubt, say "N".

config MARKERS
	bool "Activate markers"
	help
	  Place an empty function call at each marker site. Can be
	  dynamically changed for a probe function.

endif # INSTRUMENTATION
