| 1 | /**************************************************************************
 | 
|---|
| 2 |  *
 | 
|---|
| 3 |  * SOURCE FILE NAME =  RMCALLS.H
 | 
|---|
| 4 |  *
 | 
|---|
| 5 |  * DESCRIPTIVE NAME =  RM function prototypes exported to drivers
 | 
|---|
| 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 | 
 | 
|---|
| 43 | 
 | 
|---|
| 44 | /****************************************************************************/
 | 
|---|
| 45 | /*                                                                          */
 | 
|---|
| 46 | /* Function Prototypes                                                      */
 | 
|---|
| 47 | /*                                                                          */
 | 
|---|
| 48 | /****************************************************************************/
 | 
|---|
| 49 | 
 | 
|---|
| 50 | 
 | 
|---|
| 51 | 
 | 
|---|
| 52 | #ifndef __RM_CALLS__
 | 
|---|
| 53 | #define __RM_CALLS__
 | 
|---|
| 54 | 
 | 
|---|
| 55 | #include <rmbase.h>
 | 
|---|
| 56 | #include <rmioctl.h>
 | 
|---|
| 57 | #ifdef __32BIT__
 | 
|---|
| 58 | #define CDECL _Optlink
 | 
|---|
| 59 | #else
 | 
|---|
| 60 | #ifndef APIRET
 | 
|---|
| 61 | #define APIRET USHORT
 | 
|---|
| 62 | #endif
 | 
|---|
| 63 | #ifndef CDECL
 | 
|---|
| 64 | #define CDECL _cdecl
 | 
|---|
| 65 | #endif
 | 
|---|
| 66 | #endif
 | 
|---|
| 67 | 
 | 
|---|
| 68 | #ifndef __32BIT__
 | 
|---|
| 69 | typedef USHORT (_cdecl FAR *PFNRM)();
 | 
|---|
| 70 | #endif
 | 
|---|
| 71 | 
 | 
|---|
| 72 | APIRET CDECL FAR RMCreateDriver(PDRIVERSTRUCT pDriverStruct,
 | 
|---|
| 73 |                                  PHDRIVER phDriver);
 | 
|---|
| 74 | 
 | 
|---|
| 75 | APIRET CDECL FAR RMDestroyDriver(HDRIVER hDriver);
 | 
|---|
| 76 | 
 | 
|---|
| 77 | APIRET CDECL FAR RMCreateAdapter(HDRIVER hDriver,
 | 
|---|
| 78 |                                   PHADAPTER phAdapter,
 | 
|---|
| 79 |                                   PADAPTERSTRUCT pAdapterStruct,
 | 
|---|
| 80 |                                   HDEVICE hDevice,
 | 
|---|
| 81 |                                   PAHRESOURCE pahResource);
 | 
|---|
| 82 | 
 | 
|---|
| 83 | APIRET CDECL FAR RMDestroyAdapter(HDRIVER hDriver,
 | 
|---|
| 84 |                                    HADAPTER hAdapter);
 | 
|---|
| 85 | 
 | 
|---|
| 86 | 
 | 
|---|
| 87 | APIRET CDECL FAR RMCreateDevice(HDRIVER hDriver,
 | 
|---|
| 88 |                                  PHDEVICE phDevice,
 | 
|---|
| 89 |                                  PDEVICESTRUCT pDeviceStruct,
 | 
|---|
| 90 |                                  HADAPTER hAdapter,
 | 
|---|
| 91 |                                  PAHRESOURCE pahResource);
 | 
|---|
| 92 | 
 | 
|---|
| 93 | APIRET CDECL FAR RMDestroyDevice(HDRIVER hDriver,
 | 
|---|
| 94 |                                    HDEVICE hDevice);
 | 
|---|
| 95 | 
 | 
|---|
| 96 | APIRET CDECL FAR RMAllocResource(HDRIVER hDriver,
 | 
|---|
| 97 |                                   PHRESOURCE phResource,
 | 
|---|
| 98 |                                   PRESOURCESTRUCT pResourceStruct);
 | 
|---|
| 99 | 
 | 
|---|
| 100 | 
 | 
|---|
| 101 | APIRET CDECL FAR RMDeallocResource(HDRIVER hDriver,
 | 
|---|
| 102 |                                     HRESOURCE hResource);
 | 
|---|
| 103 | 
 | 
|---|
| 104 | APIRET CDECL FAR RMClaimResources(HDRIVER hDriver,
 | 
|---|
| 105 |                                    HADAPTER hAdapter);
 | 
|---|
| 106 | 
 | 
|---|
| 107 | APIRET CDECL FAR RMReleaseResources(HDRIVER hDriver,
 | 
|---|
| 108 |                                     HADAPTER hAdapter);
 | 
|---|
| 109 | 
 | 
|---|
| 110 | APIRET CDECL FAR RMCreateLDev(HDRIVER hDriver,
 | 
|---|
| 111 |                                 PHLDEV  phLDev,
 | 
|---|
| 112 |                                 HDEVICE hDevice,
 | 
|---|
| 113 |                                 PLDEVSTRUCT pLDevStruct);
 | 
|---|
| 114 | 
 | 
|---|
| 115 | APIRET CDECL FAR RMDestroyLDev(HDRIVER hDriver,
 | 
|---|
| 116 |                                  HLDEV   hLDev);
 | 
|---|
| 117 | 
 | 
|---|
| 118 | APIRET CDECL FAR RMCreateSysName(HDRIVER hDriver,
 | 
|---|
| 119 |                                   PHSYSNAME phSysName,
 | 
|---|
| 120 |                                   HLDEV hLDev,
 | 
|---|
| 121 |                                   PSYSNAMESTRUCT pSysNameStruct);
 | 
|---|
| 122 | 
 | 
|---|
| 123 | APIRET CDECL FAR RMDestroySysName(HDRIVER hDriver,
 | 
|---|
| 124 |                                    HSYSNAME   hLDev);
 | 
|---|
| 125 | 
 | 
|---|
| 126 | APIRET CDECL FAR RMADDToHDEVICE(PHDEVICE phDevice,
 | 
|---|
| 127 |                                  USHORT ADDHandle,
 | 
|---|
| 128 |                                  USHORT UnitHandle);
 | 
|---|
| 129 | 
 | 
|---|
| 130 | APIRET CDECL FAR RMKeyToHandleList(RMHANDLE    hStartNode,
 | 
|---|
| 131 |                                     PSZ         SearchKey,
 | 
|---|
| 132 |                                     PHANDLELIST pHandleList);
 | 
|---|
| 133 | 
 | 
|---|
| 134 | APIRET CDECL FAR RMHandleToType(RMHANDLE  hHandle,
 | 
|---|
| 135 |                                  PUSHORT   pHandleType );
 | 
|---|
| 136 | 
 | 
|---|
| 137 | APIRET CDECL FAR RMHandleToParent(RMHANDLE   hHandle,
 | 
|---|
| 138 |                                    PRMHANDLE  phParent );
 | 
|---|
| 139 | 
 | 
|---|
| 140 | APIRET CDECL FAR RMUpdateAdjunct(HDRIVER  hDriver,
 | 
|---|
| 141 |                                   HDEVICE  hDevice,
 | 
|---|
| 142 |                                   USHORT   AdjunctIndex,
 | 
|---|
| 143 |                                   PADJUNCT pAdjunct   );
 | 
|---|
| 144 | 
 | 
|---|
| 145 | APIRET CDECL FAR RMAdjToHandleList(PADJUNCT       pAdj,
 | 
|---|
| 146 |                                     HADAPTER       hStartNode,
 | 
|---|
| 147 |                                     PADJHANDLELIST pAdjHndList     );
 | 
|---|
| 148 | 
 | 
|---|
| 149 | APIRET CDECL FAR RMHDevToHLDev( HDEVICE  hDevice,
 | 
|---|
| 150 |                                  HLDEV    hStartLDev,
 | 
|---|
| 151 |                                  PHLDEV   phLDev );
 | 
|---|
| 152 | 
 | 
|---|
| 153 | APIRET CDECL FAR RMResToHandleList(PRESOURCESTRUCT   pRes,
 | 
|---|
| 154 |                                     PHANDLELIST       pHndList );
 | 
|---|
| 155 | 
 | 
|---|
| 156 | APIRET CDECL FAR RMActivateAdapter(HDRIVER hDriver,
 | 
|---|
| 157 |                                     HADAPTER hAdapter);
 | 
|---|
| 158 | 
 | 
|---|
| 159 | APIRET CDECL FAR RMDeactivateAdapter(HDRIVER hDriver,
 | 
|---|
| 160 |                                       HADAPTER hAdapter);
 | 
|---|
| 161 | 
 | 
|---|
| 162 | APIRET CDECL FAR RMCreateLinkDevice(HDRIVER  hDriver,
 | 
|---|
| 163 |                                      PHDEVICE phLinkDevice,
 | 
|---|
| 164 |                                      PDEVICESTRUCT pDeviceStruct,
 | 
|---|
| 165 |                                      PAHDEVICES pahDevices);
 | 
|---|
| 166 | 
 | 
|---|
| 167 | APIRET CDECL FAR RMModifyResources(HDRIVER   hDriver,
 | 
|---|
| 168 |                                     HADAPTER  hAdapter,
 | 
|---|
| 169 |                                     USHORT    ModifyAction,
 | 
|---|
| 170 |                                     HRESOURCE hResource);
 | 
|---|
| 171 | 
 | 
|---|
| 172 | 
 | 
|---|
| 173 | APIRET CDECL FAR RMGetNodeInfo(RMHANDLE         RMHandle,
 | 
|---|
| 174 |                                 PRM_GETNODE_DATA pNodeInfo,
 | 
|---|
| 175 |                                 USHORT           BufferSize);
 | 
|---|
| 176 | 
 | 
|---|
| 177 | 
 | 
|---|
| 178 | APIRET CDECL FAR RMParseScsiInquiry(PVOID   pInquiry,
 | 
|---|
| 179 |                                      PSZ     pDescBuffer,
 | 
|---|
| 180 |                                      USHORT  BufferSize);
 | 
|---|
| 181 | 
 | 
|---|
| 182 | 
 | 
|---|
| 183 | APIRET CDECL FAR RMCreateDetected(HDRIVER hDriver,
 | 
|---|
| 184 |                                   PHDETECTED phDetected,
 | 
|---|
| 185 |                                   PDETECTEDSTRUCT pDetectedStruct,
 | 
|---|
| 186 |                                   PAHRESOURCE pahResource);
 | 
|---|
| 187 | 
 | 
|---|
| 188 | APIRET CDECL FAR RMDestroyDetected(HDRIVER hDriver,
 | 
|---|
| 189 |                                    HDETECTED hDetected);
 | 
|---|
| 190 | 
 | 
|---|
| 191 | APIRET CDECL FAR RMDevIDToHandleList(IDTYPE IDType,
 | 
|---|
| 192 |                                      DEVID DeviceID,
 | 
|---|
| 193 |                                      DEVID FunctionID,
 | 
|---|
| 194 |                                      DEVID CompatibleID,
 | 
|---|
| 195 |                                                                                                  VENDID VendorID,
 | 
|---|
| 196 |                                                                                                  SERNUM SerialNumber,
 | 
|---|
| 197 |                                      SEARCHIDFLAGS SearchFlags,
 | 
|---|
| 198 |                                      HDETECTED hStartNode,
 | 
|---|
| 199 |                                      PHANDLELIST pHndList);
 | 
|---|
| 200 | 
 | 
|---|
| 201 | APIRET CDECL FAR RMHandleToResourceHandleList(RMHANDLE hHandle,
 | 
|---|
| 202 |                                               PHANDLELIST pHndList);
 | 
|---|
| 203 | 
 | 
|---|
| 204 | APIRET CDECL FAR RMModifyNodeFlags(HDRIVER hDriver,
 | 
|---|
| 205 |                                    RMHANDLE hNode,
 | 
|---|
| 206 |                                    USHORT Flags);
 | 
|---|
| 207 | 
 | 
|---|
| 208 | APIRET CDECL FAR RMConvertID(PULONG pId, PSZ String, USHORT Direction);
 | 
|---|
| 209 | 
 | 
|---|
| 210 | APIRET CDECL FAR RMGetCommandLine(PSZ ConfigFileSpec,
 | 
|---|
| 211 |                                   PSZ ConfigParms,
 | 
|---|
| 212 |                                   PUSHORT ConfigParmsLen,
 | 
|---|
| 213 |                                   USHORT Index,
 | 
|---|
| 214 |                                   USHORT DDtype);
 | 
|---|
| 215 | 
 | 
|---|
| 216 | APIRET CDECL FAR RMGetVersion(PUSHORT pMajorVersion,
 | 
|---|
| 217 |                               PUSHORT pMinorVersion);
 | 
|---|
| 218 | 
 | 
|---|
| 219 | APIRET CDECL FAR RMSetSnoopLevel(USHORT SnoopLevel,
 | 
|---|
| 220 |                                  USHORT SnoopFlags);
 | 
|---|
| 221 | 
 | 
|---|
| 222 | APIRET CDECL FAR RMSaveDetectedData(USHORT SaveFlags);
 | 
|---|
| 223 | 
 | 
|---|
| 224 | APIRET CDECL FAR RMDeleteDetectedData(USHORT DeleteFlags);
 | 
|---|
| 225 | 
 | 
|---|
| 226 | APIRET CDECL FAR RMGetSnoopLevel(PUSHORT SnoopLevel,
 | 
|---|
| 227 |                                  USHORT  SnoopFlags);
 | 
|---|
| 228 | 
 | 
|---|
| 229 | 
 | 
|---|
| 230 | 
 | 
|---|
| 231 | #ifndef __32BIT__
 | 
|---|
| 232 | /*******************************************************/
 | 
|---|
| 233 | /* The alloc_text pragma allows steering of a function */
 | 
|---|
| 234 | /* to a specified segment.                             */
 | 
|---|
| 235 | /* To override the names of these segments place a     */
 | 
|---|
| 236 | /* #define RMCode MY_SEGMENT_NAME                      */
 | 
|---|
| 237 | /*******************************************************/
 | 
|---|
| 238 | 
 | 
|---|
| 239 | 
 | 
|---|
| 240 | #pragma alloc_text(RMCode,RMCreateDriver)
 | 
|---|
| 241 | #pragma alloc_text(RMCode,RMDestroyDriver)
 | 
|---|
| 242 | 
 | 
|---|
| 243 | #pragma alloc_text(RMCode,RMCreateAdapter)
 | 
|---|
| 244 | #pragma alloc_text(RMCode,RMDestroyAdapter)
 | 
|---|
| 245 | 
 | 
|---|
| 246 | #pragma alloc_text(RMCode,RMCreateDevice)
 | 
|---|
| 247 | #pragma alloc_text(RMCode,RMDestroyDevice)
 | 
|---|
| 248 | 
 | 
|---|
| 249 | #pragma alloc_text(RMCode,RMAllocResource)
 | 
|---|
| 250 | #pragma alloc_text(RMCode,RMDeallocResource)
 | 
|---|
| 251 | 
 | 
|---|
| 252 | #pragma alloc_text(RMCode,RMClaimResources)
 | 
|---|
| 253 | #pragma alloc_text(RMCode,RMReleaseResources)
 | 
|---|
| 254 | 
 | 
|---|
| 255 | #pragma alloc_text(RMCode,RMCreateLDev)
 | 
|---|
| 256 | #pragma alloc_text(RMCode,RMDestroyLDev)
 | 
|---|
| 257 | 
 | 
|---|
| 258 | #pragma alloc_text(RMCode,RMCreateSysName)
 | 
|---|
| 259 | #pragma alloc_text(RMCode,RMDestroySysName)
 | 
|---|
| 260 | 
 | 
|---|
| 261 | #pragma alloc_text(RMCode,RMADDToHDEVICE)
 | 
|---|
| 262 | #pragma alloc_text(RMCode,RMActivateAdapter)
 | 
|---|
| 263 | #pragma alloc_text(RMCode,RMDeactivateAdapter)
 | 
|---|
| 264 | 
 | 
|---|
| 265 | #pragma alloc_text(RMCode,RMKeyToHandleList)
 | 
|---|
| 266 | #pragma alloc_text(RMCode,RMHandleToType)
 | 
|---|
| 267 | #pragma alloc_text(RMCode,RMHandleToParent)
 | 
|---|
| 268 | 
 | 
|---|
| 269 | #pragma alloc_text(RMCode,RMCreateLinkDevice)
 | 
|---|
| 270 | #pragma alloc_text(RMCode,RMModifyResources)
 | 
|---|
| 271 | #pragma alloc_text(RMCode,RMParseScsiInquiry)
 | 
|---|
| 272 | 
 | 
|---|
| 273 | #pragma alloc_text(RMCode,RMUpdateAdjunct)
 | 
|---|
| 274 | #pragma alloc_text(RMCode,RMAdjToHandleList)
 | 
|---|
| 275 | #pragma alloc_text(RMCode,RMHDevToHLDev)
 | 
|---|
| 276 | #pragma alloc_text(RMCode,RMResToHandleList)
 | 
|---|
| 277 | #pragma alloc_text(RMCode,RMGetNodeInfo)
 | 
|---|
| 278 | 
 | 
|---|
| 279 | #pragma alloc_text(RMCode,RMCreateDetected)
 | 
|---|
| 280 | #pragma alloc_text(RMCode,RMDestroyDetected)
 | 
|---|
| 281 | #pragma alloc_text(RMCode,RMDevIDToHandleList)
 | 
|---|
| 282 | #pragma alloc_text(RMCode,RMHandleToResourceHandleList)
 | 
|---|
| 283 | #pragma alloc_text(RMCode,RMModifyNodeFlags)
 | 
|---|
| 284 | #pragma alloc_text(RMCode,RMConvertID)
 | 
|---|
| 285 | #pragma alloc_text(RMCode,RMGetCommandLine)
 | 
|---|
| 286 | #pragma alloc_text(RMCode,RMGetVersion)
 | 
|---|
| 287 | 
 | 
|---|
| 288 | #pragma alloc_text(RMCode,RMSetSnoopLevel)
 | 
|---|
| 289 | #pragma alloc_text(RMCode,RMSaveDetectedData)
 | 
|---|
| 290 | #pragma alloc_text(RMCode,RMDeleteDetectedData)
 | 
|---|
| 291 | #endif
 | 
|---|
| 292 | 
 | 
|---|
| 293 | /****************************************************************************/
 | 
|---|
| 294 | /*                                                                          */
 | 
|---|
| 295 | /* Resource Manager Return Codes                                            */
 | 
|---|
| 296 | /*                                                                          */
 | 
|---|
| 297 | /****************************************************************************/
 | 
|---|
| 298 | #define RMRC_SUCCESS               0x0000
 | 
|---|
| 299 | #define RMRC_NOTINITIALIZED        0x0001
 | 
|---|
| 300 | #define RMRC_BAD_DRIVERHANDLE      0x0002
 | 
|---|
| 301 | #define RMRC_BAD_ADAPTERHANDLE     0x0003
 | 
|---|
| 302 | #define RMRC_BAD_DEVICEHANDLE      0x0004
 | 
|---|
| 303 | #define RMRC_BAD_RESOURCEHANDLE    0x0005
 | 
|---|
| 304 | #define RMRC_BAD_LDEVHANDLE        0x0006
 | 
|---|
| 305 | #define RMRC_BAD_SYSNAMEHANDLE     0x0007
 | 
|---|
| 306 | #define RMRC_BAD_DEVHELP           0x0008
 | 
|---|
| 307 | #define RMRC_NULL_POINTER          0x0009
 | 
|---|
| 308 | #define RMRC_NULL_STRINGS          0x000a
 | 
|---|
| 309 | #define RMRC_BAD_VERSION           0x000b
 | 
|---|
| 310 | #define RMRC_RES_ALREADY_CLAIMED   0x000c
 | 
|---|
| 311 | #define RMRC_DEV_ALREADY_CLAIMED   0x000d
 | 
|---|
| 312 | #define RMRC_INVALID_PARM_VALUE    0x000e
 | 
|---|
| 313 | #define RMRC_OUT_OF_MEMORY         0x000f
 | 
|---|
| 314 | #define RMRC_SEARCH_FAILED         0x0010
 | 
|---|
| 315 | #define RMRC_BUFFER_TOO_SMALL      0x0011
 | 
|---|
| 316 | #define RMRC_GENERAL_FAILURE       0x0012
 | 
|---|
| 317 | #define RMRC_IRQ_ENTRY_ILLEGAL     0x0013
 | 
|---|
| 318 | #define RMRC_NOT_IMPLEMENTED       0x0014
 | 
|---|
| 319 | #define RMRC_NOT_INSTALLED         0x0015
 | 
|---|
| 320 | #define RMRC_BAD_DETECTHANDLE      0x0016
 | 
|---|
| 321 | #define RMRC_BAD_RMHANDLE          0x0017
 | 
|---|
| 322 | #define RMRC_BAD_FLAGS             0x0018
 | 
|---|
| 323 | #define RMRC_NO_DETECTED_DATA      0x0019
 | 
|---|
| 324 | 
 | 
|---|
| 325 | 
 | 
|---|
| 326 | /*********************/
 | 
|---|
| 327 | /*  RM Types         */
 | 
|---|
| 328 | /*********************/
 | 
|---|
| 329 | 
 | 
|---|
| 330 | typedef struct {
 | 
|---|
| 331 |    UCHAR      MajorVersion;
 | 
|---|
| 332 |    UCHAR      MinorVersion;
 | 
|---|
| 333 |    USHORT     NumRSMEntries;
 | 
|---|
| 334 | } RSMVERSTRUCT, FAR *PRSMVERSTRUCT, NEAR *NPRSMVERSTRUCT;
 | 
|---|
| 335 | 
 | 
|---|
| 336 | 
 | 
|---|
| 337 | #endif /* __RM_CALLS__ */
 | 
|---|