InterruptCharacteristic(), InterruptCharacteristic_r()

Get or set a characteristic associated with an interrupt


#include <sys/neutrino.h>

int InterruptCharacteristic( int type,
                             int id,
                             unsigned *new,
                             unsigned *old );

int InterruptCharacteristic_r( int type,
                               int id,
                               unsigned *new,
                               unsigned *old );



Use the -l c option to qcc to link against this library. This library is usually included automatically.


The type of characteristic; the only type that's currently defined is:
  • _NTO_IC_LATENCY — set or get the interrupt's latency.
The identifier for the interrupt function, as returned by InterruptAttach() or InterruptAttachEvent().
NULL, or a pointer to the new value.
NULL, or a pointer to a location where the function can store the old value.


The InterruptCharacteristic() and InterruptCharacteristic_r() kernel calls set or get a characteristic of an interrupt.

These functions are identical except in the way they indicate errors. See the Returns section for details.

The only type currently defined is _NTO_IC_LATENCY. If the new argument is non-NULL, it points to an unsigned that contains the new latency value for the interrupt, in nanoseconds. If the old argument is non-NULL, it's filled in with the old latency value for the interrupt. The default latency value is zero. In order to set a latency, the calling thread must be the process that attached to the interrupt, and it must have obtained I/O privileges by calling:
ThreadCtl( _NTO_TCTL_IO, 0 );

The id argument can be -1. In this case, you're setting the global latency value for the system. If an interrupt attachment doesn't specify a latency value, the global latency number is used when calculating how deep a sleep state the kernel may use. You need to have I/O privileges to set the global latency value.


The only difference between these functions is the way they indicate errors:

0 on success. If an error occurs, -1 is returned and errno is set.
0 on success. This function does NOT set errno. If an error occurs, a value from the Errors section is returned.


The function couldn't read from the new pointer, or it couldn't write to the old.
The type isn't _NTO_IC_LATENCY.
You're trying to set a new latency, but the calling thread isn't the attaching process or doesn't have I/O privileges.
The id isn't either a valid interrupt attachment identifier or -1.


QNX Neutrino

Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes