# SPDX-License-Identifier: GPL-2.0
menu "Android"

config ANDROID_BINDER_IPC
	bool "Android Binder IPC Driver"
	depends on MMU
	depends on NET
	default n
	help
	  Binder is used in Android for both communication between processes,
	  and remote method invocation.

	  This means one Android process can call a method/routine in another
	  Android process, using Binder to identify, invoke and pass arguments
	  between said processes.

config ANDROID_BINDER_IPC_RUST
	bool "Rust version of Android Binder IPC Driver"
	depends on RUST && MMU && NET && !ANDROID_BINDER_IPC
	help
	  This enables the Rust implementation of the Binder driver.

	  Binder is used in Android for both communication between processes,
	  and remote method invocation.

	  This means one Android process can call a method/routine in another
	  Android process, using Binder to identify, invoke and pass arguments
	  between said processes.

config ANDROID_BINDERFS
	bool "Android Binderfs filesystem"
	depends on ANDROID_BINDER_IPC
	default n
	help
	  Binderfs is a pseudo-filesystem for the Android Binder IPC driver
	  which can be mounted per-ipc namespace allowing to run multiple
	  instances of Android.
	  Each binderfs mount initially only contains a binder-control device.
	  It can be used to dynamically allocate new binder IPC devices via
	  ioctls.

config ANDROID_BINDER_DEVICES
	string "Android Binder devices"
	depends on ANDROID_BINDER_IPC || ANDROID_BINDER_IPC_RUST
	default "binder,hwbinder,vndbinder"
	help
	  Default value for the binder.devices parameter.

	  The binder.devices parameter is a comma-separated list of strings
	  that specifies the names of the binder device nodes that will be
	  created. Each binder device has its own context manager, and is
	  therefore logically separated from the other devices.

config ANDROID_BINDER_ALLOC_KUNIT_TEST
	tristate "KUnit Tests for Android Binder Alloc" if !KUNIT_ALL_TESTS
	depends on ANDROID_BINDER_IPC && KUNIT
	default KUNIT_ALL_TESTS
	help
	  This feature builds the binder alloc KUnit tests.

	  Each test case runs using a pared-down binder_alloc struct and
	  test-specific freelist, which allows this KUnit module to be loaded
	  for testing without interfering with a running system.

endmenu
