134378Sjb/* 234378Sjb * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>. 334378Sjb * All rights reserved. 434378Sjb * 534378Sjb * Redistribution and use in source and binary forms, with or without 634378Sjb * modification, are permitted provided that the following conditions 734378Sjb * are met: 834378Sjb * 1. Redistributions of source code must retain the above copyright 934378Sjb * notice, this list of conditions and the following disclaimer. 1034378Sjb * 2. Redistributions in binary form must reproduce the above copyright 1134378Sjb * notice, this list of conditions and the following disclaimer in the 1234378Sjb * documentation and/or other materials provided with the distribution. 13165968Simp * 3. Neither the name of the author nor the names of any co-contributors 1434378Sjb * may be used to endorse or promote products derived from this software 1534378Sjb * without specific prior written permission. 1634378Sjb * 1734378Sjb * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND 1834378Sjb * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1934378Sjb * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2034378Sjb * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2134378Sjb * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2234378Sjb * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2334378Sjb * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2434378Sjb * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2534378Sjb * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2634378Sjb * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2734378Sjb * SUCH DAMAGE. 2834378Sjb */ 2934378Sjb 3090039Sobrien#include <sys/cdefs.h> 3190039Sobrien__FBSDID("$FreeBSD$"); 3290039Sobrien 3334378Sjb#include <stdio.h> 3435500Sjb 3534378Sjb#include "spinlock.h" 36278875Skib#include "libc_private.h" 3734378Sjb 38205996Sdelphijlong _atomic_lock_stub(volatile long *); 39205996Sdelphijvoid _spinlock_stub(spinlock_t *); 40205996Sdelphijvoid _spinunlock_stub(spinlock_t *); 41205996Sdelphijvoid _spinlock_debug_stub(spinlock_t *, char *, int); 42205996Sdelphij 4375368Sdeischen__weak_reference(_atomic_lock_stub, _atomic_lock); 4434378Sjb 4571579Sdeischenlong 46205996Sdelphij_atomic_lock_stub(volatile long *lck __unused) 4771579Sdeischen{ 4871579Sdeischen return (0L); 4971579Sdeischen} 5071579Sdeischen 51278875Skib__weak_reference(_spinlock, _spinlock_debug); 52278875Skib#pragma weak _spinlock 53278875Skibvoid 54278875Skib_spinlock(spinlock_t *lck) 55278875Skib{ 5671579Sdeischen 57278875Skib ((void (*)(spinlock_t *lck))__libc_interposing[INTERPOS_spinlock]) 58278875Skib (lck); 59278875Skib 60278875Skib} 61278875Skib 62279518Skib#pragma weak _spinunlock 6334378Sjbvoid 64278875Skib_spinunlock(spinlock_t *lck) 6534378Sjb{ 66278875Skib 67278875Skib ((void (*)(spinlock_t *lck))__libc_interposing[INTERPOS_spinunlock]) 68278875Skib (lck); 69278875Skib 7034378Sjb} 7134378Sjb 72112665Sjeffvoid 73278875Skib__libc_spinlock_stub(spinlock_t *lck __unused) 74112665Sjeff{ 75112665Sjeff} 76112665Sjeff 7734378Sjbvoid 78278875Skib__libc_spinunlock_stub(spinlock_t *lck __unused) 7934378Sjb{ 8034378Sjb} 81