Каждая сущность в KasperskyOS должна быть описана на языке Entity Definition Language в отдельном файле <имя сущности>.edl
. Мы постоянно работаем над снижением барьеров входа в технологию, поэтому язык EDL имеет предельно простой синтаксис.
edl-файл содержит следующие разделы (порядок важен):
entity
, за которым следует имя сущности.security
. Мы рассмотрим интерфейсы безопасности позднее.<имя экземпляра компонента>:<имя компонента>
Для каждого указанного компонента необходимо создать отдельный файл <имя компонента>.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