pw_sync_threadx: Disable thread switching in the ISL

Updates the pw::sync::InterruptSpinLock implementation for ThreadX
to disable thread switching if not in an interrupt by raising the
preemption threshold. This way there's no risk that the current
thread gets switched out to another which recursively attempts to
grab the same lock.

This also changes the internal state to use a plain bool instead
of an atomic bool as an atomic is not necessary.

Change-Id: Id02869e66abaee956d1275dc181d1c14777c9cbe
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/50463
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
4 files changed
tree: 3a43b99ce98b8fca474c08ea88f33bc1d2eb5883
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_arduino_build/
  7. pw_assert/
  8. pw_assert_basic/
  9. pw_assert_log/
  10. pw_base64/
  11. pw_bloat/
  12. pw_blob_store/
  13. pw_boot_armv7m/
  14. pw_build/
  15. pw_bytes/
  16. pw_checksum/
  17. pw_chrono/
  18. pw_chrono_embos/
  19. pw_chrono_freertos/
  20. pw_chrono_stl/
  21. pw_chrono_threadx/
  22. pw_cli/
  23. pw_console/
  24. pw_containers/
  25. pw_cpu_exception/
  26. pw_cpu_exception_cortex_m/
  27. pw_docgen/
  28. pw_doctor/
  29. pw_env_setup/
  30. pw_function/
  31. pw_fuzzer/
  32. pw_hdlc/
  33. pw_hex_dump/
  34. pw_i2c/
  35. pw_interrupt/
  36. pw_interrupt_cortex_m/
  37. pw_kvs/
  38. pw_libc/
  39. pw_log/
  40. pw_log_basic/
  41. pw_log_multisink/
  42. pw_log_null/
  43. pw_log_rpc/
  44. pw_log_sink/
  45. pw_log_tokenized/
  46. pw_malloc/
  47. pw_malloc_freelist/
  48. pw_metric/
  49. pw_minimal_cpp_stdlib/
  50. pw_module/
  51. pw_multisink/
  52. pw_package/
  53. pw_persistent_ram/
  54. pw_polyfill/
  55. pw_preprocessor/
  56. pw_presubmit/
  57. pw_protobuf/
  58. pw_protobuf_compiler/
  59. pw_random/
  60. pw_result/
  61. pw_ring_buffer/
  62. pw_router/
  63. pw_rpc/
  64. pw_snapshot/
  65. pw_span/
  66. pw_status/
  67. pw_stm32cube_build/
  68. pw_stream/
  69. pw_string/
  70. pw_sync/
  71. pw_sync_baremetal/
  72. pw_sync_embos/
  73. pw_sync_freertos/
  74. pw_sync_stl/
  75. pw_sync_threadx/
  76. pw_sys_io/
  77. pw_sys_io_arduino/
  78. pw_sys_io_baremetal_lm3s6965evb/
  79. pw_sys_io_baremetal_stm32f429/
  80. pw_sys_io_stdio/
  81. pw_target_runner/
  82. pw_thread/
  83. pw_thread_embos/
  84. pw_thread_freertos/
  85. pw_thread_stl/
  86. pw_thread_threadx/
  87. pw_tls_client/
  88. pw_tokenizer/
  89. pw_tool/
  90. pw_toolchain/
  91. pw_trace/
  92. pw_trace_tokenized/
  93. pw_transfer/
  94. pw_unit_test/
  95. pw_varint/
  96. pw_watch/
  97. pw_web_ui/
  98. targets/
  99. third_party/
  100. .bazelignore
  101. .bazelrc
  102. .clang-format
  103. .eslintrc.json
  104. .gitattributes
  105. .gitignore
  106. .gn
  107. .prettierrc.js
  108. .pylintrc
  109. activate.bat
  110. AUTHORS
  111. bootstrap.bat
  112. bootstrap.sh
  113. BUILD
  114. BUILD.gn
  115. BUILDCONFIG.gn
  116. CMakeLists.txt
  117. LICENSE
  118. modules.gni
  119. OWNERS
  120. package.json
  121. PW_PLUGINS
  122. README.md
  123. tsconfig.json
  124. WORKSPACE
  125. yarn.lock
README.md

See our website: http://pigweed.dev