As I understand that, if there is some data in interrupt handler which is shared with other process, it should be protected using spin lock, also we need to disable the local interrupt. But what if the data is shared between multiple interrupt handler, how can I protect it ?

有帮助吗?

解决方案

Whenever there is a critical section (CS) that can be run in interrupt context, you use a spinlock to protect it, it does not matter if the CS is shared between interrupt handler and a process or between interrupt handlers.

The reson why you do not use semaphore or mutex is obvious, because you can't sleep in interrupt context.

其他提示

Interrupt handlers are nonpreemptible and non-reentrant, hence there is no scope of concurrent access to data.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top