This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: problem with select()
- From: Sergei Organov <osv at javad dot com>
- To: ecos-discuss at sources dot redhat dot com
- Date: Wed, 05 Apr 2006 11:37:05 +0400
- Subject: [ECOS] Re: problem with select()
- References: <E1FQ44p-0001Qm-00.genamavr-mail-ru@f25.mail.ru>
ÐÐÐÑÐÐ ÐÐÐÐÐÐÐÐ <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