pci_irq_routing_options()

Получить информацию о маршрутизации IRQ PCI

Прототип:

#include <hw/pci.h>
int pci_irq_routing_options( IRQRoutingOptionsBuffer *buf,
uint32_t *irq );

Аргументы:

buf
Указатель на структуру IRQRoutingOptionsBuffer, где функция может хранить информацию о маршрутизации IRQ. Для получения информации о структуре этого буфера см. PCI BIOS SPECIFICATION Revision 2.1. Данную информацию можно получить на сайте PCI Special Interest Group по адресу http://pcisig.com/.
irq
Указатель на место, где функция может сохранять текущее состояние прерываний.

Библиотека:

libc

Описание:

Функция pci_irq_routing_options() возвращает следующее:

Информация о маршрутизации возвращается в буфере данных, который содержит маршрутизацию IRQ для каждого устройства или слота PCI.


Note: Необходимо добиться успешного выполнения функции pci_attach() перед вызовом любой другой функции PCI. Функция pci_irq_routing_options() предназначена только для x86 систем.

Возвращаемое значение:

PCI_SUCCESS
Успешное завершение.
-1
Функция pci_attach() не вызывалась ранее, или вызов не был успешным.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <inttypes.h>
#include <hw/pci.h>
#include <sys/neutrino.h>
struct {
IRQRoutingOptionsBuffer buf;
uint8_t databuf[2048];
} route_buf;
int main( void )
{
int phdl;
uint32_t irq;
if ( (phdl = pci_attach( 0 )) == -1 )
{
printf( "Unable to attach - errno %s\n", strerror( errno ) );
exit( 1 );
}
memset( route_buf.databuf, 0, sizeof( route_buf.databuf ) );
route_buf.buf.BufferSize = sizeof( route_buf.databuf );
if ( pci_irq_routing_options( &route_buf.buf, &irq ) != PCI_SUCCESS )
{
printf( "Routing option failed - errno %s\n", strerror( errno ) );
exit( 1 );
}
printf( "PCI Irq Map = %x\n", irq );
pci_detach( phdl );
return (0);
}

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

pci_attach(), pci_attach_device(), pci_detach(), pci_detach_device(), pci_find_class(), pci_find_device(), pci_present(), pci_read_config(), pci_read_config8(), pci_read_config16(), pci_read_config32(), pci_rescan_bus(), pci_write_config(), pci_write_config8(), pci_write_config16(), pci_write_config32()




Предыдущий раздел: Описание API системной библиотеки