KasperskyOS Community Edition 1.0

Пример hello

По сложившейся традиции в мире разработки ПО, первое, с чего стоит начать знакомство с любой технологией – это поприветствовать с помощью нее мир. Не будем нарушать эту традицию в KasperskyOS и начнем с примера, выводящего на экран строку Hello world!.

KasperskyOS позволяет разрабатывать решения как на языке C, так и на C++.

Код hello.c выглядит привычным и простым для разработчика на языке C – он полностью совместим с POSIX:

hello.c

#include <stdio.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

fprintf(stderr,"Hello world!\n");

return EXIT_SUCCESS;

}

Чтобы запустить файл Hello в KasperskyOS, понадобится несколько дополнительных действий.

Разработка приложений под KasperskyOS имеет следующие особенности:

Во-первых, каждая сущность (так в KasperskyOS называются приложения и соответствующие им процессы) должна быть статически описана. Описание содержится в файлах с расширениями edl, cdl и idl, которые используются для сборки решения. Минимально возможное описание сущности – EDL-файл, в котором указано имя сущности. Все сущности, разрабатываемые в первой части руководства, имеют минимальное статическое описание (только EDL-файл с именем сущности).

Во-вторых, все запускаемые сущности должны содержаться в загружаемом образе KasperskyOS. Поэтому каждый пример в этом руководстве представляет собой не отдельную сущность (сущности), а готовое решение на базе KasperskyOS, включающее в себя образ ядра, инициализирующую сущность и вспомогательные сущности (например, драйверы).

EDL-описание сущности Hello

Статическое описание сущности Hello состоит из единственного файла Hello.edl, в котором необходимо прописать имя сущности:

Hello.edl

/* После ключевого слова "entity" указано имя сущности. */

entity Hello

Имя сущности должно начинаться с заглавной буквы. Имя EDL-файла должно совпадать с именем сущности, которую он описывает.

Во второй части руководства показаны примеры более сложных EDL-описаний, а также появляются CDL- и IDL-описания.

Создание инициализирующей сущности Einit

При загрузке KasperskyOS ядро запускает сущность с именем Einit. Сущность Einit запускает все остальные сущности, входящие в решение, то есть служит инициализирующей сущностью.

В составе пакета инструментов KasperskyOS Community Edition поставляется утилита einit, которая позволяет сгенерировать код инициализирующей сущности (einit.c) на основе init-описания. В приведенном ниже примере файл с init-описанием называется init.yaml, хотя может иметь любое имя.

Подробнее см. "Запуск сущностей".

Для того чтобы сущность Hello запустилась после загрузки операционной системы, достаточно указать ее имя в файле init.yaml и собрать из него сущность Einit.

init.yaml

entities:

# Запустить сущность "Hello".

- name: Hello

Схема сборки примера hello

Общая схема сборки примера hello выглядит следующим образом:

Сборка и запуск примера hello

См. "Сборка и запуск примеров".