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 && !UML
	depends on ARCH_SUPPORTS_OPROFILE || ALPHA || ARM || BLACKFIN || IA64 || M32R || PARISC || PPC || S390 || SUPERH || SPARC
	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 && !UML
	depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32
	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
