)]}'
{
  "commit": "48a5de2ddec1b7859ac59388cd8d024ef4161825",
  "tree": "b1921adde80e99b30cf0d8fe39866231690d8b25",
  "parents": [
    "65b731be61b99a75afce5f61f410ede1a7b63bdb"
  ],
  "author": {
    "name": "Graham Sanderson",
    "email": "graham.sanderson@raspberrypi.com",
    "time": "Wed Aug 19 18:21:41 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 19 18:21:41 2026 -0500"
  },
  "message": "Combined sleep fixes (#3127)\n\nMultiple pico_sync/pico_time related fixes, comments and new tests for both bare-metal SDK, and RTOS integration\n\n* Add PICO_SYNC_RP2350_SPIN_LOCK_WORKAROUND define, and fix lock_internal_ functions to workaround issues \n  with RP2350 and s/w spin locks\n* Add PICO_TIME_USE_SLEEP_NOTIFIER which, if unset, will use bare __sev() and __wfe() instead\n  of lock_internal_ functions on a dummy spin_lock to handle notifications. This is simpler, avoids\n  the RP2350 s/w spinlock issue, but would be inappropriate for use with an RTOS since __wfe() would\n  not yield. This defaults to 1 if any of the lock_internal_ functions are overridden (which they aren\u0027t in the\n  bare SDK)\n* Add LOCK_INTERNAL_SPIN_UNLOCK_WITH_NOTIFY_WAKES_ALL which defaults to 1 unless any of the \n  lock_internal_ functions are overridden. The original contract in lock_core.h expected that \n  a lock_internal_spin_unlock_with_notify() would wake all waiters, but the FreeRTOS ports already violate\n  this constraint under certain race conditions. When the value is 0, the primitives such as a semaphore where\n  multiple waiters might be awoken use the new lock_internal_spin_unlock_maybe_notify() macro to potentially\n  wake up more waiters.\n* re-arm the ta_timer before processing cancellations (fix invariant violation and #2706)\n* Assert alarm_pool_destroy() is called on the pool\u0027s own core, and say so\n* fix wrong cleanup order in ta_disable_irq_handler\n* Distinguish pico_time_test/pico_time_test_sw, and rename pico_sync_test_hw to pico_sync_test\n* pico_sync_test: run every section on both cores\n* Add short_sleep_test\n* Add sync_interop_test for sdk and sdk/rtos interaction tests of pico_sync and pico_time\n* Add freertos_sync_alias_test. Note this looks for an issue with event bit aliasing which has not yet been reproduced - possibly due to luck in the FreeRTOS implementation, but kept in case the problem does arise due to future changes\n* Fix host implementation/tests\n\nUnrelated changes, included here:\n* let PICOTEST_CHECK take printf arguments\n* add PICO_PLATFORM_STRING define set by CMake build from PICO_PLATFORM\n\nCo-authored-by: Luke Wren \u003cluke@raspberrypi.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "89f89b501f37ea7e67384e80152c1fcf9fef92db",
      "old_mode": 33188,
      "old_path": "src/common/pico_base_headers/CMakeLists.txt",
      "new_id": "5fff8f334cd96865b79859cb233f10ee37f9677f",
      "new_mode": 33188,
      "new_path": "src/common/pico_base_headers/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "df0a04347bf46d2b6db70cb428a96239ca628a11",
      "old_mode": 33188,
      "old_path": "src/common/pico_base_headers/include/pico/config.h",
      "new_id": "d639d6af78ac3477d61c4fd24c165bb9add29b1a",
      "new_mode": 33188,
      "new_path": "src/common/pico_base_headers/include/pico/config.h"
    },
    {
      "type": "modify",
      "old_id": "74224d5c1972bfdad7c8b3b6290c3614aba666ab",
      "old_mode": 33188,
      "old_path": "src/common/pico_sync/include/pico/lock_core.h",
      "new_id": "e7466e75f3532da100d251115972d29d42eee123",
      "new_mode": 33188,
      "new_path": "src/common/pico_sync/include/pico/lock_core.h"
    },
    {
      "type": "modify",
      "old_id": "eb2d5324565415d35010522a7b9597a4505f3a37",
      "old_mode": 33188,
      "old_path": "src/common/pico_sync/lock_core.c",
      "new_id": "b24a51c1d7aec3e34d1762c8a74444215fda09b7",
      "new_mode": 33188,
      "new_path": "src/common/pico_sync/lock_core.c"
    },
    {
      "type": "modify",
      "old_id": "3954da67c426ed8c202571a14c586c39ee0d5263",
      "old_mode": 33188,
      "old_path": "src/common/pico_sync/mutex.c",
      "new_id": "5e0f4c2b0ed6523846c92f82ceac80b093abb67b",
      "new_mode": 33188,
      "new_path": "src/common/pico_sync/mutex.c"
    },
    {
      "type": "modify",
      "old_id": "8fc44580fcbf583c6b81897f1c94154287bf5a15",
      "old_mode": 33188,
      "old_path": "src/common/pico_sync/sem.c",
      "new_id": "ee180f8188b4b07df696ef13bfa32cd4bc5a2a2b",
      "new_mode": 33188,
      "new_path": "src/common/pico_sync/sem.c"
    },
    {
      "type": "modify",
      "old_id": "30423d96d10c86b8aabd20fc5c46395c0aa5dd25",
      "old_mode": 33188,
      "old_path": "src/common/pico_time/include/pico/time.h",
      "new_id": "f403ece3a64be65471a3a5dce0a7f09a18793906",
      "new_mode": 33188,
      "new_path": "src/common/pico_time/include/pico/time.h"
    },
    {
      "type": "modify",
      "old_id": "e2e76c1d5c7ae4b488e0a685316b9baf768263a6",
      "old_mode": 33188,
      "old_path": "src/common/pico_time/time.c",
      "new_id": "72f0bde8ec6554f4d594db522367a34cfed9d811",
      "new_mode": 33188,
      "new_path": "src/common/pico_time/time.c"
    },
    {
      "type": "modify",
      "old_id": "a110be27edecbd0ea5120f9f0e66aed880f5dae6",
      "old_mode": 33188,
      "old_path": "src/host/hardware_timer/timer.c",
      "new_id": "cd25e4029b5b4fa67deb8a2932aae4a468200319",
      "new_mode": 33188,
      "new_path": "src/host/hardware_timer/timer.c"
    },
    {
      "type": "modify",
      "old_id": "94a6e14e631ae3b7ee13820d08e34ae0c86a0c4e",
      "old_mode": 33188,
      "old_path": "src/host/pico_time_adapter/include/pico/time_adapter.h",
      "new_id": "032bfda28044f83406ef28b8f22723b8bdac1cbf",
      "new_mode": 33188,
      "new_path": "src/host/pico_time_adapter/include/pico/time_adapter.h"
    },
    {
      "type": "modify",
      "old_id": "e805b30178fe1ed782596d95dcaa799262debc44",
      "old_mode": 33188,
      "old_path": "src/host/pico_time_adapter/time_adapter.c",
      "new_id": "772cbf81eb73b796f9353431ea8d2f76bc2da1fa",
      "new_mode": 33188,
      "new_path": "src/host/pico_time_adapter/time_adapter.c"
    },
    {
      "type": "modify",
      "old_id": "5b898c48730652b1fe643c5546e2cbdf0d62c8e7",
      "old_mode": 33188,
      "old_path": "src/rp2_common/pico_time_adapter/include/pico/time_adapter.h",
      "new_id": "67ab3bfd2900a989be625e072f650ff3c6230685",
      "new_mode": 33188,
      "new_path": "src/rp2_common/pico_time_adapter/include/pico/time_adapter.h"
    },
    {
      "type": "modify",
      "old_id": "a9f4f4b9441a2bedfbf381add62c94ffd28a1eae",
      "old_mode": 33188,
      "old_path": "test/CMakeLists.txt",
      "new_id": "4279238552f7ff85e4f048e55fe99b4c0db0a681",
      "new_mode": 33188,
      "new_path": "test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "753402c1461f7c702982d585c71425dc09bf95b7",
      "new_mode": 33188,
      "new_path": "test/freertos_sync_alias_test/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "865b3f633abaad46cacfe04f3cd65a61274bde86",
      "new_mode": 33188,
      "new_path": "test/freertos_sync_alias_test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b7b5d918d02dd3c2a37d70f13689d68881e792c1",
      "new_mode": 33188,
      "new_path": "test/freertos_sync_alias_test/FreeRTOSConfig.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15d8e77242ba9a3d75e128179d1524f252c8149d",
      "new_mode": 33261,
      "new_path": "test/freertos_sync_alias_test/FreeRTOS_Kernel_import.cmake"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "faa813c99163726351234da551193dc33f4e542f",
      "new_mode": 33188,
      "new_path": "test/freertos_sync_alias_test/freertos_sync_alias_test.c"
    },
    {
      "type": "modify",
      "old_id": "43d067f208ab3e04047b91f45e43f06af6431eb0",
      "old_mode": 33188,
      "old_path": "test/hardware_sync_spin_lock_test/BUILD.bazel",
      "new_id": "6c84f92191680db5a99215cb261198c87d98c3d8",
      "new_mode": 33188,
      "new_path": "test/hardware_sync_spin_lock_test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "5bec0ce4cb33c86050f2176344c42512b99ae1bc",
      "old_mode": 33188,
      "old_path": "test/hardware_sync_spin_lock_test/CMakeLists.txt",
      "new_id": "2e029ea717674fd44588139b28cd6adf66b73aac",
      "new_mode": 33188,
      "new_path": "test/hardware_sync_spin_lock_test/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "a5f38002cfa1feb315c630c9469104c2ea9a1849",
      "old_mode": 33188,
      "old_path": "test/hardware_sync_spin_lock_test/hardware_sync_spin_lock_test.c",
      "new_id": "776fb9a956b129fee2d5079b1854efbf7de0712a",
      "new_mode": 33188,
      "new_path": "test/hardware_sync_spin_lock_test/hardware_sync_spin_lock_test.c"
    },
    {
      "type": "modify",
      "old_id": "90da4f1e51f55ffdfea19e63b35990f157a24f2a",
      "old_mode": 33188,
      "old_path": "test/pico_float_test/double_benchmark.c",
      "new_id": "33a1df7b4af9c89c99c56a352c029153bc59aabd",
      "new_mode": 33188,
      "new_path": "test/pico_float_test/double_benchmark.c"
    },
    {
      "type": "modify",
      "old_id": "2e419a865561463be9ef891b8b3ee7751f5943b1",
      "old_mode": 33188,
      "old_path": "test/pico_float_test/float_benchmark.c",
      "new_id": "920a77463c71d26fa6fccb626aed59645bf5d261",
      "new_mode": 33188,
      "new_path": "test/pico_float_test/float_benchmark.c"
    },
    {
      "type": "modify",
      "old_id": "5705363cb6aad0ae5a80fd69f2b994430a90c25e",
      "old_mode": 33188,
      "old_path": "test/pico_sync_test/BUILD.bazel",
      "new_id": "9bc67344dac0db4e9b880bf72a98e8899aefb5d7",
      "new_mode": 33188,
      "new_path": "test/pico_sync_test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1b23e283af3778775ccf4baf4ae63522728d4ae6",
      "old_mode": 33188,
      "old_path": "test/pico_sync_test/CMakeLists.txt",
      "new_id": "ea2056de1e6f4d81a35bad483484e4e6d2781adb",
      "new_mode": 33188,
      "new_path": "test/pico_sync_test/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "b2794eca4c2c866a88fed21a8972c81570190c52",
      "old_mode": 33188,
      "old_path": "test/pico_sync_test/pico_sync_test.c",
      "new_id": "cc50dacf6bee2953f1631dbd037d188fe8c6880b",
      "new_mode": 33188,
      "new_path": "test/pico_sync_test/pico_sync_test.c"
    },
    {
      "type": "modify",
      "old_id": "1352424e3c4b2e89dda11db6469b36559a950dd1",
      "old_mode": 33188,
      "old_path": "test/pico_test/include/pico/test.h",
      "new_id": "3dac30874dcf7c10a01dad2521f414a173a42134",
      "new_mode": 33188,
      "new_path": "test/pico_test/include/pico/test.h"
    },
    {
      "type": "modify",
      "old_id": "200b18dcf5de9199860c9af96784e90797b81a8c",
      "old_mode": 33188,
      "old_path": "test/pico_time_test/BUILD.bazel",
      "new_id": "6b8e16e2955f30247dfaf7a3e12037f51335fb8e",
      "new_mode": 33188,
      "new_path": "test/pico_time_test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "366325bd50c8d1a8ed7cd7d8a7fd0dd44a227f2e",
      "old_mode": 33188,
      "old_path": "test/pico_time_test/CMakeLists.txt",
      "new_id": "231be6e1714487798ee567d82dce892164232b3b",
      "new_mode": 33188,
      "new_path": "test/pico_time_test/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "b42e16ee740a2fb2cc4dbe1373d0bd037dc91581",
      "old_mode": 33188,
      "old_path": "test/pico_time_test/pico_time_test.c",
      "new_id": "4d79aed7ef09346e199d7a44d0ef393d578800ae",
      "new_mode": 33188,
      "new_path": "test/pico_time_test/pico_time_test.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "07659073822ba24f94e1e25f7ab498cae5e6fc14",
      "new_mode": 33188,
      "new_path": "test/short_sleep_test/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "967ebd95b9856756e52f5df312bbba15e7821cc8",
      "new_mode": 33188,
      "new_path": "test/short_sleep_test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7fb93a9bae8bfbb82930c05e2842f6ffb301d2c",
      "new_mode": 33188,
      "new_path": "test/short_sleep_test/short_sleep_test.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "af557d75a377fb38d675aa0113f07ee0d00584ce",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "561142ffc3ceb19ee9ba2a094981f421c5dc04d4",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "471247a3e20e766059472b65655145b211e090b0",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/FreeRTOSConfig.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15d8e77242ba9a3d75e128179d1524f252c8149d",
      "new_mode": 33261,
      "new_path": "test/sync_interop_test/FreeRTOS_Kernel_import.cmake"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "25c78dbc3812c50d2739adb224ba3a169c125f84",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/interop_harness.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e138c8a6dba141c62926fde280c56a8b5e899f9d",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/interop_harness.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "110f9426421ee675e2b0141a3e0c65b6700c045e",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/interop_platform.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b264c880539cf646f4ea3e0612d5a8884ed6fe45",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/interop_platform.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "799dfbf43d0715156097f94f4debb33014444132",
      "new_mode": 33188,
      "new_path": "test/sync_interop_test/sync_interop_test.c"
    },
    {
      "type": "modify",
      "old_id": "a8ccb01a420ee25fb318971685a03c77066a84ed",
      "old_mode": 33261,
      "old_path": "tools/bazel_build.py",
      "new_id": "c77bc244dc7b35d6a66e9e3c5a2470c4df51c39c",
      "new_mode": 33261,
      "new_path": "tools/bazel_build.py"
    },
    {
      "type": "modify",
      "old_id": "ccbf5f1d859585d11a08b365470a95a71a50ed14",
      "old_mode": 33261,
      "old_path": "tools/compare_build_systems.py",
      "new_id": "071ea61a1d8b73e398da5b22606e0194e8791e06",
      "new_mode": 33261,
      "new_path": "tools/compare_build_systems.py"
    }
  ]
}
