Child task to access message queue

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

Child task to access message queue

1,787 次查看
CarlFST60L
Senior Contributor II

Hi,

 

Is there an easy way to allow any child task to receive messages from a private message queue? The code was orginally written as if the queue ID was enough information to access the messages on the queue.


Example

'Main_Task' creates pool / queue to the task 'RXI_Task'

'Main_Task' calls various functions which get data via the message queue to 'RXI_Task'

 

'Main_Task' then creates several child tasks which can call the same functions called from 'Main_Task', these functions get the data via 'RXI_Task' queue. The problem is when these child tasks are created, the message queue ID is no longer enough to get the messages from 'RXI_Task', only 'Main_Task' can access those messages.

 

There is a mutex protecting the functions from multipule tasks trying to access the msgq.

 

Do i have to rewrite this? or is there some other way?

 

 

0 项奖励
回复
2 回复数

925 次查看
MQXuser
Contributor III

Hi Carl,

 

Are you closing(with your Main Task) and reopening the Message Queue with the child task trying to receive the message?

Remember that Only the task that opens a private message queue can receive messages from the queue.

 

And just a small question, if you are protecting the msgq with a mutex, should we protect message pools

with mutex too? I thought MQX protected this functions  by default?

 

msg_ptr = (GENERIC_DATA_MSG_PTR)_msg_alloc(mp_QuadSPI);

 

If different priority tasks have calls to the instruction above, should we use Mutex to prevent simultaneous access?

 

Regards,

 

0 项奖励
回复

925 次查看
CarlFST60L
Senior Contributor II
Maybe it makes no sense, but it would be nice if what ever task knows the queue ID could get messages with that queue ID. Or is there was a simple way you could change ownership of the message queue.
0 项奖励
回复