# Copyright (c) 2017 Intel Corporation
# Copyright (c) 2023 Meta
# Copyright (c) 2024 Tenstorrent
#
# SPDX-License-Identifier: Apache-2.0

menuconfig POSIX_BARRIERS
	bool "POSIX barriers"
	help
	  Select 'y' here to enable POSIX barriers.

	  For more information please see
	  https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html

if POSIX_BARRIERS

config MAX_PTHREAD_BARRIER_COUNT
	int "Maximum number of POSIX barriers"
	default 5
	help
	  Maximum simultaneously active pthread_barrier_t in a POSIX application.

	  Note: this is a non-standard option.

config PTHREAD_CREATE_BARRIER
	bool "Use a POSIX barrier to serialize pthread_create()"
	help
	  When running several SMP applications in parallel instances of Qemu,
	  e.g. via twister, explicit serialization may be required between
	  pthread_create() and zephyr_thread_wrapper() when spawning and joining
	  many pthreads concurrently.

	  On such systems, say Y here to introduce explicit serialization
	  via pthread_barrier_wait().

module = PTHREAD_BARRIER
module-str = POSIX thread barriers
source "subsys/logging/Kconfig.template.log_config"

endif # POSIX_BARRIERS
