/** * __rt_mutex_init - initialize the rt lock * * @lock: the rt lock to be initialized * * Initialize the rt lock to unlocked state. * * Initializing of a locked rt lock is not allowed */ void __rt_mutex_init(struct rt_mutex *lock, const char *name) { lock->owner = NULL; raw_spin_lock_init(&lock->wait_lock); plist_head_init_raw(&lock->wait_list, &lock->wait_lock); debug_rt_mutex_init(lock, name); }
static void rt_mutex_init_task(struct task_struct *p) { raw_spin_lock_init(&p->pi_lock); #ifdef CONFIG_RT_MUTEXES plist_head_init_raw(&p->pi_waiters, &p->pi_lock); p->pi_blocked_on = NULL; #endif }
/* * we initialize the wait_list runtime. (Could be done build-time and/or * boot-time.) */ static inline void init_lists(struct rt_mutex *lock) { if (unlikely(!lock->wait_list.prio_list.prev)) { plist_head_init_raw(&lock->wait_list, &lock->wait_lock); #ifdef CONFIG_DEBUG_RT_MUTEXES pi_initialized++; #endif } }