[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problem about the dispatching of the MPCI_Receive_server under multi-processor(more than 2 processors)



Dear Sirs
I have a problem with RTEMS,It will be very appreciated if you can
tell me how to deal with it.

I am working at the multi-processor's support of 4 processors under
leon2. When I tested the fuction message_queue_broadcast, I
encountered a problem. I make Nodel 1 to create a message queue, and
make Nodel2, Node3 and Node4 to invoke the function
message_queue_receive. Then I make Node1 to invoke the function
message_queue_broadcast 1 time after sleeping for a long time.
According to the description,it should broadcast 3 messages, but in
fact it has only broadcast 1 message. Then I modified the test
program.
 I make Node1 to create a message queue, and make Node2, Node3, and
Node4 to invoke the function message_queue_receive. Then I make Node1
to invoke the function maeeage_queue_broadcast 4 times after sleeping
for a long time. The result is that the former three times, Node1
broadcast 1 message,  and the final time it broadcast 0 message. It
means that the receive requests of Node2, Node3, and Node4 haven't
lost. But why the function message_queue_broadcast hasn`t broadcast 3
messages, and when I create 4 tasks with single processor, and make
task1 to create a message queue,and make task2, task3, task4 to invoke
the function message_queue_receive, Then I make task 1 to invoke the
function message_queue_broadcast 1 time after sleeping for a long
time. Task1 can broadcast 3messages.
Why the function message_queue_broadcast work abnormally under the
condition of 4 processors.


Now I found that when Node2 invoke the function message_queue_receive
and sends the interrupt to Node1, Node1 can invoke the
function_MPCI_Receive_server immediately. But after Node3 and Node4
invoke the function essage_queue_receive and send the interrupt to
Node1, Node1 haven't invoked the
function_MPCI_Receive_server immediatly. In other words, the receive
request haven't lost but not handled in time. I don't kown that is the
reason, could you help me?

Thank you very much.
Best regards.
Frank