|
| ||||||||||||||||||||||
| ||||||||||||||||||||||
|
2004 г
apmd(8)Тацуми Хосокава (Tatsumi Hosokawa),Коё Хидетака (KOIE Hidetaka), перевод В. Кравчук, OpenXS Initiative НАЗВАНИЕapmd - демон мониторинга расширенного управления питанием (Advanced Power Management) СИНТАКСИСapmd [-d] [-f файл ] [-v]ОПИСАНИЕДемон apmd следит за наступлением заданных событий подсистемы расширенного управления питанием (Advanced Power Management - APM) и, при наступлении одного из этих событий, выполняет соответствующую последовательность команд. Демон apmd обрабатывает только события, указанные в файле конфигурации; все остальные события игнорируются. Для каждого события, о котором уведомляет подсистема APM BIOS, демон apmd вызывает заданную в конфигурационном файле последовательность команд. Когда демон apmd контролирует запросы остановки/режима ожидания (suspend/standby requests), ядро эти запросы обрабатывать не будет. Поэтому, если необходимо выполнять действие при наступлении этих событий, надо явно задать соответствующие команды или вызовы встроенных функций в конфигурационном файле. Демон apmd распознает следующие опции:
При запуске демон apmd читает конфигурационый файл (по умолчанию - /etc/apmd.conf ) и передает набор событий, которые надо контролировать, драйверу устройства APM. При завершении работы демона драйвер устройства APM автоматически прекращает контроль событий. Если процесс apmd получает сигнал SIGHUP , он перечитывает свой конфигурационный файл и уведомляет драйвер устройства APM о любых изменениях в конфигурации. Демон apmd использует устройство /dev/apmctl для выполнения запросов ioctl(2) для контроля событий и управления подсистемой APM. Этот специальный файл устройства открывается в режиме исключительного доступа, поэтому в каждый момент времени может работать только один процесс apmd . Когда демон apmd получает уведомление о событии от подсистемы APM, он запускает порожденный процесс для выполнения команд, указанных в конфигурационном файле, а затем продолжает работу в ожидании других событий. Порожденный процесс выполняет команды последовательно, в указанном порядке. Пока демон apmd обрабатывает список команд для запросов SUSPEND / STANDBY , драйвер устройства APM ядра выдает уведомления подсистеме APM BIOS раз в секунду, так что BIOS знает, что есть еще не выполненные команды, и что запрос еще нельзя считать обработанным. Демон apmd создает файл /var/run/apmd.pid , в котором записывает свой идентификатор процесса. Этот идентификатор можно использовать для остановки или переконфигурирования процесса apmd . КОНФИГУРАЦИОННЫЙ ФАЙЛСтруктура конфигурационного файла демона apmd весьма проста. Например, конструкция:
apm_event SUSPENDREQ {
exec "sync &&
sync &&
sync"; exec "sleep
1"; exec "zzz";
}
вызовет получение демоном apmd события APM " SUSPENDREQ " (которое может инициироваться закрытием ноутбука), при обработке которого трижды выполняется команда " sync ", затем демон ожидает 1 секунду и выполняет команду zzz ( apm-z ) для перевода системы в состояние останова. Итак, конфигурационный файл содержит одну или более подобных конструкций со следующими компонентами: Ключевое слово apm_event apm_event - это ключевое слово, свидетельствующее о начале конструкции, задающей обработку событий.События APM Если необходимо выполнять одни и те же команды для разных событий, имена событий перечисляются через запятую. Поддерживаются следующие имена событий:
Встроенные функции Вместо команд можно также вызывать встроенные функции apmd . После имени встроенной функции надо указывать точку с запятой, так же, как и в конце строки команды. В настоящее время поддерживаются следующие встроенные функции:
ПРИМЕРЫТипичные команды в конфигурационном файле:
apm_event SUSPENDREQ {
exec "/etc/rc.suspend";
}
apm_event USERSUSPENDREQ {
exec "sync && sync && sync";
exec "sleep 1";
exec "apm -z ";
}
apm_event NORMRESUME, STANDBYRESUME {
exec "/etc/rc.resume";
}
# Обработка события resume для мыши на последовательном порту:
# переинициализация демона moused(8), подключенного к этому порту.
#
#apm_event NORMRESUME {
# exec "kill -HUP `cat /var/run/moused.pid`";
#}
#
# Обработка события suspend для пользователей жестких дисков ATA:
# выполняем standby вместо suspend .
# #apm_event SUSPENDREQ {
# reject;
# exec "sync && sync && sync";
# exec "sleep 1";
# exec "apm -Z";
#}
ФАЙЛЫ/etc/apmd.conf /dev/apmctl /var/run/apmd.pidССЫЛКИapm(4) , apm(8)АВТОРЫМицуру Ивасаки (Mitsuru IWASAKI) ( iwasaki@FreeBSD.org), Определенный вклад внесли также: Уорнер Лош (Warner Losh) ( imp@FreeBSD.org), ИСТОРИЯДемон apmd появился в FreeBSD 3.3. FreeBSD 4.6, 28 июня 1999 года |
|
CITForum © 1997–2025