nokernel.pl - небольшой файл, запускающий модули ядра.
Каждый модуль должен иметь подпрограмму start, которая принимает 2 параметра:
Создадим конфиг для модуля kernel::test. Обязательный параметр run указывает будет ли модуль запускаться автоматически.
run => 0
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).