rtems_event_receive and timeslicing

Joel Sherrill joel.sherrill at OARcorp.com
Tue Oct 23 19:44:22 UTC 2001



Brett Swimley wrote:
> 
> I'll try knocking the ticks_per_timeslice down, and try it again.
> 
> I do have a clock driver. I've verified it is running and calling
> rtems_clock_tick.
> 
> However, fundamentally, my perceptions aren't wrong?  The blocked task
> should run in this situation when it gets the timeslice?

If I understood everything you said correctly, then yes.

The "while forever" task should be preempt/timeslice.  The other
task will block waiting for a event.  Eventually the event task
will unblock, the "while forever" task will have its quantum expire
and then the event waiter should run.

This one should be easy to duplicate on a simulator using a
timer_service_routine to send the event.  And this is 
very similar to what one of the sptests does (sp24?)

> Thanks,
> 
> Brett
> 
> > -----Original Message-----
> > From: Joel Sherrill [mailto:joel.sherrill at OARcorp.com]
> > Sent: Tuesday, October 23, 2001 9:58 AM
> > To: brett.swimley at aedinc.net
> > Cc: 'RTEMS'
> > Subject: Re: rtems_event_receive and timeslicing
> >
> >
> >
> >
> > Brett Swimley wrote:
> > >
> > > I have a situation where I have two tasks running at the
> > same priority (=
> > > 128). Both tasks were created with RTEMS_PREEMPT and
> > > RTEMS_TIMESLICE.
> > >
> > > One task is blocked, waiting on an event that is sent by an
> > ISR.  The other
> > > task is in an infinite loop as follows:
> > >
> > > for ( ;; )
> > > {
> > >         ;
> > > }
> > >
> > > The task that is blocked on the rtems_event_receive() never
> > appears to
> > > receive the event.  However, if I place an
> > >
> > >  rtems_task_suspend( RTEMS_SELF );
> > >
> > > call prior to the infinite loop in the 2nd task - the first
> > task does
> > > receive the event.
> > >
> > > I won't have this task construct in the near future as I
> > implement more
> > > functionality, but I would like to understand if the
> > blocked task should run
> > > under this situation with timeslicing enabled.  If I am missing some
> > > configuration options as well, I would like to know.
> > >
> > > I have
> > > #define CONFIGURE_TICKS_PER_TIMESLICE   50
> > > in my Initialization function file.
> > >
> > > I'm currently using the rtems-ss-20010816 snapshot.
> >
> > My guess is that you don't have a clock driver.  Or that you do
> > and the time quantum is larger than you think based upon
> > CONFIGURE_MICROSECONDS_PER_TICK and
> > (CONFIGURE_TICKS_PER_TIMESLICE == 50).
> >
> > A 10 millisecond tick (the default I think) and 50 ticks per
> > timeslice is 1/2 second per timeslice.
> >
> >
> >
> > > Thanks for any insight.
> > >
> > > Regards,
> > >
> > > Brett Swimley
> >
> > --
> > Joel Sherrill, Ph.D.             Director of Research & Development
> > joel at OARcorp.com                 On-Line Applications Research
> > Ask me about RTEMS: a free RTOS  Huntsville AL 35805
> > Support Available                (256) 722-9985
> >

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985



More information about the users mailing list