Annotation of kernel/bsd/dev/disk.h, revision 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.