All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: xenomai@xenomai.org
Subject: [PATCH 14/25] cobalt/timer: Check if nklock is held in timer services
Date: Thu, 20 May 2021 23:44:24 +0200	[thread overview]
Message-ID: <544cd293367276d8a5edaeaa47fbb4fdd315c835.1621547075.git.jan.kiszka@siemens.com> (raw)
In-Reply-To: <cover.1621547075.git.jan.kiszka@siemens.com>

From: Philippe Gerum <rpm@xenomai.org>

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/timer.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/kernel/cobalt/timer.c b/kernel/cobalt/timer.c
index f9aa457ce9..9297cca186 100644
--- a/kernel/cobalt/timer.c
+++ b/kernel/cobalt/timer.c
@@ -118,6 +118,8 @@ int xntimer_start(struct xntimer *timer,
 	unsigned long gravity;
 	int ret = 0;
 
+	atomic_only();
+
 	trace_cobalt_timer_start(timer, value, interval, mode);
 
 	if ((timer->status & XNTIMER_DEQUEUED) == 0)
@@ -204,6 +206,8 @@ void __xntimer_stop(struct xntimer *timer)
 	struct xnsched *sched;
 	int heading = 1;
 
+	atomic_only();
+
 	trace_cobalt_timer_stop(timer);
 
 	if ((timer->status & XNTIMER_DEQUEUED) == 0) {
@@ -239,6 +243,8 @@ EXPORT_SYMBOL_GPL(__xntimer_stop);
  */
 xnticks_t xntimer_get_date(struct xntimer *timer)
 {
+	atomic_only();
+
 	if (!xntimer_running_p(timer))
 		return XN_INFINITE;
 
@@ -269,6 +275,8 @@ xnticks_t __xntimer_get_timeout(struct xntimer *timer)
 	struct xnclock *clock;
 	xnticks_t expiry, now;
 
+	atomic_only();
+
 	clock = xntimer_clock(timer);
 	now = xnclock_read_raw(clock);
 	expiry = xntimer_expiry(timer);
@@ -431,6 +439,8 @@ void __xntimer_switch_tracking(struct xntimer *timer,
 void xntimer_set_clock(struct xntimer *timer,
 		       struct xnclock *newclock)
 {
+	atomic_only();
+
 	if (timer->clock != newclock) {
 		xntimer_stop(timer);
 		timer->clock = newclock;
@@ -605,6 +615,8 @@ unsigned long long xntimer_get_overruns(struct xntimer *timer,
 	xnsticks_t delta;
 	xntimerq_t *q;
 
+	atomic_only();
+
 	delta = now - xntimer_pexpect(timer);
 	if (unlikely(delta >= (xnsticks_t) period)) {
 		period = timer->interval_ns;
-- 
2.26.2



  parent reply	other threads:[~2021-05-20 21:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-20 21:44 [PATCH 00/25] Dovetail integration, next round Jan Kiszka
2021-05-20 21:44 ` [PATCH 01/25] cobalt/kernel: ipipe: rename xnsched_realtime_domain to xnsched_primary_domain Jan Kiszka
2021-05-20 21:44 ` [PATCH 02/25] cobalt/kevents: dovetail: drop call to obsolete force_commit_memory() Jan Kiszka
2021-05-20 21:44 ` [PATCH 03/25] cobalt/intr: dovetail: implement interrupt management, handling Jan Kiszka
2021-05-20 21:44 ` [PATCH 04/25] cobalt/irq: dovetail: implement out-of-band irq management and handling Jan Kiszka
2021-05-20 21:44 ` [PATCH 05/25] cobalt/kevents: dovetail: enable back tracing Jan Kiszka
2021-05-20 21:44 ` [PATCH 06/25] cobalt/x86: ipipe: Remove leftover from x86_32 removal Jan Kiszka
2021-05-20 21:44 ` [PATCH 07/25] cobalt/x86: ipipe: Drop unused strncpy_from_user_nocheck Jan Kiszka
2021-05-20 21:44 ` [PATCH 08/25] cobalt/x86: Move shared headers out of pipeline specific folder Jan Kiszka
2021-05-20 21:44 ` [PATCH 09/25] cobalt/x86: dovetail: add architecture bits Jan Kiszka
2021-05-20 21:44 ` [PATCH 10/25] cobalt/kernel: dovetail: implement sirq services Jan Kiszka
2021-05-20 21:44 ` [PATCH 11/25] cobalt/sched: dovetail: add task control block initializers Jan Kiszka
2021-05-20 21:44 ` [PATCH 12/25] cobalt/clock: dovetail: provide backend code to CLOCK_HOST_REALTIME Jan Kiszka
2021-05-20 21:44 ` [PATCH 13/25] cobalt/init: dovetail: add oob stage enabling, disabling services Jan Kiszka
2021-05-20 21:44 ` Jan Kiszka [this message]
2021-05-20 21:44 ` [PATCH 15/25] cobalt/tick: dovetail: install/uninstall proxy tick device Jan Kiszka
2021-05-20 21:44 ` [PATCH 16/25] cobalt/tick: dovetail: implement pipeline_set_timer_shot() Jan Kiszka
2021-05-20 21:44 ` [PATCH 17/25] cobalt/tick: dovetail: implement pipeline_timer_name() Jan Kiszka
2021-05-20 21:44 ` [PATCH 18/25] cobalt/timer: pipeline: abstract handling of ONESHOT_STOPPED mode Jan Kiszka
2021-05-20 21:44 ` [PATCH 19/25] cobalt/timer: dovetail: handle " Jan Kiszka
2021-05-20 21:44 ` [PATCH 20/25] cobalt/tick: dovetail: flatten the call stack to pipeline services Jan Kiszka
2021-05-20 21:44 ` [PATCH 21/25] cobalt/clock: dovetail: implement pipeline_read_cycle_counter() Jan Kiszka
2021-05-20 21:44 ` [PATCH 22/25] lib/cobalt: ticks: drop cobalt_read_hrclock() Jan Kiszka
2021-05-20 21:44 ` [PATCH 23/25] lib/cobalt: dovetail: allow representing time as count of nanoseconds Jan Kiszka
2021-05-20 21:44 ` [PATCH 24/25] lib/cobalt: add default wrapper to clock_settime() Jan Kiszka
2021-05-20 21:44 ` [PATCH 25/25] lib/cobalt: dovetail: use clock_gettime() vcall for reading timestamps Jan Kiszka

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=544cd293367276d8a5edaeaa47fbb4fdd315c835.1621547075.git.jan.kiszka@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=xenomai@xenomai.org \
    /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.