nk-gen-c

02 августа 2023

ID nkgenc

Компилятор NK (nk-gen-c) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений.

Компилятор NK принимает EDL-, CDL- или IDL-файл и создает следующие файлы:

  • H-файл, содержащий объявление и реализацию транспортных методов и типов.
  • D-файл, в котором перечислены зависимости созданного C-файла. Этот файл может быть использован для автоматизации сборки с помощью утилиты make.

Синтаксис использования компилятора NK:

nk-gen-c [-I PATH][-o PATH][--types][--interface][--client][--server][--extended-errors][--enforce-alignment-check][--help][--version] FILE

Параметры:

  • FILE

    Путь к EDL-, CDL- или IDL-описанию, для которого необходимо сгенерировать транспортные методы и типы.

  • -I PATH

    Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории /opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include.

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

    Чтобы указать более одной директории, можно использовать несколько параметров -I.

  • -o PATH

    Путь к существующей директории, в которой будут созданы файлы, содержащие транспортные методы и типы.

  • -h, --help

    Отображает текст справки.

  • --version

    Отображает версию nk-gen-c

  • --enforce-alignment-check

    Включает обязательную проверку выравнивания обращений к памяти, даже если такая проверка отключена для целевой платформы. Если проверка включена, то компилятор NK добавляет дополнительные проверки выравнивания в код валидаторов IPC-сообщений.

    По умолчанию параметры проверки выравнивания обращения к памяти задаются для каждой платформы в файле system.platform.

  • --extended-errors

    Включает расширенную обработку ошибок в коде транспортных методов.

Выборочная генерация

Чтобы уменьшить количество генерируемого компилятором NK кода, можно использовать флаги выборочной генерации. Например, для программ, реализующих службы, удобно использовать флаг --server, а для программ, являющихся клиентами служб, удобно использовать флаг --client.

Если ни один из флагов выборочной генерации не указан, компилятор NK создаст все возможные для указанного файла транспортные типы и методы.

Флаги выборочной генерации для IDL-файлов:

  • --types

    Компилятор создаст только константы и типы, включая переопределенные (typedef), из входного IDL-файла, а также типы из импортируемых IDL-файлов, которые используются в типах входного файла.

    При этом константы и переопределенные типы из импортируемых IDL-файлов не будут явно включены в генерируемые файлы. Если вам необходимо использовать типы из импортируемых файлов в коде, нужно отдельно сгенерировать H-файлы для каждого такого IDL-файла.

  • --interface

    Компилятор создаст файлы, создаваемые с флагом --types, а также структуры сообщений запросов и ответов для всех методов этой службы.

  • --client

    Компилятор создаст файлы, создаваемые с флагом --interface, а также клиентские прокси-объекты и функции их инициализации для всех методов этой службы.

  • --server

    Компилятор создаст файлы, создаваемые с флагом --interface, а также типы и методы диспетчера этой службы.

Флаги выборочной генерации для CDL-файлов и EDL-файлов:

  • --types

    Компилятор создаст файлы, создаваемые с флагом --types для всех служб, предоставляемых этим компонентом.

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

  • --interface

    Компилятор создаст файлы, создаваемые с флагом --types для этого компонента/класса процессов, а также файлы, создаваемые с флагом --interface для всех предоставляемых этим компонентом.

  • --client

    Компилятор создаст файлы, создаваемые с флагом --interface, а также клиентские прокси-объекты и функции их инициализации для всех служб, предоставляемых этим компонентом.

  • --server

    Компилятор создаст файлы, создаваемые с флагом --interface, а также типы и методы диспетчера этого компонента/класса процессов и типы и методы диспетчеров для всех служб, предоставляемых этим компонентом.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!