spin_unlock(&gpio_lock); 
int etrax_gpio_wake_up_check(void){	struct gpio_private *priv = alarmlist;	unsigned long data = 0;        int ret = 0;	while (priv) {		if (USE_PORTS(priv)) {			data = *priv->port;		} else if (priv->minor == GPIO_MINOR_G) {			data = *R_PORT_G_DATA;		}		if ((data & priv->highalarm) ||		    (~data & priv->lowalarm)) {			DP(printk("etrax_gpio_wake_up_check %i\n",priv->minor));			wake_up_interruptible(&priv->alarm_wq);                        ret = 1;		}		priv = priv->next;	}        return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7e9204265b4ec6680fad9abc7a78b94087983916/gpio.c/buggy/arch/cris/arch-v10/drivers/gpio.c