On Wed, Jun 18, 2025 at 07:59:26AM -0700, Raymond Mao wrote:

> Some advanced usecases of bloblist needs to know the actual bytes
> expanded or shrunk after blob resizing.
> For example, to support applying DT overlay from bloblist, firstly
> the FDT blob needs to be resized for potential size increasing after
> applying overlay. If the DT overlay blob is one of the following blobs
> of the FDT, its address will be shifted after FDT blob resizing.
> Thus, returning 'expand_by' helps the caller to get the shifted data
> pointer when it comes to get the overlay for applying.
> 
> Signed-off-by: Raymond Mao <[email protected]>
[snip]
> @@ -337,6 +338,7 @@ void *bloblist_ensure(uint tag, int size);
>   */
>  int bloblist_ensure_size_ret(uint tag, int *sizep, void **blobp);
>  
> +#if CONFIG_IS_ENABLED(BLOBLIST)
>  /**
>   * bloblist_resize() - resize a blob
>   *
> @@ -345,10 +347,17 @@ int bloblist_ensure_size_ret(uint tag, int *sizep, void 
> **blobp);
>   *
>   * @tag:     Tag to add (enum bloblist_tag_t)
>   * @new_size:        New size of the blob (>0 to expand, <0 to contract)
> + * @expand_by:       Number of bytes actually expanded by (-ve to contract)
>   * Return: 0 if OK, -ENOSPC if the bloblist does not have enough space, 
> -ENOENT
>   * if the tag is not found
>   */
> -int bloblist_resize(uint tag, int new_size);
> +int bloblist_resize(uint tag, int new_size, int *expand_by);
> +#else
> +static inline int bloblist_resize(uint tag, int new_size, int *expand_by)
> +{
> +     return -EPERM;
> +}
> +#endif

Do we really need to be doing this if/else in the header? What's failing
otherwise, and can we not guard that with:
if (IS_ENABLED(CONFIG_BLOBLIST)) {
  ..
}
in the code?

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to