set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); 
schedule_timeout_interruptible(1); 
static int snd_gf1_pcm_poke_block(snd_gus_card_t *gus, unsigned char *buf,				  unsigned int pos, unsigned int count,				  int w16, int invert){	unsigned int len;	unsigned long flags;	// printk("poke block; buf = 0x%x, pos = %i, count = %i, port = 0x%x\n", (int)buf, pos, count, gus->gf1.port);	while (count > 0) {		len = count;		if (len > 512)		/* limit, to allow IRQ */			len = 512;		count -= len;		if (gus->interwave) {			spin_lock_irqsave(&gus->reg_lock, flags);			snd_gf1_write8(gus, SNDRV_GF1_GB_MEMORY_CONTROL, 0x01 | (invert ? 0x08 : 0x00));			snd_gf1_dram_addr(gus, pos);			if (w16) {				outb(SNDRV_GF1_GW_DRAM_IO16, GUSP(gus, GF1REGSEL));				outsw(GUSP(gus, GF1DATALOW), buf, len >> 1);			} else {				outsb(GUSP(gus, DRAM), buf, len);			}			spin_unlock_irqrestore(&gus->reg_lock, flags);			buf += 512;			pos += 512;		} else {			invert = invert ? 0x80 : 0x00;			if (w16) {				len >>= 1;				while (len--) {					snd_gf1_poke(gus, pos++, *buf++);					snd_gf1_poke(gus, pos++, *buf++ ^ invert);				}			} else {				while (len--)					snd_gf1_poke(gus, pos++, *buf++ ^ invert);			}		}		if (count > 0 && !in_interrupt()) {			set_current_state(TASK_INTERRUPTIBLE);			schedule_timeout(1);			if (signal_pending(current))				return -EAGAIN;		}	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8433a509c0eb6bb1f33ce39c82c580b8901619ee/gus_pcm.c/clean/sound/isa/gus/gus_pcm.c