[ECOS] Re: problem with select()

Sergei Organov osv@javad.com
Wed Apr 5 07:37:00 GMT 2006


Маврин Геннадий <genamavr@mail.ru> writes:

[...]

> I think that the descriptor may come ready after the loop which checks
> the descriptors to be ready to requested operation but before
> Cyg_Scheduler::lock() function call. In this case cyg_pselect( ) will
> wait for descriptor even if this descriptor is ready. My idea is to
> move Cyg_Scheduler::lock() call up.
>
> int cyg_pselect( )
> {
>  while (!error)
>  {
>   for (mode = 0;  !error && mode < 3;  mode++)
>   {
>     Cyg_Scheduler::lock();
>     ...
>     // Checking the descriptors to be ready to requested operation
>     ...
>   }
>
>   ...
>
>   // Waiting for cyg_selwakeup() call
>   ...
>   Cyg_Scheduler::unlock();
>  }
> }
>
> Is my idea good or not?

I don't believe it's correct to lock the scheduler multiple times (in
the loop) and then unlock it only once.

-- Sergei.


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list