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