Driver programming

Interrupts

Neutrino provides the following interrupt handling API:

Using this API, a privileged thread (in user level) can call InterruptAttach() or InterruptAttachEvent(), passing a hardware interrupt number and the address of a function in the thread's address space to be called when the interrupt occurs. QNX allows multiple ISRs to be attached to each hardware interrupt number.

Low level programming

To access a PCI devices, QNX provides a well defined API. Some of these functions are: pci_map_irq() for mapping a interrupt pin to an IRQ, pci_find_device() to find the PCI device with a given ID and vendor ID, and so on.

In conclusion, QNX provides a lot of APIs to manage low level hardware features.