+ George Stark (IIRC you also tried to achieve something like this in the past) On Thu, Sep 5, 2024 at 11:47 PM Bart Van Assche <bvanassche@xxxxxxx> wrote: > > With CONFIG_PREEMPT_RT disabled __mutex_init() is a function. With > CONFIG_PREEMPT_RT enabled, __mutex_init() is a macro. I assume this is why > mutex_init() is defined twice as exactly the same macro. > > Prepare for introducing a new macro for mutex initialization by combining > the two identical mutex_init() definitions into a single definition. This > patch does not change any functionality because the C preprocessor expands > macros when it encounters the macro name and not when a macro definition > is encountered. See also commit bb630f9f7a7d ("locking/rtmutex: Add mutex > variant for RT"). > > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > include/linux/mutex.h | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/include/linux/mutex.h b/include/linux/mutex.h > index a561c629d89f..ef617089db19 100644 > --- a/include/linux/mutex.h > +++ b/include/linux/mutex.h > @@ -49,7 +49,6 @@ static inline void mutex_destroy(struct mutex *lock) {} > > #endif > > -#ifndef CONFIG_PREEMPT_RT > /** > * mutex_init - initialize the mutex > * @mutex: the mutex to be initialized > @@ -65,6 +64,7 @@ do { \ > __mutex_init((mutex), #mutex, &__key); \ > } while (0) > > +#ifndef CONFIG_PREEMPT_RT > #define __MUTEX_INITIALIZER(lockname) \ > { .owner = ATOMIC_LONG_INIT(0) \ > , .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(lockname.wait_lock) \ > @@ -111,12 +111,6 @@ do { \ > __mutex_rt_init((mutex), name, key); \ > } while (0) > > -#define mutex_init(mutex) \ > -do { \ > - static struct lock_class_key __key; \ > - \ > - __mutex_init((mutex), #mutex, &__key); \ > -} while (0) > #endif /* CONFIG_PREEMPT_RT */ > > #ifdef CONFIG_DEBUG_MUTEXES -- With Best Regards, Andy Shevchenko