[PATCH v2 05/18] bloblist: Access record hdr_size and tag via a function
Raymond Mao
raymond.mao at linaro.org
Mon Dec 4 17:38:52 CET 2023
Hi Ilias,
This patch is for later grouping the tag and hdr_size in
'0011-bloblist-Reduce-blob-header-size.patch'.
I can update the commit message.
Thanks and regards,
Raymond
On Mon, 4 Dec 2023 at 03:31, Ilias Apalodimas <ilias.apalodimas at linaro.org>
wrote:
> On Mon, 27 Nov 2023 at 21:52, Raymond Mao <raymond.mao at linaro.org> wrote:
> >
> > From: Simon Glass <sjg at chromium.org>
> >
> > These values currently use a simple field. With spec v0.9 they have moved
> > to a packed format. Convert most accesses to use functions, so this
> change
> > can be accommodated.
>
> I don't really understand how the commit message is related to the changes.
> What did the packed format affect that we need a function?
>
> Thanks
> /Ilias
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > Signed-off-by: Raymond Mao <raymond.mao at linaro.org>
> > ---
> > common/bloblist.c | 38 +++++++++++++++++++++++++-------------
> > 1 file changed, 25 insertions(+), 13 deletions(-)
> >
> > diff --git a/common/bloblist.c b/common/bloblist.c
> > index e744c2b0c0..f084a32cfc 100644
> > --- a/common/bloblist.c
> > +++ b/common/bloblist.c
> > @@ -82,13 +82,23 @@ static struct bloblist_rec
> *bloblist_first_blob(struct bloblist_hdr *hdr)
> > return (struct bloblist_rec *)((void *)hdr + hdr->hdr_size);
> > }
> >
> > +static inline uint rec_hdr_size(struct bloblist_rec *rec)
> > +{
> > + return rec->hdr_size;
> > +}
> > +
> > +static inline uint rec_tag(struct bloblist_rec *rec)
> > +{
> > + return rec->tag;
> > +}
> > +
> > static ulong bloblist_blob_end_ofs(struct bloblist_hdr *hdr,
> > struct bloblist_rec *rec)
> > {
> > ulong offset;
> >
> > offset = (void *)rec - (void *)hdr;
> > - offset += rec->hdr_size + ALIGN(rec->size, BLOBLIST_ALIGN);
> > + offset += rec_hdr_size(rec) + ALIGN(rec->size, BLOBLIST_ALIGN);
> >
> > return offset;
> > }
> > @@ -117,7 +127,7 @@ static struct bloblist_rec *bloblist_findrec(uint
> tag)
> > return NULL;
> >
> > foreach_rec(rec, hdr) {
> > - if (rec->tag == tag)
> > + if (rec_tag(rec) == tag)
> > return rec;
> > }
> >
> > @@ -156,7 +166,7 @@ static int bloblist_addrec(uint tag, int size, int
> align_log2,
> > rec->spare = 0;
> >
> > /* Zero the record data */
> > - memset((void *)rec + rec->hdr_size, '\0', rec->size);
> > + memset((void *)rec + rec_hdr_size(rec), '\0', rec->size);
> >
> > hdr->alloced = new_alloced;
> > *recp = rec;
> > @@ -197,7 +207,7 @@ void *bloblist_find(uint tag, int size)
> > if (size && size != rec->size)
> > return NULL;
> >
> > - return (void *)rec + rec->hdr_size;
> > + return (void *)rec + rec_hdr_size(rec);
> > }
> >
> > void *bloblist_add(uint tag, int size, int align_log2)
> > @@ -207,7 +217,7 @@ void *bloblist_add(uint tag, int size, int
> align_log2)
> > if (bloblist_addrec(tag, size, align_log2, &rec))
> > return NULL;
> >
> > - return (void *)rec + rec->hdr_size;
> > + return (void *)rec + rec_hdr_size(rec);
> > }
> >
> > int bloblist_ensure_size(uint tag, int size, int align_log2, void
> **blobp)
> > @@ -218,7 +228,7 @@ int bloblist_ensure_size(uint tag, int size, int
> align_log2, void **blobp)
> > ret = bloblist_ensurerec(tag, &rec, size, align_log2);
> > if (ret)
> > return ret;
> > - *blobp = (void *)rec + rec->hdr_size;
> > + *blobp = (void *)rec + rec_hdr_size(rec);
> >
> > return 0;
> > }
> > @@ -230,7 +240,7 @@ void *bloblist_ensure(uint tag, int size)
> > if (bloblist_ensurerec(tag, &rec, size, 0))
> > return NULL;
> >
> > - return (void *)rec + rec->hdr_size;
> > + return (void *)rec + rec_hdr_size(rec);
> > }
> >
> > int bloblist_ensure_size_ret(uint tag, int *sizep, void **blobp)
> > @@ -243,7 +253,7 @@ int bloblist_ensure_size_ret(uint tag, int *sizep,
> void **blobp)
> > *sizep = rec->size;
> > else if (ret)
> > return ret;
> > - *blobp = (void *)rec + rec->hdr_size;
> > + *blobp = (void *)rec + rec_hdr_size(rec);
> >
> > return 0;
> > }
> > @@ -279,7 +289,7 @@ static int bloblist_resize_rec(struct bloblist_hdr
> *hdr,
> >
> > /* Zero the new part of the blob */
> > if (expand_by > 0) {
> > - memset((void *)rec + rec->hdr_size + rec->size, '\0',
> > + memset((void *)rec + rec_hdr_size(rec) + rec->size, '\0',
> > new_size - rec->size);
> > }
> >
> > @@ -313,8 +323,9 @@ static u32 bloblist_calc_chksum(struct bloblist_hdr
> *hdr)
> > chksum = crc32(0, (unsigned char *)hdr,
> > offsetof(struct bloblist_hdr, chksum));
> > foreach_rec(rec, hdr) {
> > - chksum = crc32(chksum, (void *)rec, rec->hdr_size);
> > - chksum = crc32(chksum, (void *)rec + rec->hdr_size,
> rec->size);
> > + chksum = crc32(chksum, (void *)rec, rec_hdr_size(rec));
> > + chksum = crc32(chksum, (void *)rec + rec_hdr_size(rec),
> > + rec->size);
> > }
> >
> > return chksum;
> > @@ -422,8 +433,9 @@ void bloblist_show_list(void)
> > for (rec = bloblist_first_blob(hdr); rec;
> > rec = bloblist_next_blob(hdr, rec)) {
> > printf("%08lx %8x %4x %s\n",
> > - (ulong)map_to_sysmem((void *)rec + rec->hdr_size),
> > - rec->size, rec->tag, bloblist_tag_name(rec->tag));
> > + (ulong)map_to_sysmem((void *)rec +
> rec_hdr_size(rec)),
> > + rec->size, rec_tag(rec),
> > + bloblist_tag_name(rec_tag(rec)));
> > }
> > }
> >
> > --
> > 2.25.1
> >
>
More information about the U-Boot
mailing list