summaryrefslogtreecommitdiff
path: root/common/bloblist.c
diff options
context:
space:
mode:
authorRaymond Mao <raymond.mao@linaro.org>2025-01-27 06:49:34 -0800
committerIlias Apalodimas <ilias.apalodimas@linaro.org>2025-01-28 08:59:21 +0200
commitbb894c5da5151e0858e217407c0cdeb989725a4a (patch)
tree6910b8f99af21e99e812a1dfe50272e5c0bacba9 /common/bloblist.c
parentb8eaa52612bf34164e7f495a094a5a419903a3ed (diff)
bloblist: add api to get blob with size
bloblist_find function only returns the pointer of blob data, which is fine for those self-describing data like FDT. But as a common scenario, an interface is needed to retrieve both the pointer and the size of the blob data. Add a few ut test cases for the new api. Signed-off-by: Raymond Mao <raymond.mao@linaro.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Diffstat (limited to 'common/bloblist.c')
-rw-r--r--common/bloblist.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/common/bloblist.c b/common/bloblist.c
index 110bb9dc44a..ab48a3cdb98 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -223,13 +223,26 @@ static int bloblist_ensurerec(uint tag, struct bloblist_rec **recp, int size,
void *bloblist_find(uint tag, int size)
{
+ void *blob = NULL;
+ int blob_size;
+
+ blob = bloblist_get_blob(tag, &blob_size);
+
+ if (size && size != blob_size)
+ return NULL;
+
+ return blob;
+}
+
+void *bloblist_get_blob(uint tag, int *sizep)
+{
struct bloblist_rec *rec;
rec = bloblist_findrec(tag);
if (!rec)
return NULL;
- if (size && size != rec->size)
- return NULL;
+
+ *sizep = rec->size;
return (void *)rec + rec_hdr_size(rec);
}