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

if SAMPLES

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

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_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_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 && 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/connector/connector.txt

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

config SAMPLE_VFIO_MDEV_MTTY
	tristate "Build VFIO mtty example mediated device sample code -- loadable modules only"
	depends on VFIO_MDEV_DEVICE && 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_DEVICE && 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_DEVICE && 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 CONFIG_ANDROID_BINDERFS
	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"
	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.

endif # SAMPLES
