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

Annotation of sys/dev/raidframe/rf_types.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: rf_types.h,v 1.6 2002/12/16 07:01:05 tdeval Exp $     */
        !             2: /*     $NetBSD: rf_types.h,v 1.6 1999/09/05 03:05:55 oster Exp $       */
        !             3:
        !             4: /*
        !             5:  * rf_types.h
        !             6:  */
        !             7: /*
        !             8:  * Copyright (c) 1995 Carnegie-Mellon University.
        !             9:  * All rights reserved.
        !            10:  *
        !            11:  * Author: Jim Zelenka
        !            12:  *
        !            13:  * Permission to use, copy, modify and distribute this software and
        !            14:  * its documentation is hereby granted, provided that both the copyright
        !            15:  * notice and this permission notice appear in all copies of the
        !            16:  * software, derivative works or modified versions, and any portions
        !            17:  * thereof, and that both notices appear in supporting documentation.
        !            18:  *
        !            19:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            20:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
        !            21:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            22:  *
        !            23:  * Carnegie Mellon requests users of this software to return to
        !            24:  *
        !            25:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
        !            26:  *  School of Computer Science
        !            27:  *  Carnegie Mellon University
        !            28:  *  Pittsburgh PA 15213-3890
        !            29:  *
        !            30:  * any improvements or extensions that they make and grant Carnegie the
        !            31:  * rights to redistribute these changes.
        !            32:  */
        !            33: /***********************************************************
        !            34:  *
        !            35:  * rf_types.h -- Standard types for RAIDframe.
        !            36:  *
        !            37:  ***********************************************************/
        !            38:
        !            39: #ifndef        _RF__RF_TYPES_H_
        !            40: #define        _RF__RF_TYPES_H_
        !            41:
        !            42:
        !            43: #include "rf_archs.h"
        !            44:
        !            45: #include <sys/errno.h>
        !            46: #include <sys/types.h>
        !            47:
        !            48: #include <sys/uio.h>
        !            49: #include <sys/param.h>
        !            50: #include <sys/lock.h>
        !            51:
        !            52: /*
        !            53:  * First, define system-dependent types and constants.
        !            54:  *
        !            55:  * If the machine is big-endian, RF_BIG_ENDIAN should be 1.
        !            56:  * Otherwise, it should be 0.
        !            57:  *
        !            58:  * The various integer types should be self-explanatory; we
        !            59:  * use these elsewhere to avoid size confusion.
        !            60:  *
        !            61:  * LONGSHIFT is lg(sizeof(long)) (that is, log base two of sizeof(long))
        !            62:  *
        !            63:  */
        !            64:
        !            65: #include <sys/types.h>
        !            66: #include <sys/limits.h>
        !            67: #include <machine/endian.h>
        !            68:
        !            69: #if    BYTE_ORDER == BIG_ENDIAN
        !            70: #define        RF_IS_BIG_ENDIAN        1
        !            71: #elif  BYTE_ORDER == LITTLE_ENDIAN
        !            72: #define        RF_IS_BIG_ENDIAN        0
        !            73: #else
        !            74: #error byte order not defined
        !            75: #endif
        !            76: typedef int8_t         RF_int8;
        !            77: typedef u_int8_t       RF_uint8;
        !            78: typedef int16_t                RF_int16;
        !            79: typedef u_int16_t      RF_uint16;
        !            80: typedef int32_t                RF_int32;
        !            81: typedef u_int32_t      RF_uint32;
        !            82: typedef int64_t                RF_int64;
        !            83: typedef u_int64_t      RF_uint64;
        !            84: #if    LONG_BIT == 32
        !            85: #define        RF_LONGSHIFT            2
        !            86: #elif  LONG_BIT == 64
        !            87: #define        RF_LONGSHIFT            3
        !            88: #else
        !            89: #error word size not defined
        !            90: #endif
        !            91:
        !            92: /*
        !            93:  * These are just zero and non-zero. We don't use "TRUE"
        !            94:  * and "FALSE" because there's too much nonsense trying
        !            95:  * to get them defined exactly once on every platform, given
        !            96:  * the different places they may be defined in system header
        !            97:  * files.
        !            98:  */
        !            99: #define        RF_TRUE                 1
        !           100: #define        RF_FALSE                0
        !           101:
        !           102: /*
        !           103:  * Now, some generic types.
        !           104:  */
        !           105: typedef RF_uint64      RF_IoCount_t;
        !           106: typedef RF_uint64      RF_Offset_t;
        !           107: typedef RF_uint32      RF_PSSFlags_t;
        !           108: typedef RF_uint64      RF_SectorCount_t;
        !           109: typedef RF_uint64      RF_StripeCount_t;
        !           110: typedef RF_int64       RF_SectorNum_t; /*
        !           111:                                         * These are unsigned so we can set
        !           112:                                         * them to (-1) for "uninitialized".
        !           113:                                         */
        !           114: typedef RF_int64       RF_StripeNum_t;
        !           115: typedef RF_int64       RF_RaidAddr_t;
        !           116: typedef int            RF_RowCol_t;    /* Unsigned so it can be (-1). */
        !           117: typedef RF_int64       RF_HeadSepLimit_t;
        !           118: typedef RF_int64       RF_ReconUnitCount_t;
        !           119: typedef int            RF_ReconUnitNum_t;
        !           120:
        !           121: typedef char           RF_ParityConfig_t;
        !           122:
        !           123: typedef char           RF_DiskQueueType_t[1024];
        !           124: #define        RF_DISK_QUEUE_TYPE_NONE ""
        !           125:
        !           126: /* Values for the 'type' field in a reconstruction buffer. */
        !           127: typedef int            RF_RbufType_t;
        !           128: #define        RF_RBUF_TYPE_EXCLUSIVE  0       /*
        !           129:                                         * This buf assigned exclusively to
        !           130:                                         * one disk.
        !           131:                                         */
        !           132: #define        RF_RBUF_TYPE_FLOATING   1       /* This is a floating recon buf. */
        !           133: #define        RF_RBUF_TYPE_FORCED     2       /*
        !           134:                                         * This rbuf was allocated to complete
        !           135:                                         * a forced recon.
        !           136:                                         */
        !           137:
        !           138: typedef char           RF_IoType_t;
        !           139: #define        RF_IO_TYPE_READ         'r'
        !           140: #define        RF_IO_TYPE_WRITE        'w'
        !           141: #define        RF_IO_TYPE_NOP          'n'
        !           142: #define        RF_IO_IS_R_OR_W(_type_)                                         \
        !           143:        (((_type_) == RF_IO_TYPE_READ) || ((_type_) == RF_IO_TYPE_WRITE))
        !           144:
        !           145: typedef void           (*RF_VoidFuncPtr) (void *,...);
        !           146:
        !           147: typedef RF_uint32      RF_AccessStripeMapFlags_t;
        !           148: typedef RF_uint32      RF_DiskQueueDataFlags_t;
        !           149: typedef RF_uint32      RF_DiskQueueFlags_t;
        !           150: typedef RF_uint32      RF_RaidAccessFlags_t;
        !           151:
        !           152: #define        RF_DISKQUEUE_DATA_FLAGS_NONE    ((RF_DiskQueueDataFlags_t)0)
        !           153:
        !           154: typedef struct RF_AccessStripeMap_s            RF_AccessStripeMap_t;
        !           155: typedef struct RF_AccessStripeMapHeader_s      RF_AccessStripeMapHeader_t;
        !           156: typedef struct RF_AllocListElem_s              RF_AllocListElem_t;
        !           157: typedef struct RF_CallbackDesc_s               RF_CallbackDesc_t;
        !           158: typedef struct RF_ChunkDesc_s                  RF_ChunkDesc_t;
        !           159: typedef struct RF_CommonLogData_s              RF_CommonLogData_t;
        !           160: typedef struct RF_Config_s                     RF_Config_t;
        !           161: typedef struct RF_CumulativeStats_s            RF_CumulativeStats_t;
        !           162: typedef struct RF_DagHeader_s                  RF_DagHeader_t;
        !           163: typedef struct RF_DagList_s                    RF_DagList_t;
        !           164: typedef struct RF_DagNode_s                    RF_DagNode_t;
        !           165: typedef struct RF_DeclusteredConfigInfo_s      RF_DeclusteredConfigInfo_t;
        !           166: typedef struct RF_DiskId_s                     RF_DiskId_t;
        !           167: typedef struct RF_DiskMap_s                    RF_DiskMap_t;
        !           168: typedef struct RF_DiskQueue_s                  RF_DiskQueue_t;
        !           169: typedef struct RF_DiskQueueData_s              RF_DiskQueueData_t;
        !           170: typedef struct RF_DiskQueueSW_s                        RF_DiskQueueSW_t;
        !           171: typedef struct RF_Etimer_s                     RF_Etimer_t;
        !           172: typedef struct RF_EventCreate_s                        RF_EventCreate_t;
        !           173: typedef struct RF_FreeList_s                   RF_FreeList_t;
        !           174: typedef struct RF_LockReqDesc_s                        RF_LockReqDesc_t;
        !           175: typedef struct RF_LockTableEntry_s             RF_LockTableEntry_t;
        !           176: typedef struct RF_MCPair_s                     RF_MCPair_t;
        !           177: typedef struct RF_OwnerInfo_s                  RF_OwnerInfo_t;
        !           178: typedef struct RF_ParityLog_s                  RF_ParityLog_t;
        !           179: typedef struct RF_ParityLogAppendQueue_s       RF_ParityLogAppendQueue_t;
        !           180: typedef struct RF_ParityLogData_s              RF_ParityLogData_t;
        !           181: typedef struct RF_ParityLogDiskQueue_s         RF_ParityLogDiskQueue_t;
        !           182: typedef struct RF_ParityLogQueue_s             RF_ParityLogQueue_t;
        !           183: typedef struct RF_ParityLogRecord_s            RF_ParityLogRecord_t;
        !           184: typedef struct RF_PerDiskReconCtrl_s           RF_PerDiskReconCtrl_t;
        !           185: typedef struct RF_PSStatusHeader_s             RF_PSStatusHeader_t;
        !           186: typedef struct RF_PhysDiskAddr_s               RF_PhysDiskAddr_t;
        !           187: typedef struct RF_PropHeader_s                 RF_PropHeader_t;
        !           188: typedef struct RF_Raid_s                       RF_Raid_t;
        !           189: typedef struct RF_RaidAccessDesc_s             RF_RaidAccessDesc_t;
        !           190: typedef struct RF_RaidDisk_s                   RF_RaidDisk_t;
        !           191: typedef struct RF_RaidLayout_s                 RF_RaidLayout_t;
        !           192: typedef struct RF_RaidReconDesc_s              RF_RaidReconDesc_t;
        !           193: typedef struct RF_ReconBuffer_s                        RF_ReconBuffer_t;
        !           194: typedef struct RF_ReconConfig_s                        RF_ReconConfig_t;
        !           195: typedef struct RF_ReconCtrl_s                  RF_ReconCtrl_t;
        !           196: typedef struct RF_ReconDoneProc_s              RF_ReconDoneProc_t;
        !           197: typedef struct RF_ReconEvent_s                 RF_ReconEvent_t;
        !           198: typedef struct RF_ReconMap_s                   RF_ReconMap_t;
        !           199: typedef struct RF_ReconMapListElem_s           RF_ReconMapListElem_t;
        !           200: typedef struct RF_ReconParityStripeStatus_s    RF_ReconParityStripeStatus_t;
        !           201: typedef struct RF_RedFuncs_s                   RF_RedFuncs_t;
        !           202: typedef struct RF_RegionBufferQueue_s          RF_RegionBufferQueue_t;
        !           203: typedef struct RF_RegionInfo_s                 RF_RegionInfo_t;
        !           204: typedef struct RF_ShutdownList_s               RF_ShutdownList_t;
        !           205: typedef struct RF_SpareTableEntry_s            RF_SpareTableEntry_t;
        !           206: typedef struct RF_SparetWait_s                 RF_SparetWait_t;
        !           207: typedef struct RF_StripeLockDesc_s             RF_StripeLockDesc_t;
        !           208: typedef struct RF_ThreadGroup_s                        RF_ThreadGroup_t;
        !           209: typedef struct RF_ThroughputStats_s            RF_ThroughputStats_t;
        !           210:
        !           211: /*
        !           212:  * Important assumptions regarding ordering of the states in this list
        !           213:  * have been made !!!
        !           214:  * Before disturbing this ordering, look at code in rf_states.c
        !           215:  */
        !           216: typedef enum RF_AccessState_e {
        !           217:        /* Original states. */
        !           218:        rf_QuiesceState,        /* Handles quiescence for reconstruction. */
        !           219:        rf_IncrAccessesCountState, /* Count accesses in flight. */
        !           220:        rf_DecrAccessesCountState,
        !           221:        rf_MapState,            /* Map access to disk addresses. */
        !           222:        rf_LockState,           /* Take stripe locks. */
        !           223:        rf_CreateDAGState,      /* Create DAGs. */
        !           224:        rf_ExecuteDAGState,     /* Execute DAGs. */
        !           225:        rf_ProcessDAGState,     /*
        !           226:                                 * DAGs are completing - check if correct, or
        !           227:                                 * if we need to retry.
        !           228:                                 */
        !           229:        rf_CleanupState,        /* Release stripe locks, clean up. */
        !           230:        rf_LastState            /* Must be the last state. */
        !           231: }       RF_AccessState_t;
        !           232: #define        RF_MAXROW       10      /*
        !           233:                                 * These are arbitrary and can be modified at
        !           234:                                 * will.
        !           235:                                 */
        !           236: #define        RF_MAXCOL       40
        !           237: #define        RF_MAXSPARE     10
        !           238: #define        RF_MAXDBGV      75      /* Max number of debug variables. */
        !           239: #define        RF_MAXDBGVLEN   50      /* Max length of debug variables. */
        !           240:
        !           241: union RF_GenericParam_u {
        !           242:        void            *p;
        !           243:        RF_uint64        v;
        !           244: };
        !           245: typedef union RF_GenericParam_u        RF_DagParam_t;
        !           246: typedef union RF_GenericParam_u        RF_CBParam_t;
        !           247:
        !           248: #endif /* _RF__RF_TYPES_H_ */

CVSweb