Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756761AbaGBQt6 (ORCPT ); Wed, 2 Jul 2014 12:49:58 -0400 Received: from smtp.codeaurora.org ([198.145.11.231]:46753 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754104AbaGBQtz (ORCPT ); Wed, 2 Jul 2014 12:49:55 -0400 Message-ID: <53B4382F.9030908@codeaurora.org> Date: Wed, 02 Jul 2014 12:49:51 -0400 From: Christopher Covington User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-Version: 1.0 To: Cyrill Gorcunov CC: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Michael Kerrisk , Thomas Gleixner , Andrew Morton , Andrey Vagin , Pavel Emelyanov , Vladimir Davydov , "Linux ARM kernel mailing list" Subject: Re: [patch 3/4] timerfd: Implement timerfd_ioctl method to restore timerfd_ctx::ticks References: <20140623185431.396309193@openvz.org> <20140623190345.499956567@openvz.org> <20140624220351.GZ2095@moon> In-Reply-To: <20140624220351.GZ2095@moon> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Cyrill, On 06/24/2014 06:03 PM, Cyrill Gorcunov wrote: > The read() of timerfd files allows to fetch the number of timer ticks > while there is no way to set it back from userspace. > > To restore the timer's state as it was at checkpoint moment we need > a path to bring @ticks back. Initially I thought about writing ticks > back via write() interface but it seems such API is somehow obscure. > > Instead implement timerfd_ioctl() method with TFD_IOC_SET_TICKS > command which allows to adjust @ticks into non-zero value waking > up the waiters. > > I wrapped code with CONFIG_CHECKPOINT_RESTORE which can be > dropped off if there users except c/r camp appear. > > v2 (by akpm@): > -Use define timerfd_ioctl NULL for non c/r config > > CC: Thomas Gleixner > CC: Andrew Morton > CC: Andrey Vagin > CC: Pavel Emelyanov > CC: Vladimir Davydov > Signed-off-by: Cyrill Gorcunov > --- > > A nit fixed for for non c/r config in timerfd_ioctl declaration > > fs/timerfd.c | 37 +++++++++++++++++++++++++++++++++++++ > include/linux/timerfd.h | 5 +++++ > 2 files changed, 42 insertions(+) > > Index: linux-2.6.git/fs/timerfd.c > =================================================================== > --- linux-2.6.git.orig/fs/timerfd.c > +++ linux-2.6.git/fs/timerfd.c > @@ -315,12 +315,49 @@ static int timerfd_show(struct seq_file > #define timerfd_show NULL > #endif > > +#ifdef CONFIG_CHECKPOINT_RESTORE > +static long timerfd_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > +{ > + struct timerfd_ctx *ctx = file->private_data; > + int ret = 0; > + > + switch (cmd) { > + case TFD_IOC_SET_TICKS: { > + u64 ticks; > + > + if (get_user(ticks, (u64 __user *)arg)) 64-bit get_user is currently unsupported on ARM, although it appears work is ongoing [1]. 1. https://lkml.org/lkml/2014/6/17/260 Regards, Christopher -- Employee of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/