in32(), inbe32(), inle32()
Read a 32-bit value from a port
Synopsis:
#include <hw/inout.h>
uint32_t in32( uintptr_t port );
#define inbe32 ( port ) ...
#define inle32 ( port ) ...
Arguments:
- port
- The port you want to read the value from.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The in32() function reads a 32-bit value from the specified port.
The inbe32() and inle32() macros read a 32-bit value that's in big-endian or little-endian format, respectively, from the specified port, and returns the value as native-endian.
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.
Returns:
A 32-bit value in native-endian.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Caveats:
Both inbe32() and inle32() are implemented as macros.