15978408cSSascha Wildner /* $NetBSD: buf.h,v 1.3 2001/11/02 03:12:49 lukem Exp $ */ 25978408cSSascha Wildner 35978408cSSascha Wildner /*- 45978408cSSascha Wildner * SPDX-License-Identifier: BSD-4-Clause 55978408cSSascha Wildner * 65978408cSSascha Wildner * Copyright (c) 2001 Wasabi Systems, Inc. 75978408cSSascha Wildner * All rights reserved. 85978408cSSascha Wildner * 95978408cSSascha Wildner * Written by Luke Mewburn for Wasabi Systems, Inc. 105978408cSSascha Wildner * 115978408cSSascha Wildner * Redistribution and use in source and binary forms, with or without 125978408cSSascha Wildner * modification, are permitted provided that the following conditions 135978408cSSascha Wildner * are met: 145978408cSSascha Wildner * 1. Redistributions of source code must retain the above copyright 155978408cSSascha Wildner * notice, this list of conditions and the following disclaimer. 165978408cSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 175978408cSSascha Wildner * notice, this list of conditions and the following disclaimer in the 185978408cSSascha Wildner * documentation and/or other materials provided with the distribution. 195978408cSSascha Wildner * 3. All advertising materials mentioning features or use of this software 205978408cSSascha Wildner * must display the following acknowledgement: 215978408cSSascha Wildner * This product includes software developed for the NetBSD Project by 225978408cSSascha Wildner * Wasabi Systems, Inc. 235978408cSSascha Wildner * 4. The name of Wasabi Systems, Inc. may not be used to endorse 245978408cSSascha Wildner * or promote products derived from this software without specific prior 255978408cSSascha Wildner * written permission. 265978408cSSascha Wildner * 275978408cSSascha Wildner * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 285978408cSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 295978408cSSascha Wildner * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 305978408cSSascha Wildner * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 315978408cSSascha Wildner * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 325978408cSSascha Wildner * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 335978408cSSascha Wildner * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 345978408cSSascha Wildner * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 355978408cSSascha Wildner * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 365978408cSSascha Wildner * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 375978408cSSascha Wildner * POSSIBILITY OF SUCH DAMAGE. 385978408cSSascha Wildner * 395978408cSSascha Wildner * $FreeBSD: head/usr.sbin/makefs/ffs/buf.h 336736 2018-07-26 13:33:10Z emaste $ 405978408cSSascha Wildner */ 415978408cSSascha Wildner 425978408cSSascha Wildner #ifndef _FFS_BUF_H 435978408cSSascha Wildner #define _FFS_BUF_H 445978408cSSascha Wildner 455978408cSSascha Wildner #include <sys/param.h> 465978408cSSascha Wildner #include <sys/queue.h> 472d60b848STomohiro Kusumi #include <sys/vfscache.h> 485978408cSSascha Wildner 49811c2036SSascha Wildner #include "ffs.h" /* XXX swildner: for compat defines */ 50811c2036SSascha Wildner 515978408cSSascha Wildner struct makefs_fsinfo; 525978408cSSascha Wildner struct ucred; 535978408cSSascha Wildner 546bcbb706STomohiro Kusumi struct m_vnode { 555978408cSSascha Wildner struct makefs_fsinfo *fs; 565978408cSSascha Wildner void *v_data; 572d60b848STomohiro Kusumi enum vtype v_type; /* DragonFly */ 58e00b9e51STomohiro Kusumi int v_logical; /* DragonFly */ 59e00b9e51STomohiro Kusumi int v_vflushed; /* DragonFly */ 60e00b9e51STomohiro Kusumi int v_malloced; /* DragonFly */ 615978408cSSascha Wildner }; 625978408cSSascha Wildner 632d60b848STomohiro Kusumi typedef enum buf_cmd { 642d60b848STomohiro Kusumi BUF_CMD_READ = 1, 652d60b848STomohiro Kusumi BUF_CMD_WRITE, 662d60b848STomohiro Kusumi BUF_CMD_FLUSH, 672d60b848STomohiro Kusumi } buf_cmd_t; 682d60b848STomohiro Kusumi 694e2eefe9STomohiro Kusumi struct m_buf { 70*02f727feSTomohiro Kusumi char * b_data; 715978408cSSascha Wildner long b_bufsize; 725978408cSSascha Wildner long b_bcount; 73811c2036SSascha Wildner makefs_daddr_t b_blkno; 74811c2036SSascha Wildner makefs_daddr_t b_lblkno; 752d60b848STomohiro Kusumi makefs_daddr_t b_loffset; /* DragonFly */ 762d60b848STomohiro Kusumi buf_cmd_t b_cmd; /* DragonFly */ 776bcbb706STomohiro Kusumi struct m_vnode *b_vp; /* DragonFly */ 785978408cSSascha Wildner struct makefs_fsinfo *b_fs; 795978408cSSascha Wildner 804e2eefe9STomohiro Kusumi TAILQ_ENTRY(m_buf) b_tailq; 815978408cSSascha Wildner }; 825978408cSSascha Wildner 835978408cSSascha Wildner void bcleanup(void); 846bcbb706STomohiro Kusumi int bread(struct m_vnode *, makefs_daddr_t, int, struct ucred *, 854e2eefe9STomohiro Kusumi struct m_buf **); 864e2eefe9STomohiro Kusumi void brelse(struct m_buf *); 874e2eefe9STomohiro Kusumi int bwrite(struct m_buf *); 884e2eefe9STomohiro Kusumi struct m_buf * getblk(struct m_vnode *, makefs_daddr_t, int, int, int, int); 895978408cSSascha Wildner 905978408cSSascha Wildner #define bdwrite(bp) bwrite(bp) 915978408cSSascha Wildner #define clrbuf(bp) memset((bp)->b_data, 0, (u_int)(bp)->b_bcount) 925978408cSSascha Wildner 935978408cSSascha Wildner #endif /* _FFS_BUF_H */ 94