summaryrefslogtreecommitdiff
path: root/sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-02-11 09:05:31 +0000
committerV3n3RiX <venerix@redcorelinux.org>2020-02-11 09:05:31 +0000
commitb4a23d586f3196e812f2a20cbbf040128d0c1c40 (patch)
tree76867c89820eabe5b7824184d9d77437a04215b3 /sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch
parenta502f48eb0e098efd19985398b9205c34a0218ff (diff)
sys-kernel : move kernel 4.19.xx to sys-kernel/linux-{image,sources}-redcore-lts-legacy
Diffstat (limited to 'sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch')
-rw-r--r--sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch153
1 files changed, 0 insertions, 153 deletions
diff --git a/sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch b/sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch
deleted file mode 100644
index 500dd852..00000000
--- a/sys-kernel/linux-image-redcore-lts/files/4.19-0005-Create-highres-timeout-variants-of-schedule_timeout-.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 552f25751a108c7e185b82aa3110d43bfe1e59b1 Mon Sep 17 00:00:00 2001
-From: Con Kolivas <kernel@kolivas.org>
-Date: Sat, 12 Aug 2017 11:53:39 +1000
-Subject: [PATCH 05/16] Create highres timeout variants of schedule_timeout
- functions.
-
----
- include/linux/freezer.h | 1 +
- include/linux/sched.h | 31 ++++++++++++++++--
- kernel/time/hrtimer.c | 71 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 101 insertions(+), 2 deletions(-)
-
-diff --git a/include/linux/freezer.h b/include/linux/freezer.h
-index 21f5aa0b217f..ee9b46394fdf 100644
---- a/include/linux/freezer.h
-+++ b/include/linux/freezer.h
-@@ -297,6 +297,7 @@ static inline void set_freezable(void) {}
- #define wait_event_freezekillable_unsafe(wq, condition) \
- wait_event_killable(wq, condition)
-
-+#define pm_freezing (false)
- #endif /* !CONFIG_FREEZER */
-
- #endif /* FREEZER_H_INCLUDED */
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 1f8cea1436b4..1cd022304c64 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -211,13 +211,40 @@ struct task_group;
-
- extern void scheduler_tick(void);
-
--#define MAX_SCHEDULE_TIMEOUT LONG_MAX
--
-+#define MAX_SCHEDULE_TIMEOUT LONG_MAX
- extern long schedule_timeout(long timeout);
- extern long schedule_timeout_interruptible(long timeout);
- extern long schedule_timeout_killable(long timeout);
- extern long schedule_timeout_uninterruptible(long timeout);
- extern long schedule_timeout_idle(long timeout);
-+
-+#ifdef CONFIG_HIGH_RES_TIMERS
-+extern long schedule_msec_hrtimeout(long timeout);
-+extern long schedule_min_hrtimeout(void);
-+extern long schedule_msec_hrtimeout_interruptible(long timeout);
-+extern long schedule_msec_hrtimeout_uninterruptible(long timeout);
-+#else
-+static inline long schedule_msec_hrtimeout(long timeout)
-+{
-+ return schedule_timeout(msecs_to_jiffies(timeout));
-+}
-+
-+static inline long schedule_min_hrtimeout(void)
-+{
-+ return schedule_timeout(1);
-+}
-+
-+static inline long schedule_msec_hrtimeout_interruptible(long timeout)
-+{
-+ return schedule_timeout_interruptible(msecs_to_jiffies(timeout));
-+}
-+
-+static inline long schedule_msec_hrtimeout_uninterruptible(long timeout)
-+{
-+ return schedule_timeout_uninterruptible(msecs_to_jiffies(timeout));
-+}
-+#endif
-+
- asmlinkage void schedule(void);
- extern void schedule_preempt_disabled(void);
-
-diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
-index e1a549c9e399..12735724cce4 100644
---- a/kernel/time/hrtimer.c
-+++ b/kernel/time/hrtimer.c
-@@ -2026,3 +2026,74 @@ int __sched schedule_hrtimeout(ktime_t *expires,
- return schedule_hrtimeout_range(expires, 0, mode);
- }
- EXPORT_SYMBOL_GPL(schedule_hrtimeout);
-+
-+/*
-+ * As per schedule_hrtimeout but taskes a millisecond value and returns how
-+ * many milliseconds are left.
-+ */
-+long __sched schedule_msec_hrtimeout(long timeout)
-+{
-+ struct hrtimer_sleeper t;
-+ int delta, secs, jiffs;
-+ ktime_t expires;
-+
-+ if (!timeout) {
-+ __set_current_state(TASK_RUNNING);
-+ return 0;
-+ }
-+
-+ jiffs = msecs_to_jiffies(timeout);
-+ /*
-+ * If regular timer resolution is adequate or hrtimer resolution is not
-+ * (yet) better than Hz, as would occur during startup, use regular
-+ * timers.
-+ */
-+ if (jiffs > 4 || hrtimer_resolution >= NSEC_PER_SEC / HZ)
-+ return schedule_timeout(jiffs);
-+
-+ secs = timeout / 1000;
-+ delta = (timeout % 1000) * NSEC_PER_MSEC;
-+ expires = ktime_set(secs, delta);
-+
-+ hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
-+ hrtimer_set_expires_range_ns(&t.timer, expires, delta);
-+
-+ hrtimer_init_sleeper(&t, current);
-+
-+ hrtimer_start_expires(&t.timer, HRTIMER_MODE_REL);
-+
-+ if (likely(t.task))
-+ schedule();
-+
-+ hrtimer_cancel(&t.timer);
-+ destroy_hrtimer_on_stack(&t.timer);
-+
-+ __set_current_state(TASK_RUNNING);
-+
-+ expires = hrtimer_expires_remaining(&t.timer);
-+ timeout = ktime_to_ms(expires);
-+ return timeout < 0 ? 0 : timeout;
-+}
-+
-+EXPORT_SYMBOL(schedule_msec_hrtimeout);
-+
-+long __sched schedule_min_hrtimeout(void)
-+{
-+ return schedule_msec_hrtimeout(1);
-+}
-+
-+EXPORT_SYMBOL(schedule_min_hrtimeout);
-+
-+long __sched schedule_msec_hrtimeout_interruptible(long timeout)
-+{
-+ __set_current_state(TASK_INTERRUPTIBLE);
-+ return schedule_msec_hrtimeout(timeout);
-+}
-+EXPORT_SYMBOL(schedule_msec_hrtimeout_interruptible);
-+
-+long __sched schedule_msec_hrtimeout_uninterruptible(long timeout)
-+{
-+ __set_current_state(TASK_UNINTERRUPTIBLE);
-+ return schedule_msec_hrtimeout(timeout);
-+}
-+EXPORT_SYMBOL(schedule_msec_hrtimeout_uninterruptible);
---
-2.17.1
-