The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/raid/asr/i2outil.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  ****************************************************************
    3  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
    4  * Copyright (c) 2000 Adaptec Corporation.
    5  * All rights reserved.
    6  *
    7  * Copyright 1999 I2O Special Interest Group (I2O SIG).  All rights reserved.
    8  * All rights reserved
    9  *
   10  * TERMS AND CONDITIONS OF USE
   11  *
   12  * Redistribution and use in source form, with or without modification, are
   13  * permitted provided that redistributions of source code must retain the
   14  * above copyright notice, this list of conditions and the following disclaimer.
   15  *
   16  * This software is provided `as is' by Distributed Processing Technology and
   17  * any express or implied warranties, including, but not limited to, the
   18  * implied warranties of merchantability and fitness for a particular purpose,
   19  * are disclaimed. In no event shall Distributed Processing Technology be
   20  * liable for any direct, indirect, incidental, special, exemplary or
   21  * consequential damages (including, but not limited to, procurement of
   22  * substitute goods or services; loss of use, data, or profits; or business
   23  * interruptions) however caused and on any theory of liability, whether in
   24  * contract, strict liability, or tort (including negligence or otherwise)
   25  * arising in any way out of the use of this driver software, even if advised
   26  * of the possibility of such damage.
   27  *
   28  * This header file, and any modifications of this header file, are provided
   29  * contingent upon your agreement and adherence to the here-listed terms and
   30  * conditions.  By accepting and/or using this header file, you agree to abide
   31  * by these terms and conditions and that these terms and conditions will be
   32  * construed and governed in accordance with the laws of the State of California,
   33  * without reference to conflict-of-law provisions.  If you do not agree
   34  * to these terms and conditions, please delete this file, and any copies,
   35  * permanently, without making any use thereof.
   36  *
   37  * THIS HEADER FILE IS PROVIDED FREE OF CHARGE ON AN AS-IS BASIS WITHOUT
   38  * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
   39  * TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   40  * PURPOSE.  I2O SIG DOES NOT WARRANT THAT THIS HEADER FILE WILL MEET THE
   41  * USER'S REQUIREMENTS OR THAT ITS OPERATION WILL BE UNINTERRUPTED OR
   42  * ERROR-FREE.
   43  *
   44  * I2O SIG DISCLAIMS ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF
   45  * ANY PROPRIETARY RIGHTS, RELATING TO THE IMPLEMENTATION OF THE I2O
   46  * SPECIFICATIONS.  I2O SIG DOES NOT WARRANT OR REPRESENT THAT SUCH
   47  * IMPLEMENTATIONS WILL NOT INFRINGE SUCH RIGHTS.
   48  *
   49  * THE USER OF THIS HEADER FILE SHALL HAVE NO RECOURSE TO I2O SIG FOR ANY
   50  * ACTUAL OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, LOST DATA
   51  * OR LOST PROFITS ARISING OUT OF THE USE OR INABILITY TO USE THIS PROGRAM.
   52  *
   53  * I2O SIG grants the user of this header file a license to copy, distribute,
   54  * and modify it, for any purpose, under the following terms.  Any copying,
   55  * distribution, or modification of this header file must not delete or alter
   56  * the copyright notice of I2O SIG or any of these Terms and Conditions.
   57  *
   58  * Any distribution of this header file must not include a charge for the
   59  * header file (unless such charges are strictly for the physical acts of
   60  * copying or transferring copies).  However, distribution of a product in
   61  * which this header file is embedded may include a charge so long as any
   62  * such charge does not include any charge for the header file itself.
   63  *
   64  * Any modification of this header file constitutes a derivative work based
   65  * on this header file.  Any distribution of such derivative work: (1) must
   66  * include prominent notices that the header file has been changed from the
   67  * original, together with the dates of any changes; (2) automatically includes
   68  * this same license to the original header file from I2O SIG, without any
   69  * restriction thereon from the distributing user; and (3) must include a
   70  * grant of license of the modified file under the same terms and conditions
   71  * as these Terms and Conditions.
   72  *
   73  * The I2O SIG Web site can be found at: http://www.i2osig.org
   74  *
   75  * The I2O SIG encourages you to deposit derivative works based on this
   76  * header file at the I2O SIG Web site.  Furthermore, to become a Registered
   77  * Developer of the I2O SIG, sign up at the Web site or call 415.750.8352
   78  * (United States).
   79  *
   80  * $FreeBSD: src/sys/dev/asr/i2outil.h,v 1.6 2005/01/06 01:42:29 imp Exp $
   81  *
   82  ****************************************************************/
   83 
   84 /*********************************************************************
   85  * I2OUtil.h -- I2O Utility Class Message defintion file
   86  *
   87  * This file contains information presented in Chapter 6 of the I2O
   88  * Specification.
   89  **********************************************************************/
   90 
   91 #if !defined(I2O_UTILITY_HDR)
   92 #define I2O_UTILITY_HDR
   93 
   94 #define I2OUTIL_REV 1_5_4  /* I2OUtil header file revision string */
   95 
   96 #if ((defined(KERNEL) || defined(_KERNEL)) && defined(__FreeBSD__))
   97 # if (KERN_VERSION < 3)
   98 #  include   "i386/pci/i2omsg.h"      /* Include the Base Message file */
   99 # else
  100 #  include   "dev/asr/i2omsg.h"
  101 # endif
  102 #else
  103 # include   "i2omsg.h"      /* Include the Base Message file */
  104 #endif
  105 
  106 
  107 /*
  108 NOTES:
  109 
  110    Gets, reads, receives, etc. are all even numbered functions.
  111    Sets, writes, sends, etc. are all odd numbered functions.
  112    Functions that both send and receive data can be either but an attempt is made
  113        to use the function number that indicates the greater transfer amount.
  114    Functions that do not send or receive data use odd function numbers.
  115 
  116    Some functions are synonyms like read, receive and send, write.
  117 
  118    All common functions will have a code of less than 0x80.
  119    Unique functions to a class will start at 0x80.
  120    Executive Functions start at 0xA0.
  121 
  122    Utility Message function codes range from 0 - 0x1f
  123    Base Message function codes range from 0x20 - 0xfe
  124    Private Message function code is 0xff.
  125 */
  126 
  127 PRAGMA_ALIGN_PUSH
  128 
  129 PRAGMA_PACK_PUSH
  130 
  131 /* Utility Message class functions. */
  132 
  133 #define    I2O_UTIL_NOP                                0x00
  134 #define    I2O_UTIL_ABORT                              0x01
  135 #define    I2O_UTIL_CLAIM                              0x09
  136 #define    I2O_UTIL_CLAIM_RELEASE                      0x0B
  137 #define    I2O_UTIL_CONFIG_DIALOG                      0x10
  138 #define    I2O_UTIL_DEVICE_RESERVE                     0x0D
  139 #define    I2O_UTIL_DEVICE_RELEASE                     0x0F
  140 #define    I2O_UTIL_EVENT_ACKNOWLEDGE                  0x14
  141 #define    I2O_UTIL_EVENT_REGISTER                     0x13
  142 #define    I2O_UTIL_LOCK                               0x17
  143 #define    I2O_UTIL_LOCK_RELEASE                       0x19
  144 #define    I2O_UTIL_PARAMS_GET                         0x06
  145 #define    I2O_UTIL_PARAMS_SET                         0x05
  146 #define    I2O_UTIL_REPLY_FAULT_NOTIFY                 0x15
  147 
  148 /****************************************************************************/
  149 
  150 /* ABORT Abort type defines. */
  151 
  152 #define    I2O_ABORT_TYPE_EXACT_ABORT                  0x00
  153 #define    I2O_ABORT_TYPE_FUNCTION_ABORT               0x01
  154 #define    I2O_ABORT_TYPE_TRANSACTION_ABORT            0x02
  155 #define    I2O_ABORT_TYPE_WILD_ABORT                   0x03
  156 #define    I2O_ABORT_TYPE_CLEAN_EXACT_ABORT            0x04
  157 #define    I2O_ABORT_TYPE_CLEAN_FUNCTION_ABORT         0x05
  158 #define    I2O_ABORT_TYPE_CLEAN_TRANSACTION_ABORT      0x06
  159 #define    I2O_ABORT_TYPE_CLEAN_WILD_ABORT             0x07
  160 
  161 /* UtilAbort Function Message Frame structure. */
  162 
  163 typedef struct _I2O_UTIL_ABORT_MESSAGE {
  164     I2O_MESSAGE_FRAME          StdMessageFrame;
  165     I2O_TRANSACTION_CONTEXT    TransactionContext;
  166 #   if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  167         U32                    reserved;
  168 #   else
  169         U16                    reserved;
  170         U8                     AbortType;
  171         U8                     FunctionToAbort;
  172 #   endif
  173     I2O_TRANSACTION_CONTEXT    TransactionContextToAbort;
  174 } I2O_UTIL_ABORT_MESSAGE, *PI2O_UTIL_ABORT_MESSAGE;
  175 
  176 
  177 typedef struct _I2O_UTIL_ABORT_REPLY {
  178     I2O_MESSAGE_FRAME          StdMessageFrame;
  179     I2O_TRANSACTION_CONTEXT    TransactionContext;
  180     U32                        CountOfAbortedMessages;
  181 } I2O_UTIL_ABORT_REPLY, *PI2O_UTIL_ABORT_REPLY;
  182 
  183 
  184 /****************************************************************************/
  185 
  186 /* Claim Flag defines */
  187 
  188 #define    I2O_CLAIM_FLAGS_EXCLUSIVE                   0x0001 /* Reserved */
  189 #define    I2O_CLAIM_FLAGS_RESET_SENSITIVE             0x0002
  190 #define    I2O_CLAIM_FLAGS_STATE_SENSITIVE             0x0004
  191 #define    I2O_CLAIM_FLAGS_CAPACITY_SENSITIVE          0x0008
  192 #define    I2O_CLAIM_FLAGS_PEER_SERVICE_DISABLED       0x0010
  193 #define    I2O_CLAIM_FLAGS_MGMT_SERVICE_DISABLED       0x0020
  194 
  195 /* Claim Type defines */
  196 
  197 #define    I2O_CLAIM_TYPE_PRIMARY_USER                 0x01
  198 #define    I2O_CLAIM_TYPE_AUTHORIZED_USER              0x02
  199 #define    I2O_CLAIM_TYPE_SECONDARY_USER               0x03
  200 #define    I2O_CLAIM_TYPE_MANAGEMENT_USER              0x04
  201 
  202 /* UtilClaim Function Message Frame structure. */
  203 
  204 typedef struct _I2O_UTIL_CLAIM_MESSAGE {
  205     I2O_MESSAGE_FRAME          StdMessageFrame;
  206     I2O_TRANSACTION_CONTEXT    TransactionContext;
  207     U16                        ClaimFlags;
  208     U8                         reserved;
  209     U8                         ClaimType;
  210 } I2O_UTIL_CLAIM_MESSAGE, *PI2O_UTIL_CLAIM_MESSAGE;
  211 
  212 
  213 /****************************************************************************/
  214 
  215 /* Claim Release Flag defines */
  216 
  217 #define    I2O_RELEASE_FLAGS_CONDITIONAL               0x0001
  218 
  219 /* UtilClaimRelease Function Message Frame structure. */
  220 
  221 typedef struct _I2O_UTIL_CLAIM_RELEASE_MESSAGE {
  222     I2O_MESSAGE_FRAME          StdMessageFrame;
  223     I2O_TRANSACTION_CONTEXT    TransactionContext;
  224     U16                        ReleaseFlags;
  225     U8                         reserved;
  226     U8                         ClaimType;
  227 } I2O_UTIL_CLAIM_RELEASE_MESSAGE, *PI2O_UTIL_CLAIM_RELEASE_MESSAGE;
  228 
  229 
  230 /****************************************************************************/
  231 
  232 /*  UtilConfigDialog Function Message Frame structure */
  233 
  234 typedef struct _I2O_UTIL_CONFIG_DIALOG_MESSAGE {
  235     I2O_MESSAGE_FRAME          StdMessageFrame;
  236     I2O_TRANSACTION_CONTEXT    TransactionContext;
  237     U32                        PageNumber;
  238     I2O_SG_ELEMENT             SGL;
  239 } I2O_UTIL_CONFIG_DIALOG_MESSAGE, *PI2O_UTIL_CONFIG_DIALOG_MESSAGE;
  240 
  241 
  242 /****************************************************************************/
  243 
  244 /*  Event Acknowledge Function Message Frame structure */
  245 
  246 typedef struct _I2O_UTIL_EVENT_ACK_MESSAGE {
  247     I2O_MESSAGE_FRAME          StdMessageFrame;
  248     I2O_TRANSACTION_CONTEXT    TransactionContext;
  249     U32                        EventIndicator;
  250     U32                        EventData[1];
  251 } I2O_UTIL_EVENT_ACK_MESSAGE, *PI2O_UTIL_EVENT_ACK_MESSAGE;
  252 
  253 /* Event Ack Reply structure */
  254 
  255 typedef struct _I2O_UTIL_EVENT_ACK_REPLY {
  256     I2O_MESSAGE_FRAME          StdMessageFrame;
  257     I2O_TRANSACTION_CONTEXT    TransactionContext;
  258     U32                        EventIndicator;
  259     U32                        EventData[1];
  260 } I2O_UTIL_EVENT_ACK_REPLY, *PI2O_UTIL_EVENT_ACK_REPLY;
  261 
  262 
  263 /****************************************************************************/
  264 
  265 /* Event Indicator Mask Flags */
  266 
  267 #define    I2O_EVENT_IND_STATE_CHANGE                  0x80000000
  268 #define    I2O_EVENT_IND_GENERAL_WARNING               0x40000000
  269 #define    I2O_EVENT_IND_CONFIGURATION_FLAG            0x20000000
  270 /* #define         I2O_EVENT_IND_RESERVE_RELEASE               0x10000000 */
  271 #define    I2O_EVENT_IND_LOCK_RELEASE                  0x10000000
  272 #define    I2O_EVENT_IND_CAPABILITY_CHANGE             0x08000000
  273 #define    I2O_EVENT_IND_DEVICE_RESET                  0x04000000
  274 #define    I2O_EVENT_IND_EVENT_MASK_MODIFIED           0x02000000
  275 #define    I2O_EVENT_IND_FIELD_MODIFIED                0x01000000
  276 #define    I2O_EVENT_IND_VENDOR_EVENT                  0x00800000
  277 #define    I2O_EVENT_IND_DEVICE_STATE                  0x00400000
  278 
  279 /* Event Data for generic Events */
  280 
  281 #define    I2O_EVENT_STATE_CHANGE_NORMAL               0x00
  282 #define    I2O_EVENT_STATE_CHANGE_SUSPENDED            0x01
  283 #define    I2O_EVENT_STATE_CHANGE_RESTART              0x02
  284 #define    I2O_EVENT_STATE_CHANGE_NA_RECOVER           0x03
  285 #define    I2O_EVENT_STATE_CHANGE_NA_NO_RECOVER        0x04
  286 #define    I2O_EVENT_STATE_CHANGE_QUIESCE_REQUEST      0x05
  287 #define    I2O_EVENT_STATE_CHANGE_FAILED               0x10
  288 #define    I2O_EVENT_STATE_CHANGE_FAULTED              0x11
  289 
  290 #define    I2O_EVENT_GEN_WARNING_NORMAL                0x00
  291 #define    I2O_EVENT_GEN_WARNING_ERROR_THRESHOLD       0x01
  292 #define    I2O_EVENT_GEN_WARNING_MEDIA_FAULT           0x02
  293 
  294 #define    I2O_EVENT_CAPABILITY_OTHER                  0x01
  295 #define    I2O_EVENT_CAPABILITY_CHANGED                0x02
  296 
  297 #define    I2O_EVENT_SENSOR_STATE_CHANGED              0x01
  298 
  299 
  300 /*  UtilEventRegister Function Message Frame structure */
  301 
  302 typedef struct _I2O_UTIL_EVENT_REGISTER_MESSAGE {
  303     I2O_MESSAGE_FRAME          StdMessageFrame;
  304     I2O_TRANSACTION_CONTEXT    TransactionContext;
  305     U32                        EventMask;
  306 } I2O_UTIL_EVENT_REGISTER_MESSAGE, *PI2O_UTIL_EVENT_REGISTER_MESSAGE;
  307 
  308 /* UtilEventRegister Reply structure */
  309 
  310 typedef struct _I2O_UTIL_EVENT_REGISTER_REPLY {
  311     I2O_MESSAGE_FRAME          StdMessageFrame;
  312     I2O_TRANSACTION_CONTEXT    TransactionContext;
  313     U32                        EventIndicator;
  314     U32                        EventData[1];
  315 } I2O_UTIL_EVENT_REGISTER_REPLY, *PI2O_UTIL_EVENT_REGISTER_REPLY;
  316 
  317 
  318 /****************************************************************************/
  319 
  320 /* UtilLock Function Message Frame structure. */
  321 
  322 typedef struct _I2O_UTIL_LOCK_MESSAGE {
  323     I2O_MESSAGE_FRAME          StdMessageFrame;
  324     I2O_TRANSACTION_CONTEXT    TransactionContext;
  325 } I2O_UTIL_LOCK_MESSAGE, *PI2O_UTIL_LOCK_MESSAGE;
  326 
  327 /****************************************************************************/
  328 
  329 /* UtilLockRelease Function Message Frame structure. */
  330 
  331 typedef struct _I2O_UTIL_LOCK_RELEASE_MESSAGE {
  332     I2O_MESSAGE_FRAME          StdMessageFrame;
  333     I2O_TRANSACTION_CONTEXT    TransactionContext;
  334 } I2O_UTIL_LOCK_RELEASE_MESSAGE, *PI2O_UTIL_LOCK_RELEASE_MESSAGE;
  335 
  336 
  337 /****************************************************************************/
  338 
  339 /* UtilNOP Function Message Frame structure. */
  340 
  341 typedef struct _I2O_UTIL_NOP_MESSAGE {
  342     I2O_MESSAGE_FRAME          StdMessageFrame;
  343 } I2O_UTIL_NOP_MESSAGE, *PI2O_UTIL_NOP_MESSAGE;
  344 
  345 
  346 /****************************************************************************/
  347 
  348 /* UtilParamsGet Message Frame structure. */
  349 
  350 typedef struct _I2O_UTIL_PARAMS_GET_MESSAGE {
  351     I2O_MESSAGE_FRAME          StdMessageFrame;
  352     I2O_TRANSACTION_CONTEXT    TransactionContext;
  353     U32                        OperationFlags;
  354     I2O_SG_ELEMENT             SGL;
  355 } I2O_UTIL_PARAMS_GET_MESSAGE, *PI2O_UTIL_PARAMS_GET_MESSAGE;
  356 
  357 
  358 /****************************************************************************/
  359 
  360 /* UtilParamsSet Message Frame structure. */
  361 
  362 typedef struct _I2O_UTIL_PARAMS_SET_MESSAGE {
  363     I2O_MESSAGE_FRAME          StdMessageFrame;
  364     I2O_TRANSACTION_CONTEXT    TransactionContext;
  365     U32                        OperationFlags;
  366     I2O_SG_ELEMENT             SGL;
  367 } I2O_UTIL_PARAMS_SET_MESSAGE, *PI2O_UTIL_PARAMS_SET_MESSAGE;
  368 
  369 
  370 /****************************************************************************/
  371 
  372 /* UtilReplyFaultNotify Message for Message Failure. */
  373 
  374 typedef struct _I2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE {
  375     I2O_MESSAGE_FRAME          StdMessageFrame;
  376     I2O_TRANSACTION_CONTEXT    TransactionContext;
  377     U8                         LowestVersion;
  378     U8                         HighestVersion;
  379     BF                         Severity:I2O_FAILCODE_SEVERITY_SZ;
  380     BF                         FailureCode:I2O_FAILCODE_CODE_SZ;
  381     BF                         FailingIOP_ID:I2O_IOP_ID_SZ;
  382     BF                         reserved:I2O_RESERVED_4BITS;
  383     BF                         FailingHostUnitID:I2O_UNIT_ID_SZ;
  384     U32                        AgeLimit;
  385 #if I2O_64BIT_CONTEXT
  386     PI2O_MESSAGE_FRAME         OriginalMFA;
  387 #else
  388     PI2O_MESSAGE_FRAME         OriginalMFALowPart;
  389     U32                        OriginalMFAHighPart;  /* Always 0000 */
  390 #endif
  391 } I2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE, *PI2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE;
  392 
  393 
  394 /****************************************************************************/
  395 
  396 /* Device Reserve Function Message Frame structure. */
  397 /* NOTE:  This was previously called the Reserve Message */
  398 
  399 typedef struct _I2O_UTIL_DEVICE_RESERVE_MESSAGE {
  400     I2O_MESSAGE_FRAME          StdMessageFrame;
  401     I2O_TRANSACTION_CONTEXT    TransactionContext;
  402 } I2O_UTIL_DEVICE_RESERVE_MESSAGE, *PI2O_UTIL_DEVICE_RESERVE_MESSAGE;
  403 
  404 
  405 /****************************************************************************/
  406 
  407 /* Device Release Function Message Frame structure. */
  408 /* NOTE:  This was previously called the ReserveRelease Message */
  409 
  410 typedef struct _I2O_UTIL_DEVICE_RELEASE_MESSAGE {
  411     I2O_MESSAGE_FRAME          StdMessageFrame;
  412     I2O_TRANSACTION_CONTEXT    TransactionContext;
  413 } I2O_UTIL_DEVICE_RELEASE_MESSAGE, *PI2O_UTIL_DEVICE_RELEASE_MESSAGE;
  414 
  415 
  416 /****************************************************************************/
  417 
  418 PRAGMA_PACK_POP
  419 PRAGMA_ALIGN_POP
  420 
  421 #endif    /* I2O_UTILITY_HDR  */

Cache object: f1d337ec08ee683c979b62928404894b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.