e4fc6580b0
The beginning of a set of Rust modules that showcase how Rust modules look like and how to use the abstracted kernel features. It also includes an example of a Rust host program with several modules. These samples also double as tests in the CI. Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com> Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com> Co-developed-by: Finn Behrens <me@kloenk.de> Signed-off-by: Finn Behrens <me@kloenk.de> Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com> Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com> Co-developed-by: Milan Landaverde <milan@mdaverde.com> Signed-off-by: Milan Landaverde <milan@mdaverde.com> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
275 lines
8.5 KiB
Plaintext
275 lines
8.5 KiB
Plaintext
# 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_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
|