[BACK]Return to biovar.h CVS log [TXT][DIR] Up to [local] / sys / dev

Annotation of sys/dev/biovar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: biovar.h,v 1.28 2007/05/28 21:54:26 marco Exp $       */
                      2:
                      3: /*
                      4:  * Copyright (c) 2002 Niklas Hallqvist.  All rights reserved.
                      5:  * Copyright (c) 2005 Marco Peereboom.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  *
                     16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     18:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     19:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     20:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     21:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     22:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     23:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     24:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     25:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     26:  */
                     27:
                     28: /*
                     29:  * Devices getting ioctls through this interface should use ioctl class 'B'
                     30:  * and command numbers starting from 32, lower ones are reserved for generic
                     31:  * ioctls.  All ioctl data must be structures which start with a void *
                     32:  * cookie.
                     33:  */
                     34:
                     35: #include <sys/types.h>
                     36:
                     37: struct bio_common {
                     38:        void            *bc_cookie;
                     39: };
                     40:
                     41: /* convert name to a cookie */
                     42: #define BIOCLOCATE _IOWR('B', 0, struct bio_locate)
                     43: struct bio_locate {
                     44:        void            *bl_cookie;
                     45:        char            *bl_name;
                     46: };
                     47:
                     48: #ifdef _KERNEL
                     49: int    bio_register(struct device *, int (*)(struct device *, u_long,
                     50:     caddr_t));
                     51: void   bio_unregister(struct device *);
                     52: #endif
                     53:
                     54: #define BIOCINQ _IOWR('B', 32, struct bioc_inq)
                     55: struct bioc_inq {
                     56:        void            *bi_cookie;
                     57:
                     58:        char            bi_dev[16];     /* controller device */
                     59:        int             bi_novol;       /* nr of volumes */
                     60:        int             bi_nodisk;      /* nr of total disks */
                     61: };
                     62:
                     63: #define BIOCDISK _IOWR('B', 33, struct bioc_disk)
                     64: /* structure that represents a disk in a RAID volume */
                     65: struct bioc_disk {
                     66:        void            *bd_cookie;
                     67:
                     68:        u_int16_t       bd_channel;
                     69:        u_int16_t       bd_target;
                     70:        u_int16_t       bd_lun;
                     71:        u_int16_t       bd_other_id;    /* unused for now  */
                     72:
                     73:        int             bd_volid;       /* associate with volume */
                     74:        int             bd_diskid;      /* virtual disk */
                     75:        int             bd_status;      /* current status */
                     76: #define BIOC_SDONLINE          0x00
                     77: #define BIOC_SDONLINE_S                "Online"
                     78: #define BIOC_SDOFFLINE         0x01
                     79: #define BIOC_SDOFFLINE_S       "Offline"
                     80: #define BIOC_SDFAILED          0x02
                     81: #define BIOC_SDFAILED_S        "Failed"
                     82: #define BIOC_SDREBUILD         0x03
                     83: #define BIOC_SDREBUILD_S       "Rebuild"
                     84: #define BIOC_SDHOTSPARE                0x04
                     85: #define BIOC_SDHOTSPARE_S      "Hot spare"
                     86: #define BIOC_SDUNUSED          0x05
                     87: #define BIOC_SDUNUSED_S                "Unused"
                     88: #define BIOC_SDSCRUB           0x06
                     89: #define BIOC_SDSCRUB_S         "Scrubbing"
                     90: #define BIOC_SDINVALID         0xff
                     91: #define BIOC_SDINVALID_S       "Invalid"
                     92:        u_quad_t        bd_size;        /* size of the disk */
                     93:
                     94:        char            bd_vendor[32];  /* scsi string */
                     95:        char            bd_serial[32];  /* serial number */
                     96:        char            bd_procdev[16]; /* processor device */
                     97: };
                     98:
                     99: #define BIOCVOL _IOWR('B', 34, struct bioc_vol)
                    100: /* structure that represents a RAID volume */
                    101: struct bioc_vol {
                    102:        void            *bv_cookie;
                    103:        int             bv_volid;       /* volume id */
                    104:
                    105:        int16_t         bv_percent;     /* percent done operation */
                    106:        u_int16_t       bv_seconds;     /* seconds of progress so far */
                    107:
                    108:        int             bv_status;      /* current status */
                    109: #define BIOC_SVONLINE          0x00
                    110: #define BIOC_SVONLINE_S                "Online"
                    111: #define BIOC_SVOFFLINE         0x01
                    112: #define BIOC_SVOFFLINE_S       "Offline"
                    113: #define BIOC_SVDEGRADED                0x02
                    114: #define BIOC_SVDEGRADED_S      "Degraded"
                    115: #define BIOC_SVBUILDING                0x03
                    116: #define BIOC_SVBUILDING_S      "Building"
                    117: #define BIOC_SVSCRUB           0x04
                    118: #define BIOC_SVSCRUB_S         "Scrubbing"
                    119: #define BIOC_SVREBUILD         0x05
                    120: #define BIOC_SVREBUILD_S       "Rebuild"
                    121: #define BIOC_SVINVALID         0xff
                    122: #define BIOC_SVINVALID_S       "Invalid"
                    123:        u_quad_t        bv_size;        /* size of the disk */
                    124:        int             bv_level;       /* raid level */
                    125:        int             bv_nodisk;      /* nr of drives */
                    126:
                    127:        char            bv_dev[16];     /* device */
                    128:        char            bv_vendor[32];  /* scsi string */
                    129: };
                    130:
                    131: #define BIOCALARM _IOWR('B', 35, struct bioc_alarm)
                    132: struct bioc_alarm {
                    133:        void            *ba_cookie;
                    134:        int             ba_opcode;
                    135:
                    136:        int             ba_status;      /* only used with get state */
                    137: #define BIOC_SADISABLE         0x00    /* disable alarm */
                    138: #define BIOC_SAENABLE          0x01    /* enable alarm */
                    139: #define BIOC_SASILENCE         0x02    /* silence alarm */
                    140: #define BIOC_GASTATUS          0x03    /* get status */
                    141: #define BIOC_SATEST            0x04    /* test alarm */
                    142: };
                    143:
                    144: #define BIOCBLINK _IOWR('B', 36, struct bioc_blink)
                    145: struct bioc_blink {
                    146:        void            *bb_cookie;
                    147:        u_int16_t       bb_channel;
                    148:        u_int16_t       bb_target;
                    149:
                    150:        int             bb_status;      /* current status */
                    151: #define BIOC_SBUNBLINK         0x00    /* disable blinking */
                    152: #define BIOC_SBBLINK           0x01    /* enable blink */
                    153: #define BIOC_SBALARM           0x02    /* enable alarm blink */
                    154: };
                    155:
                    156: #define BIOCSETSTATE _IOWR('B', 37, struct bioc_setstate)
                    157: struct bioc_setstate {
                    158:        void            *bs_cookie;
                    159:        u_int16_t       bs_channel;
                    160:        u_int16_t       bs_target;
                    161:        u_int16_t       bs_lun;
                    162:        u_int16_t       bs_other_id;    /* unused for now  */
                    163:
                    164:        int             bs_status;      /* change to this status */
                    165: #define BIOC_SSONLINE          0x00    /* online disk */
                    166: #define BIOC_SSOFFLINE         0x01    /* offline disk */
                    167: #define BIOC_SSHOTSPARE                0x02    /* mark as hotspare */
                    168: #define BIOC_SSREBUILD         0x03    /* rebuild on this disk */
                    169:        int             bs_volid;       /* volume id for rebuild */
                    170: };
                    171:
                    172: #define BIOCCREATERAID _IOWR('B', 38, struct bioc_createraid)
                    173: struct bioc_createraid {
                    174:        void            *bc_cookie;
                    175:        void            *bc_dev_list;
                    176:        u_int16_t       bc_dev_list_len;
                    177: #define BIOC_CRMAXLEN          1024
                    178:        u_int16_t       bc_level;
                    179:        u_int32_t       bc_flags;
                    180: #define BIOC_SCFORCE           0x01    /* do not assemble, force create */
                    181: #define BIOC_SCDEVT            0x02    /* dev_t array or string in dev_list */
                    182: #define BIOC_SCNOAUTOASSEMBLE  0x04    /* do not assemble during autoconf */
                    183: };
                    184:
                    185: /* kernel and userspace defines */
                    186: #define BIOC_INQ               0x0001
                    187: #define BIOC_DISK              0x0002
                    188: #define BIOC_VOL               0x0004
                    189: #define BIOC_ALARM             0x0008
                    190: #define BIOC_BLINK             0x0010
                    191: #define BIOC_SETSTATE          0x0020
                    192: #define BIOC_CREATERAID                0x0040
                    193:
                    194: /* user space defines */
                    195: #define BIOC_DEVLIST           0x10000

CVSweb