diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-06-14 18:15:32 +0200 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-06-18 11:34:58 +0200 |
commit | 6a572877593e592dbaaba6f5649bc7744cd714c7 (patch) | |
tree | ee1582e411eac8a30913036efc3da0112a90de7c /src | |
parent | 24046bfdb0568077a074b503d58a343a06f4234a (diff) |
Refactoring 'hal data' linked list
Refactoring 'hal data' linked list code using liburcu.
BUG-AGL: SPEC-2329
Change-Id: Ia51d362f96838f4b5bb77e8d1b85fa8d1ab4bed1
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
Diffstat (limited to 'src')
-rw-r--r-- | src/4a-hal-manager/4a-hal-manager-cb.c | 25 | ||||
-rw-r--r-- | src/4a-hal-manager/4a-hal-manager.c | 7 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.c | 2 |
3 files changed, 15 insertions, 19 deletions
diff --git a/src/4a-hal-manager/4a-hal-manager-cb.c b/src/4a-hal-manager/4a-hal-manager-cb.c index 843066b..a726d05 100644 --- a/src/4a-hal-manager/4a-hal-manager-cb.c +++ b/src/4a-hal-manager/4a-hal-manager-cb.c @@ -87,8 +87,7 @@ void HalMgrLoaded(afb_req_t request) return; } - currentHalData = halMgrData->halDataList; - if(! currentHalData) { + if(cds_list_empty(&halMgrData->halDataListHead)) { afb_req_success(request, NULL, "No Hal Api loaded"); return; } @@ -107,7 +106,7 @@ void HalMgrLoaded(afb_req_t request) else requestJsonErr = wrap_json_unpack(requestJson, "{s?:b s?:b}", "all", &allHal, "verbose", &verbose); - while(currentHalData) { + cds_list_for_each_entry(currentHalData, &halMgrData->halDataListHead, node) { if(allHal || currentHalData->status == HAL_STATUS_READY) { // Case if request key is 'verbose' and value is bigger than 0 if(! requestJsonErr && verbose) { @@ -151,8 +150,6 @@ void HalMgrLoaded(afb_req_t request) json_object_array_add(requestAnswer, apiRequestedInfoJ); } - - currentHalData = currentHalData->next; } afb_req_success(request, requestAnswer, "Requested data"); @@ -206,7 +203,7 @@ void HalMgrLoad(afb_req_t request) return; } - addedHal = HalUtlAddHalToHalList(&halMgrData->halDataList); + addedHal = HalUtlAddHalToHalList(&halMgrData->halDataListHead); addedHal->internal = 0; // TBD JAI : initialize external to unavailable once event from external hal will be handled @@ -217,7 +214,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "apiname_string_allocation", "Didn't succeed to store (allocate) 'apiName' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } @@ -226,7 +223,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "sndcardpath_string_allocation", "Didn't succeed to store (allocate) 'sndCardPath' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } @@ -236,7 +233,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "info_string_allocation", "Didn't succeed to store (allocate) 'info' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } } @@ -247,7 +244,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "author_string_allocation", "Didn't succeed to store (allocate) 'author' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } } @@ -258,7 +255,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "version_string_allocation", "Didn't succeed to store (allocate) 'version' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } } @@ -269,7 +266,7 @@ void HalMgrLoad(afb_req_t request) afb_req_fail(request, "date_string_allocation", "Didn't succeed to store (allocate) 'date' string"); - HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, addedHal); + HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, addedHal); return; } } @@ -314,7 +311,7 @@ void HalMgrUnload(afb_req_t request) return; } - halToRemove = HalUtlSearchHalDataByApiName(&halMgrData->halDataList, apiName); + halToRemove = HalUtlSearchHalDataByApiName(&halMgrData->halDataListHead, apiName); if(! halToRemove) { afb_req_fail(request, "requested_api", "Can't find api to remove"); return; @@ -325,7 +322,7 @@ void HalMgrUnload(afb_req_t request) return; } - if(HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, halToRemove)) { + if(HalUtlRemoveSelectedHalFromList(&halMgrData->halDataListHead, halToRemove)) { afb_req_fail(request, "unregister_error", "Didn't succeed to remove specified api"); return; } diff --git a/src/4a-hal-manager/4a-hal-manager.c b/src/4a-hal-manager/4a-hal-manager.c index cd6f981..383b920 100644 --- a/src/4a-hal-manager/4a-hal-manager.c +++ b/src/4a-hal-manager/4a-hal-manager.c @@ -66,14 +66,11 @@ static int HalMgrInitApi(afb_api_t apiHandle) if(HalUtlInitializeHalMgrData(apiHandle, halMgrData, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO)) return -3; - currentHalData = halMgrData->halDataList; - while(currentHalData) { + cds_list_for_each_entry(currentHalData, &halMgrData->halDataListHead, node) { if(! currentHalData->apiName) return -4; else if(afb_api_require_api(apiHandle, currentHalData->apiName, 1)) return -5; - - currentHalData = currentHalData->next; } return 0; @@ -134,6 +131,8 @@ int afbBindingEntry(afb_api_t apiHandle) if(! halMgrData) return -2; + CDS_INIT_LIST_HEAD(&halMgrData->halDataListHead); + // Load Hal-Manager using Api v3 if(HalMgrCreateApi(apiHandle, halMgrData)) return -3; diff --git a/src/4a-internals-hal/4a-internals-hal-api-loader.c b/src/4a-internals-hal/4a-internals-hal-api-loader.c index bbe4936..6f09d4a 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.c +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.c @@ -193,7 +193,7 @@ int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *hal } // Allocation of current internal hal data - currentHalData = HalUtlAddHalToHalList(&halMgrData->halDataList); + currentHalData = HalUtlAddHalToHalList(&halMgrData->halDataListHead); if(! currentHalData) { AFB_API_ERROR(apiHandle, "Didn't succeed to add hal to hal list"); return -4; |