Deleted Added
full compact
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 ---