Subject: Re: [janitor] sis900: don't use yield()

From: Jeff Garzik <[email-masked]>
Date: Tue, 27 Apr 2004 14:03:37 -0400

Randy.Dunlap wrote:
> From: maximilian attems <[email-masked]>
> 
> thanks to Felipe W Damasio hint rediffed.
> patch is on top of linux-2.6.6-rc2
> 
> yield() removes process from active array into expired array,
> better just yield the CPU for a bit.
> tested on my laptop with a sis900.
> 
> a++ maks
> 
> Index: linux-266-rc2-kj1/drivers/net/sis900.c
> ===================================================================
> --- linux-266-rc2-kj1.orig/drivers/net/sis900.c	2004-04-03 19:36:57.000000000 -0800
> +++ linux-266-rc2-kj1/drivers/net/sis900.c	2004-04-21 15:32:56.000000000 -0700
> @@ -600,7 +600,8 @@ static int __init sis900_mii_probe (stru
>  
>  	if(status & MII_STAT_LINK){
>  		while (poll_bit) {
> -			yield();
> +			set_current_state(TASK_UNINTERRUPTIBLE);
> +			schedule_timeout(HZ/100);

I would rather do schedule_timeout(1), as that's IMO closer to the 
intention...

	Jeff