struct epitem *epi = EP_ITEM_FROM_WAIT(wait); 
struct epitem *epi = ep_item_from_wait(wait); 
static int ep_poll_callback(wait_queue_t *wait, unsigned mode, int sync, void *key){	int pwake = 0;	unsigned long flags;	struct epitem *epi = EP_ITEM_FROM_WAIT(wait);	struct eventpoll *ep = epi->ep;	DNPRINTK(3, (KERN_INFO "[%p] eventpoll: poll_callback(%p) epi=%p ep=%p\n",		     current, epi->file, epi, ep));	write_lock_irqsave(&ep->lock, flags);	/*	 * If the event mask does not contain any poll(2) event, we consider the	 * descriptor to be disabled. This condition is likely the effect of the	 * EPOLLONESHOT bit that disables the descriptor when an event is received,	 * until the next EPOLL_CTL_MOD will be issued.	 */	if (!(epi->event.events & ~EP_PRIVATE_BITS))		goto is_disabled;	/* If this file is already in the ready list we exit soon */	if (EP_IS_LINKED(&epi->rdllink))		goto is_linked;	list_add_tail(&epi->rdllink, &ep->rdllist);is_linked:	/*	 * Wake up ( if active ) both the eventpoll wait list and the ->poll()	 * wait list.	 */	if (waitqueue_active(&ep->wq))		wake_up(&ep->wq);	if (waitqueue_active(&ep->poll_wait))		pwake++;is_disabled:	write_unlock_irqrestore(&ep->lock, flags);	/* We have to call this outside the lock */	if (pwake)		ep_poll_safewake(&psw, &ep->poll_wait);	return 1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b030a4dd609e167da7f73c2d1fa5af864a0aea17/eventpoll.c/clean/fs/eventpoll.c