CoreProcessScheduler: Application Processor System

CoreProcessScheduler: The Application Processor System.

Why?

Because NeKernel targets multiple cores at first, thus the Application Processors subsystem.

How?

A few possibilites with that architecture:

  • Map cores to a HW Thread structure, A C++ structure.
  • Make it run our task when it is registered by mp_register_task
  • We keep the thread ID from the HTS (HardwareThreadScheduler) inside the HW Thread.
  • And we plug that into the higher level of the scheduler architecture.

This way the design is modular, easy to extend, and easily debuggable.

C++ function signature (defined with C mangling)

EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ProcessID thrdid);

Amlal.