From: tip-bot for Cyrill Gorcunov <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
gorcunov@openvz.org, xemul@parallels.com, avagin@openvz.org,
akpm@linux-foundation.org, tglx@linutronix.de,
vdavydov@parallels.com, mtk.manpages@gmail.com
Subject: [tip:timers/core] timerfd: Implement show_fdinfo method
Date: Fri, 18 Jul 2014 02:52:09 -0700 [thread overview]
Message-ID: <tip-af9c4957cf212ad9cf0bee34c95cb11de5426e85@git.kernel.org> (raw)
In-Reply-To: <20140715215703.114365649@openvz.org>
Commit-ID: af9c4957cf212ad9cf0bee34c95cb11de5426e85
Gitweb: http://git.kernel.org/tip/af9c4957cf212ad9cf0bee34c95cb11de5426e85
Author: Cyrill Gorcunov <gorcunov@openvz.org>
AuthorDate: Wed, 16 Jul 2014 01:54:52 +0400
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 18 Jul 2014 11:49:57 +0200
timerfd: Implement show_fdinfo method
For checkpoint/restore of timerfd files we need to know how exactly
the timer were armed, to be able to recreate it on restore stage.
Thus implement show_fdinfo method which provides enough information
for that.
One of significant changes I think is the addition of @settime_flags
member. Currently there are two flags TFD_TIMER_ABSTIME and
TFD_TIMER_CANCEL_ON_SET, and the second can be found from
@might_cancel variable but in case if the flags will be extended
in future we most probably will have to somehow remember them
explicitly anyway so I guss doing that right now won't hurt.
To not bloat the timerfd_ctx structure I've converted @expired
to short integer and defined @settime_flags as short too.
v2 (by avagin@, vdavydov@ and tglx@):
- Add it_value/it_interval fields
- Save flags being used in timerfd_setup in context
v3 (by tglx@):
- don't forget to use CONFIG_PROC_FS
v4 (by akpm@):
-Use define timerfd_show NULL for non c/r config
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Andrey Vagin <avagin@openvz.org>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Vladimir Davydov <vdavydov@parallels.com>
Link: http://lkml.kernel.org/r/20140715215703.114365649@openvz.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
fs/timerfd.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/fs/timerfd.c b/fs/timerfd.c
index 0013142..77183f0 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -35,8 +35,9 @@ struct timerfd_ctx {
ktime_t moffs;
wait_queue_head_t wqh;
u64 ticks;
- int expired;
int clockid;
+ short unsigned expired;
+ short unsigned settime_flags; /* to show in fdinfo */
struct rcu_head rcu;
struct list_head clist;
bool might_cancel;
@@ -196,6 +197,8 @@ static int timerfd_setup(struct timerfd_ctx *ctx, int flags,
if (timerfd_canceled(ctx))
return -ECANCELED;
}
+
+ ctx->settime_flags = flags & TFD_SETTIME_FLAGS;
return 0;
}
@@ -284,11 +287,40 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
return res;
}
+#ifdef CONFIG_PROC_FS
+static int timerfd_show(struct seq_file *m, struct file *file)
+{
+ struct timerfd_ctx *ctx = file->private_data;
+ struct itimerspec t;
+
+ spin_lock_irq(&ctx->wqh.lock);
+ t.it_value = ktime_to_timespec(timerfd_get_remaining(ctx));
+ t.it_interval = ktime_to_timespec(ctx->tintv);
+ spin_unlock_irq(&ctx->wqh.lock);
+
+ return seq_printf(m,
+ "clockid: %d\n"
+ "ticks: %llu\n"
+ "settime flags: 0%o\n"
+ "it_value: (%llu, %llu)\n"
+ "it_interval: (%llu, %llu)\n",
+ ctx->clockid, (unsigned long long)ctx->ticks,
+ ctx->settime_flags,
+ (unsigned long long)t.it_value.tv_sec,
+ (unsigned long long)t.it_value.tv_nsec,
+ (unsigned long long)t.it_interval.tv_sec,
+ (unsigned long long)t.it_interval.tv_nsec);
+}
+#else
+#define timerfd_show NULL
+#endif
+
static const struct file_operations timerfd_fops = {
.release = timerfd_release,
.poll = timerfd_poll,
.read = timerfd_read,
.llseek = noop_llseek,
+ .show_fdinfo = timerfd_show,
};
static int timerfd_fget(int fd, struct fd *p)
next prev parent reply other threads:[~2014-07-18 9:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 21:54 [patch 0/4] timerfd c/r support, v5 Cyrill Gorcunov
2014-07-15 21:54 ` [patch 1/4] timerfd: Implement show_fdinfo method Cyrill Gorcunov
2014-07-15 21:54 ` Cyrill Gorcunov
2014-07-18 9:52 ` tip-bot for Cyrill Gorcunov [this message]
2014-07-15 21:54 ` [patch 2/4] docs: procfs -- Document timerfd output Cyrill Gorcunov
2014-07-15 21:54 ` Cyrill Gorcunov
2014-07-18 9:52 ` [tip:timers/core] docs: Procfs " tip-bot for Cyrill Gorcunov
2014-07-15 21:54 ` [patch 3/4] timerfd: Implement timerfd_ioctl method to restore timerfd_ctx::ticks, v3 Cyrill Gorcunov
2014-07-15 21:54 ` Cyrill Gorcunov
2014-07-18 9:52 ` [tip:timers/core] " tip-bot for Cyrill Gorcunov
2014-07-15 21:54 ` [patch 4/4] timerfd.2: Add ioctl method description Cyrill Gorcunov
[not found] ` <20140715215703.353177995-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2015-04-13 19:56 ` Michael Kerrisk (man-pages)
2015-04-13 19:56 ` Michael Kerrisk (man-pages)
[not found] ` <552C1F64.30202-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-13 20:10 ` Cyrill Gorcunov
2015-04-13 20:10 ` Cyrill Gorcunov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-af9c4957cf212ad9cf0bee34c95cb11de5426e85@git.kernel.org \
--to=tipbot@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=avagin@openvz.org \
--cc=gorcunov@openvz.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=tglx@linutronix.de \
--cc=vdavydov@parallels.com \
--cc=xemul@parallels.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.