Get attributes of a bus or device
#include <drvr/hwinfo.h> /* General-purpose function */ int hwiattr_get( unsigned hwi_off, hwiattr_t *hwiattr ); /* Bus attribute functions */ int hwiattr_get_spi( unsigned hwi_off, hwiattr_spi_t *hwiattr ); int hwiattr_get_i2c( unsigned hwi_off, hwiattr_i2c_t *hwiattr ); int hwiattr_get_pci( unsigned hwi_off, hwiattr_pci_t *hwiattr ); int hwiattr_get_usb( unsigned hwi_off, hwiattr_usb_t *hwiattr ); int hwiattr_get_can( unsigned hwi_off, hwiattr_can_t *hwiattr ); /* Device attribute functions */ int hwiattr_get_uart( unsigned hwi_off, hwiattr_uart_t *hwiattr ); int hwiattr_get_rtc( unsigned hwi_off, hwiattr_rtc_t *hwiattr ); int hwiattr_get_timer( unsigned hwi_off, hwiattr_timer_t *hwiattr );
These functions retrieve the attributes for the bus or device identified by hwi_off and fill in the hwiattr structure.
The hwiattr_get() function is the generic function, so it must determine the type of the bus or device from hwi_off. It's always faster to call the specific hwiattr_get_*() function directly, as all the generic routine does is try to figure out which specific one to call:
For attributes of: | Use: |
---|---|
CAN buses | hwiattr_get_can() |
I2C buses | hwiattr_get_i2c() |
PCI buses | hwiattr_get_pci() |
RTC devices | hwiattr_get_rtc() |
SPI buses | hwiattr_get_spi() |
Timer buses | hwiattr_get_timer() |
UART devices | hwiattr_get_uart() |
USBs | hwiattr_get_usb() |
The result from the specific hwiattr_get_*() routine or EINVAL. The specific routines return EOK, or an errno error if an error occurs.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |