Импорт кода из Android в основное Linux-ядро

В рамках рабочей группы Linux Foundation CE Workgroup организован проект по «возврату» программного кода из операционной системы Android в стандартную ветку ядра Linux (mainline). Это очень полезный проект, поскольку разработчики мобильной ОС сделали некоторые патчи, которые могут быть полезны для мобильных Linux-устройств, таких как нетбуки и планшеты. Некоторые патчи внесены обратно в ядро, а другие — нет, а ведь тот же патч wakelocks может заметно улучшить энергоэффективность Linux-устройств.

С момента появления Android использовалось ядро Linux 2.6.x, с некоторыми изменениями, внесёнными Google. Версия Android 3.x Honeycomb была основана на ядре Linux 2.6.36. До сих пор эти патчи так и не возвращены обратно в ядро Linux, хотя лежат отдельно на kernel.org.

Инициативу по возврату кода из Android выдвинул председатель рабочей группы Architecture Group из компании Sony Тим Бёрд (Tim Bird). Созданы вики-страница и лист рассылки для обсуждения этого проекта.
+24
24 декабря 2011, 20:01
8
alizar 2222,2 G+

комментарии (10)

+1
adontz #
WakeLocks был рассмотрен и отвергнут
lwn.net/Articles/318611/
+2
datacompboy #
Конкретно по нему — я еще и не понимаю с какого перепою он может повлиять на энергоэффективность?
Наоборот — на энергоНЕэффективность :D
0
Zlobober #
Momma, I'm coming home!
–1
bitterman #
Работы очень много, потому что одноядерные армы — это ещё далеко не всё то, на чём должен корректно выполняться Linux :-(
+1
SDSWanderer #
Армы уже далеко не только одноядерные… Сколько там ядер у последней тегры?
0
bitterman #
боюсь, многоядерность — подмножество SMP. Могу ошибаться.
+3
stboris #
Если бы вы потрудились почитать ссылки, которые приводите, то поняли бы, что пишите бред:

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.


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

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.