[PATCH] Cygwin: sched_setscheduler: allow changes of the priority
Corinna Vinschen
corinna-cygwin@cygwin.com
Wed Nov 27 14:38:36 GMT 2024
On Nov 27 10:14, Christian Franke wrote:
> Corinna Vinschen wrote:
> > On Nov 25 21:20, Christian Franke wrote:
> > > Corinna Vinschen wrote:
> > > > - 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.
> > Just guessing here, but using one of the RT schedulers was the only way
> > to enable changing the priority from user space and using SCHED_FIFO was
> > maybe in error.
> >
> > > > 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.
> > This is the other problem. Changing this to SCHED_OTHER sounds like
> > dropping potentially used functionality. Maybe we should just switch to
> > SCHED_RR?
>
> Yes, it at least would be closer to what windows does. It is still
> non-preemptive from the point of view of lower priorities. I don't know what
> the Win32 *_PRIORITY_CLASSes actually do.
Who does? :}
> As far as I understand the related documentation, a more sophisticated
> emulation (aka fake) of SCHED_* would be:
>
> - Allow to switch between SCHED_OTHER (default) and SCHED_RR with
> sched_setscheduler().
>
> - If SCHED_OTHER is selected, change PRIORITY_CLASS with setpriority() and
> ignore (or fail on?) attempts to change sched_priority with
> sched_setparam().
>
> - If SCHED_RR is selected, ignore setpriority() and change PRIORITY_CLASS
> with sched_setparam().
>
> Possibly not worth the effort...
Why not? It should probably also allow SCHED_FIFO for backward compat,
since, in a way, it doesn't really matter anyway. This would be nice
for 3.6.
And I think your patch here should go in as is, just with the release
message in release/3.5.5 so we can cherry-pick it to the 3.5 branch.
Thanks,
Corinna
More information about the Cygwin-patches
mailing list