metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-07-18 10:55 pm

"Но почемууу?"

Дано: ноутбук с линупсом

включить кулер
echo "on" > /proc/acpi/fan/FAN/state

выключить кулер
echo "3" > /proc/acpi/fan/FAN/state

Как бы очень полезная фича, но вот то, что включается строкой "on" а выключается строкой(числом) "3" - это какие-то очень хитрые жаббы в головах у разработчиков.

PS: Да они же упоротые все.
включение так же происходит, если:
echo "0" > /proc/acpi/fan/FAN/state
echo "o" > /proc/acpi/fan/FAN/state

и еще по другим значениям. Искать закономерность и лезть в исходники драйверов acpi за истиной влом :)

[identity profile] metaclass.livejournal.com 2009-07-19 10:36 am (UTC)(link)
В данном случае это не совсем так, скорее там действительно какие-то последовательности бит влияют.
Но даже если так - это очень плохой подход, за такое при разработке софта вырывают руки и бьют мордой лица об баг-трекер. Если элемента входа программы может быть "число", "строка с числом", "если число меньше нуля, то это дата", "если первая буква a, то это набор битовых флагов" - это источник страшных необъяснимых глюков на пустом месте. В крайнем случае это допустимо в интерфейсе пользователя, но не на уровне бизнес-логики ни в коем случае.

[identity profile] a-lourier.livejournal.com 2009-07-19 06:21 pm (UTC)(link)
Эти цифирки никакого отношения к линуксу не имеют. Это ACPI Power States, которые просто один к одному транслируются в устройство и соответствуют D0 .. D3. Как устройство понимает эти состояния - одному ему ведомо. Для кулеров обычно 0 - это автоматический режим, а D1 - D3 - это три уровня скорости (большая, низкая и выключен). Говорю обычно, потому что это не специфицировано. on и любая другая строка после atoi просто транслируется в 0, поэтому и включает кулер.