buf.h revision 1.9
11.9Schristos/*	$NetBSD: buf.h,v 1.9 2013/01/30 19:19:19 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.9Schristosstruct makefs_fsinfo;
581.3Schristosstruct vnode {
591.9Schristos	struct makefs_fsinfo *fs;
601.3Schristos	void *v_data;
611.3Schristos};
621.3Schristos
631.3Schristos#define vput(a) ((void)(a))
641.3Schristos
651.1Slukemstruct buf {
661.1Slukem	void *		b_data;
671.1Slukem	long		b_bufsize;
681.1Slukem	long		b_bcount;
691.1Slukem	daddr_t		b_blkno;
701.1Slukem	daddr_t		b_lblkno;
711.9Schristos	struct makefs_fsinfo * b_fs;
721.1Slukem
731.1Slukem	TAILQ_ENTRY(buf)	b_tailq;
741.1Slukem};
751.1Slukem
761.4Schristosstruct kauth_cred;
771.1Slukemvoid		bcleanup(void);
781.3Schristosint		bread(struct vnode *, daddr_t, int, struct kauth_cred *,
791.3Schristos    int, struct buf **);
801.3Schristosvoid		brelse(struct buf *, int);
811.1Slukemint		bwrite(struct buf *);
821.3Schristosstruct buf *	getblk(struct vnode *, daddr_t, int, int, int);
831.1Slukem
841.1Slukem#define	bdwrite(bp)	bwrite(bp)
851.1Slukem#define	clrbuf(bp)	memset((bp)->b_data, 0, (u_int)(bp)->b_bcount)
861.1Slukem
871.3Schristos#define	B_MODIFY	0
881.3Schristos#define	BC_AGE		0
891.3Schristos
901.3Schristos#define min(a, b) MIN((a), (b))
911.3Schristos#define microtime(tv) gettimeofday((tv), NULL)
921.3Schristos#define KASSERT(a)
931.3Schristos#define IO_SYNC	1
941.3Schristos
951.3Schristosstruct pool {
961.3Schristos	size_t size;
971.3Schristos};
981.3Schristos
991.3Schristos#define pool_init(p, s, a1, a2, a3, a4, a5, a6)	(p)->size = (s)
1001.7Schristos#define pool_get(p, f)	ecalloc(1, (p)->size)
1011.3Schristos#define pool_put(p, a)	free(a)
1021.3Schristos#define pool_destroy(p)
1031.3Schristos
1041.3Schristos#define MALLOC_DECLARE(a)
1051.3Schristos#define malloc_type_attach(a)
1061.3Schristos#define malloc_type_detach(a)
1071.3Schristos
1081.3Schristos#define mutex_enter(m)
1091.3Schristos#define mutex_exit(m)
1101.3Schristos#define mutex_init(m, t, i)
1111.3Schristos#define mutex_destroy(m)
1121.3Schristos
1131.3Schristos#define desiredvnodes 10000
1141.4Schristos#define NOCRED NULL
1151.4Schristos#define DEV_BSHIFT 9
1161.3Schristos
1171.1Slukem#endif	/* _FFS_BUF_H */
118