[openib-general] Re: [KJ] [RFC] TODO file cleanups

Matthew Wilcox matthew at wil.cx
Tue Jan 18 10:26:16 PST 2005


On Tue, Jan 18, 2005 at 09:19:40AM -0800, Roland Dreier wrote:
>     Matthew> Funny you should mention that.
> 
>     Matthew> drivers/infiniband/ulp/ipoib/ipoib_ib.c: yield();
>     Matthew> drivers/infiniband/ulp/ipoib/ipoib_ib.c: yield();
> 
>     Matthew> *SLAP*.
> 
> ouch ;)
> 
> What should those uses of yield() be replaced with?  The loops are
> polling for pending work to finish up on an exit path, and don't have
> any strict timing requirements.  cond_resched() seems a bit
> heavyweight, since we don't need to run for our whole time slice.  We
> could do msleep(0) or msleep(1) but I don't quite see why that's much
> of an improvement.

The semantics of yield() aren't what you, or I, or 2.4 think they should
be.  Basically, it means "go away, run anything else, even the idle task,
don't run me again for many seconds".  I think msleep(1) is probably the
best for this driver, but I'm not sure exactly what semantics you want.

-- 
"Next the statesmen will invent cheap lies, putting the blame upon 
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince 
himself that the war is just, and will thank God for the better sleep 
he enjoys after this process of grotesque self-deception." -- Mark Twain



More information about the general mailing list