buf.h revision 1.12
11.12Schristos/*	$NetBSD: buf.h,v 1.12 2017/02/16 22:10:50 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.12Schristos#include <sys/stat.h>
441.1Slukem
451.3Schristos#include <stdio.h>
461.3Schristos#include <string.h>
471.3Schristos#include <errno.h>
481.3Schristos#include <time.h>
491.3Schristos#include <stddef.h>
501.3Schristos#include <stdlib.h>
511.3Schristos#include <err.h>
521.3Schristos
531.3Schristosstruct componentname {
541.3Schristos	char *cn_nameptr;
551.3Schristos	size_t cn_namelen;
561.3Schristos};
571.3Schristos
581.9Schristosstruct makefs_fsinfo;
591.3Schristosstruct vnode {
601.9Schristos	struct makefs_fsinfo *fs;
611.3Schristos	void *v_data;
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.9Schristos	struct makefs_fsinfo * b_fs;
731.1Slukem
741.1Slukem	TAILQ_ENTRY(buf)	b_tailq;
751.1Slukem};
761.1Slukem
771.4Schristosstruct kauth_cred;
781.1Slukemvoid		bcleanup(void);
791.10Sagcint		bread(struct vnode *, daddr_t, int, 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.11Schristos
921.11Schristosstatic inline void
931.11Schristosmicrotime(struct timeval *tv)
941.11Schristos{
951.11Schristos	extern struct stat stampst;
961.11Schristos
971.11Schristos	if (stampst.st_ino) {
981.11Schristos		tv->tv_sec = stampst.st_mtime;
991.11Schristos		tv->tv_usec = 0;
1001.11Schristos	} else {
1011.11Schristos	    gettimeofday((tv), NULL);
1021.11Schristos	}
1031.11Schristos}
1041.11Schristos
1051.3Schristos#define KASSERT(a)
1061.3Schristos#define IO_SYNC	1
1071.3Schristos
1081.3Schristosstruct pool {
1091.3Schristos	size_t size;
1101.3Schristos};
1111.3Schristos
1121.3Schristos#define pool_init(p, s, a1, a2, a3, a4, a5, a6)	(p)->size = (s)
1131.7Schristos#define pool_get(p, f)	ecalloc(1, (p)->size)
1141.3Schristos#define pool_put(p, a)	free(a)
1151.3Schristos#define pool_destroy(p)
1161.3Schristos
1171.3Schristos#define MALLOC_DECLARE(a)
1181.3Schristos#define malloc_type_attach(a)
1191.3Schristos#define malloc_type_detach(a)
1201.3Schristos
1211.3Schristos#define mutex_enter(m)
1221.3Schristos#define mutex_exit(m)
1231.3Schristos#define mutex_init(m, t, i)
1241.3Schristos#define mutex_destroy(m)
1251.3Schristos
1261.3Schristos#define desiredvnodes 10000
1271.4Schristos#define NOCRED NULL
1281.4Schristos#define DEV_BSHIFT 9
1291.3Schristos
1301.1Slukem#endif	/* _FFS_BUF_H */
131