50 E_DscError DSC_LoadRsqtCreate(
P_DsmCoreInst idp, U32BIT size,
51 E_TargetType targetKind, H_Object target, F_LoadFinalise finalise,
57 dsmAssert((idp != NULL));
63 err = CLDSM_ERR_MEM_HEAP_FULL;
67 llLinkInit( pLoadRqst->llData, NUM_LISTS_LOAD_REQUEST );
68 if (!LLInsertHead( idp->llcCurrLoadRequests, pLoadRqst ))
72 ERRPRINT("insert list fail - already in list?");
73 err = CLDSM_ERR_INTERNAL;
74 DSC_CmMemRelease( idp, pLoadRqst );
80 pLoadRqst->magic = LOAD_REQUEST_MAGIC;
81 pLoadRqst->status = LRS_INITIAL;
82 pLoadRqst->targetKind = targetKind;
83 pLoadRqst->target = target;
84 pLoadRqst->finalise = finalise;
85 pLoadRqst->remaining = 0;
86 pLoadRqst->cachingRules = CACHE_RULES_DEFAULT;
87 pLoadRqst->usrRef = 0;
94 *ppLoadRqst = pLoadRqst;
100 dsmAssert((idp != NULL));
101 dsmAssert((pLoadRqst != NULL));
103 dsmAssert((pLoadRqst->magic == LOAD_REQUEST_MAGIC));
106 dsmAssert((LLCheckInListId( MODULE_LOAD_REQUEST_LIST, pLoadRqst ) == FALSE));
109 pLoadRqst->magic = 0;
111 LLRemove( pLoadRqst, CURR_LOAD_REQUEST_LIST );
113 DSC_CmMemRelease( idp, pLoadRqst );
118 if (pLoadRqst->finalise != NULL)
120 pLoadRqst->finalise( idp, pLoadRqst );
122 DSC_LoadRsqtDestroy( idp, pLoadRqst );
127 pLoadRqst->status = status;
128 if (pLoadRqst->finalise != NULL)
130 pLoadRqst->finalise( idp, pLoadRqst );
136 pLoadRqst->status = status;
137 if (pLoadRqst->finalise != NULL)
139 pLoadRqst->finalise( idp, pLoadRqst );
141 LLRemove( pLoadRqst, MODULE_LOAD_REQUEST_LIST );
142 DSC_LoadRsqtDestroy( idp, pLoadRqst );
147 dsmAssert((pLoadRqst != NULL));
148 dsmAssert((pLoadRqst->magic == LOAD_REQUEST_MAGIC));
149 return (pLoadRqst->cachingRules == CACHE_RULES_FROM_STREAM)? SF_PRIORITY_DIRECT :
150 (pLoadRqst->finalise != NULL)? SF_PRIORITY_HIGH : SF_PRIORITY_LOW;
159 dsmAssert((idp != NULL));
160 dsmAssert((pLoadRqst != NULL));
162 switch (pLoadRqst->status)
165 pLoadRqst->status = LRS_ABORTED_LOAD_ERROR;
167 case LRS_ABORTED_BY_REQUESTER:
168 case LRS_ABORTED_TIMEOUT:
169 DSC_LoadRsqtFinalise( idp, pLoadRqst );
171 case LRS_ABORT_PENDING_RELOAD:
void DSC_LoadRsqtAbort(P_DsmCoreInst idp, P_RootLoadRqst pLoadRqst)
Force abort (on error) any type of load request Finalise the load request (notify client) and destroy...
Header to the cacheMgr module.