/* This gets called when the timer event triggers. We set the "expired" flag, but we do not re-arm the timer (in case it's necessary, tintv.tv64 != 0) until the timer is accessed.  */
static enum hrtimer_restart timerfd_tmrproc(struct hrtimer *htmr)
/* This gets called when the timer event triggers. We set the "expired" flag, but we do not re-arm the timer (in case it's necessary, tintv.tv64 != 0) until the timer is accessed.  */
static enum hrtimer_restart timerfd_tmrproc(struct hrtimer *htmr)
{
	struct timerfd_ctx *ctx = container_of(htmr, struct timerfd_ctx, tmr);
	unsigned long flags;
	spin_lock_irqsave(&ctx->wqh.lock, flags);
	ctx->expired = 1;
	ctx->ticks++;
	wake_up_locked(&ctx->wqh);
	spin_unlock_irqrestore(&ctx->wqh.lock, flags);
	return HRTIMER_NORESTART;
}