Thomas Gleixner
f2c45807d3
alarmtimer: Switch over to generic set/get/rearm routine
...
All required callbacks are in place. Switch the alarm timer based posix
interval timer callbacks to the common implementation and remove the
incorrect private implementation.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211657.825471962@linutronix.de
2017-06-04 15:40:32 +02:00
Thomas Gleixner
eae1c4ae27
posix-timers: Make use of cancel/arm callbacks
...
Replace the hrtimer calls by calls to the new try_to_cancel()/arm() kclock
callbacks and move the hrtimer specific implementation into the
corresponding callback functions.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211657.355396667@linutronix.de
2017-06-04 15:40:29 +02:00
Thomas Gleixner
eabdec0438
posix-timers: Zero settings value in common code
...
Zero out the settings struct in the common code so the callbacks do not
have to do it themself.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211657.200870713@linutronix.de
2017-06-04 15:40:28 +02:00
Thomas Gleixner
91d57bae08
posix-timers: Make use of forward/remaining callbacks
...
Replace the hrtimer calls by calls to the new forward/remaining kclock
callbacks and move the hrtimer specific implementation into the
corresponding callback functions.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211657.121437232@linutronix.de
2017-06-04 15:40:27 +02:00
Thomas Gleixner
21e55c1f83
posix-timers: Add active flag to k_itimer
...
Keep track of the activation state of posix timers. This is a preparatory
change for making common_timer_get() usable by both hrtimer and alarm timer
implementations.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.967783982@linutronix.de
2017-06-04 15:40:26 +02:00
Thomas Gleixner
f37fb0aa4f
posix-timers: Use timer_rearm() callback in posixtimer_rearm()
...
Use the new timer_rearm() callback to replace the conditional hardcoded
calls into the hrtimer and cpu timer code.
This allows later to bring the same logic to alarmtimers.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.889661919@linutronix.de
2017-06-04 15:40:26 +02:00
Thomas Gleixner
96fe3b072f
posix-timers: Rename do_schedule_next_timer
...
That function is a misnomer. Rename it with a proper prefix to
posixtimer_rearm().
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.811362578@linutronix.de
2017-06-04 15:40:25 +02:00
Thomas Gleixner
d97bb75ddd
posix-timers: Store k_clock pointer in k_itimer
...
Having the k_clock pointer in the k_itimer struct avoids the lookup in
several code pathes and makes the next steps of unification of the hrtimer
and alarmtimer based posix timers simpler.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.641222072@linutronix.de
2017-06-04 15:40:25 +02:00
Thomas Gleixner
80105cd0e6
posix-timers: Move interval out of the union
...
Preparatory patch to unify the alarm timer and hrtimer based posix interval
timer handling.
The interval is used as a criteria for rearming decisions so moving it out
of the clock specific data structures allows later unification.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.563922908@linutronix.de
2017-06-04 15:40:24 +02:00
Thomas Gleixner
af888d677a
posix-timers: Unify overrun/requeue_pending handling
...
hrtimer based posix-timers and posix-cpu-timers handle the update of the
rearming and overflow related status fields differently.
Move that update to the common rearming code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.484936964@linutronix.de
2017-06-04 15:40:24 +02:00
Thomas Gleixner
bab0aae9dc
posix-timers: Move posix-timer internals to core
...
None of these declarations is required outside of kernel/time. Move them to
an internal header.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Cc: Christoph Hellwig <hch@lst.de >
Link: http://lkml.kernel.org/r/20170530211656.394803853@linutronix.de
2017-06-04 15:40:23 +02:00
Thomas Gleixner
6631fa12c1
posix-timers: Avoid gazillions of forward declarations
...
Move it below the actual implementations as there are new callbacks coming
which would require even more forward declarations.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.238209952@linutronix.de
2017-06-04 15:40:23 +02:00
Thomas Gleixner
a81129e5a1
posix-timers: Remove unused export of posix_timer_event()
...
Since the removal of the mmtimer driver the export is not longer needed.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: John Stultz <john.stultz@linaro.org >
Link: http://lkml.kernel.org/r/20170530211656.052744418@linutronix.de
2017-06-04 15:40:22 +02:00
Christoph Hellwig
d3ba5a9a34
posix-timers: Make posix_clocks immutable
...
There are no more modular users providing a posix clock. The register
function is now pointless so the posix clock array can be initialized
statically at compile time and the array including the various k_clock
structs can be marked 'const'.
Inspired by changes in the Grsecurity patch set, but done proper.
[ tglx: Massaged changelog and fixed the POSIX_TIMER=n case ]
Signed-off-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Mike Travis <mike.travis@hpe.com >
Cc: Dimitri Sivanich <sivanich@hpe.com >
Link: http://lkml.kernel.org/r/20170526090311.3377-3-hch@lst.de
2017-05-27 09:46:35 +02:00
Deepa Dinamani
ad19638463
time: Change k_clock nsleep() to use timespec64
...
struct timespec is not y2038 safe on 32 bit machines. Replace uses of
struct timespec with struct timespec64 in the kernel.
The syscall interfaces themselves will be changed in a separate series.
Note that the restart_block parameter for nanosleep has also been left
unchanged and will be part of syscall series noted above.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Link: http://lkml.kernel.org/r/1490555058-4603-8-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:56 +02:00
Deepa Dinamani
5f252b3256
time: Change k_clock timer_set() and timer_get() to use timespec64
...
struct timespec is not y2038 safe on 32 bit machines. Replace uses of
struct timespec with struct timespec64 in the kernel.
struct itimerspec internally uses struct timespec. Use struct itimerspec64
which uses struct timespec64.
The syscall interfaces themselves will be changed in a separate series.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Link: http://lkml.kernel.org/r/1490555058-4603-7-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:56 +02:00
Deepa Dinamani
0fe6afe383
time: Change k_clock clock_set() to use timespec64
...
struct timespec is not y2038 safe on 32 bit machines. Replace uses of
struct timespec with struct timespec64 in the kernel.
The syscall interfaces themselves will be changed in a separate series.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Link: http://lkml.kernel.org/r/1490555058-4603-6-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:56 +02:00
Deepa Dinamani
d2e3e0ca5d
time: Change k_clock clock_getres() to use timespec64
...
struct timespec is not y2038 safe on 32 bit machines. Replace uses of
struct timespec with struct timespec64 in the kernel. The syscall
interfaces themselves will be changed in a separate series.
The clock_getres() interface has also been changed to use timespec64 even
though this particular interface is not affected by the y2038 problem. This
helps verification for internal kernel code for y2038 readiness by getting
rid of time_t/ timeval/ timespec completely.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Link: http://lkml.kernel.org/r/1490555058-4603-5-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:55 +02:00
Deepa Dinamani
3c9c12f4b4
time: Change k_clock clock_get() to use timespec64
...
struct timespec is not y2038 safe on 32 bit machines. Replace uses of
struct timespec with struct timespec64 in the kernel.
The syscall interfaces themselves will be changed in a separate series.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Link: http://lkml.kernel.org/r/1490555058-4603-4-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:55 +02:00
Deepa Dinamani
2ac00f17b2
time: Delete do_sys_setimeofday()
...
struct timespec is not y2038 safe on 32 bit machines and needs to be
replaced with struct timespec64.
do_sys_timeofday() is just a wrapper function. Replace all calls to this
function with direct calls to do_sys_timeofday64() instead and delete
do_sys_timeofday().
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com >
Cc: y2038@lists.linaro.org
Cc: john.stultz@linaro.org
Cc: arnd@arndb.de
Cc: linux-alpha@vger.kernel.org
Link: http://lkml.kernel.org/r/1490555058-4603-2-git-send-email-deepa.kernel@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-04-14 21:49:54 +02:00
Ingo Molnar
61855b6b03
sched/headers: Prepare to move exit_files() and exit_itimers() from <linux/sched.h> to <linux/sched/task.h>
...
But first update the usage site.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2017-03-02 08:42:40 +01:00
Thomas Gleixner
8b0e195314
ktime: Cleanup ktime_set() usage
...
ktime_set(S,N) was required for the timespec storage type and is still
useful for situations where a Seconds and Nanoseconds part of a time value
needs to be converted. For anything where the Seconds argument is 0, this
is pointless and can be replaced with a simple assignment.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
2016-12-25 17:21:22 +01:00
Thomas Gleixner
2456e85535
ktime: Get rid of the union
...
ktime is a union because the initial implementation stored the time in
scalar nanoseconds on 64 bit machine and in a endianess optimized timespec
variant for 32bit machines. The Y2038 cleanup removed the timespec variant
and switched everything to scalar nanoseconds. The union remained, but
become completely pointless.
Get rid of the union and just keep ktime_t as simple typedef of type s64.
The conversion was done with coccinelle and some manual mopping up.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
2016-12-25 17:21:22 +01:00
Linus Torvalds
7c0f6ba682
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
...
This was entirely automated, using the script by Al:
PATT='^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*<asm/uaccess.h>'
sed -i -e "s!$PATT!#include <linux/uaccess.h>!" \
$(git grep -l "$PATT"|grep -v ^include/linux/uaccess.h)
to do the replacement at the end of the merge window.
Requested-by: Al Viro <viro@zeniv.linux.org.uk >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-12-24 11:46:01 -08:00
Thomas Gleixner
572c391726
posix-timers: Handle relative timers with CONFIG_TIME_LOW_RES proper
...
As Helge reported for timerfd we have the same issue in posix timers. We
return remaining time larger than the programmed relative time to user space
in case of CONFIG_TIME_LOW_RES=y. Use the proper function to adjust the extra
time added in hrtimer_start_range_ns().
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Helge Deller <deller@gmx.de >
Cc: John Stultz <john.stultz@linaro.org >
Cc: linux-m68k@lists.linux-m68k.org
Cc: dhowells@redhat.com
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/20160114164159.450510905@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-01-17 11:13:55 +01:00
Thomas Gleixner
056a3cacbc
hrtimer: Get rid of hrtimer_get_res()
...
The resolution is directly accessible now. So its simpler just to fill
in the values of the timespec and be done with it.
Text size reduction (combined with "hrtimer: Get rid of the resolution
field in hrtimer_clock_base"):
x8664 -61, i386 -221, ARM -60, power64 -48
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Acked-by: Peter Zijlstra <peterz@infradead.org >
Cc: Preeti U Murthy <preeti@linux.vnet.ibm.com >
Cc: Viresh Kumar <viresh.kumar@linaro.org >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Link: http://lkml.kernel.org/r/20150414203500.879888080@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-22 17:06:49 +02:00
Mathias Krause
6891c4509c
posix-timers: Fix stack info leak in timer_create()
...
If userland creates a timer without specifying a sigevent info, we'll
create one ourself, using a stack local variable. Particularly will we
use the timer ID as sival_int. But as sigev_value is a union containing
a pointer and an int, that assignment will only partially initialize
sigev_value on systems where the size of a pointer is bigger than the
size of an int. On such systems we'll copy the uninitialized stack bytes
from the timer_create() call to userland when the timer actually fires
and we're going to deliver the signal.
Initialize sigev_value with 0 to plug the stack info leak.
Found in the PaX patch, written by the PaX Team.
Fixes: 5a9fa73072 ("posix-timers: kill ->it_sigev_signo and...")
Signed-off-by: Mathias Krause <minipli@googlemail.com >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Brad Spengler <spender@grsecurity.net >
Cc: PaX Team <pageexec@freemail.hu >
Cc: <stable@vger.kernel.org > # v2.6.28+
Link: http://lkml.kernel.org/r/1412456799-32339-1-git-send-email-minipli@googlemail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-10-25 10:43:15 +02:00
Thomas Gleixner
8b094cd03b
time: Consolidate the time accessor prototypes
...
Right now we have time related prototypes in 3 different header
files. Move it to a single timekeeping header file and move the core
internal stuff into a core private header.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: John Stultz <john.stultz@linaro.org >
2014-07-23 10:17:54 -07:00
Thomas Gleixner
5cee964597
time/timers: Move all time(r) related files into kernel/time
...
Except for Kconfig.HZ. That needs a separate treatment.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-06-23 11:22:35 +02:00