НАИМЕНОВАНИЕ

     mtio - команды магнитной ленты


РЕЗЮМЕ

     #include <sys/types.h>
     #include <sys/mtio.h>
     #include <sys/ioctl.h>


ОПИСАНИЕ

     Устройствам магнитной ленты, описанным в sd(4), могут быть посланы команды
или сделан запрос на их состояние следующим образом:

ioctl(fd, MTIOCTOP, &struct mtop)
ioctl(fd, MTIOCGET, &struct mtget)

Всё выше перечисленные структуры определены в <sys/mtio.h>:

/*Операции с носителем: ioctl(fd, MTIOCTOP, &struct mtop) */

struct mtop {
short mt_op; /* Операция (MTWEOF, например.) */
int mt_count; /* Повторный счет. */
};

#define MTWEOF 0 /* Запись маркера конца файла */
#define MTFSF 1 /* Передняя метка пространства файла */
#define MTBSF 2 /* Обратная метка пространства файла */
#define MTFSR 3 /* Передняя запись пространства */
#define MTBSR 4 /* Обратная запись пространства */
#define MTREW 5 /* Перемотать ленту */
#define MTOFFL 6 /* Автономная перемотка */
#define MTNOP 7 /* Операций нет, устанавливает состояние */
#define MTRETEN 8 /* Повторная перемока (целиком)*/
#define MTERASE 9 /* Стереть ленту и перемотать */
#define MTEOM 10 /* Позиция Конец Носителя */
#define MTMODE 11 /* Выбрать плотность ленты */
#define MTBLKZ 12 /* Выбрать размер блока ленты */

/* Состояние носителя: ioctl(fd, MTIOCGET, &struct mtget) */

struct mtget {
short mt_type; /* Тип устройства. */

/* Устройство зависимых "регистраторов". */
short mt_dsreg; /* Регистр состояния диска. */
short mt_erreg; /* Ошибка регистра. */

/* Misc info. */
off_t mt_resid; /* Остаточный счёт. */
off_t mt_fileno; /* Текущий номер файла. */
off_t mt_blkno; /* Текущий номер блока внутри файла. */
off_t mt_blksize; /* Текущий размер блока. */
};


См. mt(1) для детального описания того, что выполняет каждая команда в
отдельности. mt_type поле является всегда нулевым и не несёт в
себе ничего. Mt_dsreg 0 (OK), 1 (Error), или 2 (EOF скинут).
Mt_erreg, поддерживающий SCSI, считывает ключ последней операции.
Mt_blksize - текущий размер ленты в байтах. Если размер является
переменым, то значение равно нулю.

Обратите внимание на возможность применения команд в описываемом файле,
который используется для чтения или записи не доступных mt.
Таким образом, Вы можете добавить eof (Маркеры конца файла) маркеры в
середину выходного потока или получиь данные о состоянии устройства перед
перемоткой и завершением.

Драйвер автоматически добавит маркер конца файла на плёнке с записью,
если Вы выполните свободную команду. Если Вы записываете eof маркеры
самостоятельно, то драйвер не будет добавлять одно дополнительное
пространство по завершении.


СМ. ТАКЖЕ

     mt(1), sd(4).