Чтобы включить в описание политики EDL-файл для ядра KasperskyOS, нужно использовать любую из следующих деклараций:
use EDL kl.core.Core
task class kl.core.Core : kl.core.Core
Чтобы включить в описание политики EDL-файл для программы (например, для драйвера или прикладной программы), нужно использовать одну из следующих деклараций:
use EDL <имя класса процессов>
task class <имя класса процессов> : <ссылка на EDL-файл>
Имя класса процессов в декларации use EDL
и ссылка на EDL-файл в декларации task class
представляет собой путь к EDL-файлу (без расширения и точки перед ним) относительно директории, которая включена в набор директорий, где компилятор nk-psl-gen-c
ищет PSL-, IDL-, CDL-, EDL-файлы. (Этот набор директорий задается параметрами -I
<путь к директории
> при запуске скрипта makekss
или компилятора nk-psl-gen-c
.) В качестве разделителя в описании пути используется точка.
Имя класса процессов и ссылка на EDL-файл в декларации task class
могут отличаться. Декларация task class
включает в описание политики EDL-файл, игнорируя имя класса процессов в этом файле. Имя класса процессов, указанное в EDL-файле, замещается именем класса процессов, указанным в декларации. Один и тот же EDL-файл может быть включен в описание политики несколько раз, но с разными именами классов процессов.
Пример:
/* Включение файла UART.edl, который находится в
* KasperskyOS SDK по пути sysroot-*-kos/include/kl/drivers. */
use EDL kl.drivers.UART
/* Включение файла VfsNet.edl, который находится в
* KasperskyOS SDK по пути sysroot-*-kos/include/kl.
* Файл включается четыре раза с разными именами классов процессов. */
task class VfsNet : kl.VfsNet
task class kl.VfsNet : kl.VfsNet
task class kl.VfsNet1 : kl.VfsNet
task class kl.VfsNet2 : kl.VfsNet
/* Компилятор nk-psl-gen-c должен быть настроен на поиск
* PSL-, IDL-, CDL-, EDL-файлов в директории sysroot-*-kos/include. */
В декларации task class
можно не указывать ссылку на EDL-файл:
task class <имя класса процессов>
Эта декларация имитирует включение EDL-файла, который содержит только имя класса процессов. То есть, используя эту декларацию, не нужно создавать EDL-файлы, содержащие только декларацию task class
или entity
.
Пример:
/* Имитация включения EDL-файла, который содержит только
* декларацию task class start.Empty. */
task class start.Empty
/* Имитация включения EDL-файла, который содержит только
* декларацию task class MyClient. */
task class MyClient
Имена классов процессов в декларациях включения EDL-файлов должны быть уникальными в одном описании политики независимо от того, какие из возможных деклараций включения EDL-файлов используются.
Компилятор nk-psl-gen-c
находит IDL-, CDL-файлы через EDL-файлы, так как EDL-файлы содержат имена компонентов и интерфейсов, CDL-файлы также содержат имена компонентов и интерфейсов для поиска IDL- и CDL-файлов.