Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

lshal
Список и отладка HIDL HAL

Тип файла: команда
  Eng  

lshal: Список и отладка HIDL HAL.
(для AIDL HAL см. «dumpsys»)

Команды:


list Список HIDL HAL

debug Отлаживать указанный HIDL HAL

help Напечатать справочное сообщение

wait Дождитесь запуска HIDL HAL, если он еще не запущен

Если команда не указана, по умолчанию используется list


list:
lshal
lshal list Список всех hals с порядком и столбцами
по умолчанию ('lshal list -Vliepc')
lshal list [-h|--help]

  • -h, --help: вывести справочное сообщение для списка
    (lshal help list) lshal [list] [OPTIONS...]

  • -i, --interface: напечатать столбец имени экземпляра

  • -l, --released: напечатать «выпущен?» столбец
    (Y=выпущено, N=не выпущено, ?=неизвестно)

  • -t, --transport: распечатать столбец режима транспорта

  • -r, --arch: распечатать столбец разрядности

  • -s, --hash: распечатать хэш интерфейса

  • -p, --pid: распечатать PID сервера или командную строку сервера,
    если задан параметр -m

  • -a, --address: распечатать сервер столбец адреса объекта

  • -c, --clients: вывести клиентские PID или клиентские командные строки,
    если установлен параметр -m

  • -e, --threads: вывести текущие используемые/доступные потоки
    (обратите внимание, доступные темы создаются лениво)

  • -m, --cmdline: печатать командную строку вместо PID

  • -d[=<arg>], --debug[=<arg>]: выдавать отладочную информацию из
    IBase::debug с пустыми параметрами.
    Нельзя использовать с --neat.
    Записывает в указанный файл, если указан 'arg', иначе stdout

  • -V, --vintf: вывести информацию VINTF.
    Этот столбец содержит список, разделенный запятыми:
    DM: если HIDL HAL находится в манифесте устройства
    DC: если HIDL HAL находится в матрице совместимости устройств
    FM: если HIDL HAL находится в манифесте платформы
    FC: если HIDL HAL находится в матрице совместимости фреймворка
    X: если HIDL HAL не находится ни в одном из приведенных выше списков

  • -S, --service-status: вывести столбец статуса службы
    Возможные значения:
    alive: служба hwbinder активна и работает;
    registered; dead: зарегистрирован в hwservicemanager,
    но не отвечает;
    declared: объявлено только в манифесте VINTF,
    но не зарегистрировано в hwservicemanager;
    N/A: нет информации о сквозных HAL

  • -A, --all: вывести все столбцы

  • --init-vintf: из скелетного манифеста HAL в указанный файл,
    или стандартный вывод, если файл не указан

  • --init-vintf-partition=<arg>: Указать раздел манифеста HAL,
    сгенерированного --init-vintf
    Допустимые значения (по умолчанию 'vendor'):
    'system'
    'vendor'
    'odm'

  • --sort=<arg>: сортировать по столбцу
    'arg' может быть (i|interface) или (p|pid)

  • --neat: вывод обрабатывается машиной (без пояснительного текста)
    Нельзя использовать с --debug

  • --types=<arg>: разделенный запятыми список из одного или
    нескольких разделов.
    Вывод ограничен выбранными разделами
    Допустимые варианты (по умолчанию 'b,c,l'):
    (b|binderized)
    (c|passthrough_clients)
    (l|passthrough_libs)
    (v|vintf)
    (z|lazy)
    (a|all)


    debug:
    lshal debug [-E] <интерфейс> [опции [опции [...]]]
    Распечатать отладочную информацию указанного интерфейса

  • -E: исключает вывод отладки, если HIDL HAL на самом деле является подклассом
    <интерфейс>: формат 'android.hardware.foo@1.0::IFoo/default'
    Если имя экземпляра отсутствует, используется 'по умолчанию'.
    options: параметры, разделенные пробелами, для IBase::debug.


    help:
    lshal help справочное сообщение
    lshal help list справочное сообщение для list
    lshal help debug справочное сообщение для debug
    lshal help help справочное сообщение для help
    lshal help wait справочное сообщение для wait


    wait:
    lshal wait <интерфейс/экземпляр>

    Для HAL, который находится на устройстве, дождитесь запуска HAL
    Это не запустит HAL, если только он не настроен как ленивый HAL

    <интерфейс>: формат 'android.hardware.foo@1.0::IFoo/default'
    Если имя экземпляра отсутствует, используется 'по умолчанию'

       

    Комментарии
    Hardware Abstraction Layer (HAL)-
    Уровень аппаратной абстракции

    HIDL - язык определения интерфейса HAL
    HIDL — язык описания интерфейса (IDL), определяющий интерфейс между HAL и
    его пользователями.
    HIDL позволяет указывать типы и вызовы методов, собранные в интерфейсы и пакеты.
    В более широком смысле HIDL — это система для связи между кодовыми базами,
    которые могут быть скомпилированы независимо друг от друга.
    Начиная с Android 10, HIDL устарел, и Android переходит на повсеместное использование AIDL

    HIDL предназначен для межпроцессного взаимодействия (IPC).
    HAL, созданные с помощью HDL, называются Binderized HAL, поскольку они могут
    взаимодействовать с другими уровнями архитектуры с помощью вызовов межпроцессного
    взаимодействия (IPC).

    Binderized HAL запускаются в отдельном процессе от клиента, который их использует.
    Для библиотек, которые должны быть связаны с процессом, также доступен сквозной режим
    не поддерживается в Java).

    HIDL определяет структуры данных и сигнатуры методов, организованные в интерфейсы
    (аналогично классу), которые собираются в пакеты.

    Синтаксис HIDL выглядит знакомым программистам на C++ и Java,
    но с другим набором ключевых слов. HIDL также использует аннотации в стиле Java

    Терминология

    binderized Указывает, что HIDL используется для удаленных вызовов процедур между процессами, реализованными с помощью механизма, подобного Binder. См. также прохождение .
    callback, asynchronous Интерфейс, обслуживаемый пользователем HAL, передаваемый в HAL (с использованием метода HIDL) и вызываемый HAL для возврата данных в любое время.
    callback, synchronous Возвращает данные из реализации метода HIDL сервера клиенту. Не используется для методов, возвращающих void или одно примитивное значение.
    client Процесс, вызывающий методы определенного интерфейса. Процесс платформы HAL или Android может быть клиентом одного интерфейса и сервером другого. См. также прохождение .
    extends Указывает интерфейс, который добавляет методы и/или типы к другому интерфейсу. Интерфейс может расширять только один другой интерфейс. Может использоваться для дополнительного приращения версии в пакете с тем же именем или для нового пакета (например, расширения поставщика) для создания более старого пакета.
    generates Указывает метод интерфейса, возвращающий значения клиенту. Чтобы вернуть одно не примитивное значение или более одного значения, генерируется синхронная функция обратного вызова.
    interface Коллекция методов и типов. Переведен в класс на C++ или Java. Все методы в интерфейсе вызываются в одном направлении: клиентский процесс вызывает методы, реализованные серверным процессом.
    oneway При применении к методу HIDL указывает, что метод не возвращает значений и не блокируется.
    package Коллекция интерфейсов и типов данных, разделяющих версию.
    passthrough Режим dlopen , в котором сервер является разделяемой библиотекой, открытой клиентом. В сквозном режиме клиент и сервер — это один и тот же процесс, но разные кодовые базы. Используется только для переноса устаревших кодовых баз в модель HIDL. См. также Связанный .
    server Процесс, реализующий методы интерфейса. См. также прохождение .
    transport Инфраструктура HIDL, которая перемещает данные между сервером и клиентом.
    version Версия пакета. Состоит из двух целых чисел, старшего и младшего. Второстепенные приращения версии могут добавлять (но не изменять) типы и методы.