Предоставляют доступ к области портов ввода/вывода
#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 );
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
Построение встраиваемых систем
Предыдущий раздел: перейти