mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 00:32:04 +02:00
bloblist: Add a new function to add or check size
A common check is to see if a blob is present, create it if not and make sure that the size is large enough. Add a function to handle this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -85,8 +85,10 @@ static int bloblist_ensurerec(uint tag, struct bloblist_rec **recp, int size)
|
||||
|
||||
rec = bloblist_findrec(tag);
|
||||
if (rec) {
|
||||
if (size && size != rec->size)
|
||||
if (size && size != rec->size) {
|
||||
*recp = rec;
|
||||
return -ESPIPE;
|
||||
}
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
@@ -145,6 +147,21 @@ void *bloblist_ensure(uint tag, int size)
|
||||
return (void *)rec + rec->hdr_size;
|
||||
}
|
||||
|
||||
int bloblist_ensure_size_ret(uint tag, int *sizep, void **blobp)
|
||||
{
|
||||
struct bloblist_rec *rec;
|
||||
int ret;
|
||||
|
||||
ret = bloblist_ensurerec(tag, &rec, *sizep);
|
||||
if (ret == -ESPIPE)
|
||||
*sizep = rec->size;
|
||||
else if (ret)
|
||||
return ret;
|
||||
*blobp = (void *)rec + rec->hdr_size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 bloblist_calc_chksum(struct bloblist_hdr *hdr)
|
||||
{
|
||||
struct bloblist_rec *rec;
|
||||
|
Reference in New Issue
Block a user