[PATCH] Cygwin: sched_setscheduler: allow changes of the priority
Christian Franke
Christian.Franke@t-online.de
Mon Nov 25 20:20:19 GMT 2024
Hi Corinna,
Corinna Vinschen wrote:
> Hi Christian,
>
> On Nov 25 15:00, Christian Franke wrote:
>> Corinna Vinschen wrote:
>>> Fixes: ...?
>> ... the very first commit (cgf 2001) of sched.cc :-)
>>
>> New patch attached.
>>
>> From e95fc1aceb5287f9ad65c6c078125fecba6c6de9 Mon Sep 17 00:00:00 2001
>> From: Christian Franke <christian.franke@t-online.de>
>> Date: Mon, 25 Nov 2024 14:51:04 +0100
>> Subject: [PATCH] Cygwin: sched_setscheduler: allow changes of the priority
>>
>> Behave like sched_setparam() if the requested policy is identical
>> to the fixed value (SCHED_FIFO) returned by sched_getscheduler().
>>
>> Fixes: 6b2a2aa4af1e ("Add missing files.")
> Huh, yeah, this is spot on. I wonder if it would make sense to change
> that to 9a08b2c02eea ("* sched.cc: New file. Implement sched*.")
> though, given that was the patch intended to add sched.cc :)))
>
> Sorry, but I have to ask two more questions:
>
> - Isn't returning SCHED_FIFO sched_getscheduler() just as wrong?
Definitly. SCHED_FIFO is a non-preemptive(!) real-time policy. Windows
does not offer anything like that to userland (AFAIK).
https://man7.org/linux/man-pages/man7/sched.7.html
I wonder whether there was a use case for this emulation when this
module was introduced in 2001.
> Shouldn't that be SCHED_OTHER, and sched_setscheduler() should check
> for that instead? Cygwin in a real-time scenario sounds a bit
> far-fetched...
Agree.
Note that SCHED_OTHER requires sched_priority == 0, so most of the
sched_get/set*() priority related code would no longer make sense then.
A related interesting snippet which I don't understand:
sys/sched.h:
#if defined(__CYGWIN__)
#define SCHED_OTHER 3
#else
#define SCHED_OTHER 0
#endif
> - Don't you want this patch in 3.5.5? I'd merge the other patch
> into 3.5.5 anyway...
OK.
--
Regards,
Christian
More information about the Cygwin-patches
mailing list