_PPF_PRIORITY_FLOAT & Relay()

Hi All,

It seems I’ve been bitten by another Relay(), uhm, bug/undocumented
feature. Here’s the scenario… There are four types of processes
involved (L) a low priority utility, (H) a higher priority utility, (S)
a server process with _PPF_PRIORITY_FLOAT turned on, and (D) a
dispatcher process that Relay()s messages to a number of different (S)
type server processes.

My hope was that when (L) or (H) type processes send messages to the (D)
process and are subsequently Relay()ed to an appropriate (S) type
process, the (S) processe’s priority would be set to that of the
originating Send()er.

But, it just plain doesn’t seem to work. If an (L) or (H) process
Send()s directly to an (S) process, it does work.

Anyone know of a fix and/or work around?

TIA,

-Rob

Rob Hem <rob@spamyourself.com> wrote:

Hi All,

It seems I’ve been bitten by another Relay(), uhm, bug/undocumented
feature. Here’s the scenario… There are four types of processes
involved (L) a low priority utility, (H) a higher priority utility, (S)
a server process with _PPF_PRIORITY_FLOAT turned on, and (D) a
dispatcher process that Relay()s messages to a number of different (S)
type server processes.

My hope was that when (L) or (H) type processes send messages to the (D)
process and are subsequently Relay()ed to an appropriate (S) type
process, the (S) processe’s priority would be set to that of the
originating Send()er.

But, it just plain doesn’t seem to work. If an (L) or (H) process
Send()s directly to an (S) process, it does work.

Anyone know of a fix and/or work around?

I’d try setting _PPF_PRIORITY_FLOAT for the relaying process.

-David

David Gibbs
QNX Training Services
dagibbs@qnx.com

Thanks for the response David, and the suggestion, but that don’t work
neither 8-(

David Gibbs wrote:

Rob Hem <> rob@spamyourself.com> > wrote:

Hi All,


It seems I’ve been bitten by another Relay(), uhm, bug/undocumented
feature. Here’s the scenario… There are four types of processes
involved (L) a low priority utility, (H) a higher priority utility, (S)
a server process with _PPF_PRIORITY_FLOAT turned on, and (D) a
dispatcher process that Relay()s messages to a number of different (S)
type server processes.


My hope was that when (L) or (H) type processes send messages to the (D)
process and are subsequently Relay()ed to an appropriate (S) type
process, the (S) processe’s priority would be set to that of the
originating Send()er.


But, it just plain doesn’t seem to work. If an (L) or (H) process
Send()s directly to an (S) process, it does work.


Anyone know of a fix and/or work around?


I’d try setting _PPF_PRIORITY_FLOAT for the relaying process.

-David

Rob Hem <rob@spamyourself.com> wrote:

Thanks for the response David, and the suggestion, but that don’t work
neither 8-(

Yeah, I talked to somebody who’d looked through the kernel source
for Relay(), and it doesn’t pass the priority onwards.

It’s probably a bug.

I’ve never like Relay() because it broke the network transparency
of the rest of the Send/Receive/Reply architecture.

-David

David Gibbs
QNX Training Services
dagibbs@qnx.com

Like it or not, it does have its uses though.

It’s also implemented as a macro in sys/kernel.h … any chance the
“bug” could be fixed by patching the inline code there? Wink - wink,
nudge - nudge?

-Rob

David Gibbs wrote:

Rob Hem <> rob@spamyourself.com> > wrote:

Thanks for the response David, and the suggestion, but that don’t work
neither 8-(


Yeah, I talked to somebody who’d looked through the kernel source
for Relay(), and it doesn’t pass the priority onwards.

It’s probably a bug.

I’ve never like Relay() because it broke the network transparency
of the rest of the Send/Receive/Reply architecture.

-David

Rob Hem <rob@spamyourself.com> wrote:

Like it or not, it does have its uses though.

It does.

It’s also implemented as a macro in sys/kernel.h … any chance the
“bug” could be fixed by patching the inline code there? Wink - wink,
nudge - nudge?

Nope.

The code in the header file points to another bit, which points to
__relay(), which will be a jump into the kernel to do the real work.
(If you take a look at kernel16.h, you’ll have an idea of how that
was done for 16-bit programs, the 32-bit programs are a bit different,
but it still will be a switch to kernel space to do the work.)

The fix would have to be done in the kernel-side implementation.

-David


-Rob

David Gibbs wrote:

Rob Hem <> rob@spamyourself.com> > wrote:

Thanks for the response David, and the suggestion, but that don’t work
neither 8-(


Yeah, I talked to somebody who’d looked through the kernel source
for Relay(), and it doesn’t pass the priority onwards.

It’s probably a bug.

I’ve never like Relay() because it broke the network transparency
of the rest of the Send/Receive/Reply architecture.

-David


David Gibbs
QNX Training Services
dagibbs@qnx.com

Rob Hem wrote:

Like it or not, it does have its uses though.

It’s also implemented as a macro in sys/kernel.h … any chance the
“bug” could be fixed by patching the inline code there? Wink - wink,
nudge - nudge?

Done. I’ve got an experimental version of Proc32 if you want to try it.
If so, where should I send it?


Cheers,
Adam

QNX Software Systems
[ amallory@qnx.com ]

With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <pschon@baste.magibox.net>

Adam,

I sent you a private e-mail, with my real e-mail address.

I’d be glad to try it out. And, thanks again!

-Rob

Adam Mallory wrote:

Rob Hem wrote:

Like it or not, it does have its uses though.

It’s also implemented as a macro in sys/kernel.h … any chance the
“bug” could be fixed by patching the inline code there? Wink - wink,
nudge - nudge?


Done. I’ve got an experimental version of Proc32 if you want to try it.
If so, where should I send it?

On Thu, 24 Feb 2005 10:31:54 -0500, Adam Mallory <amallory@qnx.com> wrote:

Done. I’ve got an experimental version of Proc32 if you want to try it.
If so, where should I send it?
I’d like to have it too. The address is real one.

Tony.