Как стать автором
Обновить

Комментарии 10

Конкретно по нему — я еще и не понимаю с какого перепою он может повлиять на энергоэффективность?
Наоборот — на энергоНЕэффективность :D
Работы очень много, потому что одноядерные армы — это ещё далеко не всё то, на чём должен корректно выполняться Linux :-(
Армы уже далеко не только одноядерные… Сколько там ядер у последней тегры?
боюсь, многоядерность — подмножество SMP. Могу ошибаться.
Если бы вы потрудились почитать ссылки, которые приводите, то поняли бы, что пишите бред:

The first version of Android utilized a system called «wakelocks», which was a set of patches to the Linux kernel to allow a caller to prevent the system from going to low power state.


Эти патчи не улучшают энергоэффективность, а улучшают отзывчивость.
там и подсистема-то такая-то. Для нечитающих скажу, что её можно заменить одним atomic_int, который бы инкрементировали все те, кто хочет блокировать засыпание. Вместо этого там аж несколько функций, которые нужно в определённом порядке вызывать, чтобы решить ту же задачу.
Нельзя заменить. Если процесс умирает, то нужно вычесть каунтер для этого процесса. К отзывчивости wakelocks не имеют никакого отношения. Они нужны в частности для того, чтобы телефон не уснул во время обработки какого-нибудь сообщения при кратковременном пробуждении из спячки. К примеру, телефон перескакивает на новую GSM cell. Хотелось бы узнать координаты этого места и не хотел ли пользователь, чтобы его об этом предупредили (Locale). Если телефон заснет во время обработки этого события, то пользователь получит уведомление, только когда включит телефон. Отладка всего этого, занятие еще то, поэтому wakelock именованные объекты. К тому-же система собирает статистику, какое приложение ответственно за какую часть истраченной батарейки. Дерзайте, замените это всё на каутер.
а без счётчика как сделано? полезть-посмотреть неинтересно. Давайте попроектируем. Все блокирующие висят в списке со значением своего текущего пожелания спать и при выяснении, можно ли сейчас спать или нет, по списку пробегают, смотрят, кто сдох и убирают его из этого списка? Не стоит же там хук где-то в районе убийства потока, чтобы wakelock за ним почистить?

Именовать и статистика — это хорошо, но есть ли тут важная первичка вообще для анализа? Батарейку ест потребление мощности (читай, нужен powertop), а не просто блокирование режима сна. Но, конечно, именовать для дебага, конечно, хорошо.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории