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