From dea2c79b5e6b73d318e6159e2505452d78078c29 Mon Sep 17 00:00:00 2001 From: Philippe Gerum Date: Sun, 20 Nov 2022 12:09:04 +0100 Subject: [PATCH] evl/mutex: alert only once on boost drop detection At this chance, privatize some helper macro, dropping an unused one. Signed-off-by: Philippe Gerum --- include/evl/thread.h | 6 ------ kernel/evl/mutex.c | 5 ++++- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/evl/thread.h b/include/evl/thread.h index dee22479aa8a9c..77ce49e6fe5b6a 100644 --- a/include/evl/thread.h +++ b/include/evl/thread.h @@ -157,12 +157,6 @@ struct evl_thread { char *name; }; -#define for_each_evl_booster(__pos, __thread) \ - list_for_each_entry(__pos, &(__thread)->boosters, next_booster) - -#define for_each_evl_tracker_safe(__pos, __tmp, __thread) \ - list_for_each_entry_safe(__pos, __tmp, &(__thread)->trackers, next_tracker) - static inline void evl_sync_uwindow(struct evl_thread *curr) { if (curr->u_window) { diff --git a/kernel/evl/mutex.c b/kernel/evl/mutex.c index 202657f5768bbc..8217fad468eb62 100644 --- a/kernel/evl/mutex.c +++ b/kernel/evl/mutex.c @@ -20,6 +20,9 @@ #define for_each_evl_mutex_waiter(__pos, __mutex) \ list_for_each_entry(__pos, &(__mutex)->wchan.wait_list, wait_next) +#define for_each_evl_booster(__pos, __thread) \ + list_for_each_entry(__pos, &(__thread)->boosters, next_booster) + static inline int get_ceiling_value(struct evl_mutex *mutex) { /* @@ -456,7 +459,7 @@ void evl_detect_boost_drop(void) for_each_evl_booster(mutex, curr) { raw_spin_lock(&mutex->wchan.lock); for_each_evl_mutex_waiter(waiter, mutex) { - if (!(waiter->state & T_WOLI)) + if (!(waiter->state & (T_WOLI|T_PIALERT))) continue; raw_spin_lock(&waiter->rq->lock); waiter->info |= T_PIALERT;