Annotation of kernel/bsd/dev/disk.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.