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).