This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Is timeslicing broken?


Nick Garnett wrote:
Gary Thomas <gary@mlbassoc.com> writes:

Nick Garnett wrote:
Gary Thomas <gary@mlbassoc.com> writes:

It seems that timeslicing of equal priority threads is broken
in the presence of any other higher priority threads that may
cause preemption.

I have modified the timeslice test to have an additional thread.
This thread is higher priority than the "worker" threads and
all it does is wake up at a modest frequency (every 2 ticks).
What this does is to preempt one of the worker threads before
it has a chance to run the timeslice timer down to zero.  When
the worker thread is resumed, the timeslice timer is reset and
the same worker thread continues running forever, never being
rescheduled and letting the other worker threads run.

As it happens, I also fixed this bug myself a few weeks ago. It has
been running in our test farm for a while. I think my patch is a
little more complete since it also deals with the bitmap scheduler and
kapidata.h. I also think it leaves the scheduler code a little tidier.
Anyway here it is:
Obviously cleaner since you're more familiar with the various C++ classes,
etc. within the scheduler.

Why aren't your functions (and the layout, etc) protected by
CYGSEM_KERNEL_SCHED_TIMESLICE?  Does it still build/run with this CDL
option disabled?

I chose to arrange the headers and the bitmap scheduler to always have these functions defined. Where they are non-functional they are just empty inlines. I did this so that the ifdefs can be removed from the main code, which I think makes it cleaner and easier to read, and is more in keeping with the sort of approach one should take with C++.

I've tested it by hand with timeslicing disabled and with the bitmap
scheduler enabled. It has also been through the various config
permutations in the test farm, so I am fairly confident that it is
robust.

Query: did you also write the timeslice2 test?  It looks a lot like
mine (cleaner - I didn't spend a lot of time on it)?  Obviously great
minds think alike :-)

I did write it, it was the obvious thing to do after all :-)



If you are happy for me to do so, then I'll check this patch in.

Please do so, thanks.


--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]