MRX Prevent scheduler from running

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

MRX Prevent scheduler from running

1,380 次查看
leifzars
Contributor IV

I have a region of code I want to prevent MQX from context switching. I can't disable interrupts, and I need to be able to insert messages in to queues that have waiting task with higher priority.

Is the only option to raise the priority of the current task while it performs a few message en-queues?

_task_stop_preemption does not work because it is only effective of preventing the scheduling when the slice time of the task has expired.

0 项奖励
回复
3 回复数

1,199 次查看
Carlos_Musich
NXP Employee
NXP Employee

Hi Leif,

in MQX Reference Manual you can see this about _task_stop_preemption... "This includes the context switch at the end of a time-slice".

On one side, this sentence does not mean that it is effective until time-slice expires... It is just making explicit that even once time slice expires context switch will not occur.

On the other hand, if you use FIFO scheduling you don't need to care about time-slice.

Please note that setting a time-slice parameter in task template struct will cause the scheduling to behave as Round-Robin, however leaving this parameter blank or setting it to 0 will cause scheduler to behave as FIFO.

If you have any question please let me know.

Best regards,

Carlos

0 项奖励
回复

1,199 次查看
leifzars
Contributor IV

Thanks,

I understand _task_stop_preemption, and it does not prevent a context switch if the scheduler is called via a MQX function.

So my question still stands,

"Is the only option to raise the priority of the current task while it performs a few message en-queues?"

0 项奖励
回复

1,199 次查看
Carlos_Musich
NXP Employee
NXP Employee

Hi Leif,

You are right, if you call explicitly the scheduler from the task then it will cause a context switch. In this specific case the only way you can prevent it is raising priority.


Regards,
Carlos

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 项奖励
回复