Lines Matching full:previous

42 	struct ck_spinlock_hclh *previous;  member
52 unowned->previous = NULL; in ck_spinlock_hclh_init()
78 struct ck_spinlock_hclh *previous, *local_tail; in ck_spinlock_hclh_lock() local
84 /* Make sure previous->previous doesn't appear to be NULL */ in ck_spinlock_hclh_lock()
85 thread->previous = *local_queue; in ck_spinlock_hclh_lock()
90 /* Mark current request as last request. Save reference to previous request. */ in ck_spinlock_hclh_lock()
91 previous = ck_pr_fas_ptr(local_queue, thread); in ck_spinlock_hclh_lock()
92 thread->previous = previous; in ck_spinlock_hclh_lock()
94 /* Wait until previous thread from the local queue is done with lock. */ in ck_spinlock_hclh_lock()
96 if (previous->previous != NULL) { in ck_spinlock_hclh_lock()
97 while (ck_pr_load_uint(&previous->wait) == true && in ck_spinlock_hclh_lock()
98 ck_pr_load_int(&previous->cluster_id) == thread->cluster_id && in ck_spinlock_hclh_lock()
99 ck_pr_load_uint(&previous->splice) == false) in ck_spinlock_hclh_lock()
103 if (ck_pr_load_int(&previous->cluster_id) == thread->cluster_id && in ck_spinlock_hclh_lock()
104 ck_pr_load_uint(&previous->splice) == false) in ck_spinlock_hclh_lock()
110 previous = ck_pr_fas_ptr(glob_queue, local_tail); in ck_spinlock_hclh_lock()
114 /* Wait until previous thread from the global queue is done with lock. */ in ck_spinlock_hclh_lock()
115 while (ck_pr_load_uint(&previous->wait) == true) in ck_spinlock_hclh_lock()
125 struct ck_spinlock_hclh *previous; in ck_spinlock_hclh_unlock() local
134 previous = thread[0]->previous; in ck_spinlock_hclh_unlock()
141 * Predecessor is guaranteed not to be spinning on previous request, in ck_spinlock_hclh_unlock()
142 * so update caller to use previous structure. This allows successor in ck_spinlock_hclh_unlock()
145 *thread = previous; in ck_spinlock_hclh_unlock()