| 1 | /**************************************************************************
 | 
|---|
| 2 |  *
 | 
|---|
| 3 |  * SOURCE FILE NAME =  RMIOCTL.H
 | 
|---|
| 4 |  *
 | 
|---|
| 5 |  * DESCRIPTIVE NAME =  RM defines and structures related to RM IOCTLs
 | 
|---|
| 6 |  *
 | 
|---|
| 7 |  *
 | 
|---|
| 8 |  * Copyright : COPYRIGHT IBM CORPORATION, 1994, 1995
 | 
|---|
| 9 |  *             LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
 | 
|---|
| 10 |  *             REFER TO COPYRIGHT INSTRUCTION FORM#G120-2083
 | 
|---|
| 11 |  *             RESTRICTED MATERIALS OF IBM
 | 
|---|
| 12 |  *             IBM CONFIDENTIAL
 | 
|---|
| 13 |  *
 | 
|---|
| 14 |  * VERSION = V1.01
 | 
|---|
| 15 |  *
 | 
|---|
| 16 |  * DATE
 | 
|---|
| 17 |  *
 | 
|---|
| 18 |  * DESCRIPTION :
 | 
|---|
| 19 |  *
 | 
|---|
| 20 |  * Purpose:
 | 
|---|
| 21 |  *
 | 
|---|
| 22 |  *
 | 
|---|
| 23 |  *
 | 
|---|
| 24 |  * FUNCTIONS  :
 | 
|---|
| 25 |  *
 | 
|---|
| 26 |  * NOTES
 | 
|---|
| 27 |  *
 | 
|---|
| 28 |  *
 | 
|---|
| 29 |  * STRUCTURES
 | 
|---|
| 30 |  *
 | 
|---|
| 31 |  * EXTERNAL REFERENCES
 | 
|---|
| 32 |  *
 | 
|---|
| 33 |  *
 | 
|---|
| 34 |  *
 | 
|---|
| 35 |  * EXTERNAL FUNCTIONS
 | 
|---|
| 36 |  *
 | 
|---|
| 37 |  * CHANGE ACTIVITY =
 | 
|---|
| 38 |  *   DATE      FLAG        APAR   CHANGE DESCRIPTION
 | 
|---|
| 39 |  *   --------  ----------  -----  --------------------------------------
 | 
|---|
| 40 |  *
 | 
|---|
| 41 |  ****************************************************************************/
 | 
|---|
| 42 | #ifndef __RM_HEADER__
 | 
|---|
| 43 | #include "rmbase.h"
 | 
|---|
| 44 | #endif
 | 
|---|
| 45 | 
 | 
|---|
| 46 | #ifndef __RM_IOCTL__
 | 
|---|
| 47 | #define __RM_IOCTL__
 | 
|---|
| 48 | 
 | 
|---|
| 49 | #define CAT_RM                    0x80      /* Resource Manager Category  */
 | 
|---|
| 50 | #define FUNC_RM_GET_NODEINFO      0x01      /* Get RM Structure           */
 | 
|---|
| 51 | #define FUNC_RM_ENUM_NODES        0x02      /* Get Physical Topology      */
 | 
|---|
| 52 | #define FUNC_RM_ENUM_DRIVERS      0x03      /* Get DriverHandles          */
 | 
|---|
| 53 | 
 | 
|---|
| 54 | 
 | 
|---|
| 55 | /******************************************/
 | 
|---|
| 56 | /* RM_NODE   Ring 3 Super Structure       */
 | 
|---|
| 57 | /******************************************/
 | 
|---|
| 58 | 
 | 
|---|
| 59 | typedef struct {
 | 
|---|
| 60 |    ULONG          Count;
 | 
|---|
| 61 |    RESOURCESTRUCT Resource[1];
 | 
|---|
| 62 | } RESOURCELIST, FAR *PRESOURCELIST, NEAR *NPRESOURCELIST;
 | 
|---|
| 63 | 
 | 
|---|
| 64 | typedef struct {
 | 
|---|
| 65 | 
 | 
|---|
| 66 |    ULONG             VersionInfo;
 | 
|---|
| 67 |    ULONG             NodeType;
 | 
|---|
| 68 |    RMHANDLE          DriverHandle;
 | 
|---|
| 69 |    union {
 | 
|---|
| 70 |      PADAPTERSTRUCT  pAdapterNode;
 | 
|---|
| 71 |      PDEVICESTRUCT   pDeviceNode;
 | 
|---|
| 72 |      PLDEVSTRUCT     pLDevNode;
 | 
|---|
| 73 |      PSYSNAMESTRUCT  pSysNameNode;
 | 
|---|
| 74 |      PDRIVERSTRUCT   pDriverNode;
 | 
|---|
| 75 |      PDETECTEDSTRUCT pDetectedNode;
 | 
|---|
| 76 |      PRESOURCESTRUCT pResourceNode;
 | 
|---|
| 77 |    };
 | 
|---|
| 78 |    PRESOURCELIST     pResourceList;
 | 
|---|
| 79 | 
 | 
|---|
| 80 | } RM_NODE, FAR *PRM_NODE, NEAR *NPRM_NODE;
 | 
|---|
| 81 | 
 | 
|---|
| 82 | /* pRM_NODE->NodeType */
 | 
|---|
| 83 | 
 | 
|---|
| 84 | #define RMTYPE_ADAPTER    0x0000
 | 
|---|
| 85 | #define RMTYPE_DEVICE     0x0001
 | 
|---|
| 86 | #define RMTYPE_LDEV       0x0002
 | 
|---|
| 87 | #define RMTYPE_SYSNAME    0x0003
 | 
|---|
| 88 | #define RMTYPE_DRIVER     0x0004
 | 
|---|
| 89 | #define RMTYPE_DETECTED   0x0005
 | 
|---|
| 90 | #define RMTYPE_RESOURCE   0x0006
 | 
|---|
| 91 | 
 | 
|---|
| 92 | /**************************/
 | 
|---|
| 93 | /* FUNC_RM_GETNODEINFO    */
 | 
|---|
| 94 | /**************************/
 | 
|---|
| 95 | 
 | 
|---|
| 96 | typedef struct {
 | 
|---|
| 97 |    RMHANDLE RMHandle;
 | 
|---|
| 98 |    ULONG    Linaddr;
 | 
|---|
| 99 | } RM_GETNODE_PARM, FAR *PRM_GETNODE_PARM, NEAR *NPRM_GETNODE_PARM;
 | 
|---|
| 100 | 
 | 
|---|
| 101 | typedef struct {
 | 
|---|
| 102 |    ULONG          RMNodeSize;
 | 
|---|
| 103 |    RM_NODE        RMNode;
 | 
|---|
| 104 | } RM_GETNODE_DATA, FAR *PRM_GETNODE_DATA, NEAR *NPRM_GETNODE_DATA;
 | 
|---|
| 105 | 
 | 
|---|
| 106 | 
 | 
|---|
| 107 | #define MAX_RESOURCES  10
 | 
|---|
| 108 | #define MAX_TEXT_DATA 128
 | 
|---|
| 109 | 
 | 
|---|
| 110 | #define MAX_RM_NODE_SIZE ( sizeof(RM_NODE) +                          \
 | 
|---|
| 111 |                            sizeof(ADAPTERSTRUCT)  + MAX_TEXT_DATA +  \
 | 
|---|
| 112 |                            sizeof(DRIVERSTRUCT)   + MAX_TEXT_DATA +  \
 | 
|---|
| 113 |                            sizeof(RESOURCESTRUCT) * MAX_RESOURCES       )
 | 
|---|
| 114 | 
 | 
|---|
| 115 | 
 | 
|---|
| 116 | /**************************/
 | 
|---|
| 117 | /* FUNC_RM_ENUM_NODE      */
 | 
|---|
| 118 | /**************************/
 | 
|---|
| 119 | 
 | 
|---|
| 120 | typedef struct {
 | 
|---|
| 121 |    USHORT   Command;       /* Size of Data Packet      */
 | 
|---|
| 122 | } RM_ENUMNODES_PARM, FAR *PRM_ENUMNODES_PARM, NEAR *NPRM_ENUMNODES_PARM;
 | 
|---|
| 123 | 
 | 
|---|
| 124 | /* pRM_ENUMNODES_PARM->Command */
 | 
|---|
| 125 | #define RM_COMMAND_PHYS    0
 | 
|---|
| 126 | #define RM_COMMAND_LOG     1
 | 
|---|
| 127 | #define RM_COMMAND_DRVR    2
 | 
|---|
| 128 | #define RM_COMMAND_PREVIOUS_DETECT  3
 | 
|---|
| 129 | #define RM_COMMAND_CURRENT_DETECT   4
 | 
|---|
| 130 | 
 | 
|---|
| 131 | typedef struct {
 | 
|---|
| 132 |    RMHANDLE RMHandle;
 | 
|---|
| 133 |    ULONG    Depth;
 | 
|---|
| 134 | } NODEENTRY, FAR *PNODEENTRY, NEAR *NPNODEENTRY;
 | 
|---|
| 135 | 
 | 
|---|
| 136 | typedef struct {
 | 
|---|
| 137 |    ULONG     NumEntries;        /* Number of Topology Entries       */
 | 
|---|
| 138 |    NODEENTRY NodeEntry[1];      /* First Entry in Map of Nodes      */
 | 
|---|
| 139 | } RM_ENUMNODES_DATA, FAR *PRM_ENUMNODES_DATA, NEAR *NPRM_ENUMNODES_DATA;
 | 
|---|
| 140 | 
 | 
|---|
| 141 | #define MAX_ENUM_SIZE ( sizeof(NODEENTRY) * 255 + sizeof(ULONG))
 | 
|---|
| 142 | 
 | 
|---|
| 143 | 
 | 
|---|
| 144 | #endif  /* __RM_IOCTL__ */
 | 
|---|