Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | /* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * The contents of this file constitute Original Code as defined in and * are subject to the Apple Public Source License Version 1.1 (the * "License"). You may not use this file except in compliance with the * License. Please obtain a copy of the License at * http://www.apple.com/publicsource and read it before using this file. * * This Original Code and all software distributed under the License are * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* @(#)disk.h 1.0 08/29/87 (c) 1987 NeXT */ /* * HISTORY * 28-Mar-92 Doug Mitchell * Moved disk_label struct to <bsd/dev/disk_label.h>. * * 22-May-91 Gregg Kellogg (gk) at NeXT * Split out public interface. * * 20-Jul-90 Doug Mitchell * Added DKIOCSFORMAT, DKIOCGFORMAT * * 16-Apr-90 Doug Mitchell at NeXT * Added DKIOCPANELPRT. * * 25-Mar-90 John Seamons (jks) at NeXT * Removed obsolete DKIOCNOTIFY and DKIOCINSERT. * * 23-Mar-90 Doug Mitchell * Added DKIOCEJECT. * * 14-Feb-90 Doug Mitchell at NeXT * Added DKIOCMNOTIFY. * * 16-Mar-88 John Seamons (jks) at NeXT * Cleaned up to support standard disk label definitions. * * 24-Feb-88 Mike DeMoney (mike) at NeXT * Added defines for dl_bootfile and dl_boot0_blkno. * Reduced NBAD to allow for these entries in disktab. * * 29-Aug-87 John Seamons (jks) at NeXT * Created. * */ #ifndef _BSD_DEV_DISK_ #define _BSD_DEV_DISK_ #include <mach/machine/vm_types.h> #include <mach/machine/boolean.h> #include <sys/types.h> #include <sys/ioctl.h> #include <sys/time.h> #include <dev/disk_label.h> #define DR_CMDSIZE 32 #define DR_ERRSIZE 32 struct disk_req { int dr_bcount; /* byte count for data transfers */ caddr_t dr_addr; /* memory addr for data transfers */ struct timeval dr_exec_time; /* execution time of operation */ /* * interpretation of cmdblk and errblk is driver specific. */ char dr_cmdblk[DR_CMDSIZE]; char dr_errblk[DR_ERRSIZE]; }; struct sdc_wire { vm_offset_t start, end; boolean_t new_pageable; }; #define BAD_BLK_OFF 4 /* offset of bad blk tbl from label */ #define NBAD_BLK (12 * 1024 / sizeof (int)) struct bad_block { /* bad block table, sized to be 12KB */ int bad_blk[NBAD_BLK]; }; /* * sector bitmap states (2 bits per sector) */ #define SB_UNTESTED 0 /* must be zero */ #define SB_BAD 1 #define SB_WRITTEN 2 #define SB_ERASED 3 struct drive_info { /* info about drive hardware */ char di_name[MAXDNMLEN]; /* drive type name */ int di_label_blkno[NLABELS];/* label loc'ns in DEVICE SECTORS */ int di_devblklen; /* device sector size */ int di_maxbcount; /* max bytes per transfer request */ }; #define DS_STATSIZE 32 struct disk_stats { int s_ecccnt; /* avg ECC corrections per sector */ int s_maxecc; /* max ECC corrections observed */ /* * interpretation of s_stats is driver specific */ char s_stats[DS_STATSIZE]; }; struct drive_location { char location[ 128 ]; }; #define DKIOCGLABEL _IOR('d', 0,struct disk_label) /* read label */ #define DKIOCSLABEL _IOW('d', 1,struct disk_label) /* write label */ #define DKIOCGBITMAP _IO('d', 2) /* read bitmap */ #define DKIOCSBITMAP _IO('d', 3) /* write bitmap */ #define DKIOCREQ _IOWR('d', 4, struct disk_req) /* cmd request */ #define DKIOCINFO _IOR('d', 5, struct drive_info) /* get drive info */ #define DKIOCZSTATS _IO('d',7) /* zero statistics */ #define DKIOCGSTATS _IO('d', 8) /* get statistics */ #define DKIOCRESET _IO('d', 9) /* reset disk */ #define DKIOCGFLAGS _IOR('d', 11, int) /* get driver flags */ #define DKIOCSFLAGS _IOW('d', 12, int) /* set driver flags */ #define DKIOCSDCWIRE _IOW('d', 14, struct sdc_wire) /* sdc wire memory */ #define DKIOCSDCLOCK _IO('d', 15) /* sdc lock */ #define DKIOCSDCUNLOCK _IO('d', 16) /* sdc unlock */ #define DKIOCGFREEVOL _IOR('d', 17, int) /* get free volume # */ #define DKIOCGBBT _IO('d', 18) /* read bad blk tbl */ #define DKIOCSBBT _IO('d', 19) /* write bad blk tbl */ #define DKIOCMNOTIFY _IOW('d', 20, int) /* message on insert */ #define DKIOCEJECT _IO('d', 21) /* eject disk */ #define DKIOCPANELPRT _IOW('d', 22, int) /* register Panel */ /* Request port */ #define DKIOCSFORMAT _IOW('d', 23, int) /* set 'Formatted' flag */ #define DKIOCGFORMAT _IOR('d', 23, int) /* get 'Formatted' flag */ #define DKIOCBLKSIZE _IOR('d', 24, int) /* device sector size */ #define DKIOCNUMBLKS _IOR('d', 25, int) /* number of sectors */ #define DKIOCCHECKINSERT _IO('d',26) /* manually poll removable */ /* media drive */ #define DKIOCCANCELAUTOMOUNT _IOW('d',27, dev_t) /* cancel automount request */ #define DKIOCGLOCATION _IOR('d',28, struct drive_location) /* arch dependent location descrip */ #define DKIOCSETBLOCKSIZE _IOW('d', 24, int) /* set media's preferred sector size */ #define DKIOCGETBLOCKSIZE DKIOCBLKSIZE /* get media's preferred sector size */ #define DKIOCGETBLOCKCOUNT DKIOCNUMBLKS /* get media's sector count */ #define DKIOCGETLOCATION DKIOCGLOCATION /* get media's location description */ #define DKIOCISFORMATTED DKIOCGFORMAT /* is media formatted? */ #define DKIOCISWRITABLE _IOR('d', 29, int) /* is media writable? */ #endif /* _BSD_DEV_DISK_ */ |