Deleted Added
full compact
thr_mutex.c (300043) thr_mutex.c (301136)
1/*
2 * Copyright (c) 1995 John Birrell <jb@cimlogic.com.au>.
3 * Copyright (c) 2006 David Xu <davidxu@freebsd.org>.
4 * Copyright (c) 2015, 2016 The FreeBSD Foundation
5 *
6 * All rights reserved.
7 *
8 * Portions of this software were developed by Konstantin Belousov

--- 23 unchanged lines hidden (view full) ---

32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 */
38
39#include <sys/cdefs.h>
1/*
2 * Copyright (c) 1995 John Birrell <jb@cimlogic.com.au>.
3 * Copyright (c) 2006 David Xu <davidxu@freebsd.org>.
4 * Copyright (c) 2015, 2016 The FreeBSD Foundation
5 *
6 * All rights reserved.
7 *
8 * Portions of this software were developed by Konstantin Belousov

--- 23 unchanged lines hidden (view full) ---

32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 */
38
39#include <sys/cdefs.h>
40__FBSDID("$FreeBSD: head/lib/libthr/thread/thr_mutex.c 300043 2016-05-17 09:56:22Z kib $");
40__FBSDID("$FreeBSD: head/lib/libthr/thread/thr_mutex.c 301136 2016-06-01 16:12:26Z cem $");
41
42#include "namespace.h"
43#include <stdlib.h>
44#include <errno.h>
45#include <string.h>
46#include <sys/param.h>
47#include <sys/queue.h>
48#include <pthread.h>

--- 81 unchanged lines hidden (view full) ---

130#endif
131}
132
133static void
134mutex_assert_is_owned(struct pthread_mutex *m __unused)
135{
136
137#if defined(_PTHREADS_INVARIANTS)
41
42#include "namespace.h"
43#include <stdlib.h>
44#include <errno.h>
45#include <string.h>
46#include <sys/param.h>
47#include <sys/queue.h>
48#include <pthread.h>

--- 81 unchanged lines hidden (view full) ---

130#endif
131}
132
133static void
134mutex_assert_is_owned(struct pthread_mutex *m __unused)
135{
136
137#if defined(_PTHREADS_INVARIANTS)
138 if (__predict_false(m->m_qe.tqe_prev == NULL)) {
139 char msg[128];
140 snprintf(msg, sizeof(msg),
141 "mutex %p own %#x is not on list %p %p",
138 if (__predict_false(m->m_qe.tqe_prev == NULL))
139 PANIC("mutex %p own %#x is not on list %p %p",
142 m, m->m_lock.m_owner, m->m_qe.tqe_prev, m->m_qe.tqe_next);
140 m, m->m_lock.m_owner, m->m_qe.tqe_prev, m->m_qe.tqe_next);
143 PANIC(msg);
144 }
145#endif
146}
147
148static void
149mutex_assert_not_owned(struct pthread *curthread __unused,
150 struct pthread_mutex *m __unused)
151{
152
153#if defined(_PTHREADS_INVARIANTS)
154 if (__predict_false(m->m_qe.tqe_prev != NULL ||
141#endif
142}
143
144static void
145mutex_assert_not_owned(struct pthread *curthread __unused,
146 struct pthread_mutex *m __unused)
147{
148
149#if defined(_PTHREADS_INVARIANTS)
150 if (__predict_false(m->m_qe.tqe_prev != NULL ||
155 m->m_qe.tqe_next != NULL)) {
156 char msg[128];
157 snprintf(msg, sizeof(msg),
158 "mutex %p own %#x is on list %p %p",
151 m->m_qe.tqe_next != NULL))
152 PANIC("mutex %p own %#x is on list %p %p",
159 m, m->m_lock.m_owner, m->m_qe.tqe_prev, m->m_qe.tqe_next);
153 m, m->m_lock.m_owner, m->m_qe.tqe_prev, m->m_qe.tqe_next);
160 PANIC(msg);
161 }
162 if (__predict_false(is_robust_mutex(m) &&
163 (m->m_lock.m_rb_lnk != 0 || m->m_rb_prev != NULL ||
164 (is_pshared_mutex(m) && curthread->robust_list ==
165 (uintptr_t)&m->m_lock) ||
166 (!is_pshared_mutex(m) && curthread->priv_robust_list ==
154 if (__predict_false(is_robust_mutex(m) &&
155 (m->m_lock.m_rb_lnk != 0 || m->m_rb_prev != NULL ||
156 (is_pshared_mutex(m) && curthread->robust_list ==
157 (uintptr_t)&m->m_lock) ||
158 (!is_pshared_mutex(m) && curthread->priv_robust_list ==
167 (uintptr_t)&m->m_lock)))) {
168 char msg[128];
169 snprintf(msg, sizeof(msg),
159 (uintptr_t)&m->m_lock))))
160 PANIC(
170 "mutex %p own %#x is on robust linkage %p %p head %p phead %p",
171 m, m->m_lock.m_owner, (void *)m->m_lock.m_rb_lnk,
172 m->m_rb_prev, (void *)curthread->robust_list,
173 (void *)curthread->priv_robust_list);
161 "mutex %p own %#x is on robust linkage %p %p head %p phead %p",
162 m, m->m_lock.m_owner, (void *)m->m_lock.m_rb_lnk,
163 m->m_rb_prev, (void *)curthread->robust_list,
164 (void *)curthread->priv_robust_list);
174 PANIC(msg);
175 }
176#endif
177}
178
179static bool
180is_pshared_mutex(struct pthread_mutex *m)
181{
182
183 return ((m->m_lock.m_flags & USYNC_PROCESS_SHARED) != 0);

--- 1017 unchanged lines hidden ---
165#endif
166}
167
168static bool
169is_pshared_mutex(struct pthread_mutex *m)
170{
171
172 return ((m->m_lock.m_flags & USYNC_PROCESS_SHARED) != 0);

--- 1017 unchanged lines hidden ---