Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       outb,  outw,  outl,  outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p,
       inw_p, inl_p - ввод/вывод в порт

LIBRARY

       Standard C library (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>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.

Linux man-pages 6.03                            10 ноября 2022 г.                                        outb(2)