Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Thu Jun 3 21:50:55 UTC 2004
Feng, Shuchen wrote:
> Hi all,
> My understanding is that a clock tick is required to support the
> functionality of rtems_task_wake_after(). What actaully
> happened when rtems_task_wake_after(0) is called ? I saw problems
> only when the application became big and complicated.
> In VxWorks, the taskDelay(0) reorders tasks on the ready queue
> withouht delaying, which allow two routines at the same priority
> to share CPU time. It ensures that both tasks will run when
> there is no other work to do. How can I implement this in RTEMS?
rtems_task_wake_after(0) is a yield operation and does not require
a clock tick at all. It allows you to manually control context
switching between tasks at the same priority. It is functionally
equivalent to the POSIX sched_yield().
Your comment "big and complicated" makes me wonder if the VxWorks
semantics are slightly different from that of RTEMS. What does
their documentation say about what happens in relation to the calling
task and higher and lower priority threads?
Are your VxWorks and RTEMS tasks preemptible or non-preemptible?
This stuff gets quite subtle when trying to compare RTOSes.
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