interrupt handling on task scheduling

Francesco Poletti fpoletti at libero.it
Mon Jul 19 16:06:51 UTC 2004


Hy all,
We have a porting for the rtems 4.6 working on our simulated arm board.
We are developing message passing support for a multiprocessor context with the
help of dedicated hardware.
We are pointing out some problems in the interrupt handling while the systems is
supending a task...
Basically we notice that while we run the command rtems_task_suspend(RTEMS_SELF)
the OS sometimes performe this sequency of command:
_CPU_ISR_Disable(level);
_CPU_ISR_Flash();
_CPU_ISR_Enable(level)

_CPU_ISR_Disable(level);
_CPU_ISR_Enable(level)

_CPU_ISR_Set_level(); //which enforce the system to reable the interrupt on arm
processor

We need that the OS reable the interrupt because we supsend the thread waiting
for an interrupt and at the same time we have already run
_CPU_ISR_Disable(level); for give to the critical section of our API the
interrupt safeness... Of course if none reables the interrupt handling before
the task suspends then the systems get locked...

The point is that we were not able to understand from where the
_CPU_ISR_Set_level()is launched...
As far as we noticed it's invoked when the new task is scheduled...is it possible?

Thanks in advance, Francesco.







More information about the users mailing list