apm - интерфейс APM BIOS
apm0
Специальный файл устройства apm - это интерфейс к подсистеме
расширенного управления питанием Intel/Microsoft (APM - Advanced Power Management)
BIOS на ноутбуках.
apm предлагает следующие функции управления питанием.
- Когда система пробуждается из режима останова (suspended mode), apm настраивает
системные часы в соответствии с RTC.
- Когда система пробуждается из режима останова, apm посылает
сообщение демону syslogd(8) ,
содержащее время пробуждения и продолжительность периода останова.
- apm замедляет часы процессора при отсутствии активности
в системе (работающих процессов, прерываний и т.п.). Эта функция доступна
только в системах, APM которых поддерживает замедление процессора.
- apm представляет собой специальное символьное устройство.
Приложения могут через этот интерфейс управлять подсистемой APM или выбирать
информацию о состоянии APM. apm экспортирует следующие
интерфейсы. Эти символы определены в заголовочном файле "/usr/include/machine/apm_bios.h". APMIO_SUSPEND Остановить
систему.
APMIO_GET Получить информацию об управлении питанием.
APMIO_ENABLE
APMIO_DISABLE Включить/отключить управление питанием.
APMIO_HALTCPU
APMIO_NOTHALTCPU Управляет выполнением команды HLT в
процедуре переключения контекста ядра.
APMIO_GETPWSTATUS Получить информацию по батареям.
Некоторые реализации APM выполняют команду HLT (остановить
процессор пока не произойдет прерывание) в вызове " Idle CPU " (ожидание
процессора), а другие -нет. Поэтому включение APMIO_HALTCPU может
привести к избыточным выполнениям команды HLT , поскольку " Idle
CPU " вызывается из процедуры переключения контекста ядра,
обязательно выполняющей команду HLT . Это может снижать
пиковую производительность системы.
Кроме того, система зависает, если команда HLT отключена
в процедуре переключения контекста ядра, а реализация подсистемы APM
на машине не выполняет HLT в вызове " Idle
CPU ". В некоторых реализациях, не поддерживающих замедление
таймера процессора, подсистема APM может и не выполнять HLT . apm отключает
поддержку операции APMIO_NOTHALTCPU на таких машинах.
Текущая версия apm не вызвает " Idle CPU " из
процедуры переключения контекста ядра, если не поддерживается замедление
таймера, и по умолчанию выполняет команду HLT . Поэтому
в большинстве случаев использовать эти две операции не нужно.
Эти интерфейсы используются командой apm(8) .
- apm опрашивает события подсистемы APM и обрабатывает
следующие из них.
Имя |
Действие |
Описание |
PMEV_STANDBYREQ |
остановка системы |
запрос ожидания |
PMEV_SUSPENDREQ |
остановка системы |
запрос останова |
PMEV_USERSUSPENDREQ |
остановка системы |
запрос останова пользователем |
PMEV_CRITSUSPEND |
остановка системы |
критический запрос останова |
PMEV_NORMRESUME |
восстановление системы |
обычное восстановление |
PMEV_CRITRESUME |
восстановление системы |
критическое восстановление |
PMEV_STANDBYRESUME |
восстановление системы |
восстановление из состояния ожидания |
PMEV_BATTERYLOW |
уведомление |
батарея разряжена |
PMEV_UPDATETIME |
настройка часов |
изменить время |
ПРЕДУПРЕЖДЕНИЕ! Многие, если не большинство, современных реализаций APM-bios
в ноутбуках содержат ошибки. Используя этот интерфейс, мы можете повредить
экран или батареи ноутбука. (В MS-Windows этой проблемы нет потому, что там
используется интерфейс в реальном режиме.) Если вы заметили странности в поведении
системы при использовании этого кода, отключите питание и батареи как можно
быстрее, лучше - немедленно, и отключите этот код.
Мы очень заинтересованы в обеспечении работоспособности этого кода, поэтому,
пожалуйста, пошлите нам свои наблюдения о любых отклонениях.
Когда интерфейс apm активен, вызов процедуры настройки BIOS
с помощью горячих клавиш может вызвать серьезные трудности при возобновлении
работы системы. Программы настройки BIOS следует вызывать в процессе начальной
загрузки или из DOS.
Некоторые реализации подсистемы APM не могут обрабатывать некоторые событие,
например, нажатие кнопки питания или закрытие ноутбука. В таких случаях систему
надо останавливать только с помощью команды apm(8) или zzz(8) .
Замедление врашение диска, уменьшение подсветки экрана и включение питания
по требованию (power on demand) в текущей версии не поддерживаются.
apm(8) ,
zzz(8)
Тацуми Хосокава (Tatsumi Hosokawa) ( hosokawa@jp.FreeBSD.org )
FreeBSD 4.6, 1 ноября 1994 года