From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933639AbcBQBG5 (ORCPT ); Tue, 16 Feb 2016 20:06:57 -0500 Received: from mail-pf0-f174.google.com ([209.85.192.174]:34435 "EHLO mail-pf0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933415AbcBQBGz (ORCPT ); Tue, 16 Feb 2016 20:06:55 -0500 From: John Stultz To: Andrew Morton , Thomas Gleixner , Arjan van de Ven Cc: lkml , John Stultz , Oren Laadan , Ruchi Kandoi , Rom Lemarchand , Kees Cook , Android Kernel Team Subject: [PATCH 0/2] Extend timer_slack_ns to u64 on 32bit systems & add /proc//timerslack_ns Date: Tue, 16 Feb 2016 17:06:29 -0800 Message-Id: <1455671191-32105-1-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I didn't get any negative feedback on the last round of this, so I figured I'd send it along w/o the RFC header this time. This patchset introduces a /proc//timerslack_ns interface which would allow controlling processes to be able to set the timerslack value on other processes in order to save power by avoiding wakeups (Something Android currently does via out-of-tree patches). The first patch tries to fix the internal timer_slack_ns usage which was defined as a long, which limits the slack range to ~4 seconds on 32bit systems. It converts it to a u64, which provides the same basically unlimited slack (500 years) on both 32bit and 64bit machines. The second patch introduces the /proc//timerslack_ns interface which allows the full 64bit slack range for a task to be read or set on both 32bit and 64bit machines. With these two patches, on a 32bit machine, after setting the slack on bash to 10 seconds: $ time sleep 1 real 0m10.747s user 0m0.001s sys 0m0.005s The first patch is a little ugly, since I had to chase the slack delta arguments through a number of functions converting them to u64s. Let me know if it makes sense to break that up more or not. Other then that things are fairly straight forward. Feedback and thoughts would be greatly appreciated! thanks -john Cc: Arjan van de Ven Cc: Thomas Gleixner Cc: Oren Laadan Cc: Ruchi Kandoi Cc: Rom Lemarchand Cc: Kees Cook Cc: Andrew Morton Cc: Android Kernel Team John Stultz (2): timer: Convert timer_slack_ns from unsigned long to u64 proc: Add /proc//timerslack_ns interface Documentation/filesystems/proc.txt | 18 ++++++++++ fs/eventpoll.c | 2 +- fs/proc/base.c | 69 ++++++++++++++++++++++++++++++++++++++ fs/select.c | 8 ++--- include/linux/freezer.h | 2 +- include/linux/hrtimer.h | 12 ++++--- include/linux/poll.h | 2 +- include/linux/sched.h | 4 +-- kernel/sys.c | 5 ++- kernel/time/hrtimer.c | 8 ++--- kernel/time/timer.c | 4 +-- 11 files changed, 113 insertions(+), 21 deletions(-) -- 1.9.1