OpenClovis Logo

clCpmApi.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2012 OpenClovis Solutions Inc. All Rights Reserved.
3  *
4  * This file is available under a commercial license from the
5  * copyright holder or the GNU General Public License Version 2.0.
6  *
7  * The source code for this program is not published or otherwise
8  * divested of its trade secrets, irrespective of what has been
9  * deposited with the U.S. Copyright office.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * For more information, see the file COPYING provided with this
17  * material.
18  */
19 
31 #ifndef _CL_CPM_API_H_
32 #define _CL_CPM_API_H_
33 
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38 
39 #include <clCommon.h>
40 #include <clCommonErrors.h>
41 #include <clCntApi.h>
42 #include <clOsalApi.h>
43 #include <clEoApi.h>
44 #include <clTimerApi.h>
45 #include <clCksmApi.h>
46 #include <clIocApi.h>
47 #include <clRmdApi.h>
48 #include <clIocApiExt.h>
49 
50 #include <clCpmConfigApi.h>
51 #include <clCpmErrors.h>
52 #include <clAmsTypes.h>
53 
60 #define CL_CPM_RELEASE_CODE 'B'
61 
64 #define CL_CPM_MAJOR_VERSION 0x01
65 
68 #define CL_CPM_MINOR_VERSION 0x01
69 
75 #define CL_CPM_EVENT_CHANNEL_NAME "CPM_EVENT_CHANNEL"
76 
80 #define CL_CPM_NODE_EVENT_CHANNEL_NAME "CPM_NODE_EVENT_CHANNEL"
81 
86 #define CL_CPM_EO_ALIVE (ClUint32T)0
87 
92 #define CL_CPM_EO_DEAD (ClUint32T)0xFFFFFFF
93 
97 #define CL_CPM_IOC_SLOT_BITS 16
98 #define CL_CPM_IOC_SLOT_BITS_HEX 0x0000ffff
99 
103 #define CL_CPM_IOC_ADDRESS_GET(myCh, mySl, address) \
104  (address) = (myCh) << CL_CPM_IOC_SLOT_BITS; \
105  (address) |= (mySl);
106 
110 #define CL_CPM_IOC_ADDRESS_SLOT_GET(address, mySl) \
111  (mySl) = (address) & CL_CPM_IOC_SLOT_BITS_HEX;
112 
116 #define CL_CPM_IOC_ADDRESS_CHASSIS_GET(address, myCh) \
117  (myCh) = (address) >> CL_CPM_IOC_SLOT_BITS;
118 
124 typedef ClHandleT ClCpmHandleT;
125 
130 #define ClCpmSchedFeedBackT ClEoSchedFeedBackT
131 
135 #define CL_CPM_COMP_ARRIVAL_PATTERN (1 << 0)
136 
139 #define CL_CPM_COMP_DEPART_PATTERN (1 << 1)
140 
143 #define CL_CPM_COMP_DEATH_PATTERN (1 << 2)
144 
147 #define CL_CPM_NODE_ARRIVAL_PATTERN (1 << 3)
148 
151 #define CL_CPM_NODE_DEPART_PATTERN (1 << 4)
152 
155 #define CL_CPM_NODE_DEATH_PATTERN (1 << 5)
156 
157 
162 typedef enum
163 {
168 
173 
179 
180 
185 typedef enum
186 {
201 
205 typedef struct
206 {
218  ClUint32T compId;
240 
245 typedef struct
246 {
262 
263 /*
264  * Comp CSI data fetched from clCpmCompCSIList API
265  */
266 typedef struct ClCpmCompCSI
267 {
268  ClAmsHAStateT haState;
269  ClAmsCSIDescriptorT csiDescriptor;
270 }ClCpmCompCSIT;
271 
272 
273 typedef struct ClCpmCompCSIRef
274 {
275  ClUint32T numCSIs;
276  ClCpmCompCSIT *pCSIList;
277 }ClCpmCompCSIRefT;
278 
282 typedef struct ClCpmCompSpecInfo
283 {
288  ClUint32T numArgs;
289  ClCharT **args;
290 
294  ClUint32T period;
295  ClUint32T maxDuration;
296  ClAmsLocalRecoveryT recovery;
297 
299 
318 typedef ClRcT (*ClCpmHealthCheckCallbackT)(CL_IN ClInvocationT invocation,
319  CL_IN const ClNameT *pCompName,
320  CL_IN ClAmsCompHealthcheckKeyT
321  *pHealthCheckKey);
322 
333 typedef ClRcT (*ClCpmTerminateCallbackT) (CL_IN ClInvocationT invocation,
334  CL_IN const ClNameT *pCompName);
335 
354 typedef ClRcT (*ClCpmCSISetCallbackT) (CL_IN ClInvocationT invocation,
355  CL_IN const ClNameT *pCompName,
356  CL_IN ClAmsHAStateT haState,
357  CL_IN ClAmsCSIDescriptorT csiDescriptor);
358 
377 typedef ClRcT (*ClCpmCSIRmvCallbackT) (CL_IN ClInvocationT invocation,
378  CL_IN const ClNameT *pCompName,
379  CL_IN const ClNameT *pCsiName,
380  CL_IN ClAmsCSIFlagsT csiFlags);
381 
401 typedef
403  CL_IN ClAmsPGNotificationBufferT
404  *pNotificationBuffer,
405  CL_IN ClUint32T numberOfMembers,
406  CL_IN ClUint32T error);
407 
421  invocation,
422  CL_IN const ClNameT
423  *pProxiedCompName);
424 
438  invocation,
439  CL_IN const ClNameT
440  *pProxiedCompName);
441 
455  CL_IN ClPtrT pArg,
456  CL_IN ClIocAddressT *pAddress);
457 
462 typedef struct
463 {
497 
528 extern ClRcT clCpmClientInitialize(CL_OUT ClCpmHandleT *pCpmHandle,
529  CL_IN const ClCpmCallbacksT *pCallback,
530  CL_INOUT ClVersionT *pVersion);
531 
558 extern ClRcT clCpmClientFinalize(CL_IN ClCpmHandleT cpmHandle);
559 
593 extern ClRcT clCpmSelectionObjectGet(CL_IN ClCpmHandleT cpmHandle,
594  CL_OUT ClSelectionObjectT
595  *pSelectionObject);
596 
621 extern ClRcT clCpmDispatch(CL_IN ClCpmHandleT cpmHandle,
622  CL_OUT ClDispatchFlagsT dispatchFlags);
623 
657 extern ClRcT clCpmComponentRegister(CL_IN ClCpmHandleT cpmHandle,
658  CL_IN const ClNameT *pCompName,
659  CL_IN const ClNameT *pProxyCompName);
660 
696 extern ClRcT clCpmComponentUnregister(CL_IN ClCpmHandleT cpmHandle,
697  CL_IN const ClNameT *pCompName,
698  CL_IN const ClNameT *pProxyCompName);
699 
728 extern ClRcT clCpmComponentNameGet(CL_IN ClCpmHandleT cpmHandle,
729  CL_OUT ClNameT *pCompName);
730 
731 extern ClRcT clCpmComponentDNNameGet(CL_IN ClCpmHandleT cpmHandle,
732  CL_OUT ClNameT *pCompName,
733  CL_OUT ClNameT *pDNName);
734 
766 extern ClRcT clCpmResponse(CL_IN ClCpmHandleT cpmHandle,
767  CL_IN ClInvocationT invocation,
768  CL_IN ClRcT rc);
769 
804 extern ClRcT clCpmHAStateGet(CL_IN ClCpmHandleT cpmHandle,
805  CL_IN ClNameT *compName,
806  CL_IN ClNameT *csiName,
807  CL_OUT ClAmsHAStateT *haState);
808 
847 extern ClRcT clCpmCSIQuiescingComplete(CL_IN ClCpmHandleT cpmHandle,
848  CL_IN ClInvocationT invocation,
849  CL_IN ClRcT retCode);
850 
888 extern ClRcT
889 clCpmComponentFailureReport(CL_IN ClCpmHandleT cpmHandle,
890  CL_IN const ClNameT *pCompName,
891  CL_IN ClTimeT errorDetectionTime,
892  CL_IN ClAmsLocalRecoveryT recommendedRecovery,
893  CL_IN ClUint32T alarmHandle);
894 
924 extern ClRcT clCpmComponentFailureClear(CL_IN ClCpmHandleT cpmHandle,
925  CL_IN ClNameT *pCompName);
926 
966 extern ClRcT
967 clCpmHealthcheckStart(CL_IN ClCpmHandleT cpmHandle,
968  CL_IN const ClNameT *pCompName,
969  CL_IN const ClAmsCompHealthcheckKeyT *pCompHealthCheck,
970  CL_IN ClAmsCompHealthcheckInvocationT invocationType,
971  CL_IN ClAmsRecoveryT recommondedRecovery);
972 
1007 extern ClRcT
1008 clCpmHealthcheckConfirm(CL_IN ClCpmHandleT cpmHandle,
1009  CL_IN const ClNameT *pCompName,
1010  CL_IN const ClAmsCompHealthcheckKeyT *pCompHealthCheck,
1011  CL_IN ClRcT healthCheckResult);
1012 
1042 extern ClRcT
1043 clCpmHealthcheckStop(CL_IN ClCpmHandleT cpmHandle,
1044  CL_IN const ClNameT *pCompName,
1045  CL_IN const ClAmsCompHealthcheckKeyT *pCompHealthCheck);
1046 
1088 extern ClRcT clCpmProtectionGroupTrack(CL_IN ClCpmHandleT cpmHandle,
1089  CL_IN ClNameT *pCsiName,
1090  CL_IN ClUint8T trackFlags,
1091  CL_INOUT ClAmsPGNotificationBufferT
1092  *pNotificationBuffer);
1093 
1123 extern ClRcT clCpmProtectionGroupTrackStop(CL_IN ClCpmHandleT cpmHandle,
1124  CL_IN ClNameT *pCsiName);
1125 
1156 extern ClRcT clCpmComponentIdGet(CL_IN ClCpmHandleT cpmHandle,
1157  CL_IN ClNameT *pCompName,
1158  CL_OUT ClUint32T *pCompId);
1159 
1189  CL_IN ClNameT *pCompName,
1190  CL_OUT ClIocAddressT *pCompAddress);
1191 
1222 extern ClRcT clCpmComponentStatusGet(CL_IN ClNameT *pCompName,
1223  CL_IN ClNameT *pNodeName,
1224  CL_OUT ClAmsPresenceStateT *pPresenceState,
1225  CL_OUT ClAmsOperStateT *pOperationalState);
1226 
1251 extern ClRcT clCpmMasterAddressGetExtended(CL_OUT ClIocNodeAddressT *pIocAddress,
1252  ClInt32T numRetries,
1253  ClTimerTimeOutT *pDelay);
1254 
1279 extern ClUint32T clCpmIsMaster(void);
1280 
1303 extern ClRcT clCpmNodeShutDown(CL_IN ClIocNodeAddressT iocNodeAddress);
1304 
1338 extern ClRcT clCpmNodeRestart(CL_IN ClIocNodeAddressT iocNodeAddress,
1339  CL_IN ClBoolT graceful);
1340 
1372 extern ClRcT clCpmNodeSwitchover(CL_IN ClIocNodeAddressT iocNodeAddress);
1373 
1374 /*
1375  * This API is the same as clCpmNodeRestart. However with a few differences.
1376  * The middleware restart reboots the node or restarts asp if nodeReset flag is CL_FALSE.
1377  * It works irrespective of the environment variables that one can use to override the node reset behavior.
1378  * If you want to get environment variable behavior for node resets, then clCpmNodeRestart is the API to use.
1379  */
1380 
1381 extern ClRcT clCpmMiddlewareRestart(ClIocNodeAddressT iocNodeAddress, ClBoolT graceful, ClBoolT nodeReset);
1382 
1406 extern ClRcT clCpmLocalNodeNameGet(CL_IN ClNameT *nodeName);
1407 
1408 
1409 
1410 
1434 extern ClRcT clCpmCompStatusGet(ClIocAddressT compAddr, ClStatusT *pStatus);
1435 
1436 
1458 extern ClRcT clCpmNodeStatusGet(ClIocNodeAddressT nodeAddr, ClStatusT *pStatus);
1459 
1460 
1491 extern ClRcT clCpmNotificationCallbackInstall(ClIocPhysicalAddressT compAddr, ClCpmNotificationFuncT pFunc, ClPtrT pArg, ClHandleT *pHandle);
1492 
1493 
1494 
1518 extern ClRcT clCpmNotificationCallbackUninstall(ClHandleT *pHandle);
1519 
1520 
1545 extern ClRcT clCpmCompCSIList(const ClNameT *pCompName, ClCpmCompCSIRefT *pCSIRef);
1546 
1567 extern ClBoolT clCpmIsSC(void);
1568 
1593 extern ClRcT clCpmCompInfoGet(const ClNameT *compName,
1594  const ClIocNodeAddressT nodeAddress,
1595  CL_OUT ClCpmCompSpecInfoT *compInfo);
1596 
1598 extern ClCpmHandleT clCpmHandle;
1599 
1600 
1601 #ifdef __cplusplus
1602 }
1603 #endif
1604 
1605 #endif /* _CL_CPM_API_H_ */
1606 

Generated on Tue Jan 10 10:29:15 PST 2012 for OpenClovis SDK using Doxygen