mmap_device_io()

Получить доступ к регистрам устройства

Прототип:

#include <stdint.h>
#include <sys/mman.h>
uintptr_t mmap_device_io( size_t len,
uint64_t io );

Аргументы:

len
Размер области памяти в байтах. Не может быть 0.
io
Адрес области памяти, к которой необходимо получить доступ.

Библиотека:

libc

Описание:

Функция mmap_device_io() мапирует len байт области памяти ввода-вывода устройства по адресу io и делает её доступной для записи и чтения с помощью функций in*() и out*() (определены в <hw/inout.h>).

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

Адрес области памяти для ввода-вывода с помощью функций in*()/ out*().

Если возникла ошибка, функция возвращает MAP_DEVICE_FAILED, код ошибки записывается в errno.

Коды ошибок:

EINVAL
len равно 0 или внутренние флаги мапирования недопустимы для заданного диапазона.
ENOMEM
Запрошенный диапазон адресов выходит за пределы разрешенного диапазона адресов процесса или недостаточно памяти для выполнения запроса.
ENXIO
Недопустимый адрес io области памяти размером len байт.

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

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

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

Предостережения:

Чтобы использовать полученный от mmap_device_io() адрес необходимы привилегии ввода-вывода. Вызывающий поток должен вызвать функцию ThreadCtl() с командой _NTO_TCTL_IO.

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

mmap(), mmap_device_memory(), munmap_device_io()




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