Services callable from Interrupt Service Routines (ISRs)
There are two basic concepts with how interrupts get serviced in an RTOS. The choices revolve around the issues of ease-of-use and responsiveness. One choice allows a kernel service generally used by tasks to be callable in ISRs but at the expense of large critical regions that can adversely affect responsiveness. The advantage to this approach is that it makes easier for the developer to produce device drivers.
The other choice limits the services callable from an ISR to a special subset of those available to the tasks. This approach usually involves the use of specially-written services that reduce the number of critical regions, making it more responsive but at a cost of forcing the developer to use a special set of services.
Both of these currently-used approaches servicing interrupts can compromise either ease-of-use or system responsiveness.
The Novos design for handling ISRs eliminates the negatives of both of these approaches, making it easy to develop ISRs and device drivers without loss of responsiveness or ease of use. In a Novos environment, the services a developer needs to use in an ISR are also callable by other execution entities. The developer only needs to learn one set of services, and that’s a real plus.