Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Запуск системы, быстрая активация устройств > Построение встраиваемых систем > API библиотек libipl и libstartup > callout_io_map(), callout_io_map32(), callout_io_map64(), callout_io_map_indirect()



callout_io_map(), callout_io_map32(), callout_io_map64(), callout_io_map_indirect()

Предоставляют доступ к области портов ввода/вывода

Прототип:

#include <sys/startup.h>
uintptr_t callout_io_map( unsigned size,
paddr_t phys );
uintptr_t callout_io_map32( unsigned size,
paddr32_t phys );
uintptr_t callout_io_map64( unsigned size,
paddr64_t phys );
uintptr_t callout_io_map_indirect( unsigned size,
paddr_t *phys );

Аргументы:

size
Размер мапируемой памяти.
phys
Физический адрес мапируемой памяти.

Библиотека:

libstartup

Описание:

Эти функции идентичны функции mmap_device_io() в системной библиотеке — предоставляют доступ к области портов ввода/вывода с заданными физическим адресом и размером на платформе x86 (в других архитектурах функции callout_io_map() и callout_memory_map_indirect() одинаковы).

Различие между callout_io_map() и callout_io_map_indirect() заключается во втором аргументе: callout_io_map() принимает значение типа paddr_t, а callout_io_map_indirect() — указатель на paddr_t. Косвенная адресация облегчает использование 32- и 64-разрядных адресов.

Возвращаемое значение используется в инструкциях процессора, эквивалентных in*() / out*() (обычная пересылка во всех архитектурах, кроме x86), и доступно любым callout-ам ядра (они сохраняются после завершения модуля startup-* и выполняются во время работы операционной системы).

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

адрес
Возвращает адрес смапированной области памяти.

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

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

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

callout_memory_map(), callout_memory_map32(), callout_memory_map64(), callout_memory_map_indirect(), in*(), mmap_device_io(), out*(), struct syspage_entry

Построение встраиваемых систем




Предыдущий раздел: перейти