From: Simon Glass Date: Mon, 15 Mar 2021 05:00:13 +0000 (+1300) Subject: cbfs: Allow file traversal with any CBFS X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=c4f5b5dcc31b5aee37dabbadc998fcf695885157;p=u-boot.git cbfs: Allow file traversal with any CBFS The file traversal functions currently use a single global CBFS. In some cases we need to access multiple CBFSs to obtain different files. Add new functions to support this. Signed-off-by: Simon Glass --- diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index 13a74e6ed4..aed4026d65 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -325,6 +325,17 @@ const struct cbfs_header *file_cbfs_get_header(void) } } +const struct cbfs_cachenode *cbfs_get_first(const struct cbfs_priv *priv) +{ + return priv->file_cache; +} + +void cbfs_get_next(const struct cbfs_cachenode **filep) +{ + if (*filep) + *filep = (*filep)->next; +} + const struct cbfs_cachenode *file_cbfs_get_first(void) { struct cbfs_priv *priv = &cbfs_s; diff --git a/include/cbfs.h b/include/cbfs.h index 05770e2c7e..055edbaac2 100644 --- a/include/cbfs.h +++ b/include/cbfs.h @@ -9,6 +9,8 @@ #include #include +struct cbfs_priv; + enum cbfs_result { CBFS_SUCCESS = 0, CBFS_NOT_INITIALIZED, @@ -149,6 +151,21 @@ int file_cbfs_init(ulong end_of_rom); */ const struct cbfs_header *file_cbfs_get_header(void); +/** + * cbfs_get_first() - Get the first file in a CBFS + * + * @return pointer to first file, or NULL if it is empty + */ +const struct cbfs_cachenode *cbfs_get_first(const struct cbfs_priv *priv); + +/** + * cbfs_get_next() - Get the next file in a CBFS + * + * @filep: Pointer to current file; updated to point to the next file, if any, + * else NULL + */ +void cbfs_get_next(const struct cbfs_cachenode **filep); + /** * file_cbfs_get_first() - Get a handle for the first file in CBFS. * @@ -172,8 +189,6 @@ void file_cbfs_get_next(const struct cbfs_cachenode **file); */ const struct cbfs_cachenode *file_cbfs_find(const char *name); -struct cbfs_priv; - /** * cbfs_find_file() - Find a file in a given CBFS *