1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig SAMPLES
3	bool "Sample kernel code"
4	help
5	  You can build and test sample kernel code here.
6
7if SAMPLES
8
9config SAMPLE_TRACE_EVENTS
10	tristate "Build trace_events examples -- loadable modules only"
11	depends on EVENT_TRACING && m
12	help
13	  This build trace event example modules.
14
15config SAMPLE_TRACE_PRINTK
16        tristate "Build trace_printk module - tests various trace_printk formats"
17	depends on EVENT_TRACING && m
18	help
19	 This builds a module that calls trace_printk() and can be used to
20	 test various trace_printk() calls from a module.
21
22config SAMPLE_KOBJECT
23	tristate "Build kobject examples"
24	help
25	  This config option will allow you to build a number of
26	  different kobject sample modules showing how to use kobjects,
27	  ksets, and ktypes properly.
28
29	  If in doubt, say "N" here.
30
31config SAMPLE_KPROBES
32	tristate "Build kprobes examples -- loadable modules only"
33	depends on KPROBES && m
34	help
35	  This build several kprobes example modules.
36
37config SAMPLE_KRETPROBES
38	tristate "Build kretprobes example -- loadable modules only"
39	default m
40	depends on SAMPLE_KPROBES && KRETPROBES
41
42config SAMPLE_HW_BREAKPOINT
43	tristate "Build kernel hardware breakpoint examples -- loadable module only"
44	depends on HAVE_HW_BREAKPOINT && m
45	help
46	  This builds kernel hardware breakpoint example modules.
47
48config SAMPLE_KFIFO
49	tristate "Build kfifo examples -- loadable modules only"
50	depends on m
51	help
52	  This config option will allow you to build a number of
53	  different kfifo sample modules showing how to use the
54	  generic kfifo API.
55
56	  If in doubt, say "N" here.
57
58config SAMPLE_KDB
59	tristate "Build kdb command example -- loadable modules only"
60	depends on KGDB_KDB && m
61	help
62	  Build an example of how to dynamically add the hello
63	  command to the kdb shell.
64
65config SAMPLE_QMI_CLIENT
66	tristate "Build qmi client sample -- loadable modules only"
67	depends on m
68	depends on ARCH_QCOM
69	depends on NET
70	select QCOM_QMI_HELPERS
71	help
72	  Build an QMI client sample driver, which demonstrates how to
73	  communicate with a remote QRTR service, using QMI encoded messages.
74
75config SAMPLE_RPMSG_CLIENT
76	tristate "Build rpmsg client sample -- loadable modules only"
77	depends on RPMSG && m
78	help
79	  Build an rpmsg client sample driver, which demonstrates how
80	  to communicate with an AMP-configured remote processor over
81	  the rpmsg bus.
82
83config SAMPLE_LIVEPATCH
84	tristate "Build live patching samples -- loadable modules only"
85	depends on LIVEPATCH && m
86	help
87	  Build sample live patch demonstrations.
88
89config SAMPLE_CONFIGFS
90	tristate "Build configfs patching sample -- loadable modules only"
91	depends on CONFIGFS_FS && m
92	help
93	  Builds a sample configfs interface.
94
95config SAMPLE_CONNECTOR
96	tristate "Build connector sample -- loadable modules only"
97	depends on CONNECTOR && HEADERS_INSTALL && m
98	help
99	  When enabled, this builds both a sample kernel module for
100	  the connector interface and a user space tool to communicate
101	  with it.
102	  See also Documentation/driver-api/connector.rst
103
104config SAMPLE_HIDRAW
105	bool "hidraw sample"
106	depends on HEADERS_INSTALL
107
108config SAMPLE_PIDFD
109	bool "pidfd sample"
110	depends on HEADERS_INSTALL
111
112config SAMPLE_SECCOMP
113	bool "Build seccomp sample code"
114	depends on SECCOMP_FILTER && HEADERS_INSTALL
115	help
116	  Build samples of seccomp filters using various methods of
117	  BPF filter construction.
118
119config SAMPLE_VFIO_MDEV_MTTY
120	tristate "Build VFIO mtty example mediated device sample code -- loadable modules only"
121	depends on VFIO_MDEV_DEVICE && m
122	help
123	  Build a virtual tty sample driver for use as a VFIO
124	  mediated device
125
126config SAMPLE_VFIO_MDEV_MDPY
127	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
128	depends on VFIO_MDEV_DEVICE && m
129	help
130	  Build a virtual display sample driver for use as a VFIO
131	  mediated device.  It is a simple framebuffer and supports
132	  the region display interface (VFIO_GFX_PLANE_TYPE_REGION).
133
134config SAMPLE_VFIO_MDEV_MDPY_FB
135	tristate "Build VFIO mdpy example guest fbdev driver -- loadable module only"
136	depends on FB && m
137	select FB_CFB_FILLRECT
138	select FB_CFB_COPYAREA
139	select FB_CFB_IMAGEBLIT
140	help
141	  Guest fbdev driver for the virtual display sample driver.
142
143config SAMPLE_VFIO_MDEV_MBOCHS
144	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
145	depends on VFIO_MDEV_DEVICE && m
146	select DMA_SHARED_BUFFER
147	help
148	  Build a virtual display sample driver for use as a VFIO
149	  mediated device.  It supports the region display interface
150	  (VFIO_GFX_PLANE_TYPE_DMABUF).
151	  Emulate enough of qemu stdvga to make bochs-drm.ko happy.
152	  That is basically the vram memory bar and the bochs dispi
153	  interface vbe registers in the mmio register bar.
154	  Specifically it does *not* include any legacy vga stuff.
155	  Device looks a lot like "qemu -device secondary-vga".
156
157config SAMPLE_ANDROID_BINDERFS
158	bool "Build Android binderfs example"
159	depends on CONFIG_ANDROID_BINDERFS
160	help
161	  Builds a sample program to illustrate the use of the Android binderfs
162	  filesystem.
163
164config SAMPLE_VFS
165	bool "Build example programs that use new VFS system calls"
166	depends on HEADERS_INSTALL
167	help
168	  Build example userspace programs that use new VFS system calls such
169	  as mount API and statx().  Note that this is restricted to the x86
170	  arch whilst it accesses system calls that aren't yet in all arches.
171
172endif # SAMPLES
173