The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/vndvar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: vndvar.h,v 1.23 2008/04/28 20:23:47 martin Exp $       */
    2 
    3 /*-
    4  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Jason R. Thorpe.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   29  * POSSIBILITY OF SUCH DAMAGE.
   30  */
   31 
   32 /*
   33  * Copyright (c) 1990, 1993
   34  *      The Regents of the University of California.  All rights reserved.
   35  *
   36  * This code is derived from software contributed to Berkeley by
   37  * the Systems Programming Group of the University of Utah Computer
   38  * Science Department.
   39  *
   40  * Redistribution and use in source and binary forms, with or without
   41  * modification, are permitted provided that the following conditions
   42  * are met:
   43  * 1. Redistributions of source code must retain the above copyright
   44  *    notice, this list of conditions and the following disclaimer.
   45  * 2. Redistributions in binary form must reproduce the above copyright
   46  *    notice, this list of conditions and the following disclaimer in the
   47  *    documentation and/or other materials provided with the distribution.
   48  * 3. Neither the name of the University nor the names of its contributors
   49  *    may be used to endorse or promote products derived from this software
   50  *    without specific prior written permission.
   51  *
   52  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   53  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   54  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   55  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   56  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   57  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   58  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   59  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   60  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   61  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   62  * SUCH DAMAGE.
   63  *
   64  * from: Utah $Hdr: fdioctl.h 1.1 90/07/09$
   65  *
   66  *      @(#)vnioctl.h   8.1 (Berkeley) 6/10/93
   67  */
   68 
   69 /*
   70  * Copyright (c) 1988 University of Utah.
   71  *
   72  * This code is derived from software contributed to Berkeley by
   73  * the Systems Programming Group of the University of Utah Computer
   74  * Science Department.
   75  *
   76  * Redistribution and use in source and binary forms, with or without
   77  * modification, are permitted provided that the following conditions
   78  * are met:
   79  * 1. Redistributions of source code must retain the above copyright
   80  *    notice, this list of conditions and the following disclaimer.
   81  * 2. Redistributions in binary form must reproduce the above copyright
   82  *    notice, this list of conditions and the following disclaimer in the
   83  *    documentation and/or other materials provided with the distribution.
   84  * 3. All advertising materials mentioning features or use of this software
   85  *    must display the following acknowledgement:
   86  *      This product includes software developed by the University of
   87  *      California, Berkeley and its contributors.
   88  * 4. Neither the name of the University nor the names of its contributors
   89  *    may be used to endorse or promote products derived from this software
   90  *    without specific prior written permission.
   91  *
   92  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   93  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   94  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   95  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   96  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   97  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   98  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   99  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  100  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  101  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  102  * SUCH DAMAGE.
  103  *
  104  * from: Utah $Hdr: fdioctl.h 1.1 90/07/09$
  105  *
  106  *      @(#)vnioctl.h   8.1 (Berkeley) 6/10/93
  107  */
  108 
  109 #include <sys/pool.h>
  110 
  111 /*
  112  * Vnode disk pseudo-geometry information.
  113  */
  114 struct vndgeom {
  115         u_int32_t       vng_secsize;    /* # bytes per sector */
  116         u_int32_t       vng_nsectors;   /* # data sectors per track */
  117         u_int32_t       vng_ntracks;    /* # tracks per cylinder */
  118         u_int32_t       vng_ncylinders; /* # cylinders per unit */
  119 };
  120 
  121 /*
  122  * Ioctl definitions for file (vnode) disk pseudo-device.
  123  */
  124 struct vnd_ioctl {
  125         char            *vnd_file;      /* pathname of file to mount */
  126         int             vnd_flags;      /* flags; see below */
  127         struct vndgeom  vnd_geom;       /* geometry to emulate */
  128         int             vnd_size;       /* (returned) size of disk */
  129 };
  130 
  131 /* vnd_flags */
  132 #define VNDIOF_HASGEOM  0x01            /* use specified geometry */
  133 #define VNDIOF_READONLY 0x02            /* as read-only device */
  134 #define VNDIOF_FORCE    0x04            /* force close */
  135 
  136 #ifdef _KERNEL
  137 
  138 struct vnode;
  139 
  140 /*
  141  * A vnode disk's state information.
  142  */
  143 struct vnd_softc {
  144         device_t         sc_dev;
  145         int              sc_flags;      /* flags */
  146         size_t           sc_size;       /* size of vnd */
  147         struct vnode    *sc_vp;         /* vnode */
  148         kauth_cred_t     sc_cred;       /* credentials */
  149         int              sc_maxactive;  /* max # of active requests */
  150         struct bufq_state *sc_tab;      /* transfer queue */
  151         int              sc_active;     /* number of active transfers */
  152         struct disk      sc_dkdev;      /* generic disk device info */
  153         struct vndgeom   sc_geom;       /* virtual geometry */
  154         struct pool      sc_vxpool;     /* vndxfer pool */
  155         struct pool      sc_vbpool;     /* vndbuf pool */
  156         struct lwp      *sc_kthread;    /* kernel thread */
  157         u_int32_t        sc_comp_blksz; /* precompressed block size */
  158         u_int32_t        sc_comp_numoffs;/* count of compressed block offsets */
  159         u_int64_t       *sc_comp_offsets;/* file idx's to compressed blocks */
  160         unsigned char   *sc_comp_buff;  /* compressed data buffer */
  161         unsigned char   *sc_comp_decombuf;/* decompressed data buffer */
  162         int32_t          sc_comp_buffblk;/*current decompressed block */
  163         z_stream         sc_comp_stream;/* decompress descriptor */
  164 };
  165 #endif
  166 
  167 /* sc_flags */
  168 #define VNF_INITED      0x001   /* unit has been initialized */
  169 #define VNF_WLABEL      0x002   /* label area is writable */
  170 #define VNF_LABELLING   0x004   /* unit is currently being labelled */
  171 #define VNF_WANTED      0x008   /* someone is waiting to obtain a lock */
  172 #define VNF_LOCKED      0x010   /* unit is locked */
  173 #define VNF_READONLY    0x020   /* unit is read-only */
  174 #define VNF_KLABEL      0x040   /* keep label on close */
  175 #define VNF_VLABEL      0x080   /* label is valid */
  176 #define VNF_KTHREAD     0x100   /* thread is running */
  177 #define VNF_VUNCONF     0x200   /* device is unconfiguring */
  178 #define VNF_COMP        0x400   /* file is compressed */
  179 
  180 /* structure of header in a compressed file */
  181 struct vnd_comp_header
  182 {
  183         char preamble[128];
  184         u_int32_t block_size;
  185         u_int32_t num_blocks;
  186 };
  187 
  188 /*
  189  * A simple structure for describing which vnd units are in use.
  190  */
  191 #ifdef COMPAT_30
  192 struct vnd_ouser {
  193         int             vnu_unit;       /* which vnd unit */
  194         dev_t           vnu_dev;        /* file is on this device... */
  195         uint32_t        vnu_ino;        /* ...at this inode */
  196 };
  197 #define VNDIOOCGET      _IOWR('F', 2, struct vnd_ouser) /* get list */
  198 #endif
  199 
  200 struct vnd_user {
  201         int             vnu_unit;       /* which vnd unit */
  202         dev_t           vnu_dev;        /* file is on this device... */
  203         ino_t           vnu_ino;        /* ...at this inode */
  204 };
  205 
  206 /*
  207  * Before you can use a unit, it must be configured with VNDIOCSET.
  208  * The configuration persists across opens and closes of the device;
  209  * an VNDIOCCLR must be used to reset a configuration.  An attempt to
  210  * VNDIOCSET an already active unit will return EBUSY.
  211  */
  212 #define VNDIOCSET       _IOWR('F', 0, struct vnd_ioctl) /* enable disk */
  213 #define VNDIOCCLR       _IOW('F', 1, struct vnd_ioctl)  /* disable disk */
  214 #define VNDIOCGET       _IOWR('F', 3, struct vnd_user)  /* get list */

Cache object: 53b95ed122291d9b8492d25f382769de


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.