# Copyright 2023 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

menu "pw_thread"

config PIGWEED_THREAD_SLEEP
    bool "Link and set pw_thread.sleep library backend"
    select PIGWEED_CHRONO_SYSTEM_CLOCK
    select PIGWEED_ASSERT
    help
      See :ref:`module-pw_thread` for module details.

config PIGWEED_THREAD_YIELD
    bool "Link and set pw_thread.yield library backend"
    select PIGWEED_ASSERT
    help
      See :ref:`module-pw_thread` for module details.


config PIGWEED_THREAD
    bool "Link and set pw_thread.thread and pw_thread.id backends"
    select PIGWEED_ASSERT
    select PIGWEED_INTERRUPT_CONTEXT
    help
      See :ref:`module-pw_thread` for module details.

config PIGWEED_THREAD_ITERATION
    bool "Link and set pw_thread.thread_iteration backend"
    select PIGWEED_ASSERT
    select PIGWEED_THREAD
    help
      See :ref:`module-pw_thread` for module details.

if PIGWEED_THREAD

config PIGWEED_THREAD_DEFAULT_PRIORITY
  int "Default thread priority"
  default MAIN_THREAD_PRIORITY

config PIGWEED_THREAD_NUM_COOP_PRIORITIES
  int "Number of cooperative thread priorities"
  default NUM_COOP_PRIORITIES
  range 0 NUM_COOP_PRIORITIES

config PIGWEED_THREAD_NUM_PREEMPT_PRIORITIES
  int "Number of preemptible thread priorities"
  default NUM_PREEMPT_PRIORITIES
  range 0 NUM_PREEMPT_PRIORITIES

config PIGWEED_THREAD_MAX_THREAD_NAME_LEN
  int "The maximum length of a Pigweed thread's name"
  default 15
  help
    This name allows modifying the storage size of Pigweed created Zephyr
    thread names. Set to 0 if you don't plan on naming your threads.

config PIGWEED_THREAD_DEFAULT_STACK_SIZE
  int "Size of a standard stack"
  default 1024

config PIGWEED_THREAD_MINIMUM_STACK_SIZE
  int "Minimum stack size"
  default 256

endif # PIGWEED_THREAD

endmenu
