int HiSax_readstatus(u_char __user *buf, int len, int id, int channel) 
static int HiSax_readstatus(u_char __user *buf, int len, int id, int channel) 
int HiSax_readstatus(u_char __user *buf, int len, int id, int channel){	int count, cnt;	u_char __user *p = buf;	struct IsdnCardState *cs = hisax_findcard(id);	if (cs) {		if (len > HISAX_STATUS_BUFSIZE) {			printk(KERN_WARNING			       "HiSax: status overflow readstat %d/%d\n",			       len, HISAX_STATUS_BUFSIZE);		}		count = cs->status_end - cs->status_read + 1;		if (count >= len)			count = len;		copy_to_user(p, cs->status_read, count);		cs->status_read += count;		if (cs->status_read > cs->status_end)			cs->status_read = cs->status_buf;		p += count;		count = len - count;		while (count) {			if (count > HISAX_STATUS_BUFSIZE)				cnt = HISAX_STATUS_BUFSIZE;			else				cnt = count;			copy_to_user(p, cs->status_read, cnt);			p += cnt;			cs->status_read += cnt % HISAX_STATUS_BUFSIZE;			count -= cnt;		}		return len;	} else {		printk(KERN_ERR		       "HiSax: if_readstatus called with invalid driverId!\n");		return -ENODEV;	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/672c3fd9069e5a138f9d4afc9aeb5aa34aacce32/config.c/buggy/drivers/isdn/hisax/config.c