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_AUXDISPLAY
10	bool "auxdisplay sample"
11	depends on CC_CAN_LINK
12
13config SAMPLE_TRACE_EVENTS
14	tristate "Build trace_events examples -- loadable modules only"
15	depends on EVENT_TRACING && m
16	help
17	  This build trace event example modules.
18
19config SAMPLE_TRACE_PRINTK
20        tristate "Build trace_printk module - tests various trace_printk formats"
21	depends on EVENT_TRACING && m
22	help
23	 This builds a module that calls trace_printk() and can be used to
24	 test various trace_printk() calls from a module.
25
26config SAMPLE_FTRACE_DIRECT
27	tristate "Build register_ftrace_direct() example"
28	depends on DYNAMIC_FTRACE_WITH_DIRECT_CALLS && m
29	depends on HAVE_SAMPLE_FTRACE_DIRECT
30	help
31	  This builds an ftrace direct function example
32	  that hooks to wake_up_process and prints the parameters.
33
34config SAMPLE_FTRACE_DIRECT_MULTI
35	tristate "Build register_ftrace_direct_multi() example"
36	depends on DYNAMIC_FTRACE_WITH_DIRECT_CALLS && m
37	depends on HAVE_SAMPLE_FTRACE_DIRECT_MULTI
38	help
39	  This builds an ftrace direct function example
40	  that hooks to wake_up_process and schedule, and prints
41	  the function addresses.
42
43config SAMPLE_TRACE_ARRAY
44        tristate "Build sample module for kernel access to Ftrace instancess"
45	depends on EVENT_TRACING && m
46	help
47	 This builds a module that demonstrates the use of various APIs to
48	 access Ftrace instances from within the kernel.
49
50config SAMPLE_KOBJECT
51	tristate "Build kobject examples"
52	help
53	  This config option will allow you to build a number of
54	  different kobject sample modules showing how to use kobjects,
55	  ksets, and ktypes properly.
56
57	  If in doubt, say "N" here.
58
59config SAMPLE_KPROBES
60	tristate "Build kprobes examples -- loadable modules only"
61	depends on KPROBES && m
62	help
63	  This build several kprobes example modules.
64
65config SAMPLE_KRETPROBES
66	tristate "Build kretprobes example -- loadable modules only"
67	default m
68	depends on SAMPLE_KPROBES && KRETPROBES
69
70config SAMPLE_HW_BREAKPOINT
71	tristate "Build kernel hardware breakpoint examples -- loadable module only"
72	depends on HAVE_HW_BREAKPOINT && m
73	help
74	  This builds kernel hardware breakpoint example modules.
75
76config SAMPLE_KFIFO
77	tristate "Build kfifo examples -- loadable modules only"
78	depends on m
79	help
80	  This config option will allow you to build a number of
81	  different kfifo sample modules showing how to use the
82	  generic kfifo API.
83
84	  If in doubt, say "N" here.
85
86config SAMPLE_KDB
87	tristate "Build kdb command example -- loadable modules only"
88	depends on KGDB_KDB && m
89	help
90	  Build an example of how to dynamically add the hello
91	  command to the kdb shell.
92
93config SAMPLE_QMI_CLIENT
94	tristate "Build qmi client sample -- loadable modules only"
95	depends on m
96	depends on ARCH_QCOM
97	depends on NET
98	select QCOM_QMI_HELPERS
99	help
100	  Build an QMI client sample driver, which demonstrates how to
101	  communicate with a remote QRTR service, using QMI encoded messages.
102
103config SAMPLE_RPMSG_CLIENT
104	tristate "Build rpmsg client sample -- loadable modules only"
105	depends on RPMSG && m
106	help
107	  Build an rpmsg client sample driver, which demonstrates how
108	  to communicate with an AMP-configured remote processor over
109	  the rpmsg bus.
110
111config SAMPLE_LIVEPATCH
112	tristate "Build live patching samples -- loadable modules only"
113	depends on LIVEPATCH && m
114	help
115	  Build sample live patch demonstrations.
116
117config SAMPLE_CONFIGFS
118	tristate "Build configfs patching sample -- loadable modules only"
119	depends on CONFIGFS_FS && m
120	help
121	  Builds a sample configfs interface.
122
123config SAMPLE_CONNECTOR
124	tristate "Build connector sample -- loadable modules only"
125	depends on CONNECTOR && HEADERS_INSTALL && m
126	help
127	  When enabled, this builds both a sample kernel module for
128	  the connector interface and a user space tool to communicate
129	  with it.
130	  See also Documentation/driver-api/connector.rst
131
132config SAMPLE_FANOTIFY_ERROR
133	bool "Build fanotify error monitoring sample"
134	depends on FANOTIFY && CC_CAN_LINK && HEADERS_INSTALL
135	help
136	  When enabled, this builds an example code that uses the
137	  FAN_FS_ERROR fanotify mechanism to monitor filesystem
138	  errors.
139	  See also Documentation/admin-guide/filesystem-monitoring.rst.
140
141config SAMPLE_HIDRAW
142	bool "hidraw sample"
143	depends on CC_CAN_LINK && HEADERS_INSTALL
144
145config SAMPLE_LANDLOCK
146	bool "Landlock example"
147	depends on CC_CAN_LINK && HEADERS_INSTALL
148	help
149	  Build a simple Landlock sandbox manager able to start a process
150	  restricted by a user-defined filesystem access control policy.
151
152config SAMPLE_PIDFD
153	bool "pidfd sample"
154	depends on CC_CAN_LINK && HEADERS_INSTALL
155
156config SAMPLE_SECCOMP
157	bool "Build seccomp sample code"
158	depends on SECCOMP_FILTER && CC_CAN_LINK && HEADERS_INSTALL
159	help
160	  Build samples of seccomp filters using various methods of
161	  BPF filter construction.
162
163config SAMPLE_TIMER
164	bool "Timer sample"
165	depends on CC_CAN_LINK && HEADERS_INSTALL
166
167config SAMPLE_UHID
168	bool "UHID sample"
169	depends on CC_CAN_LINK && HEADERS_INSTALL
170	help
171	  Build UHID sample program.
172
173config SAMPLE_VFIO_MDEV_MTTY
174	tristate "Build VFIO mtty example mediated device sample code -- loadable modules only"
175	depends on VFIO_MDEV && m
176	help
177	  Build a virtual tty sample driver for use as a VFIO
178	  mediated device
179
180config SAMPLE_VFIO_MDEV_MDPY
181	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
182	depends on VFIO_MDEV && m
183	help
184	  Build a virtual display sample driver for use as a VFIO
185	  mediated device.  It is a simple framebuffer and supports
186	  the region display interface (VFIO_GFX_PLANE_TYPE_REGION).
187
188config SAMPLE_VFIO_MDEV_MDPY_FB
189	tristate "Build VFIO mdpy example guest fbdev driver -- loadable module only"
190	depends on FB && m
191	select FB_CFB_FILLRECT
192	select FB_CFB_COPYAREA
193	select FB_CFB_IMAGEBLIT
194	help
195	  Guest fbdev driver for the virtual display sample driver.
196
197config SAMPLE_VFIO_MDEV_MBOCHS
198	tristate "Build VFIO mdpy example mediated device sample code -- loadable modules only"
199	depends on VFIO_MDEV && m
200	select DMA_SHARED_BUFFER
201	help
202	  Build a virtual display sample driver for use as a VFIO
203	  mediated device.  It supports the region display interface
204	  (VFIO_GFX_PLANE_TYPE_DMABUF).
205	  Emulate enough of qemu stdvga to make bochs-drm.ko happy.
206	  That is basically the vram memory bar and the bochs dispi
207	  interface vbe registers in the mmio register bar.
208	  Specifically it does *not* include any legacy vga stuff.
209	  Device looks a lot like "qemu -device secondary-vga".
210
211config SAMPLE_ANDROID_BINDERFS
212	bool "Build Android binderfs example"
213	depends on CC_CAN_LINK && HEADERS_INSTALL
214	help
215	  Builds a sample program to illustrate the use of the Android binderfs
216	  filesystem.
217
218config SAMPLE_VFS
219	bool "Build example programs that use new VFS system calls"
220	depends on CC_CAN_LINK && HEADERS_INSTALL
221	help
222	  Build example userspace programs that use new VFS system calls such
223	  as mount API and statx().  Note that this is restricted to the x86
224	  arch whilst it accesses system calls that aren't yet in all arches.
225
226config SAMPLE_INTEL_MEI
227	bool "Build example program working with intel mei driver"
228	depends on INTEL_MEI
229	depends on CC_CAN_LINK && HEADERS_INSTALL
230	help
231	  Build a sample program to work with mei device.
232
233config SAMPLE_WATCHDOG
234	bool "watchdog sample"
235	depends on CC_CAN_LINK
236
237config SAMPLE_WATCH_QUEUE
238	bool "Build example watch_queue notification API consumer"
239	depends on CC_CAN_LINK && HEADERS_INSTALL
240	help
241	  Build example userspace program to use the new mount_notify(),
242	  sb_notify() syscalls and the KEYCTL_WATCH_KEY keyctl() function.
243
244endif # SAMPLES
245
246config HAVE_SAMPLE_FTRACE_DIRECT
247	bool
248
249config HAVE_SAMPLE_FTRACE_DIRECT_MULTI
250	bool
251