11.14Shgutch/*	$NetBSD: buf.h,v 1.14 2022/03/06 08:31:54 hgutch 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.14Shgutch#include "namespace.h"
531.3Schristos
541.3Schristosstruct componentname {
551.3Schristos	char *cn_nameptr;
561.3Schristos	size_t cn_namelen;
571.3Schristos};
581.3Schristos
591.9Schristosstruct makefs_fsinfo;
601.3Schristosstruct vnode {
611.9Schristos	struct makefs_fsinfo *fs;
621.3Schristos	void *v_data;
631.3Schristos};
641.3Schristos
651.3Schristos#define vput(a) ((void)(a))
661.3Schristos
671.1Slukemstruct buf {
681.1Slukem	void *		b_data;
691.1Slukem	long		b_bufsize;
701.1Slukem	long		b_bcount;
711.1Slukem	daddr_t		b_blkno;
721.1Slukem	daddr_t		b_lblkno;
731.9Schristos	struct makefs_fsinfo * b_fs;
741.1Slukem
751.1Slukem	TAILQ_ENTRY(buf)	b_tailq;
761.1Slukem};
771.1Slukem
781.4Schristosstruct kauth_cred;
791.1Slukemvoid		bcleanup(void);
801.10Sagcint		bread(struct vnode *, daddr_t, int, int, struct buf **);
811.3Schristosvoid		brelse(struct buf *, int);
821.1Slukemint		bwrite(struct buf *);
831.3Schristosstruct buf *	getblk(struct vnode *, daddr_t, int, int, int);
841.1Slukem
851.1Slukem#define	bdwrite(bp)	bwrite(bp)
861.1Slukem#define	clrbuf(bp)	memset((bp)->b_data, 0, (u_int)(bp)->b_bcount)
871.1Slukem
881.3Schristos#define	B_MODIFY	0
891.3Schristos#define	BC_AGE		0
901.3Schristos
911.3Schristos#define min(a, b) MIN((a), (b))
921.11Schristos
931.13Sriastradstatic inline unsigned int
941.13Sriastraduimin(unsigned int a, unsigned int b)
951.13Sriastrad{
961.13Sriastrad
971.13Sriastrad	return (a < b ? a : b);
981.13Sriastrad}
991.13Sriastrad
1001.13Sriastradstatic inline unsigned int
1011.13Sriastraduimax(unsigned int a, unsigned int b)
1021.13Sriastrad{
1031.13Sriastrad
1041.13Sriastrad	return (a > b ? a : b);
1051.13Sriastrad}
1061.13Sriastrad
1071.11Schristosstatic inline void
1081.11Schristosmicrotime(struct timeval *tv)
1091.11Schristos{
1101.11Schristos	extern struct stat stampst;
1111.11Schristos
1121.11Schristos	if (stampst.st_ino) {
1131.11Schristos		tv->tv_sec = stampst.st_mtime;
1141.11Schristos		tv->tv_usec = 0;
1151.11Schristos	} else {
1161.11Schristos	    gettimeofday((tv), NULL);
1171.11Schristos	}
1181.11Schristos}
1191.11Schristos
1201.3Schristos#define KASSERT(a)
1211.3Schristos#define IO_SYNC	1
1221.3Schristos
1231.3Schristosstruct pool {
1241.3Schristos	size_t size;
1251.3Schristos};
1261.3Schristos
1271.3Schristos#define pool_init(p, s, a1, a2, a3, a4, a5, a6)	(p)->size = (s)
1281.7Schristos#define pool_get(p, f)	ecalloc(1, (p)->size)
1291.3Schristos#define pool_put(p, a)	free(a)
1301.3Schristos#define pool_destroy(p)
1311.3Schristos
1321.3Schristos#define MALLOC_DECLARE(a)
1331.3Schristos#define malloc_type_attach(a)
1341.3Schristos#define malloc_type_detach(a)
1351.3Schristos
1361.3Schristos#define mutex_enter(m)
1371.3Schristos#define mutex_exit(m)
1381.3Schristos#define mutex_init(m, t, i)
1391.3Schristos#define mutex_destroy(m)
1401.3Schristos
1411.3Schristos#define desiredvnodes 10000
1421.4Schristos#define NOCRED NULL
1431.4Schristos#define DEV_BSHIFT 9
1441.3Schristos
1451.1Slukem#endif	/* _FFS_BUF_H */
146