diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-05-14 22:20:15 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-05-14 22:20:15 +0000 |
| commit | 6e93d193cfdd2982410e106c383ecc1f066fccfb (patch) | |
| tree | 4000d4e8ef8f2883429cb4c5cde07bba8a53b520 /examples/std/src | |
| parent | 4567eff78ed486cea623f0864c3c10d6e528ae64 (diff) | |
| parent | 5fe36b6bb05f0460e12c726ab5554c9b4bad1829 (diff) | |
Merge #1451
1451: Work around xtensa deadlock, take 2 r=Dirbaio a=bugadani
This PR is another go at trying to do something with #1449. The commit was part of the previous attempt but mistakenly discarded as I still experienced lockups. However, after further testing, it looks like that lockup is caused by something else.
This is a manual, "cpu-local" critical section impl that should be good enough on dual-core CPUs, although the implementation still contains `SIGNAL_WORK_THREAD_MODE` which is absolutely not correct on dual-core. This approach was chosen because:
- not taking the global lock technically allows the second core to run
- wrapping the signal read and the sleep in a critical section prevents a race condition that would cause the CPU to sleep longer than ideal if an interrupt hits after reading, but before sleeping.
Co-authored-by: Dániel Buga <[email protected]>
Diffstat (limited to 'examples/std/src')
0 files changed, 0 insertions, 0 deletions
