Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd67081b authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

pipe: convert to ->poll_mask



Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent b28fc822
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -509,19 +509,22 @@ static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
	}
}

/* No kernel lock held - fine */
static __poll_t
pipe_poll(struct file *filp, poll_table *wait)
static struct wait_queue_head *
pipe_get_poll_head(struct file *filp, __poll_t events)
{
	__poll_t mask;
	struct pipe_inode_info *pipe = filp->private_data;
	int nrbufs;

	poll_wait(filp, &pipe->wait, wait);
	return &pipe->wait;
}

/* No kernel lock held - fine */
static __poll_t pipe_poll_mask(struct file *filp, __poll_t events)
{
	struct pipe_inode_info *pipe = filp->private_data;
	int nrbufs = pipe->nrbufs;
	__poll_t mask = 0;

	/* Reading only -- no need for acquiring the semaphore.  */
	nrbufs = pipe->nrbufs;
	mask = 0;
	if (filp->f_mode & FMODE_READ) {
		mask = (nrbufs > 0) ? EPOLLIN | EPOLLRDNORM : 0;
		if (!pipe->writers && filp->f_version != pipe->w_counter)
@@ -1020,7 +1023,8 @@ const struct file_operations pipefifo_fops = {
	.llseek		= no_llseek,
	.read_iter	= pipe_read,
	.write_iter	= pipe_write,
	.poll		= pipe_poll,
	.get_poll_head	= pipe_get_poll_head,
	.poll_mask	= pipe_poll_mask,
	.unlocked_ioctl	= pipe_ioctl,
	.release	= pipe_release,
	.fasync		= pipe_fasync,