pciconfig_read, pciconfig_write, pciconfig_iobase -
работа с
информацией
устройства
PCI
Standard C library (
libc,
-lc)
#include <pci.h>
int pciconfig_read(unsigned long bus, unsigned long dfn,
unsigned long off, unsigned long len,
unsigned char *buf);
int pciconfig_write(unsigned long bus, unsigned long dfn,
unsigned long off, unsigned long len,
unsigned char *buf);
int pciconfig_iobase(int which, unsigned long bus,
unsigned long devfn);
Всё
взаимодействие
с
устройствами
PCI, в
основном,
уже
выполнено
в ядре на
уровне PCI, и
поэтому
данные
вызовы,
обычно,
ненужны
при вызове
из
пользовательского
пространства.
-
pciconfig_read()
- Выполняет
чтение в
буфер buf из
устройства
dev со
смещением
off.
-
pciconfig_write()
- Выполняет
запись
буфера buf в
устройство
dev со
смещением
off.
-
pciconfig_iobase()
- Принимает
пару
шина/функция_устройства
и
возвращает
физический
адрес или
смещения в
памяти (для
таких
вещей как prep,
это 0xc0000000), базы
ввода-вывода
для циклов
PIO, или
промежутки
(holes) ISA, если они
есть.
-
pciconfig_read()
- On success, zero is returned. On error, -1 is returned and
errno is set to indicate the error.
-
pciconfig_write()
- On success, zero is returned. On error, -1 is returned and
errno is set to indicate the error.
-
pciconfig_iobase()
- Возвращает
информацию
о
расположении
различных
областей
ввода-вывода
в
физической
памяти
согласно
значению
which.
Значениями
which могут
быть: IOBASE_BRIDGE_NUMBER,
IOBASE_MEMORY, IOBASE_IO, IOBASE_ISA_IO,
IOBASE_ISA_MEM.
- EINVAL
- Неправильное
значение
len. Не
применимо
к pciconfig_iobase().
- EIO
- Ошибка
ввода-вывода.
- ENODEV
- Для pciconfig_iobase()
значение
«рукава (hose)»
равно NULL. Для
других
вызовов не
удаётся
найти
слот.
- ENOSYS
- Данные
вызовы в
системе не
реализованы
(не
определён
макрос CONFIG_PCI).
- EOPNOTSUPP
- Данное
значение
верно
только для
pciconfig_iobase().
Возвращается,
если
указано
неверное
значение
which.
- EPERM
- Пользователь
не имеет
мандата
CAP_SYS_ADMIN. Не
применимо
к pciconfig_iobase().
Данные
вызовы
есть
только в Linux,
они
доступны
начиная с
версии 2.0.26/2.1.11.
capabilities(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexey, Azamat Hackimov <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]