{ current->state = TASK_INTERRUPTIBLE; schedule_timeout(1); } 
schedule_timeout_interruptible(1); 
static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size,				loff_t * offp){	static DEFINE_SPINLOCK(rng_lock);	unsigned int have_data;	u32 data = 0;	ssize_t ret = 0;	while (size) {		spin_lock(&rng_lock);		have_data = 0;		if (rng_ops->data_present()) {			data = rng_ops->data_read();			have_data = rng_ops->n_bytes;		}		spin_unlock (&rng_lock);		while (have_data && size) {			if (put_user((u8)data, buf++)) {				ret = ret ? : -EFAULT;				break;			}			size--;			ret++;			have_data--;			data>>=8;		}		if (filp->f_flags & O_NONBLOCK)			return ret ? : -EAGAIN;		if(need_resched())		{			current->state = TASK_INTERRUPTIBLE;			schedule_timeout(1);		}		else			udelay(200);	/* FIXME: We could poll for 250uS ?? */		if (signal_pending (current))			return ret ? : -ERESTARTSYS;	}	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/da4cd8dfe18ee901b880f94ca0fa79d5cc1cd0eb/hw_random.c/clean/drivers/char/hw_random.c