НАЗВАНИЕ
sysm68k - машинно-зависимые функции
СИНТАКСИС
#include <sys/trap.h> int sysm68k (cmd, arg1, arg2, arg3) int cmd, arg1, arg2, arg3;
ОПИСАНИЕ
Системный вызов sysm68k реализует машинно-зависимые
действия. Конкретный характер действий определяется
аргументом cmd. Количество и смысл остальных аргументов, в свою очередь, зависят от выполняемого действия.
Ниже кратко описаны три из возможных действий. Дополнительные сведения можно получить из включаемых файлов
<sys/trap.h>, <sys/swap.h> и <sys/conf.h>.
Команда S3BFPHW Если значение cmd равно S3BFPHW, то проверяется, существует ли сопроцессор, поддерживающий арифметику вещественных чисел. Требуется один дополнительный аргумент - адрес целочисленной переменной. Если сопроцессор существует, то в результате выполнения системного вызова этой переменной присваивается 1, а если не существует, то 0.
Чтобы проверить наличие сопроцессора, необходимо сделать следующее:
#include <sys/trap.h> int fpu_present; sysm68k (S3BFPHW, &fpu_present);
Системный вызов sysm68k при значении аргумента cmd, равном S3BFPHW, завершается неудачей, и наличие сопроцессора не определяется, если выполнено хотя бы одно из следующих условий:
Команда S3BSWPI
Если значение cmd равно S3BSWPI, то может быть добавлена или удалена отдельная область подкачки. Можно также
получить текущую информацию обо всех областях подкачки.
В качестве дополнительного аргумента указывается адрес
структуры типа swapint:
struct swapint { char si_cmd; /* Код команды (см. ниже). */ char *si_buf; /* В случае информационного запроса [код SI_LIST] это поле должно указывать на буфер размером не менее sizeof (swpt_t) * MSFILES байт. В остальных запросах это указатель на маршрутное имя файла-устройства, на котором находится или создается область подкачки. */ int si_swplo; /* Номер первого блока области подкачки. Используется только для добавления и удаления областей подкачки. */ int si_nblks; /* Размер области подкачки в блоках. Используется только в запросе добавления области подкачки. */ } /* Возможные значения si_cmd (коды команд) */ #define SI_LIST 0 /* Получить список текущих областей подкачки. */ #define SI_ADD 1 /* Добавить область подкачки. */ #define SI_DEL 2 /* Удалить одну из текущих областей подкачки. */
Описания, необходимые для использования данной разновидности системного вызова sysm68k, содержатся во включаемом файле <sys/swap.h>.
Добавление и удаление областей подкачки доступно только суперпользователям.
Операции с областями подкачки обычно выполняются следующим образом:
#include <sys/trap.h> #include <sys/swap.h> /* Описание структуры для выполнения запросов */ struct swapint swapbuf; /* Заполнение структуры */ ... /* Собственно системный вызов */ sysm68k (S3BSWPI, &swapbuf);
Системный вызов sysm68k при значении аргумента cmd, равном S3BSWPI, завершается неудачей, и операции с областями подкачки не выполняются, если выполнено хотя бы одно из следующих условий:
Команда STIME
Если значение cmd равно STIME, то устанавливаются системные дата и время. Единственный дополнительный аргумент типа long должен содержать время, прошедшее с нуля
часов 1 января 1970 года (по Гринвичу), измеренное в
секундах. Эту команду может выполнить только суперпользователь.
СМ. ТАКЖЕ
date(1) в Справочнике пользователя.
swap(1M) в Справочнике администратора.
ДИАГНОСТИКА
Для описанных вариантов системного вызова sysm68k при
успешном завершении результат равен 0; в противном случае возвращается -1, а переменной errno присваивается
код ошибки.