buf.h revision 1.4
11.4Schristos/*	$NetBSD: buf.h,v 1.4 2013/01/26 16:50:46 christos Exp $	*/
21.1Slukem
31.1Slukem/*
41.2Slukem * Copyright (c) 2001 Wasabi Systems, Inc.
51.1Slukem * All rights reserved.
61.1Slukem *
71.1Slukem * Written by Luke Mewburn for Wasabi Systems, Inc.
81.1Slukem *
91.1Slukem * Redistribution and use in source and binary forms, with or without
101.1Slukem * modification, are permitted provided that the following conditions
111.1Slukem * are met:
121.1Slukem * 1. Redistributions of source code must retain the above copyright
131.1Slukem *    notice, this list of conditions and the following disclaimer.
141.1Slukem * 2. Redistributions in binary form must reproduce the above copyright
151.1Slukem *    notice, this list of conditions and the following disclaimer in the
161.1Slukem *    documentation and/or other materials provided with the distribution.
171.1Slukem * 3. All advertising materials mentioning features or use of this software
181.1Slukem *    must display the following acknowledgement:
191.1Slukem *      This product includes software developed for the NetBSD Project by
201.1Slukem *      Wasabi Systems, Inc.
211.1Slukem * 4. The name of Wasabi Systems, Inc. may not be used to endorse
221.1Slukem *    or promote products derived from this software without specific prior
231.1Slukem *    written permission.
241.1Slukem *
251.1Slukem * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
261.1Slukem * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
271.1Slukem * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
281.1Slukem * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
291.1Slukem * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
301.1Slukem * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
311.1Slukem * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
321.1Slukem * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
331.1Slukem * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
341.1Slukem * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
351.1Slukem * POSSIBILITY OF SUCH DAMAGE.
361.1Slukem */
371.1Slukem
381.1Slukem#ifndef _FFS_BUF_H
391.1Slukem#define	_FFS_BUF_H
401.1Slukem
411.1Slukem#include <sys/param.h>
421.1Slukem#include <sys/queue.h>
431.1Slukem
441.3Schristos#include <stdio.h>
451.3Schristos#include <string.h>
461.3Schristos#include <errno.h>
471.3Schristos#include <time.h>
481.3Schristos#include <stddef.h>
491.3Schristos#include <stdlib.h>
501.3Schristos#include <err.h>
511.3Schristos
521.3Schristosstruct componentname {
531.3Schristos	char *cn_nameptr;
541.3Schristos	size_t cn_namelen;
551.3Schristos};
561.3Schristos
571.3Schristosstruct vnode {
581.3Schristos	int fd;
591.3Schristos	void *fs;
601.3Schristos	void *v_data;
611.3Schristos	int offset;
621.3Schristos};
631.3Schristos
641.3Schristos#define vput(a) ((void)(a))
651.3Schristos
661.1Slukemstruct buf {
671.1Slukem	void *		b_data;
681.1Slukem	long		b_bufsize;
691.1Slukem	long		b_bcount;
701.1Slukem	daddr_t		b_blkno;
711.1Slukem	daddr_t		b_lblkno;
721.1Slukem	int		b_fd;
731.1Slukem	struct fs *	b_fs;
741.1Slukem
751.1Slukem	TAILQ_ENTRY(buf)	b_tailq;
761.1Slukem};
771.1Slukem
781.4Schristosstruct kauth_cred;
791.1Slukemvoid		bcleanup(void);
801.3Schristosint		bread(struct vnode *, daddr_t, int, struct kauth_cred *,
811.3Schristos    int, struct buf **);
821.3Schristosvoid		brelse(struct buf *, int);
831.1Slukemint		bwrite(struct buf *);
841.3Schristosstruct buf *	getblk(struct vnode *, daddr_t, int, int, int);
851.1Slukem
861.1Slukem#define	bdwrite(bp)	bwrite(bp)
871.1Slukem#define	clrbuf(bp)	memset((bp)->b_data, 0, (u_int)(bp)->b_bcount)
881.1Slukem
891.3Schristos#define	B_MODIFY	0
901.3Schristos#define	BC_AGE		0
911.3Schristos
921.3Schristos#define min(a, b) MIN((a), (b))
931.3Schristos#define microtime(tv) gettimeofday((tv), NULL)
941.3Schristos#define KASSERT(a)
951.3Schristos#define IO_SYNC	1
961.3Schristos
971.3Schristosstruct pool {
981.3Schristos	size_t size;
991.3Schristos};
1001.3Schristos
1011.3Schristos#define pool_init(p, s, a1, a2, a3, a4, a5, a6)	(p)->size = (s)
1021.3Schristos#define pool_get(p, f)	malloc((p)->size)
1031.3Schristos#define pool_put(p, a)	free(a)
1041.3Schristos#define pool_destroy(p)
1051.3Schristos
1061.3Schristos#define MALLOC_DECLARE(a)
1071.3Schristos#define malloc_type_attach(a)
1081.3Schristos#define malloc_type_detach(a)
1091.3Schristos
1101.3Schristos#define mutex_enter(m)
1111.3Schristos#define mutex_exit(m)
1121.3Schristos#define mutex_init(m, t, i)
1131.3Schristos#define mutex_destroy(m)
1141.3Schristos
1151.3Schristos#define desiredvnodes 10000
1161.4Schristos#define NOCRED NULL
1171.4Schristos#define DEV_BSHIFT 9
1181.3Schristos
1191.1Slukem#endif	/* _FFS_BUF_H */
120