@@ -245,6 +245,10 @@ A thread's initial priority value can be altered up or down after the thread
245245has been started. Thus it is possible for a preemptible thread to become
246246a cooperative thread, and vice versa, by changing its priority.
247247
248+ .. note ::
249+ The scheduler does not make heuristic decisions to re-prioritize threads.
250+ Thread priorities are set and changed only at the application's request.
251+
248252The kernel supports a virtually unlimited number of thread priority levels.
249253The configuration options :kconfig: `CONFIG_NUM_COOP_PRIORITIES ` and
250254:kconfig: `CONFIG_NUM_PREEMPT_PRIORITIES ` specify the number of priority
@@ -269,9 +273,10 @@ When enabled (see :kconfig:`CONFIG_NUM_METAIRQ_PRIORITIES`), there is a special
269273subclass of cooperative priorities at the highest (numerically lowest)
270274end of the priority space: meta-IRQ threads. These are scheduled
271275according to their normal priority, but also have the special ability
272- to preempt all other threads (and other meta-irq threads) at lower
276+ to preempt all other threads (and other meta-IRQ threads) at lower
273277priorities, even if those threads are cooperative and/or have taken a
274- scheduler lock.
278+ scheduler lock. Meta-IRQ threads are still threads, however,
279+ and can still be interrupted by any hardware interrupt.
275280
276281This behavior makes the act of unblocking a meta-IRQ thread (by any
277282means, e.g. creating it, calling k_sem_give(), etc.) into the
@@ -284,7 +289,7 @@ run before the current CPU returns into application code.
284289
285290Unlike similar features in other OSes, meta-IRQ threads are true
286291threads and run on their own stack (which must be allocated normally),
287- not the per-CPU interrupt stack. Design work to enable the use of the
292+ not the per-CPU interrupt stack. Design work to enable the use of the
288293IRQ stack on supported architectures is pending.
289294
290295Note that because this breaks the promise made to cooperative
0 commit comments