buf.h (175635) | buf.h (176249) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 18 unchanged lines hidden (view full) --- 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * @(#)buf.h 8.9 (Berkeley) 3/30/95 | 1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 18 unchanged lines hidden (view full) --- 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * @(#)buf.h 8.9 (Berkeley) 3/30/95 |
35 * $FreeBSD: head/sys/sys/buf.h 175635 2008-01-24 12:34:30Z attilio $ | 35 * $FreeBSD: head/sys/sys/buf.h 176249 2008-02-13 20:44:19Z attilio $ |
36 */ 37 38#ifndef _SYS_BUF_H_ 39#define _SYS_BUF_H_ 40 41#include <sys/bufobj.h> 42#include <sys/queue.h> 43#include <sys/lock.h> --- 284 unchanged lines hidden (view full) --- 328/* 329 * Check if a buffer lock is currently held. 330 */ 331#define BUF_ISLOCKED(bp) \ 332 (lockstatus(&(bp)->b_lock, curthread)) 333/* 334 * Free a buffer lock. 335 */ | 36 */ 37 38#ifndef _SYS_BUF_H_ 39#define _SYS_BUF_H_ 40 41#include <sys/bufobj.h> 42#include <sys/queue.h> 43#include <sys/lock.h> --- 284 unchanged lines hidden (view full) --- 328/* 329 * Check if a buffer lock is currently held. 330 */ 331#define BUF_ISLOCKED(bp) \ 332 (lockstatus(&(bp)->b_lock, curthread)) 333/* 334 * Free a buffer lock. 335 */ |
336#define BUF_LOCKFREE(bp) \ 337do { \ 338 if (BUF_ISLOCKED(bp)) \ 339 panic("free locked buf"); \ 340 lockdestroy(&(bp)->b_lock); \ 341} while (0) | 336#define BUF_LOCKFREE(bp) \ 337 (lockdestroy(&(bp)->b_lock)) |
342 | 338 |
339/* 340 * Buffer lock assertions. 341 */ 342#if defined(INVARIANTS) && defined(INVARIANT_SUPPORT) 343#define BUF_ASSERT_LOCKED(bp) \ 344 _lockmgr_assert(&(bp)->b_lock, KA_LOCKED, LOCK_FILE, LOCK_LINE) 345#define BUF_ASSERT_SLOCKED(bp) \ 346 _lockmgr_assert(&(bp)->b_lock, KA_SLOCKED, LOCK_FILE, LOCK_LINE) 347#define BUF_ASSERT_XLOCKED(bp) \ 348 _lockmgr_assert(&(bp)->b_lock, KA_XLOCKED, LOCK_FILE, LOCK_LINE) 349#define BUF_ASSERT_UNLOCKED(bp) \ 350 _lockmgr_assert(&(bp)->b_lock, KA_UNLOCKED, LOCK_FILE, LOCK_LINE) 351#define BUF_ASSERT_HELD(bp) \ 352 _lockmgr_assert(&(bp)->b_lock, KA_HELD, LOCK_FILE, LOCK_LINE) 353#define BUF_ASSERT_UNHELD(bp) \ 354 _lockmgr_assert(&(bp)->b_lock, KA_UNHELD, LOCK_FILE, LOCK_LINE) 355#else 356#define BUF_ASSERT_LOCKED(bp) 357#define BUF_ASSERT_SLOCKED(bp) 358#define BUF_ASSERT_XLOCKED(bp) 359#define BUF_ASSERT_UNLOCKED(bp) 360#define BUF_ASSERT_HELD(bp) 361#define BUF_ASSERT_UNHELD(bp) 362#endif 363 |
|
343#ifdef _SYS_PROC_H_ /* Avoid #include <sys/proc.h> pollution */ 344/* 345 * When initiating asynchronous I/O, change ownership of the lock to the 346 * kernel. Once done, the lock may legally released by biodone. The 347 * original owning process can no longer acquire it recursively, but must 348 * wait until the I/O is completed and the lock has been freed by biodone. 349 */ 350static __inline void BUF_KERNPROC(struct buf *); --- 191 unchanged lines hidden --- | 364#ifdef _SYS_PROC_H_ /* Avoid #include <sys/proc.h> pollution */ 365/* 366 * When initiating asynchronous I/O, change ownership of the lock to the 367 * kernel. Once done, the lock may legally released by biodone. The 368 * original owning process can no longer acquire it recursively, but must 369 * wait until the I/O is completed and the lock has been freed by biodone. 370 */ 371static __inline void BUF_KERNPROC(struct buf *); --- 191 unchanged lines hidden --- |