Provided by: manpages-ru-dev_4.27.0-1_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 - ввод/вывод в порт

БИБЛИОТЕКА

       Стандартная библиотека языка 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)