~/talk

Concurrency Challenges of Interrupt Service Routines

Talkat CppCon 2018 · 2018-09-23..09-28· [embedded-and-hardware, concurrency]
links:none on file
slides:none on file

Shows that Interrupt Service Routines on Cortex-class MCUs inject execution by saving a few registers and jumping via the nested vector interrupt controller, so ordinary C++ code gets unexpected races (about 30% of volatile-marked variables are actually races). Disabling interrupts is a common but fragile fix; a safer approach is priority-based locking plus small CAS-backed queues. An implemented solution uses meta-programming to list resources and threads, auto-generate locking and a scheduler that proves no deadlock or starvation below a given priority, and it works in practice.

AI-written summary · about

  1. 0:00Introduction and motivation
  2. 1:49Defining the problem
  3. 5:11Naive event-based implementation
  4. 10:46CPU state and program counter
  5. 18:09Latency and jitter explained
  6. 23:57Threads vs real-time constraints
  7. 31:03Interrupt Service Routines basics
  8. 33:13Race conditions in ISRs
  9. 35:24Disabling interrupts drawbacks
  10. 41:50Priority inversion and starvation
  11. 45:05Emil's starvation-free scheduler
  12. 50:50Language features and shared state
  13. 52:59Future of microcontroller C++
  14. 53:45Q&A session
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.