Проект по продвижению Android-патчей в ядро Linux

Тим Берд (Tim Bird), инженер компании Sony и участник группы разработки встраиваемых систем в Linux Foundation, направил в список рассылки Linux-ядра письмо с анонсом проекта Android Mainlining, цель которого продвинуть в ядро Linux патчи, необходимые для работы платформы Android.

К проекту уже присоединились некоторые независимые разработчики, а также компании, занимающиеся производством встраиваемой и мобильной техники. Для координации работы создана страница на сайте elinux.org, на которой опубликован список патчей, состояние проекта на текущий момент, а также преимущества, которые он даст производителям устройств:

  • Возможность использования последней версии ядра Linux при портировании Android;
  • Концентрация усилий на одном ядре при разработке драйверов устройств;
  • Упрощение процедуры разработки и сопровождения кода.

Также на сайте опубликован порядок действий, который необходимо проделать для включения патчей в ядро. Упрощенно он выглядит так: выяснение причин, мешающих включению; внесение требуемых изменений; обсуждение новой версии с командой Google; запрос на включение; повторное выполнение всех шагов в случае необходимости.

Напомним, что команда разработчиков Android уже направляла запрос на включение патчей в ядро, небольшая часть из которых была принята. Остальные патчи несколько лет оставались в ветке "-staging" и в конце-концов были удалены ввиду отсутствия интереса со стороны Google в их доработке до приемлемого состояния.

Среди созданных в рамках проекта Android патчей, которые до сих пор не включены в состав основного ядра Linux:

  • wakelocks - механизм блокировок для системы управления питанием, позволяющих предотвратить переход в спящий режим в ситуациях, когда это недопустимо (например, активен разговор по телефону), и наоборот для инициирования скорого засыпания при неактивности;
  • ashmem - реализация разделяемой памяти, позволяющая маркировать незакреплённые страницы памяти, которые в последующем можно освободить в ситуации нехватки свободной памяти;
  • Дополнительные проверки прав доступа для обеспечения безопасного выполнения сетевых операций;
  • binder - используемый в Android механизм межпроцессного взаимодействия;
  • USB-драйвер для эмуляции хранилища;
  • Реализация LMK (low memory killer), управляющего принудительным завершением приложений в случае нехватки памяти;
  • ram console - возможность сохранить вывод консоли в специальной области ОЗУ, к которой можно получить доступ после перезагрузки в режиме диагностики;
  • Драйвер для управления памятью графической карты для чипов ION.

©  OpenNet