Scheduling without Timeslice...
Camilo Alejandro Arboleda
CamiloAlejo at netscape.net
Mon Dec 1 13:22:42 UTC 2003
There is a thread in the mailing list talking about the issue
(http://www.rtems.com/ml/rtems-users/2003/october/msg00014.html).
The problem is that the timeslice is reset every time a task is
preempted. That way your first idle task never gets out of CPU time. The
solution is using a timeslice exhaustion scheme (like Posix one).
Joel Sherrill filled a BR (#514) and created a working patch. It has a
small typo in taskcreate.c, but you'll see it easily.
cedric_aubert at yahoo.fr wrote:
>Hi all,
>
>I have found some trouble with the scheduler without
>timeslice.
>
>First thing (it's just a question not a trouble), in
>the file
>"/c/src/lib/libbsp/shared/bsplibc.c", I have found
>that we initialize
>the libc in reentrant only if we have
>ticks_per_timeslice > 0.
>But with preemption, we could have some need of
>reentrant without
>timeslicing. Am I wrong ?
>
> void bsp_libc_init(...)
> {
> ...
> if ( BSP_Configuration.ticks_per_timeslice > 0 )
> libc_init(1); /* reentrant if
>possible */
> else
> libc_init(0); /* non-reentrant
>*/
> }
>
>Second thing, in the thread idle. This thread is at
>prio 255 (lower). I have
>build another thread (user task) with prio 255 too.
>But this task never been
>executed, it was always in READY State but don't
>start, in fact, I think,
>the idle thread was
>executing first and never give cpu usage to the user
>task ( because no
>timeslice ).
>Am I right ? Should have some task with the same prio
>that the idle one ?
>I try to grow a little the user task and that's works.
>
>Thanks a lot
>
>Cedric
>
>
>__________________________________
>Do you Yahoo!?
>Free Pop-Up Blocker - Get it now
>http://companion.yahoo.com/
>
>
--
Your favorite stores, helpful shopping tools and great gift ideas.
Experience the convenience of buying online with Shop at Netscape!
http://shopnow.netscape.com/
More information about the users
mailing list