rem: return 0;
add: return B_OK;
context: mouse_read(void *cookie, off_t pos, void *buf, size_t *len){   // inform interrupt handler that data is being waited for   in_read = true;   // wait until there is data to read	if(acquire_sem_etc(mouse_sem, 1, B_CAN_INTERRUPT, 0) ==	   EINTR) {		return 0;	} // if	// verify user's buffer is of the right size	if(*len < PACKET_SIZE) {		*len = 0;		/* XXX - should return an error here */		return 0;	}	// copy data to user's buffer	((char*)buf)[0] = md_read.status;	((char*)buf)[1] = md_read.delta_x;	((char*)buf)[2] = md_read.delta_y;	*len = PACKET_SIZE;	return 0;}