As described in #40 , it is essential to provide the RROS kernel with support for SMP. This PR is intended to address that issue.
In this PR, the changes are mainly related to the following aspects:
Providing support for SMP by adding new functionality to the subsystems involved, such as the scheduling subsystem, the clock subsystem, the interrupt subsystem, and so on.
Fix lock usage to support multi-CPU. When there is only one CPU used, turning off interrupts can be used instead of using locks. Therefore, in order to support SMP, the areas involved need to be modified to the correct use of locks.
Some wrappers in RFL are not perfect, so they need to be further improved.
Add test code for SMP.
Eventually, after testing, RROS has been able to support parallel execution of multiple tasks on multiple CPUs.
A summary of this PR can be found on my blog. There is also a useful discussion about SMPhere.
As described in #40 , it is essential to provide the
RROS
kernel with support forSMP
. ThisPR
is intended to address that issue.In this
PR
, the changes are mainly related to the following aspects:SMP
by adding new functionality to the subsystems involved, such as the scheduling subsystem, the clock subsystem, the interrupt subsystem, and so on.CPU
. When there is only oneCPU
used, turning off interrupts can be used instead of using locks. Therefore, in order to supportSMP
, the areas involved need to be modified to the correct use of locks.RFL
are not perfect, so they need to be further improved.SMP
.Eventually, after testing,
RROS
has been able to support parallel execution of multiple tasks on multipleCPU
s.A summary of this
PR
can be found on my blog. There is also a useful discussion aboutSMP
here.