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

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: 

unix.superglobalmegacorp.com

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