out16(), outbe16(), outle16()

Updated: April 19, 2023

Write a 16-bit value to a port

Synopsis:

#include <hw/inout.h>

void out16( uintptr_t port, 
            uint16_t val );

#define outbe16( port,
                 val ) ...

#define outle16( port,
                 val ) ...

Arguments:

port
The port you want to write the value to.
val
The value that you want to write.

Library:

libc

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

Description:

The out16() function writes the native-endian 16-bit value, specified by val, to the specified port.

The outbe16() and outle16() macros write the native-endian 16-bit value, specified by val, to the specified port in big-endian or little-endian format, respectively.

The calling process must use mmap_device_io() to access the device's I/O registers.

On x86_64 targets, the process must have the PROCMGR_AID_IO ability enabled, and the calling thread must have I/O privileges, or else it will fault with a SIGSEGV; see procmgr_ability(), and the ThreadCtl() _NTO_TCTL_IO_LEVEL command.

Classification:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes

Caveats:

Both outbe16() and outle16() are implemented as macros.