Lines Matching full:record

39 						 pldm_pdr_record *record);
42 static int pldm_pdr_remove_record(pldm_pdr *repo, pldm_pdr_record *record,
47 const pldm_pdr_record *record) in get_next_record_handle() argument
49 if (record == repo->last) { in get_next_record_handle()
52 return record->next->record_handle; in get_next_record_handle()
78 pldm_pdr_record *record = malloc(sizeof(pldm_pdr_record)); in pldm_pdr_add() local
79 if (!record) { in pldm_pdr_add()
84 record->data = malloc(size); in pldm_pdr_add()
85 if (!record->data) { in pldm_pdr_add()
86 free(record); in pldm_pdr_add()
89 memcpy(record->data, data, size); in pldm_pdr_add()
92 record->size = size; in pldm_pdr_add()
93 record->is_remote = is_remote; in pldm_pdr_add()
94 record->terminus_handle = terminus_handle; in pldm_pdr_add()
95 record->record_handle = curr; in pldm_pdr_add()
98 /* If record handle is 0, that is an indication for this API to in pldm_pdr_add()
101 * caller supplied the record handle, it would exist in the in pldm_pdr_add()
104 struct pldm_pdr_hdr *hdr = (void *)record->data; in pldm_pdr_add()
105 hdr->record_handle = htole32(record->record_handle); in pldm_pdr_add()
108 record->next = NULL; in pldm_pdr_add()
112 repo->first = record; in pldm_pdr_add()
113 repo->last = record; in pldm_pdr_add()
115 repo->last->next = record; in pldm_pdr_add()
116 repo->last = record; in pldm_pdr_add()
119 repo->size += record->size; in pldm_pdr_add()
123 *record_handle = record->record_handle; in pldm_pdr_add()
151 pldm_pdr_record *record = repo->first; in pldm_pdr_destroy() local
152 while (record != NULL) { in pldm_pdr_destroy()
153 pldm_pdr_record *next = record->next; in pldm_pdr_destroy()
154 if (record->data) { in pldm_pdr_destroy()
155 free(record->data); in pldm_pdr_destroy()
156 record->data = NULL; in pldm_pdr_destroy()
158 free(record); in pldm_pdr_destroy()
159 record = next; in pldm_pdr_destroy()
178 pldm_pdr_record *record = repo->first; in pldm_pdr_find_record() local
179 while (record != NULL) { in pldm_pdr_find_record()
180 if (record->record_handle == record_handle) { in pldm_pdr_find_record()
181 *size = record->size; in pldm_pdr_find_record()
182 *data = record->data; in pldm_pdr_find_record()
184 get_next_record_handle(repo, record); in pldm_pdr_find_record()
185 return record; in pldm_pdr_find_record()
187 record = record->next; in pldm_pdr_find_record()
228 pldm_pdr_record *record = repo->first; in pldm_pdr_find_record_by_type() local
230 record = curr_record->next; in pldm_pdr_find_record_by_type()
232 while (record != NULL) { in pldm_pdr_find_record_by_type()
233 struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; in pldm_pdr_find_record_by_type()
236 *size = record->size; in pldm_pdr_find_record_by_type()
237 *data = record->data; in pldm_pdr_find_record_by_type()
239 return record; in pldm_pdr_find_record_by_type()
241 record = record->next; in pldm_pdr_find_record_by_type()
268 const pldm_pdr_record *record) in pldm_pdr_get_record_handle() argument
271 assert(record != NULL); in pldm_pdr_get_record_handle()
273 return record->record_handle; in pldm_pdr_get_record_handle()
278 const pldm_pdr_record *record) in pldm_pdr_get_terminus_handle() argument
281 assert(record != NULL); in pldm_pdr_get_terminus_handle()
283 return record->terminus_handle; in pldm_pdr_get_terminus_handle()
287 bool pldm_pdr_record_is_remote(const pldm_pdr_record *record) in pldm_pdr_record_is_remote() argument
289 assert(record != NULL); in pldm_pdr_record_is_remote()
291 return record->is_remote; in pldm_pdr_record_is_remote()
375 const pldm_pdr_record *record; in pldm_pdr_update_TL_pdr() local
376 record = pldm_pdr_find_record_by_type(repo, PLDM_TERMINUS_LOCATOR_PDR, in pldm_pdr_update_TL_pdr()
380 if (record != NULL) { in pldm_pdr_update_TL_pdr()
392 record = pldm_pdr_find_record_by_type(repo, in pldm_pdr_update_TL_pdr()
394 record, &out_data, &size); in pldm_pdr_update_TL_pdr()
395 } while (record); in pldm_pdr_update_TL_pdr()
412 pldm_pdr_record *record; in pldm_pdr_find_child_container_id_index_range_exclude() local
417 for (record = repo->first; record; record = record->next) { in pldm_pdr_find_child_container_id_index_range_exclude()
426 // The expectation here is the pldm_pdr_hdr is the first field of the record data in pldm_pdr_find_child_container_id_index_range_exclude()
427 hdr = (struct pldm_pdr_hdr *)record->data; in pldm_pdr_find_child_container_id_index_range_exclude()
432 record->record_handle, range_exclude_start_handle, in pldm_pdr_find_child_container_id_index_range_exclude()
440 pdr = (void *)(record->data + sizeof(struct pldm_pdr_hdr)); in pldm_pdr_find_child_container_id_index_range_exclude()
1034 pldm_pdr_record *record = repo->first; in pldm_pdr_remove_pdrs_by_terminus_handle() local
1036 while (record != NULL) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1037 pldm_pdr_record *next = record->next; in pldm_pdr_remove_pdrs_by_terminus_handle()
1038 if (record->terminus_handle == terminus_handle) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1039 if (repo->first == record) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1044 if (repo->last == record) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1047 if (record->data) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1048 free(record->data); in pldm_pdr_remove_pdrs_by_terminus_handle()
1051 repo->size -= record->size; in pldm_pdr_remove_pdrs_by_terminus_handle()
1052 free(record); in pldm_pdr_remove_pdrs_by_terminus_handle()
1055 prev = record; in pldm_pdr_remove_pdrs_by_terminus_handle()
1057 record = next; in pldm_pdr_remove_pdrs_by_terminus_handle()
1061 record = repo->first; in pldm_pdr_remove_pdrs_by_terminus_handle()
1063 while (record != NULL) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1064 record->record_handle = ++record_handle; in pldm_pdr_remove_pdrs_by_terminus_handle()
1065 if (record->data != NULL) { in pldm_pdr_remove_pdrs_by_terminus_handle()
1067 (struct pldm_pdr_hdr *)(record->data); in pldm_pdr_remove_pdrs_by_terminus_handle()
1069 htole32(record->record_handle); in pldm_pdr_remove_pdrs_by_terminus_handle()
1071 record = record->next; in pldm_pdr_remove_pdrs_by_terminus_handle()
1085 pldm_pdr_record *record = repo->first; in pldm_pdr_remove_remote_pdrs() local
1087 while (record != NULL) { in pldm_pdr_remove_remote_pdrs()
1088 pldm_pdr_record *next = record->next; in pldm_pdr_remove_remote_pdrs()
1089 if (record->is_remote == true) { in pldm_pdr_remove_remote_pdrs()
1090 if (repo->first == record) { in pldm_pdr_remove_remote_pdrs()
1095 if (repo->last == record) { in pldm_pdr_remove_remote_pdrs()
1098 if (record->data) { in pldm_pdr_remove_remote_pdrs()
1099 free(record->data); in pldm_pdr_remove_remote_pdrs()
1102 repo->size -= record->size; in pldm_pdr_remove_remote_pdrs()
1103 free(record); in pldm_pdr_remove_remote_pdrs()
1106 prev = record; in pldm_pdr_remove_remote_pdrs()
1108 record = next; in pldm_pdr_remove_remote_pdrs()
1112 record = repo->first; in pldm_pdr_remove_remote_pdrs()
1114 while (record != NULL) { in pldm_pdr_remove_remote_pdrs()
1115 record->record_handle = ++record_handle; in pldm_pdr_remove_remote_pdrs()
1116 if (record->data != NULL) { in pldm_pdr_remove_remote_pdrs()
1118 (struct pldm_pdr_hdr *)(record->data); in pldm_pdr_remove_remote_pdrs()
1120 htole32(record->record_handle); in pldm_pdr_remove_remote_pdrs()
1122 record = record->next; in pldm_pdr_remove_remote_pdrs()
1131 pldm_pdr_record *record = NULL; in pldm_pdr_find_last_in_range() local
1141 if (!record || curr->record_handle > record->record_handle) { in pldm_pdr_find_last_in_range()
1142 record = curr; in pldm_pdr_find_last_in_range()
1146 return record; in pldm_pdr_find_last_in_range()
1385 /* Find the position of record in pldm_pdr repo and place new_record in
1389 static int pldm_pdr_replace_record(pldm_pdr *repo, pldm_pdr_record *record, in pldm_pdr_replace_record() argument
1393 if (repo->size < record->size) { in pldm_pdr_replace_record()
1401 if (repo->first == record) { in pldm_pdr_replace_record()
1406 new_record->next = record->next; in pldm_pdr_replace_record()
1408 if (repo->last == record) { in pldm_pdr_replace_record()
1412 repo->size = (repo->size - record->size) + new_record->size; in pldm_pdr_replace_record()
1416 /* Insert a new record to pldm_pdr repo to a position that comes after
1417 * pldm_pdr_record record.
1420 static int pldm_pdr_insert_record(pldm_pdr *repo, pldm_pdr_record *record, in pldm_pdr_insert_record() argument
1431 new_record->next = record->next; in pldm_pdr_insert_record()
1432 record->next = new_record; in pldm_pdr_insert_record()
1434 if (repo->last == record) { in pldm_pdr_insert_record()
1443 /* Find the position of PDR when its record handle is known
1446 static bool pldm_pdr_find_record_by_handle(pldm_pdr_record **record, in pldm_pdr_find_record_by_handle() argument
1450 while (*record != NULL) { in pldm_pdr_find_record_by_handle()
1451 if ((*record)->record_handle == record_handle) { in pldm_pdr_find_record_by_handle()
1454 *prev = *record; in pldm_pdr_find_record_by_handle()
1455 *record = (*record)->next; in pldm_pdr_find_record_by_handle()
1468 pldm_pdr_record *record = repo->first; in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr() local
1478 pldm_pdr_find_record_by_handle(&record, &prev, pdr_record_handle); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1480 if (!record) { in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1483 // Initialize msg buffer for record and record->data in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1485 record->data, record->size); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1490 // check if adding another entity to record causes overflow before in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1492 if (record->size + sizeof(pldm_entity) < sizeof(pldm_entity)) { in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1500 new_record->data = malloc(record->size + sizeof(pldm_entity)); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1506 new_record->record_handle = record->record_handle; in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1507 new_record->size = record->size + sizeof(struct pldm_entity); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1508 new_record->is_remote = record->is_remote; in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1510 // Initialize new PDR record with data from original PDR record. in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1522 // extract the header length from record and increment size with in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1541 // extract value of number of children from record and increment it in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1542 // by 1 before insert the value to new record. in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1583 rc = pldm_pdr_replace_record(repo, record, prev, new_record); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1588 free(record->data); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1589 free(record); in pldm_entity_association_pdr_add_contained_entity_to_remote_pdr()
1626 pldm_pdr_record *record = repo->first; in pldm_entity_association_pdr_create_new() local
1627 pdr_added = pldm_pdr_find_record_by_handle(&record, &prev, in pldm_entity_association_pdr_create_new()
1660 // header record handle in pldm_entity_association_pdr_create_new()
1724 rc = pldm_pdr_insert_record(repo, record, new_record); in pldm_entity_association_pdr_create_new()
1746 /* Find record handle of a PDR record from PDR repo and
1758 pldm_pdr_record *record = repo->first; in pldm_entity_association_find_record_handle_by_entity() local
1762 while (record != NULL) { in pldm_entity_association_find_record_handle_by_entity()
1765 record->data, record->size); in pldm_entity_association_find_record_handle_by_entity()
1772 if (record->is_remote != is_remote || in pldm_entity_association_find_record_handle_by_entity()
1793 *record_handle = record->record_handle; in pldm_entity_association_find_record_handle_by_entity()
1802 record = record->next; in pldm_entity_association_find_record_handle_by_entity()
1819 pldm_pdr_record *record; in pldm_entity_association_pdr_remove_contained_entity() local
1825 record = repo->first; in pldm_entity_association_pdr_remove_contained_entity()
1833 pldm_pdr_find_record_by_handle(&record, &prev, *pdr_record_handle); in pldm_entity_association_pdr_remove_contained_entity()
1834 if (!record) { in pldm_entity_association_pdr_remove_contained_entity()
1837 // Initialize msg buffer for record and record->data in pldm_entity_association_pdr_remove_contained_entity()
1839 record->data, record->size); in pldm_entity_association_pdr_remove_contained_entity()
1843 // check if removing an entity from record causes overflow before in pldm_entity_association_pdr_remove_contained_entity()
1845 if (record->size < sizeof(pldm_entity)) { in pldm_entity_association_pdr_remove_contained_entity()
1852 new_record->data = malloc(record->size - sizeof(pldm_entity)); in pldm_entity_association_pdr_remove_contained_entity()
1857 new_record->record_handle = record->record_handle; in pldm_entity_association_pdr_remove_contained_entity()
1858 new_record->size = record->size - sizeof(struct pldm_entity); in pldm_entity_association_pdr_remove_contained_entity()
1859 new_record->is_remote = record->is_remote; in pldm_entity_association_pdr_remove_contained_entity()
1861 // Initialize new PDR record with data from original PDR record. in pldm_entity_association_pdr_remove_contained_entity()
1873 // extract the header length from record and decrement size with in pldm_entity_association_pdr_remove_contained_entity()
1890 // extract value of number of children from record and decrement it in pldm_entity_association_pdr_remove_contained_entity()
1891 // by 1 before insert the value to new record. in pldm_entity_association_pdr_remove_contained_entity()
1898 pldm_pdr_remove_record(repo, record, in pldm_entity_association_pdr_remove_contained_entity()
1899 pldm_pdr_get_prev_record(repo, record)); in pldm_entity_association_pdr_remove_contained_entity()
1928 (rc = pldm_pdr_replace_record(repo, record, prev, new_record))) { in pldm_entity_association_pdr_remove_contained_entity()
1932 free(record->data); in pldm_entity_association_pdr_remove_contained_entity()
1933 free(record); in pldm_entity_association_pdr_remove_contained_entity()
1943 /* API to find the PDR record that is previous to a given PLDM PDR
1944 * record in a given PLDM PDR repository
1948 pldm_pdr_record *record) in pldm_pdr_get_prev_record() argument
1954 if (curr->record_handle == record->record_handle) { in pldm_pdr_get_prev_record()
1963 /* API to check if a PLDM PDR record is present in a PLDM PDR repository
1966 static bool is_prev_record_present(pldm_pdr *repo, pldm_pdr_record *record) in is_prev_record_present() argument
1968 if (repo->first == record) { in is_prev_record_present()
1972 return pldm_pdr_get_prev_record(repo, record) != NULL; in is_prev_record_present()
1975 /* API to check if FRU RSI of record matches the given record set identifier.
1976 * Returns 1 if the provided FRU record matches the provided record set identifier,
1980 static int pldm_pdr_record_matches_fru_rsi(const pldm_pdr_record *record, in pldm_pdr_record_matches_fru_rsi() argument
1991 record->data, record->size); in pldm_pdr_record_matches_fru_rsi()
2006 /* API to remove PLDM PDR record from a PLDM PDR repository
2009 static int pldm_pdr_remove_record(pldm_pdr *repo, pldm_pdr_record *record, in pldm_pdr_remove_record() argument
2012 if (!is_prev_record_present(repo, record)) { in pldm_pdr_remove_record()
2016 assert(repo->size >= record->size); in pldm_pdr_remove_record()
2017 if (repo->size < record->size) { in pldm_pdr_remove_record()
2021 if (repo->first == record) { in pldm_pdr_remove_record()
2022 repo->first = record->next; in pldm_pdr_remove_record()
2025 prev->next = record->next; in pldm_pdr_remove_record()
2029 if (repo->last == record) { in pldm_pdr_remove_record()
2036 repo->size -= record->size; in pldm_pdr_remove_record()
2037 free(record->data); in pldm_pdr_remove_record()
2038 free(record); in pldm_pdr_remove_record()
2048 pldm_pdr_record *record; in pldm_pdr_remove_fru_record_set_by_rsi() local
2058 record = repo->first; in pldm_pdr_remove_fru_record_set_by_rsi()
2060 while (record != NULL) { in pldm_pdr_remove_fru_record_set_by_rsi()
2064 record->data, record->size); in pldm_pdr_remove_fru_record_set_by_rsi()
2072 if (record->is_remote != is_remote || in pldm_pdr_remove_fru_record_set_by_rsi()
2076 match = pldm_pdr_record_matches_fru_rsi(record, fru_rsi); in pldm_pdr_remove_fru_record_set_by_rsi()
2081 *record_handle = record->record_handle; in pldm_pdr_remove_fru_record_set_by_rsi()
2082 prev = pldm_pdr_get_prev_record(repo, record); in pldm_pdr_remove_fru_record_set_by_rsi()
2083 return pldm_pdr_remove_record(repo, record, prev); in pldm_pdr_remove_fru_record_set_by_rsi()
2090 record = record->next; in pldm_pdr_remove_fru_record_set_by_rsi()