sys/sched.h: Reasonable value of SCHED_BATCH ?
Corinna Vinschen
vinschen@redhat.com
Mon Dec 9 15:35:26 GMT 2024
On Dec 9 08:42, Joel Sherrill wrote:
> SCHED_SPOTADIC has been in POSIX a long time but does seem to be rarely
> implemented. Per change history from the POSIX standard on sched.h:
>
> "the SCHED_SPORADIC scheduling policy is added for alignment with
> IEEE Std 1003.1d-1999"
>
> RTEMS and QNX support it but I don't recall any other OSes with
> SCHED_SPORADIC.
>
> SCHED_IDLE, SCHED_BATCH, SCHED_DEADLINE, etc. are bespoke and not in
> POSIX. Hopefully they will not be visible except where supported. It looks
> like you are doing that.
>
> Others should speak up but I think for Linux, Cygwin, *BSD, etc where
> binary compatibility is required, you will need to stick with the values
> used now.
The question was how to add SCHED_BATCH.
- Either with an #ifdef maintaining Linux binary compat on all targets
except Cygwin (not possible due to binary compat to older versions of
itself) ...
- or by just adding an as yet unused numerical value, i.e., 6.
My stance here was that binary compat to Linux is not required,
so another #ifdef like the one we already use for SCHED_OTHER
just lessens readability.
But if somebody has an actual need to align the numerical values
used for the SCHED constants, this would be the time to speak up.
Otherwise we just go with #define SCHED_BATCH 6.
Corinna
>
> --joel
>
> On Mon, Dec 9, 2024 at 8:12 AM Christian Franke <
> Christian.Franke@t-online.de> wrote:
>
> > This is related to this thread on cygwin-patches ML:
> > https://sourceware.org/pipermail/cygwin-patches/2024q4/013105.html
> >
> > Which would be a reasonable integer value for a newly defined SCHED_BATCH ?
> >
> > Current newlib/libc/include/sys/sched.h:
> >
> > #if defined(__CYGWIN__) // see c1bfa897
> > #define SCHED_OTHER 3
> > #else
> > #define SCHED_OTHER 0
> > #endif
> >
> > #define SCHED_FIFO 1
> > #define SCHED_RR 2
> >
> > #if defined(_POSIX_SPORADIC_SERVER)// __rtems__ only ?
> > #define SCHED_SPORADIC 4
> > #endif
> >
> > #if __GNU_VISIBLE
> > #define SCHED_IDLE 5 // Recent addition (61c2f075)
> > #endif
> >
> >
> > Linux:
> > #define SCHED_OTHER 0
> > #define SCHED_FIFO 1
> > #define SCHED_RR 2
> > #define SCHED_BATCH 3
> > /* SCHED_ISO: reserved but not implemented yet */
> > #define SCHED_IDLE 5
> > #define SCHED_DEADLINE 6
> > #define SCHED_EXT 7
> >
> > FreeBSD:
> > #define SCHED_FIFO 1
> > #define SCHED_OTHER 2
> > #define SCHED_RR 3
> >
> >
> > First alternative: Align non-Cygwin value with Linux
> >
> > #if __GNU_VISIBLE
> > #if defined(__CYGWIN__)
> > #define SCHED_BATCH 0
> > #else
> > #define SCHED_BATCH 3
> > #endif
> > #endif
> >
> > Second alternative: Use next free value
> >
> > #if __GNU_VISIBLE
> > ...
> > #define SCHED_BATCH 6
> > #endif
> >
> > Any preferences?
> >
>
>
>
> >
> > --
> > Regards,
> > Christian
> >
> >
More information about the Newlib
mailing list