On Thu, Apr 14, 2016 at 07:37:03PM +0800, Xunlei Pang wrote: > + /* Updated under pi_lock and rtmutex lock */ > struct rb_node *pi_waiters_leftmost; > + struct rb_node *pi_waiters_leftmost_copy;
> struct task_struct *rt_mutex_get_top_task(struct task_struct *task) > { > + if (!task->pi_waiters_leftmost_copy) > return NULL; > > + return rb_entry(task->pi_waiters_leftmost_copy, > + struct rt_mutex_waiter, pi_tree_entry)->task; > } why ?! Why not keep a regular task_struct pointer and avoid this stuff?