timerfd: convert to ->poll_mask
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
9e42f195f5
commit
652fe8e876
22
fs/timerfd.c
22
fs/timerfd.c
@ -226,21 +226,20 @@ static int timerfd_release(struct inode *inode, struct file *file)
|
|||||||
kfree_rcu(ctx, rcu);
|
kfree_rcu(ctx, rcu);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __poll_t timerfd_poll(struct file *file, poll_table *wait)
|
static struct wait_queue_head *timerfd_get_poll_head(struct file *file,
|
||||||
|
__poll_t eventmask)
|
||||||
{
|
{
|
||||||
struct timerfd_ctx *ctx = file->private_data;
|
struct timerfd_ctx *ctx = file->private_data;
|
||||||
__poll_t events = 0;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
poll_wait(file, &ctx->wqh, wait);
|
return &ctx->wqh;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&ctx->wqh.lock, flags);
|
static __poll_t timerfd_poll_mask(struct file *file, __poll_t eventmask)
|
||||||
if (ctx->ticks)
|
{
|
||||||
events |= EPOLLIN;
|
struct timerfd_ctx *ctx = file->private_data;
|
||||||
spin_unlock_irqrestore(&ctx->wqh.lock, flags);
|
|
||||||
|
|
||||||
return events;
|
return ctx->ticks ? EPOLLIN : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
|
static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
|
||||||
@ -364,7 +363,8 @@ static long timerfd_ioctl(struct file *file, unsigned int cmd, unsigned long arg
|
|||||||
|
|
||||||
static const struct file_operations timerfd_fops = {
|
static const struct file_operations timerfd_fops = {
|
||||||
.release = timerfd_release,
|
.release = timerfd_release,
|
||||||
.poll = timerfd_poll,
|
.get_poll_head = timerfd_get_poll_head,
|
||||||
|
.poll_mask = timerfd_poll_mask,
|
||||||
.read = timerfd_read,
|
.read = timerfd_read,
|
||||||
.llseek = noop_llseek,
|
.llseek = noop_llseek,
|
||||||
.show_fdinfo = timerfd_show,
|
.show_fdinfo = timerfd_show,
|
||||||
|
Loading…
Reference in New Issue
Block a user