mrbgems/hal-posix-task/README.md
POSIX Hardware Abstraction Layer (HAL) implementation for mruby-task.
Provides timer and interrupt support for the mruby-task cooperative scheduler on POSIX-compliant platforms. Uses SIGALRM and setitimer() for periodic timer ticks, and sigprocmask() for interrupt protection.
SIGALRM, sigaction, sigprocmask)setitimer, ITIMER_REAL)MRuby::Build.new do |conf|
# ... other configuration ...
# Specify POSIX HAL - automatically brings in mruby-task
conf.gem core: 'hal-posix-task'
end
MRuby::Build.new do |conf|
# ... other configuration ...
# Auto-detects and selects hal-posix-task on POSIX platforms
conf.gem core: 'mruby-task'
end
setitimer(ITIMER_REAL, ...) to generate periodic SIGALRM signalsMRB_TICK_UNIT (default: 4ms)mrb_tick() for all registered VM instancessigprocmask() to block SIGALRMMRB_TASK_MAX_VMS concurrent mruby VM instances (default: 8)The implementation dynamically enables/disables the timer based on task state:
Override these macros in your build config if needed:
conf.gem core: 'hal-posix-task' do |spec|
# Custom tick interval (10ms instead of default 4ms)
spec.build.defines << 'MRB_TICK_UNIT=10'
# Custom timeslice (5 ticks instead of default 3)
spec.build.defines << 'MRB_TIMESLICE_TICK_COUNT=5'
# More concurrent VMs (16 instead of default 8)
spec.build.defines << 'MRB_TASK_MAX_VMS=16'
end
SIGALRM conflicts with other code using the same signalmruby-task - Core task schedulerhal-win-task - Windows HAL implementationmrbgems/mruby-task/README.md