mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
@@ -594,14 +594,14 @@ int32_t ComparePcidString(const char *pcidString, const char *rpcidString, Compa
|
||||
return -1;
|
||||
}
|
||||
uint32_t pos = (i - 2) * INT_BIT + k;
|
||||
uint32_t t_;
|
||||
for (t_ = 0; t_ < allSyscapNum; t_++) {
|
||||
if (g_arraySyscap[t_].num == pos) {
|
||||
uint32_t t;
|
||||
for (t = 0; t < allSyscapNum; t++) {
|
||||
if (g_arraySyscap[t].num == pos) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
ret = strcpy_s(tempSyscap, sizeof(char) * SINGLE_SYSCAP_LEN,
|
||||
g_arraySyscap[t_].str); // 2, header of pcid & rpcid
|
||||
g_arraySyscap[t].str); // 2, header of pcid & rpcid
|
||||
if (ret != EOK) {
|
||||
PRINT_ERR("strcpy_s failed.\n");
|
||||
FreeCompareError(result);
|
||||
|
||||
+14
-2
@@ -176,9 +176,13 @@ int32_t SetOsSyscap(PCIDMain *pcidBuffer, uint32_t osCapSize,
|
||||
|
||||
for (uint32_t i = 0; i < osCapSize; i++) {
|
||||
jsonArrayItem = cJSON_GetArrayItem(jsonOsSyscapObj, (int)i);
|
||||
if (jsonArrayItem == NULL || !cJSON_IsString(jsonArrayItem)) {
|
||||
PRINT_ERR("Get jsonArrayItem failed.");
|
||||
return -1;
|
||||
}
|
||||
osCapIndex = cJSON_GetObjectItem(allOsSyscapObj, jsonArrayItem->valuestring);
|
||||
if (osCapIndex == NULL) {
|
||||
PRINT_ERR("can't find the syscap: %s, please add it in syscap_define.h.\n", jsonArrayItem->valuestring);
|
||||
if (osCapIndex == NULL || !cJSON_IsNumber(osCapIndex)) {
|
||||
PRINT_ERR("Get osCapIndex failed.");
|
||||
return -1;
|
||||
}
|
||||
sectorOfBits = (osCapIndex->valueint) / UINT8_BIT;
|
||||
@@ -200,6 +204,10 @@ int32_t SetPriSyscap(PCIDMain *pcidBuffer, cJSON *jsonPriSyscapObj,
|
||||
char *priSyscapStr = NULL;
|
||||
for (uint32_t i = 0; i < privateCapSize; i++) {
|
||||
cJSON *jsonArrayItem = cJSON_GetArrayItem(jsonPriSyscapObj, (int)i);
|
||||
if (jsonArrayItem == NULL || !cJSON_IsString(jsonArrayItem)) {
|
||||
PRINT_ERR("get jsonArrayItem failed!");
|
||||
return -1;
|
||||
}
|
||||
priSyscapStr = strchr(jsonArrayItem->valuestring, '.') + 1;
|
||||
errno_t nRet = strcat_s(priSyscapHead, allPriSyscapStrLen + 1, priSyscapStr);
|
||||
nRet += strcat_s(priSyscapHead, allPriSyscapStrLen + 1, ",");
|
||||
@@ -285,6 +293,10 @@ int32_t GetPriSyscapLen(uint32_t privateCapSize, cJSON *jsonPriSyscapObj, uint16
|
||||
{
|
||||
for (uint32_t i = 0; i < privateCapSize; i++) {
|
||||
cJSON *jsonArrayItem = cJSON_GetArrayItem(jsonPriSyscapObj, (int)i);
|
||||
if (jsonArrayItem == NULL || !cJSON_IsString(jsonArrayItem)) {
|
||||
PRINT_ERR("Get jsonArrayItem failed.");
|
||||
return -1;
|
||||
}
|
||||
*len += (uint16_t)strlen(strchr(jsonArrayItem->valuestring, '.') + 1);
|
||||
(*len)++; // for separator ','
|
||||
}
|
||||
|
||||
+8
-8
@@ -670,13 +670,13 @@ int32_t GetSyscapByIndex(uint32_t index)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t CompareOsSyscap(uint32_t pcidOsAarry[], uint32_t rpcidOsAarry[])
|
||||
int32_t CompareOsSyscap(const uint32_t pcidOsArray[], const uint32_t rpcidOsAarry[])
|
||||
{
|
||||
int32_t ossyscapFlag = 0;
|
||||
const size_t allSyscapNum = sizeof(g_arraySyscap) / sizeof(SyscapWithNum);
|
||||
|
||||
for (uint32_t i = 2; i < PCID_OUT_BUFFER; i++) { // 2, header of pcid & rpcid
|
||||
uint32_t blockBits = (pcidOsAarry[i] ^ rpcidOsAarry[i]) & rpcidOsAarry[i];
|
||||
uint32_t blockBits = (pcidOsArray[i] ^ rpcidOsAarry[i]) & rpcidOsAarry[i];
|
||||
if (!blockBits) {
|
||||
continue;
|
||||
}
|
||||
@@ -720,10 +720,10 @@ int32_t ComparePriSyscap(char *pcid, char *rpcid, uint32_t pcidLen, uint32_t rpc
|
||||
return prisyscapFlag;
|
||||
}
|
||||
|
||||
int32_t CompoareVersion(uint32_t *pcidOsAarry, uint32_t *rpcidOsAarry)
|
||||
int32_t CompoareVersion(uint32_t *pcidOsArray, uint32_t *rpcidOsAarry)
|
||||
{
|
||||
int32_t versionFlag = 0;
|
||||
uint16_t pcidVersion = NtohsInter(((PCIDMain *)pcidOsAarry)->apiVersion);
|
||||
uint16_t pcidVersion = NtohsInter(((PCIDMain *)pcidOsArray)->apiVersion);
|
||||
uint16_t rpcidVersion = NtohsInter(((RPCIDHead *)rpcidOsAarry)->apiVersion);
|
||||
if (pcidVersion < rpcidVersion) {
|
||||
printf("ERROR: Pcid version(%u) less than rpcid version(%u).\n", pcidVersion, rpcidVersion);
|
||||
@@ -740,7 +740,7 @@ int32_t ComparePcidWithRpcidString(char *pcidFile, char *rpcidFile, uint32_t typ
|
||||
char *pcidPriSyscap = NULL;
|
||||
char *rpcidPriSyscap = NULL;
|
||||
uint32_t pcidContentLen, rpcidContentLen, pcidPriSyscapLen, rpcidPriSyscapLen;
|
||||
uint32_t pcidOsAarry[PCID_OUT_BUFFER] = {0};
|
||||
uint32_t pcidOsArray[PCID_OUT_BUFFER] = {0};
|
||||
uint32_t rpcidOsAarry[PCID_OUT_BUFFER] = {0};
|
||||
|
||||
if (type == TYPE_FILE) {
|
||||
@@ -761,7 +761,7 @@ int32_t ComparePcidWithRpcidString(char *pcidFile, char *rpcidFile, uint32_t typ
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = SeparateSyscapFromString(pcidContent, pcidOsAarry, PCID_OUT_BUFFER,
|
||||
ret = SeparateSyscapFromString(pcidContent, pcidOsArray, PCID_OUT_BUFFER,
|
||||
&pcidPriSyscap, &pcidPriSyscapLen);
|
||||
ret += SeparateSyscapFromString(rpcidContent, rpcidOsAarry, RPCID_OUT_BUFFER,
|
||||
&rpcidPriSyscap, &rpcidPriSyscapLen);
|
||||
@@ -770,8 +770,8 @@ int32_t ComparePcidWithRpcidString(char *pcidFile, char *rpcidFile, uint32_t typ
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t versionFlag = CompoareVersion(pcidOsAarry, rpcidOsAarry);
|
||||
int32_t ossyscapFlag = CompareOsSyscap(pcidOsAarry, rpcidOsAarry);
|
||||
int32_t versionFlag = CompoareVersion(pcidOsArray, rpcidOsAarry);
|
||||
int32_t ossyscapFlag = CompareOsSyscap(pcidOsArray, rpcidOsAarry);
|
||||
int32_t prisyscapFlag = ComparePriSyscap(pcidPriSyscap, rpcidPriSyscap, pcidPriSyscapLen, rpcidPriSyscapLen);
|
||||
if (!versionFlag && !ossyscapFlag && !prisyscapFlag) {
|
||||
printf("Succeed! The pcid meets the rpcid.\n");
|
||||
|
||||
Reference in New Issue
Block a user