Priority Problems

Greetings, again…

I need to figure out which driver or binary I need to boost in priority.

I have a remote node reading a serial device at 115200 k baud (call this
node A).
I have another node (node B) that has a Freewave radio modem connected to
our UAV running at 115200 baud (node C)

I am using Net.fd to connect node B and C (UAV to base station). Node A is
talking to the UAV using FLEET via node B.

In other words A->B->C Node A and B are on a 10baseT network. B is merely
the bridge between logical net 1 and 2.

Communication is great. I can talk to the UAV (node C) as though it where
on the 10 base T from any node in the lab.

However when node B (the bridge/relay) gets busy doing something like moving
a winodow in Photon, communication stops.

I attribute this to priority problems.

My understanding was that drivers like Net, Dev, etc match the priority of
the process using them. Is this so? If not, is there a way to make it so?
I understand that priority inversion can be a problem, but isn’t there some
thing that makes the driver run at the priority of the highest task blocking
on it?

I see that Net.fd runs at pri 20, Dev.ser runs at 24. I just assumed that
these match the priorities of the tasks comminicating with them…

Ideas?

Thanks
Kevin

What is the priority of Net.fd?


“Sam Roberts” <sam@cogent.ca> wrote in message
news:Voyager.000825095735.27781B@sam.cogent.ca

Previously, Kevin Stallard wrote in comp.os.qnx:
However when node B (the bridge/relay) gets busy doing something like
moving
a winodow in Photon, communication stops.

I attribute this to priority problems.

My understanding was that drivers like Net, Dev, etc match the priority
of
the process using them. Is this so? If not, is there a way to make it
so?

No. Look at the sin output:

sin:
0 18 //20/bin/Dev32 24f RECV 0 32k 90k
0 21 //20/bin/Dev32.ansi 20r RECV 0 40k 135k
0 25 //20/bin/nameloc 20o RECV 0 6144 20k

The letter is the scheduling algorithm, (f,FIFO),
(r,round-robin),(o,adaptive).
But, the priority is overriden by the (optional) prority-float process
flag:

sin flags:
1 34 //20/*/bin/Dev.random RECV
0 -fSZ---------F3-------S-c-fr----
0 36 //20/bin/Fsys.floppy RECV
0 —Z----------3----------------I
0 39 //20/bin/Fatfsys RECV
0 —Z----------3-------S-c-fr----
0 41 //20/bin/Iso9660fsys RECV
0 —Z---------F3-------S—fr----
priority float-^

The little ‘f’ in sin flags means the priorite is floating. Fsys and the
other
file systems float, Net and Dev don’t.

I see that Net.fd runs at pri 20, Dev.ser runs at 24. I just assumed
that
these match the priorities of the tasks comminicating with them…

That you get communication problems is strange, since Net and Dev should
already be running at a fixed priority that is higher than all your
photon stuff. I don’t think the graphics drivers disable interrupts,
perhaps
you could post a sin and sin flags for the node doing the bridging? Is
it possible that Net.fd doesn’t run at 20 round-robin like

Sam


Sam Roberts (> sam@cogent.ca> ), Cogent Real-Time Systems (> www.cogent.ca> )

Previously, Kevin Stallard wrote in comp.os.qnx:

However when node B (the bridge/relay) gets busy doing something like moving
a winodow in Photon, communication stops.

I attribute this to priority problems.

My understanding was that drivers like Net, Dev, etc match the priority of
the process using them. Is this so? If not, is there a way to make it so?

No. Look at the sin output:

sin:
0 18 //20/bin/Dev32 24f RECV 0 32k 90k
0 21 //20/bin/Dev32.ansi 20r RECV 0 40k 135k
0 25 //20/bin/nameloc 20o RECV 0 6144 20k

The letter is the scheduling algorithm, (f,FIFO), (r,round-robin),(o,adaptive).
But, the priority is overriden by the (optional) prority-float process flag:

sin flags:
1 34 //20/*/bin/Dev.random RECV 0 -fSZ---------F3-------S-c-fr----
0 36 //20/bin/Fsys.floppy RECV 0 —Z----------3----------------I
0 39 //20/bin/Fatfsys RECV 0 —Z----------3-------S-c-fr----
0 41 //20/bin/Iso9660fsys RECV 0 —Z---------F3-------S—fr----
priority float-^

The little ‘f’ in sin flags means the priorite is floating. Fsys and the other
file systems float, Net and Dev don’t.

I see that Net.fd runs at pri 20, Dev.ser runs at 24. I just assumed that
these match the priorities of the tasks comminicating with them…

That you get communication problems is strange, since Net and Dev should
already be running at a fixed priority that is higher than all your
photon stuff. I don’t think the graphics drivers disable interrupts, perhaps
you could post a sin and sin flags for the node doing the bridging? Is
it possible that Net.fd doesn’t run at 20 round-robin like

Sam


Sam Roberts (sam@cogent.ca), Cogent Real-Time Systems (www.cogent.ca)