Signaling

Signal

../_images/Signal.png
  • Semaphore is initialized to 0.
  • The worker tasks starts and immediately blocks on Pend().
  • The worker task is now waiting to be signaled to do work.
  • Another task or ISR posts to the semaphore signaling the worker.
  • Worker does its work and goes back to waiting.
  • This pattern can be chained together.
  • Who runs depends on priority and other waits.

Signaling from an ISR

../_images/Signal_from_ISR.png

A well designed interrupt handler will handle the interrupt quickly. It should do the minimal amount of work necessary and then return. This is important because typically interrupts are off while in the interrupt handler.

A poorly designed interrupt handler will cause the system to miss interrupts. Missing interrupts could cause critical errors in a real-time system.

However interrupts do mean there is work to be done. So how can the system be both responsive and get work work done?

This problem is typically solved by spliting information capture from when the work is being done. The ISR does just enough to capture the important information from the exception. Then it signals a worker task to do the actual work.

Table Of Contents

Previous topic

Delay Polling

Next topic

Protected Access or Serialize

This Page