pw_sync_embos: Disable task switching in the ISL

Updates the pw::sync::InterruptSpinLock implementation for embOS to
disable task switching if not in an interrupt. This way there's no
risk that the current task 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: Ic30bdbee2b298398056d0e5dcdae878ac681f95d
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/50462
Reviewed-by: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
3 files changed
tree: fc14185f9208d5808d71000167c2b5e0009ddce0
  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