This is the mail archive of the ecos-discuss@sources.redhat.com 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]

Re: Unique priorities


Jonathan Larmour <jlarmour@redhat.com> writes:

> Jesper Skov wrote:
> > 
> > >>>>> "Paleologos" == Paleologos Spanos <paleolog@ee.ucla.edu> writes:
> > Paleologos> mlqueues default scheduler).  I would expect that I would
> > Paleologos> have an error or something like that because of the fact
> > Paleologos> that the 2 threads are having the same priority (4).Is it
> > Paleologos> correct or I have misunderstood something?
> > 
> > The bitmap scheduler will assign a thread the closest possible
> > priority to that requested. It does not fail if the requested priority
> > is already used, it just returns another. So your threads would
> > probably have priorities 4 and 5.
> 
> Jesper are you sure about that? From bitmap.cxx
> 
> void Cyg_Scheduler_Implementation::add_thread(Cyg_Thread *thread)
> {
>     CYG_REPORT_FUNCTION();
>         
>     CYG_ASSERT((CYG_THREAD_MIN_PRIORITY >= thread->priority) 
>                && (CYG_THREAD_MAX_PRIORITY <= thread->priority),
>                "Priority out of range!");
> 
>     CYG_ASSERT( thread_table[thread->priority] == NULL ||
>                 thread_table[thread->priority] == thread,
>                 "Duplicate thread priorities" );
> 

Yes, here's the code:

Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation
(
    CYG_ADDRWORD sched_info
)
{
    CYG_REPORT_FUNCTION();

#if 1
    // Assign this thread's priority to the supplied sched_info
    // or the next highest priority available.
    
    priority = cyg_priority(sched_info);

    while( !Cyg_Scheduler::scheduler.unique(priority) )
        priority++;
    
#else    
    // Assign initial priorities to threads in descending order of
    // creation.

    static cyg_priority init_priority = 0;
    
    priority = init_priority++;
#endif
    
}

-- 
Nick Garnett, eCos Kernel Architect
Red Hat, Cambridge, UK

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