recvfrom waiting for lower priority process to block

bridged with qnx.rtos
Post Reply
richt119

recvfrom waiting for lower priority process to block

Post by richt119 » Wed Jan 02, 2008 5:58 pm

I am using QNX 6.3.2 core on IXP425 ARMBE.
I have a process (Process 1) which opens a UDP multicast socket and
blocks on a recvfrom until it receives a packet for the multicast
group, it puts the data received into a database and then does a
sendto, sending data out to the multicast group.
Data is received every 3 to 4ms after sending data to the multcast
group.
This process is running at priority 12.

I have another process (Process 2) which runs for 30ms then blocks for
100ms.
This process is running at priority 10 in FIFO scheduling.

I have noticed that the recvfrom in process 1 does not unblock until
process 2 blocks, this delays my sendto by upto 30ms.
If process 2 scheduling is set to round robin then the recvfrom waits
until the process 2 timeslices, this delays my sendto by upto 4ms.

It looks like the priority 12 process is waiting for the priority 10
process to block or timeslice.
Is this correct/expected?

I need to reply to data received as quickly as possible.
Do I have to raise the priority of io-net to make the recvfrom unblock
as soon as a packet of data is received?
Why does the recvfrom/io-net not inherit the priority of process 1
(12)?

Thanks for the help,
Rich

Post Reply

Return to “qnx.rtos”