if (EP_RB_LINKED(&epi->rbn) && !(epi->event.events & EPOLLET) && (epi->revents & epi->event.events) && !EP_IS_LINKED(&epi->rdllink)) { 
if (ep_rb_linked(&epi->rbn) && !(epi->event.events & EPOLLET) && (epi->revents & epi->event.events) && !ep_is_linked(&epi->rdllink)) { 
static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist){	int ricnt = 0, pwake = 0;	unsigned long flags;	struct epitem *epi;	write_lock_irqsave(&ep->lock, flags);	while (!list_empty(txlist)) {		epi = list_entry(txlist->next, struct epitem, txlink);		/* Unlink the current item from the transfer list */		EP_LIST_DEL(&epi->txlink);		/*		 * If the item is no more linked to the interest set, we don't		 * have to push it inside the ready list because the following		 * ep_release_epitem() is going to drop it. Also, if the current		 * item is set to have an Edge Triggered behaviour, we don't have		 * to push it back either.		 */		if (EP_RB_LINKED(&epi->rbn) && !(epi->event.events & EPOLLET) &&		    (epi->revents & epi->event.events) && !EP_IS_LINKED(&epi->rdllink)) {			list_add_tail(&epi->rdllink, &ep->rdllist);			ricnt++;		}	}	if (ricnt) {		/*		 * 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++;	}	write_unlock_irqrestore(&ep->lock, flags);	/* We have to call this outside the lock */	if (pwake)		ep_poll_safewake(&psw, &ep->poll_wait);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b030a4dd609e167da7f73c2d1fa5af864a0aea17/eventpoll.c/clean/fs/eventpoll.c