[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