Unix Man (Справочное руководство)



SCREEN(HW) - часть 4


Например, для получения указателя на начало области пользовательских данных, связанной с памятью дисплея адаптера CGA можно использовать следующий код:

char far *dp; int selector; . . . fd=open("/dev/color",O_WRONLY); selector=ioctl(fd,MAPCGA,0); dp=sotofar(selector,0); . . .

Обратите внимание, что, когда память дисплея отображается в пльзовательское пространство, регистры начального адреса адаптера не устанавливаются. Этот начальный адрес может быть установлен двумя способами, так чтобы начальный адрес памяти дисплея соответствовал верхнему левому углу экрана:

  1. Переключите режим с помощью ioctl() ("переключение" может выполняться и на уже установленный режим). Смотрите подраздел "Режимы дисплея" в данном разделе.
  2. Измените начальный адрес с помощью in-on-port/out-on-port (операций через порты) ioctl().

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

Порт ввода/вывода графического адаптера

Вы можете использовать ioctl(2) для записи байта в порт графического адаптера или чтения байта из этого порта. Параметр arg функции ioctl использует следующую структуру данных io_arg:

struct port_io_arg { struct port_io_struct args[4]; };

Как показано выше структура io_arg указывает на массив из четырех структур данных port_io. Структура port_io имеет следующий формат:

struct port_io_struct { char dir; /*direction flag (in vs. out)*/ unsigned_int port; /*port address*/ char data; /*byte of data*/ };

Для одного вызова ioctl вы можете задать одну, две, три или четыре структуры port_io_struct. Величина dir может принимать значение IN_ON_PORT для задания чтения байта из порта графического адаптера или значение OUT_ON_PORT для записи байта в этот порт. Величина port является целым числом, задающим адрес нужного порта графического адаптера. Величина data содержит байт, принимаемый из порта или посылаемый в этот порт.




Содержание  Назад  Вперед