Message ID | 20200513142359.147589-13-sjg@chromium.org |
---|---|
State | New |
Headers | show |
Series | x86: cbfs: Various clean-ups to CBFS implementation | expand |
Hi Simon, On Wed, May 13, 2020 at 10:24 PM Simon Glass <sjg at chromium.org> wrote: > > Currently we support reading a file from CBFS given the address of the end > of the ROM. Sometimes we only know the start of the CBFS. Add a function > to find a file given that. > > Signed-off-by: Simon Glass <sjg at chromium.org> > --- > > fs/cbfs/cbfs.c | 13 +++++++++++++ > include/cbfs.h | 11 +++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c > index 76613fa871..1603409a8f 100644 > --- a/fs/cbfs/cbfs.c > +++ b/fs/cbfs/cbfs.c > @@ -413,6 +413,19 @@ int file_cbfs_find_uncached(ulong end_of_rom, const char *name, > return find_uncached(&priv, name, start, node); > } > > +int file_cbfs_find_uncached_base(ulong base, const char *name, > + struct cbfs_cachenode *node) > +{ > + struct cbfs_priv priv; > + int ret; > + > + ret = cbfs_load_header_ptr(&priv, base); > + if (ret) > + return ret; > + > + return find_uncached(&priv, name, (u8 *)base, node); (void *)base > +} > + > const char *file_cbfs_name(const struct cbfs_cachenode *file) > { > cbfs_s.result = CBFS_SUCCESS; > diff --git a/include/cbfs.h b/include/cbfs.h > index 4dd3c0795d..b1a8d2cad2 100644 > --- a/include/cbfs.h > +++ b/include/cbfs.h > @@ -173,6 +173,17 @@ int cbfs_init_mem(ulong base, ulong size, struct cbfs_priv **privp); > int file_cbfs_find_uncached(ulong end_of_rom, const char *name, > struct cbfs_cachenode *node); > > +/** > + * file_cbfs_find_uncached() - Find a file in CBFS without using the heap file_cbfs_find_uncached_base(), and the description is wrong > + * > + * @base: Points to the base of the CBFS > + * @name: The name to search for > + * @node: Returns the node if found > + * @return 0 on success, -ENOENT if not found, -EFAULT on bad header > + */ > +int file_cbfs_find_uncached_base(ulong base, const char *name, > + struct cbfs_cachenode *node); > + > /** > * file_cbfs_name() - Get the name of a file in CBFS. > * Regards, Bin
Hi Bin, On Wed, 20 May 2020 at 20:59, Bin Meng <bmeng.cn at gmail.com> wrote: > > Hi Simon, > > On Wed, May 13, 2020 at 10:24 PM Simon Glass <sjg at chromium.org> wrote: > > > > Currently we support reading a file from CBFS given the address of the end > > of the ROM. Sometimes we only know the start of the CBFS. Add a function > > to find a file given that. > > > > Signed-off-by: Simon Glass <sjg at chromium.org> > > --- > > > > fs/cbfs/cbfs.c | 13 +++++++++++++ > > include/cbfs.h | 11 +++++++++++ > > 2 files changed, 24 insertions(+) > > Thanks for the comments. I had a change of plan at some point and the series lost its consistency. Will send v2 soon. Regards, Simon
diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index 76613fa871..1603409a8f 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -413,6 +413,19 @@ int file_cbfs_find_uncached(ulong end_of_rom, const char *name, return find_uncached(&priv, name, start, node); } +int file_cbfs_find_uncached_base(ulong base, const char *name, + struct cbfs_cachenode *node) +{ + struct cbfs_priv priv; + int ret; + + ret = cbfs_load_header_ptr(&priv, base); + if (ret) + return ret; + + return find_uncached(&priv, name, (u8 *)base, node); +} + const char *file_cbfs_name(const struct cbfs_cachenode *file) { cbfs_s.result = CBFS_SUCCESS; diff --git a/include/cbfs.h b/include/cbfs.h index 4dd3c0795d..b1a8d2cad2 100644 --- a/include/cbfs.h +++ b/include/cbfs.h @@ -173,6 +173,17 @@ int cbfs_init_mem(ulong base, ulong size, struct cbfs_priv **privp); int file_cbfs_find_uncached(ulong end_of_rom, const char *name, struct cbfs_cachenode *node); +/** + * file_cbfs_find_uncached() - Find a file in CBFS without using the heap + * + * @base: Points to the base of the CBFS + * @name: The name to search for + * @node: Returns the node if found + * @return 0 on success, -ENOENT if not found, -EFAULT on bad header + */ +int file_cbfs_find_uncached_base(ulong base, const char *name, + struct cbfs_cachenode *node); + /** * file_cbfs_name() - Get the name of a file in CBFS. *
Currently we support reading a file from CBFS given the address of the end of the ROM. Sometimes we only know the start of the CBFS. Add a function to find a file given that. Signed-off-by: Simon Glass <sjg at chromium.org> --- fs/cbfs/cbfs.c | 13 +++++++++++++ include/cbfs.h | 11 +++++++++++ 2 files changed, 24 insertions(+)