This readme refers to the file thr-mach.c.

Under mach, thread priorities are kinda strange-- any given thread has
a MAXIMUM priority and a BASE priority.  The BASE priority is the
current priority of the thread and the MAXIMUM is the maximum possible
priority the thread can assume.  The developer can lower, but never
raise the maximum priority.

The gcc concept of thread priorities is that they run at one of three
levels;  interactive, background, and low.

Under mach, this is translated to:

interactive -- set priority to maximum
background  -- set priority to 2/3 of maximum
low         -- set priority to 1/3 of maximum

This means that it is possible for a thread with the priority of
interactive to actually run at a lower priority than another thread
with a background, or even low, priority if the developer has modified
the maximum priority.


