# SPDX-License-Identifier: GPL-2.0-only
menuconfig SAMPLES
	bool "Sample kernel code"
	help
	  You can build and test sample kernel code here.

if SAMPLES

config SAMPLE_AUXDISPLAY
	bool "auxdisplay sample"
	depends on CC_CAN_LINK

config SAMPLE_TRACE_EVENTS
	tristate "Build trace_events examples -- loadable modules only"
	depends on EVENT_TRACING && m
	help
	  This builds the trace event example module.

config SAMPLE_TRACE_CUSTOM_EVENTS
	tristate "Build custom trace event example -- loadable modules only"
	depends on EVENT_TRACING && m
	help
	  This builds the custom trace event example module.

config SAMPLE_TRACE_PRINTK
        tristate "Build trace_printk module - tests various trace_printk formats"
	depends on EVENT_TRACING && m
	help
	 This builds a module that calls trace_printk() and can be used to
	 test various trace_printk() calls from a module.

config SAMPLE_FTRACE_DIRECT
	tristate "Build register_ftrace_direct() example"
	depends on DYNAMIC_FTRACE_WITH_DIRECT_CALLS && m
	depends on HAVE_SAMPLE_FTRACE_DIRECT
	help
	  This builds an ftrace direct function example
	  that hooks to wake_up_process and prints the parameters.

config SAMPLE_FTRACE_DIRECT_MULTI
	tristate "Build register_ftrace_direct_multi() example"
	depends on DYNAMIC_FTRACE_WITH_DIRECT_CALLS && m
	depends on HAVE_SAMPLE_FTRACE_DIRECT_MULTI
	help
	  This builds an ftrace direct function example
	  that hooks to wake_up_process and schedule, and prints
	  the function addresses.

config SAMPLE_FTRACE_OPS
	tristate "Build custom ftrace ops example"
	depends on FUNCTION_TRACER
	help
	  This builds an ftrace ops example that hooks two functions and
	  measures the time taken to invoke one function a number of times.

config SAMPLE_TRACE_ARRAY
        tristate "Build sample module for kernel access to Ftrace instancess"
	depends on EVENT_TRACING && m
	help
	 This builds a module that demonstrates the use of various APIs to
	 access Ftrace instances from within the kernel.

config SAMPLE_KOBJECT
	tristate "Build kobject examples"
	help
	  This config option will allow you to build a number of
	  different kobject sample modules showing how to use kobjects,
	  ksets, and ktypes properly.

	  If in doubt, say "N" here.

config SAMPLE_KPROBES
	tristate "Build kprobes examples -- loadable modules only"
	depends on KPROBES && m
	help
	  This build several kprobes example modules.

config SAMPLE_KRETPROBES
	tristate "Build kretprobes example -- loadable modules only"
	default m
	depends on SAMPLE_KPROBES && KRETPROBES

config SAMPLE_HW_BREAKPOINT
	tristate "Build kernel hardware breakpoint examples -- loadable module only"
	depends on HAVE_HW_BREAKPOINT && m
	help
	  This builds kernel hardware breakpoint example modules.

config SAMPLE_FPROBE
	tristate "Build fprobe examples -- loadable modules only"
	depends on FPROBE && m
	help
	  This builds a fprobe example module. This module has an option 'symbol'.
	  You can specify a probed symbol or symbols separated with ','.

config SAMPLE_KFIFO
	tristate "Build kfifo examples -- loadable modules only"
	depends on m
	help
	  This config option will allow you to build a number of
	  different kfifo sample modules showing how to use the
	  generic kfifo API.

	  If in doubt, say "N" here.

config SAMPLE_KDB
	tristate "Build kdb command example -- loadable modules only"
	depends on KGDB_KDB && m
	help
	  Build an example of how to dynamically add the hello
	  command to the kdb shell.

config SAMPLE_QMI_CLIENT
	tristate "Build qmi client sample -- loadable modules only"
	depends on m
	depends on ARCH_QCOM
	depends on NET
	select QCOM_QMI_HELPERS
	help
	  Build an QMI client sample driver, which demonstrates how to
	  communicate with a remote QRTR service, using QMI encoded messages.

config SAMPLE_RPMSG_CLIENT
	tristate "Build rpmsg client sample -- loadable modules only"
	depends on RPMSG && m
	help
	  Build an rpmsg client sample driver, which demonstrates how
	  to communicate with an AMP-configured remote processor over
	  the rpmsg bus.

config SAMPLE_LIVEPATCH
	tristate "Build live patching samples -- loadable modules only"
	depends on LIVEPATCH && m
	help
	  Build sample live patch demonstrations.

config SAMPLE_CONFIGFS
	tristate "Build configfs patching sample -- loadable modules only"
	depends on CONFIGFS_FS && m
	help
	  Builds a sample configfs interface.

config SAMPLE_CONNECTOR
	tristate "Build connector sample -- loadable modules only"
	depends on CONNECTOR && HEADERS_INSTALL && m
	help
	  When enabled, this builds both a sample kernel module for
	  the connector interface and a user space tool to communicate
	  with it.
	  See also Documentation/driver-api/connector.rst

config SAMPLE_FANOTIFY_ERROR
	bool "Build fanotify error monitoring sample"
	depends on FANOTIFY && CC_CAN_LINK && HEADERS_INSTALL
	help
	  When enabled, this builds an example code that uses the
	  FAN_FS_ERROR fanotify mechanism to monitor filesystem
	  errors.
	  See also Documentation/admin-guide/filesystem-monitoring.rst.

config SAMPLE_HIDRAW
	bool "hidraw sample"
	depends on CC_CAN_LINK && HEADERS_INSTALL

config SAMPLE_LANDLOCK
	bool "Landlock example"
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build a simple Landlock sandbox manager able to start a process
	  restricted by a user-defined filesystem access control policy.

config SAMPLE_PIDFD
	bool "pidfd sample"
	depends on CC_CAN_LINK && HEADERS_INSTALL

config SAMPLE_SECCOMP
	bool "Build seccomp sample code"
	depends on SECCOMP_FILTER && CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build samples of seccomp filters using various methods of
	  BPF filter construction.

config SAMPLE_TIMER
	bool "Timer sample"
	depends on CC_CAN_LINK && HEADERS_INSTALL

config SAMPLE_UHID
	bool "UHID sample"
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build UHID sample program.

config SAMPLE_VFIO_MDEV_MTTY
	tristate "Build VFIO mtty example mediated device sample code -- loadable modules only"
	depends on VFIO_MDEV && m
	help
	  Build a virtual tty sample driver for use as a VFIO
	  mediated device

config SAMPLE_VFIO_MDEV_MDPY
	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
	depends on VFIO_MDEV && m
	help
	  Build a virtual display sample driver for use as a VFIO
	  mediated device.  It is a simple framebuffer and supports
	  the region display interface (VFIO_GFX_PLANE_TYPE_REGION).

config SAMPLE_VFIO_MDEV_MDPY_FB
	tristate "Build VFIO mdpy example guest fbdev driver -- loadable module only"
	depends on FB && m
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	help
	  Guest fbdev driver for the virtual display sample driver.

config SAMPLE_VFIO_MDEV_MBOCHS
	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
	depends on VFIO_MDEV && m
	select DMA_SHARED_BUFFER
	help
	  Build a virtual display sample driver for use as a VFIO
	  mediated device.  It supports the region display interface
	  (VFIO_GFX_PLANE_TYPE_DMABUF).
	  Emulate enough of qemu stdvga to make bochs-drm.ko happy.
	  That is basically the vram memory bar and the bochs dispi
	  interface vbe registers in the mmio register bar.
	  Specifically it does *not* include any legacy vga stuff.
	  Device looks a lot like "qemu -device secondary-vga".

config SAMPLE_ANDROID_BINDERFS
	bool "Build Android binderfs example"
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Builds a sample program to illustrate the use of the Android binderfs
	  filesystem.

config SAMPLE_VFS
	bool "Build example programs that use new VFS system calls"
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build example userspace programs that use new VFS system calls such
	  as mount API and statx().  Note that this is restricted to the x86
	  arch whilst it accesses system calls that aren't yet in all arches.

config SAMPLE_INTEL_MEI
	bool "Build example program working with intel mei driver"
	depends on INTEL_MEI
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build a sample program to work with mei device.

config SAMPLE_WATCHDOG
	bool "watchdog sample"
	depends on CC_CAN_LINK

config SAMPLE_WATCH_QUEUE
	bool "Build example watch_queue notification API consumer"
	depends on CC_CAN_LINK && HEADERS_INSTALL
	help
	  Build example userspace program to use the new mount_notify(),
	  sb_notify() syscalls and the KEYCTL_WATCH_KEY keyctl() function.

config SAMPLE_CORESIGHT_SYSCFG
	tristate "Build example loadable module for CoreSight config"
	depends on CORESIGHT && m
	help
	  Build an example loadable module that adds new CoreSight features
	  and configuration using the CoreSight system configuration API.
	  This demonstrates how a user may create their own CoreSight
	  configurations and easily load them into the system at runtime.

source "samples/rust/Kconfig"

endif # SAMPLES

config HAVE_SAMPLE_FTRACE_DIRECT
	bool

config HAVE_SAMPLE_FTRACE_DIRECT_MULTI
	bool
