1 /* 2 * Copyright (c) 2004 Matthew Dillon <dillon@backplane.com> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * ---------------------------------------------------------------------------- 27 * "THE BEER-WARE LICENSE" (Revision 42): 28 * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you 29 * can do whatever you want with this stuff. If we meet some day, and you think 30 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp 31 * ---------------------------------------------------------------------------- 32 * 33 * $FreeBSD: src/sys/sys/disk.h,v 1.16.2.3 2001/06/20 16:11:01 scottl Exp $ 34 * $DragonFly: src/sys/sys/disk.h,v 1.5 2004/05/19 22:53:02 dillon Exp $ 35 */ 36 37 #ifndef _SYS_DISK_H_ 38 #define _SYS_DISK_H_ 39 40 #ifndef _SYS_DISKSLICE_H_ 41 #include <sys/diskslice.h> 42 #endif 43 44 #ifndef _SYS_DISKLABEL 45 #include <sys/disklabel.h> 46 #endif 47 48 #ifndef _SYS_DISKLABEL 49 #include <sys/msgport.h> 50 #endif 51 52 struct disk { 53 struct lwkt_port d_port; /* interception port */ 54 struct cdevsw *d_devsw; /* our device switch */ 55 struct cdevsw *d_rawsw; /* the raw device switch */ 56 u_int d_flags; 57 u_int d_dsflags; 58 dev_t d_rawdev; /* backing raw device */ 59 dev_t d_cdev; /* special whole-disk part */ 60 struct diskslices *d_slice; 61 struct disklabel d_label; 62 LIST_ENTRY(disk) d_list; 63 }; 64 65 #define DISKFLAG_LOCK 0x1 66 #define DISKFLAG_WANTED 0x2 67 68 dev_t disk_create (int unit, struct disk *disk, int flags, struct cdevsw *sw); 69 void disk_destroy (struct disk *disk); 70 int disk_dumpcheck (dev_t dev, u_int *count, u_int *blkno, u_int *secsize); 71 struct disk *disk_enumerate (struct disk *disk); 72 void disk_invalidate (struct disk *disk); 73 74 #endif /* _SYS_DISK_H_ */ 75