#
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
config CMSIS_RTOS_V2
	bool "CMSIS RTOS v2 API"
	default n
	depends on POLL
	depends on THREAD_NAME
	depends on THREAD_STACK_INFO
	depends on THREAD_MONITOR
	depends on INIT_STACKS
	depends on NUM_PREEMPT_PRIORITIES >= 56
	help
	  This enables CMSIS RTOS v2 API support. This is an OS-integration
	  layer which allows applications using CMSIS RTOS V2 APIs to build
	  on Zephyr.

if CMSIS_RTOS_V2
config CMSIS_V2_THREAD_MAX_COUNT
	int "Maximum thread count in CMSIS RTOS V2 application"
	default 15
	range 0 255
	help
	  Mention max number of threads in CMSIS RTOS V2 compliant application.
	  There's a limitation on the number of threads due to memory
	  related constraints.

config CMSIS_V2_THREAD_DYNAMIC_MAX_COUNT
	int "Maximum dynamic thread count in CMSIS RTOS V2 application"
	default 0
	range 0 255
	help
	  Mention max number of dynamic threads in CMSIS RTOS V2 compliant
	  application. There's a limitation on the number of threads due to memory
	  related constraints. Dynamic threads are a subset of all other CMSIS
	  threads i.e. they also count towards that maximum too.

config CMSIS_V2_THREAD_MAX_STACK_SIZE
	int "Max stack size threads can be allocated in CMSIS RTOS V2 application"
	default 512
	help
	  Mention max stack size threads can be allocated in CMSIS RTOS V2 application.

config CMSIS_V2_THREAD_DYNAMIC_STACK_SIZE
	int "Dynamic stack size threads are allocated in CMSIS RTOS V2 application"
	default 0
	help
	  Mention dynamic stack size threads are allocated in CMSIS RTOS V2 application.

config CMSIS_V2_TIMER_MAX_COUNT
	int "Maximum timer count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention maximum number of timers in CMSIS RTOS V2 compliant application.

config CMSIS_V2_MUTEX_MAX_COUNT
	int "Maximum mutex count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention max number of mutexes in CMSIS RTOS V2 compliant application.

config CMSIS_V2_SEMAPHORE_MAX_COUNT
	int "Maximum semaphore count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention max number of semaphores in CMSIS RTOS V2 compliant application.

config CMSIS_V2_MEM_SLAB_MAX_COUNT
	int "Maximum mem slab count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention maximum number of memory slabs in CMSIS RTOS V2 compliant application.

config CMSIS_V2_MEM_SLAB_MAX_DYNAMIC_SIZE
	int "Maximum dynamic mem slab/pool size in CMSIS RTOS V2 application"
	default 0
	help
	  Mention maximum dynamic size of memory slabs/pools in CMSIS RTOS V2 compliant application.

config CMSIS_V2_MSGQ_MAX_COUNT
	int "Maximum message queue count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention maximum number of message queues in CMSIS RTOS V2 compliant application.

config CMSIS_V2_MSGQ_MAX_DYNAMIC_SIZE
	int "Maximum dynamic message queue size in CMSIS RTOS V2 application"
	default 0
	help
	  Mention maximum dynamic size of message queues in CMSIS RTOS V2 compliant application.

config CMSIS_V2_EVT_FLAGS_MAX_COUNT
	int "Maximum event flags count in CMSIS RTOS V2 application"
	default 5
	range 0 255
	help
	  Mention maximum number of event flags in CMSIS RTOS V2 compliant application.
endif
