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