process communication with different priorities.

Let say that I have three process A,B,C.
A is the lowest priority and B middle and C is the highest priority. (ie A=15, B=16,C=17).

If C is the client B and send message B will inherite C’s priority, and that is fine. But A is client of B and C but I do not want process B and C to inherite A’s priority when A send msg to B and C.

The bottom line is when high priority clients send msg to lower server the lower server process should inherite high priority client. But when lower priority clients sends msg to higher priority server, the higher priority process should not inherite the lower priority. How can this be accomplished cleanly?

Thanks

I dont think its possible.

Only way I can see, is to have the servers use fix priority but manualy control the priority

Other potential option is to use Active Partitionning.

It’s hard to see why accomplishing this is important. The purpose of priority inheritance is to prevent priority inversion. In your example you create the possibility of priority inversion by giving A’s work a higher priority when it is getting services from B. Now maybe this is what you want, B’s work to take priority in the system. Well then you raise its priority to be greater than C’s, or any other process its work should have priority over, and give it a fixed priority.

If you are sure that this is what you want, since you know which processes you want to work each way, you could for example have A raise its priority to B’s before the send, and the drop it down after. This could hidden in a wrapper if you do a lot of it.