Brian Inglis wrote:
On 2024-12-02 11:28, ASSI wrote:
Christian Franke writes:
+    nice value   sched_priority Windows priority class
+     12...19      1....6          IDLE_PRIORITY_CLASS
+      4...11      7...12          BELOW_NORMAL_PRIORITY_CLASS
+     -4....3     13...18          NORMAL_PRIORITY_CLASS
+    -12...-5     19...24          ABOVE_NORMAL_PRIORITY_CLASS
+    -13..-19     25...30          HIGH_PRIORITY_CLASS
+         -20     31...32          REALTIME_PRIORITY_CLASS

That mapping looks odd… care to explain why the number of nice values
and sched_priorities doesn't match up for each priority class? 39
possible values for one can't match to 32 for the other of course, but
which ones are skipped and why?

See also miscfuncs.cc which maps nice<->winprio with a 40 entry table, and cygwin-doc proc(5) or cygwin-ug-net/proc.html which explains the mapping to scheduler priorities and policies.

No *_PRIORITY_CLASS is mentioned in current newlib-cygwin/winsup/doc/*.



Also relevant may be man-pages-posix sched.h(0p), man-pages-linux sched(7) and proc_pid_stat(5).

You may also wish to consider whether SCHED_SPORADIC should be somewhat supported for POSIX compatibility, and SCHED_IDLE, SCHED_BATCH, SCHED_DEADLINE for Linux compatibility?

SCHED_IDLE: Ignore nice value and set IDLE_PRIORITY_CLASS ?
SCHED_BATCH: Reduced mapping, e.g. nice=0 -> BELOW_NORMAL_PRIORITY_CLASS ?
SCHED_SPORADIC, SCHED_DEADLINE: ?

The current newlib/libc/include/sys/sched.h only defines SCHED_OTHER, SCHED_FIFO, SCHED_RR and SCHED_SPORADIC. The latter is guarded by _POSIX_SPORADIC_SERVER which is only set for RTEMS (#ifdef __rtems__) in features.h.

Reply via email to