EDL

Каждая сущность в KasperskyOS должна быть описана на языке Entity Definition Language в отдельном файле <имя сущности>.edl. Мы постоянно работаем над снижением барьеров входа в технологию, поэтому язык EDL имеет предельно простой синтаксис.

edl-файл содержит следующие разделы (порядок важен):

  1. Имя сущности. Обязательный раздел, начинающаяся с ключевого слова entity, за которым следует имя сущности.
  2. Интерфейс безопасности, используемый сущностью. Раздел не является обязательным и должен быть добавлен, только если сущность использует интерфейс безопасности. Декларируется ключевым словом security. Мы рассмотрим интерфейсы безопасности позднее.
  3. Список экземпляров компонентов, входящих в сущность. Раздел не является обязательным и добавляется в том случае, если сущность предоставляет функциональность другим сущностям. Каждый экземпляр компонента указывается отдельной строкой в следующем формате:

    <имя экземпляра компонента>:<имя компонента>

    Для каждого указанного компонента необходимо создать отдельный файл <имя компонента>.cdl, содержащий описание компонента на языке CDL. В сущность можно добавить несколько экземпляров одного и того же компонента, причем каждый может иметь отдельное состояние (см. ниже пример сущности uart_driver).

Строго говоря, в edl-файле сущности указывается не имя сущности, а имя класса сущности (EIID). Однако в KasperskyOS Education Kit есть ограничение на запуск сущностей: можно запустить не более одной сущности каждого класса. Поэтому можно считать, что имя каждой сущности просто совпадает с ее EIID.

EDL поддерживает однострочные и многострочные комментарии в стиле C++:

/* Это комментарий

И это тоже */

// Ещё один комментарий

Примеры edl-файлов

В простейшем случае сущность не использует интерфейс безопасности и не предоставляет функциональности другим сущностям, подобно сущности hello из примера hello. edl-описание такой сущности содержит только ключевое слово entity и имя сущности.

hello.edl

// Имя сущности: hello

entity hello

В следующем примере сущность uart_driver содержит два экземпляра компонента uart_comp – по одному на каждое UART-устройство.

Сущность uart_driver не использует интерфейс безопасности.

uart_driver.edl

// Имя сущности: uart_driver

entity uart_driver

// uart0 и uart1 - имена экземпляров компонента uart_comp,

// которые отвечают за два различных устройства

uart0: uart_comp

uart1: uart_comp

В начало