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

Cache object: 855e39d8858b595c43573538c97e3102


[ 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.