sys/sched.h: Reasonable value of SCHED_BATCH ?
brian.inglis@systematicsw.ab.ca
brian.inglis@systematicsw.ab.ca
Mon Dec 9 16:19:42 GMT 2024
On 2024-12-09 08:35, Corinna Vinschen wrote:
> 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?
Would it make sense to add the BSD/Linux value comments, and also define the
other known symbols?
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut
-- Antoine de Saint-Exupéry
More information about the Newlib
mailing list