Недавно обнаружилось, что баг, мучивший меня в ядре Linux, неожиданно проявился и в FreeBSD, системе, казалось бы, не имеющей с ней ничего общего. Речь идет о проблеме с батареей, когда ноутбук засыпает, а затем не показывает уровень заряда. Мой старый Asus F3Ke относится к эпохе, когда ACPI только начинал развиваться, и производители не всегда обеспечивали его правильную поддержку.

Примечательно, что FreeBSD заимствует код из Linux. Например, в проекте появились такие компоненты, как DBus и Bluez. В результате был создан слой для эмуляции Linux, позволяющий запускать приложения без пересборки. Однако, заимствование целых подсистем в ядро — это уже другой уровень.

В FreeBSD есть каталоги contrib, содержащие внешний код. Именно в одном из них находится причина проблемы — файл evregion.c из ACPICA. Правка была сделана, сохранив оригинальный комментарий, что подтверждает, как код проходит между ОС без значительных изменений. Интересно, что проект ACPICA, разработанный компанией Intel, имеет обширный код, который попадает в обе системы практически автоматически. Этот случай подчеркивает сложные связи между различными операционными системами в открытом коде.