ДокументацияПрограммирование → ядро

nokernel.pl - небольшой файл, запускающий модули ядра.

Каждый модуль должен иметь подпрограмму start, которая принимает 2 параметра:

Создадим конфиг для модуля kernel::test. Обязательный параметр run указывает будет ли модуль запускаться автоматически.

Файл kernel/test.cfg
run => 0
Файл kernel/test.pm
package kernel::test;
use strict;
use Debug;
our @ISA = qw{kernel};

sub start
{
    my(undef, $single, $config) = @_;
    tolog 'Тестовый модуль запущен. Он ничего не делает';
}
1;

Здесь $single будет установлен в случае, когда модуль запущен в монопольном режиме: perl nokernel.pl -m=test. В монопольном режиме ядро запускает всего один модуль. Это может понадобится в случае:

sub start
{
    my(undef, $single, $config) = @_;

    nod::tasks->new(
        task         => sub{ main($config) },
        period       => 5,
        first_period => $single? 0 : 3,
    );
}

sub main
{
    my($config) = @_;
    tolog '.';
}

Модуль каждые 5 секунд записывает в лог (при запуске nokernel -d -m=test) или выводит на экран точку. nod::tasks->new создает задачу, которая будет запускать каждые 5 секунд подпрограмму main. При монопольном запуске, первое выполнение main будет произведено сразу же, иначе через 3 секунды (first_period = 3).