# General configuration options

# Copyright (c) 2017 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menu "POSIX (native) Options"
	depends on ARCH_POSIX

config ARCH
	default "posix"

config ARCH_POSIX_RECOMMENDED_STACK_SIZE
	int
	default 40 if 64BIT
	default 24
	help
	  In bytes, stack size for Zephyr threads meant only for the POSIX
	  architecture.
	  (In this architecture only part of the thread status is kept in the Zephyr
	  thread stack, the real stack is the native underlying pthread stack.
	  Therefore the allocated stack can be limited to this size)

config ARCH_POSIX_LIBFUZZER
	bool "Build fuzz test target"
	help
	  Build the posix app as a LLVM libfuzzer target.  Requires
	  support from the toolchain (currently only clang works, and
	  only on native_posix_64), and should normally be used in
	  concert with some of CONFIG_ASAN/UBSAN/MSAN for validation.
	  The application needs to implement the
	  LLVMFuzzerTestOneInput() entry point, which runs in the host
	  environment "outside" the OS.  See Zephyr documentation and
	  sample and https://llvm.org/docs/LibFuzzer.html for more
	  information.

config ARCH_POSIX_FUZZ_IRQ
	int "OS interrupt via which to deliver fuzz cases"
	default 3
	help
	  When using libfuzzer, new fuzz cases are delivered to Zephyr
	  via interrupts.  The IRQ should be otherwise unused, but can
	  be any value desired by the app.

config ARCH_POSIX_FUZZ_TICKS
	int "Ticks to allow for fuzz case processing"
	default 2
	help
	  Fuzz interrupts are delivered, from the perspective of the
	  OS, at a steady cadence in simulated time.  In general most
	  apps won't require much time to reach an idle state
	  following a unit-test style case, so the default is short to
	  prevent interaction with regular timer workloads.

endmenu
