Provided by: manpages-ru-dev_4.27.0-1_all 

НАИМЕНОВАНИЕ
outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p,
inw_p, inl_p - ввод/вывод в порт
БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)
ОБЗОР
#include <sys/io.h>
unsigned char inb(unsigned short port);
unsigned char inb_p(unsigned short port);
unsigned short inw(unsigned short port);
unsigned short inw_p(unsigned short port);
unsigned int inl(unsigned short port);
unsigned int inl_p(unsigned short port);
void outb(unsigned char value, unsigned short port);
void outb_p(unsigned char value, unsigned short port);
void outw(unsigned short value, unsigned short port);
void outw_p(unsigned short value, unsigned short port);
void outl(unsigned int value, unsigned short port);
void outl_p(unsigned int value, unsigned short port);
void insb(unsigned short port, void addr[.count],
unsigned long count);
void insw(unsigned short port, void addr[.count],
unsigned long count);
void insl(unsigned short port, void addr[.count],
unsigned long count);
void outsb(unsigned short port, const void addr[.count],
unsigned long count);
void outsw(unsigned short port, const void addr[.count],
unsigned long count);
void outsl(unsigned short port, const void addr[.count],
unsigned long count);
ОПИСАНИЕ
Это семейство вызовов используется для низкоуровневой работы с портами ввода/вывода. Вызовы out*
выполняют запись в порт, а вызовы in* выполняют чтение из порта; вызовы с суффиксом b работают с данными
шириной один байт, а вызовы с суффиксом w работают с данными шириной в одно слово; вызовы с суффиксом _p
ждут завершения операции ввода-вывода.
В основном, они предназначены для использования внутри ядра, но могут быть вызваны и из пользовательского
пространства.
Вы должны скомпилировать свою программу с флагами -O, -O2 и им подобными. Данные вызовы определены в виде
встроенных макросов и не будут подставляться без включённой оптимизации, что приводит к появлению
неразрешаемых ссылок в процессе компоновки программы.
Для того, чтобы запросить у ядра разрешение доступа к портам ввода-вывода из приложения, работающего в
пользовательском пространстве, используйте ioperm(2) или iopl(2). Если этого не сделать, приложение
получит сообщение об ошибке сегментации.
ВЕРСИИ
Вызовы outb() и ему подобные зависят от конкретного оборудования. Аргумент value передаётся первым, а
port — вторым, что является обратным порядком по сравнению с большинством реализаций этих вызовов в DOS.
СТАНДАРТЫ
Отсутствуют.
СМОТРИТЕ ТАКЖЕ
ioperm(2), iopl(2)
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>,
Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов
<pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. outb(2)