pw_sync_threadx: Add optimized ThreadNotification backend

Adds an optimized thread notification backend using tx_thread_sleep
and tx_thread_wait_abort.

Also fills out the missing pw_sync_threadx documentation and adds
an assert to the InterruptSpinLock backend to ensure it's not used
on SMP ports.

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

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links