All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] evl/sched: Add sched_out handler to sched_class
@ 2026-06-14 19:35 Jan Kiszka
  2026-06-14 19:35 ` [PATCH 2/2] evl/sched/quota: Correct budget tracking for preempted threads Jan Kiszka
  2026-06-15  6:28 ` [PATCH 1/2] evl/sched: Add sched_out handler to sched_class Philippe Gerum
  0 siblings, 2 replies; 24+ messages in thread
From: Jan Kiszka @ 2026-06-14 19:35 UTC (permalink / raw)
  To: Philippe Gerum, Xenomai

From: Jan Kiszka <jan.kiszka@siemens.com>

This shall be invoked before a thread switch, providing both the current
and the next thread as arguments. Some scheduling classes may need it to
correctly handle their state as the sched_pick may not be invoked when a
higher-weighted class is providing the next thread.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 include/evl/sched.h     | 2 ++
 kernel/evl/sched/core.c | 5 +++++
 2 files changed, 7 insertions(+)

diff --git a/include/evl/sched.h b/include/evl/sched.h
index ae9690860146c..0b16f1b1cf626 100644
--- a/include/evl/sched.h
+++ b/include/evl/sched.h
@@ -120,6 +120,8 @@ struct evl_sched_class {
 	void (*sched_dequeue)(struct evl_thread *thread);
 	void (*sched_requeue)(struct evl_thread *thread);
 	struct evl_thread *(*sched_pick)(struct evl_rq *rq);
+	void (*sched_out)(struct evl_thread *thread,
+			  struct evl_thread *next);
 	void (*sched_yield)(struct evl_thread *thread);
 	void (*sched_migrate)(struct evl_thread *thread,
 			      struct evl_rq *rq);
diff --git a/kernel/evl/sched/core.c b/kernel/evl/sched/core.c
index eb133e334d30f..0d49fc16bd67e 100644
--- a/kernel/evl/sched/core.c
+++ b/kernel/evl/sched/core.c
@@ -910,6 +910,7 @@ static __always_inline bool test_resched(struct evl_rq *this_rq)
  */
 void __evl_schedule(void) /* oob or/and hard irqs off (CPU migration-safe) */
 {
+	struct evl_sched_class *prev_schedclass;
 	struct evl_rq *this_rq = this_evl_rq();
 	struct evl_thread *prev, *next, *curr;
 	bool leaving_inband, inband_tail;
@@ -990,6 +991,10 @@ void __evl_schedule(void) /* oob or/and hard irqs off (CPU migration-safe) */
 	this_rq->curr = next;
 	leaving_inband = false;
 
+	prev_schedclass = prev->sched_class;
+	if (prev_schedclass->sched_out)
+		prev_schedclass->sched_out(prev, next);
+
 	/*
 	 * Careful: we _must_ have updated this_rq->curr before
 	 * performing the rest of the context switch code
-- 
2.47.3

^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2026-06-15 10:24 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-14 19:35 [PATCH 1/2] evl/sched: Add sched_out handler to sched_class Jan Kiszka
2026-06-14 19:35 ` [PATCH 2/2] evl/sched/quota: Correct budget tracking for preempted threads Jan Kiszka
2026-06-15  8:47   ` Philippe Gerum
2026-06-15  6:28 ` [PATCH 1/2] evl/sched: Add sched_out handler to sched_class Philippe Gerum
2026-06-15  6:42   ` Philippe Gerum
2026-06-15  6:44     ` Jan Kiszka
2026-06-15  6:46     ` Jan Kiszka
2026-06-15  7:14       ` Philippe Gerum
2026-06-15  7:21         ` Jan Kiszka
2026-06-15  7:29           ` Philippe Gerum
2026-06-15  6:58     ` Jan Kiszka
2026-06-15  7:17       ` Philippe Gerum
2026-06-15  7:22         ` Jan Kiszka
2026-06-15  7:30           ` Philippe Gerum
2026-06-15  7:34             ` Philippe Gerum
2026-06-15  8:34             ` Jan Kiszka
2026-06-15  8:53               ` Philippe Gerum
2026-06-15  9:02               ` Philippe Gerum
2026-06-15  8:09       ` Philippe Gerum
2026-06-15  8:40         ` Jan Kiszka
2026-06-15  8:55           ` Philippe Gerum
2026-06-15  9:04     ` Jan Kiszka
2026-06-15  9:59       ` Philippe Gerum
2026-06-15 10:24         ` Jan Kiszka

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.