pw_allocator: Refactor SplitFreeListAllocator to use Block

This CL replaces `SplitFreeListAllocator`s custom `FreeBlock` with the
existing `Block`. It keeps track of the first and last free blocks, so
that both large and small candidate blocks can be found quickly.

Change-Id: I3ca702d93109666542abc442c315e9efe0b4250c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176579
Commit-Queue: Aaron Green <aarongreen@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
11 files changed
tree: 9131269b31c1a1b9b1ceffb987f960b9d16096b0
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. kudzu/
  7. pw_alignment/
  8. pw_allocator/
  9. pw_analog/
  10. pw_android_toolchain/
  11. pw_arduino_build/
  12. pw_assert/
  13. pw_assert_basic/
  14. pw_assert_log/
  15. pw_assert_tokenized/
  16. pw_assert_zephyr/
  17. pw_async/
  18. pw_async_basic/
  19. pw_base64/
  20. pw_bloat/
  21. pw_blob_store/
  22. pw_bluetooth/
  23. pw_bluetooth_hci/
  24. pw_bluetooth_profiles/
  25. pw_boot/
  26. pw_boot_cortex_m/
  27. pw_build/
  28. pw_build_info/
  29. pw_build_mcuxpresso/
  30. pw_bytes/
  31. pw_checksum/
  32. pw_chre/
  33. pw_chrono/
  34. pw_chrono_embos/
  35. pw_chrono_freertos/
  36. pw_chrono_rp2040/
  37. pw_chrono_stl/
  38. pw_chrono_threadx/
  39. pw_chrono_zephyr/
  40. pw_cli/
  41. pw_compilation_testing/
  42. pw_console/
  43. pw_containers/
  44. pw_cpu_exception/
  45. pw_cpu_exception_cortex_m/
  46. pw_crypto/
  47. pw_digital_io/
  48. pw_digital_io_mcuxpresso/
  49. pw_digital_io_rp2040/
  50. pw_docgen/
  51. pw_doctor/
  52. pw_emu/
  53. pw_env_setup/
  54. pw_file/
  55. pw_function/
  56. pw_fuzzer/
  57. pw_hdlc/
  58. pw_hex_dump/
  59. pw_i2c/
  60. pw_i2c_linux/
  61. pw_i2c_mcuxpresso/
  62. pw_ide/
  63. pw_interrupt/
  64. pw_interrupt_cortex_m/
  65. pw_interrupt_xtensa/
  66. pw_interrupt_zephyr/
  67. pw_intrusive_ptr/
  68. pw_kvs/
  69. pw_libc/
  70. pw_log/
  71. pw_log_android/
  72. pw_log_basic/
  73. pw_log_null/
  74. pw_log_rpc/
  75. pw_log_string/
  76. pw_log_tokenized/
  77. pw_log_zephyr/
  78. pw_malloc/
  79. pw_malloc_freelist/
  80. pw_metric/
  81. pw_minimal_cpp_stdlib/
  82. pw_module/
  83. pw_multibuf/
  84. pw_multisink/
  85. pw_package/
  86. pw_perf_test/
  87. pw_persistent_ram/
  88. pw_polyfill/
  89. pw_preprocessor/
  90. pw_presubmit/
  91. pw_protobuf/
  92. pw_protobuf_compiler/
  93. pw_random/
  94. pw_result/
  95. pw_ring_buffer/
  96. pw_router/
  97. pw_rpc/
  98. pw_rpc_transport/
  99. pw_rust/
  100. pw_snapshot/
  101. pw_software_update/
  102. pw_span/
  103. pw_spi/
  104. pw_spi_mcuxpresso/
  105. pw_status/
  106. pw_stm32cube_build/
  107. pw_stream/
  108. pw_stream_shmem_mcuxpresso/
  109. pw_stream_uart_linux/
  110. pw_stream_uart_mcuxpresso/
  111. pw_string/
  112. pw_symbolizer/
  113. pw_sync/
  114. pw_sync_baremetal/
  115. pw_sync_embos/
  116. pw_sync_freertos/
  117. pw_sync_stl/
  118. pw_sync_threadx/
  119. pw_sync_zephyr/
  120. pw_sys_io/
  121. pw_sys_io_ambiq_sdk/
  122. pw_sys_io_arduino/
  123. pw_sys_io_baremetal_lm3s6965evb/
  124. pw_sys_io_baremetal_stm32f429/
  125. pw_sys_io_emcraft_sf2/
  126. pw_sys_io_mcuxpresso/
  127. pw_sys_io_rp2040/
  128. pw_sys_io_stdio/
  129. pw_sys_io_stm32cube/
  130. pw_sys_io_zephyr/
  131. pw_system/
  132. pw_target_runner/
  133. pw_thread/
  134. pw_thread_embos/
  135. pw_thread_freertos/
  136. pw_thread_stl/
  137. pw_thread_threadx/
  138. pw_thread_zephyr/
  139. pw_tls_client/
  140. pw_tls_client_boringssl/
  141. pw_tls_client_mbedtls/
  142. pw_tokenizer/
  143. pw_tool/
  144. pw_toolchain/
  145. pw_toolchain_bazel/
  146. pw_trace/
  147. pw_trace_tokenized/
  148. pw_transfer/
  149. pw_unit_test/
  150. pw_unit_test_zephyr/
  151. pw_varint/
  152. pw_watch/
  153. pw_web/
  154. pw_work_queue/
  155. seed/
  156. targets/
  157. third_party/
  158. ts/
  159. zephyr/
  160. .bazelignore
  161. .bazelrc
  162. .black.toml
  163. .clang-format
  164. .clang-tidy
  165. .eslintrc.cjs
  166. .git-blame-ignore-revs
  167. .gitattributes
  168. .gitignore
  169. .gn
  170. .mypy.ini
  171. .prettierignore
  172. .prettierrc.cjs
  173. .pw_ide.yaml
  174. .pylintrc
  175. activate.bat
  176. Android.bp
  177. AUTHORS
  178. bootstrap.bat
  179. bootstrap.sh
  180. BUILD.bazel
  181. BUILD.gn
  182. BUILDCONFIG.gn
  183. CMakeLists.txt
  184. jest.config.ts
  185. Kconfig.zephyr
  186. LICENSE
  187. modules.gni
  188. OWNERS
  189. package-lock.json
  190. package.json
  191. pigweed.json
  192. PIGWEED_MODULES
  193. README.md
  194. rollup.config.js
  195. tsconfig.json
  196. WORKSPACE
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