НАЗВАНИЕ
errfile - формат файла фиксации аппаратных ошибок
ОПИСАНИЕ
При обнаружении системой аппаратных сбоев порождается
запись, которая передается демону, фиксирующему ошибки
и заносящему записи в соответствующий файл для последующего анализа. По умолчанию, таким файлом является
/usr/adm/errfile.
Формат записи об ошибке зависит от типа обнаруженной ошибки. Каждая запись, однако, имеет заголовок следующего формата:
struct errhdr { short e_type; /* Тип записи */ short e_len; /* Кол-во байт в записи (вкл. заголовок) */ time_t e_time; /* Дата ошибки */ };Перечень допустимых типов записей:
#define E_GOTS 010 /* Старт UNIX/TS */ #define E_GORT 011 /* Старт UNIX/RT */ #define E_STOP 012 /* Стоп */ #define E_TCHG 013 /* Изменение времени */ #define E_CCHG 014 /* Переконфигурация */ #define E_BLK 020 /* Ошибка блочного устройства */ #define E_STRAY 030 /* Случайное прерывание */ #define E_PRTY 031 /* Четность памяти */
Некоторые записи в файле ошибок имеют администраторское происхождение. Сюда входит инициализационная запись об активации процесса сбора ошибок, завершающая запись при успешном завершении работы демона, а также записи об изменении времени, которые используются для фиксации изменений системного времени. Эти записи имеют следующий формат:
struct estart { short e_cpu; /* Тип ЦП */ struct utsname e_name; /* Имя системы */ }; #define eend errhdr /* Заголовок записи */ struct etimchg { time_t e_ntime; /* Новое значение времени */ };
При случайном прерывании порождается запись следующего формата:
struct estray { uint e_saddr; /* Адрес прерывания или устройства */ };
Фиксация ошибок памяти не поддерживается в данной реализации.
Записи для блочных устройств имеют следующий формат:
struct eblock { dev_t e_dev; /* Старший+младший ном. уст-ва */ physadr e_regloc; /* Адрес контроллера */ short e_bacty; /* Прочие опер. ввода/вывода */ struct iostat { long io_ops; /* Кол-во чтений/записей */ long io_misc; /* Кол-во прочих операций */ ushort io_unlog; /* Кол-во незафикс. ошибок */ } e_stats; short e_bflags; /* Чтение/запись, ошибка и т.д. */ short e_cyloff; /* Начальный цилиндр уст-ва */ daddr_t e_bnum; /* Номер логического блока */ ushort e_bytes; /* Кол-во передаваемых байт */ paddr_t e_memadd; /* Адрес буфера */ ushort e_rtry; /* Кол-во повторных попыток */ short e_nreg; /* Кол-во регистров уст-ва */ };Следующие значения используются в поле флагов e_bflags:
#define E_WRITE 0 /* Операция записи */ #define E_READ 1 /* Операция чтения */ #define E_NOIO 02 /* Нет запросов, ожидающих в/в */ #define E_PHYS 04 /* Физический ввод/вывод */ #define E_FORMAT 010 /* Форматирование диска */ #define E_ERROR 020 /* Неудачный ввод/вывод */
СМ. ТАКЖЕ
errdemon(1M) в Справочнике администратора.