Главная » 2017 » Ноябрь » 19 » man 2 insl
22:36
man 2 insl

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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



ОБЗОР


#include <sys/io.h>

unsigned char inb(unsigned short int port);
unsigned char inb_p(unsigned short int port);
unsigned short int inw(unsigned short int port);
unsigned short int inw_p(unsigned short int port);
unsigned int inl(unsigned short int port);
unsigned int inl_p(unsigned short int port);

void outb(unsigned char value, unsigned short int port);
void outb_p(unsigned char value, unsigned short int port);
void outw(unsigned short int value, unsigned short int port);
void outw_p(unsigned short int value, unsigned short int port);
void outl(unsigned int value, unsigned short int port);
void outl_p(unsigned int value, unsigned short int port);

void insb(unsigned short int port, void *addr,
unsigned long int count);
void insw(unsigned short int port, void *addr,
unsigned long int count);
void insl(unsigned short int port, void *addr,
unsigned long int count);
void outsb(unsigned short int port, const void *addr,
unsigned long int count);
void outsw(unsigned short int port, const void *addr,
unsigned long int count);
void outsl(unsigned short int port, const void *addr,
unsigned long int count);



ОПИСАНИЕ


Это семейство вызовов используется для низкоуровневой работы с портами
ввода/вывода. Вызовы out* выполняют запись в порт, а вызовы in* выполняют чтение
из порта; вызовы с суффиксом b работают с данными шириной один байт, а вызовы с
суффиксом w работают с данными шириной в одно слово; вызовы с суффиксом _p ждут
завершения операции ввода-вывода.

В основном, они предназначены для использования внутри ядра, но могут быть вызваны
и из пользовательского пространства.

Вы должны скомпилировать свою программу с флагами -O, -O2 и им подобными. Данные
вызовы определены в виде встроенных макросов и не будут подставляться без
включённой оптимизации, что приводит к появлению неразрешаемых ссылок в процессе
компоновки программы.

Для того, чтобы запросить у ядра разрешение доступа к портам ввода-вывода из
приложения, работающего в пользовательском пространстве, используйте ioperm(2) или
iopl(2). Если этого не сделать, приложение получит сообщение об ошибке
сегментации.



СООТВЕТСТВИЕ СТАНДАРТАМ


Вызовы outb() и ему подобные зависят от конкретного оборудования. Аргумент value

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 391 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar