Re: [U-Boot] [PATCH 02/12] cmd: qfw: add API to iterate firmware list

2016-05-13 Thread Bin Meng
On Fri, May 13, 2016 at 2:29 PM, Miao Yan  wrote:
> This patch is part of the refactor work of qfw. It adds 3 APIs to qfw
> core to iterate firmware list.
>
> Signed-off-by: Miao Yan 
> ---
>  cmd/qemu_fw_cfg.c | 25 ++---
>  include/qemu_fw_cfg.h |  9 +
>  2 files changed, 31 insertions(+), 3 deletions(-)
>

Reviewed-by: Bin Meng 
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 02/12] cmd: qfw: add API to iterate firmware list

2016-05-12 Thread Miao Yan
This patch is part of the refactor work of qfw. It adds 3 APIs to qfw
core to iterate firmware list.

Signed-off-by: Miao Yan 
---
 cmd/qemu_fw_cfg.c | 25 ++---
 include/qemu_fw_cfg.h |  9 +
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/cmd/qemu_fw_cfg.c b/cmd/qemu_fw_cfg.c
index 48ae476..192b7d1 100644
--- a/cmd/qemu_fw_cfg.c
+++ b/cmd/qemu_fw_cfg.c
@@ -229,10 +229,27 @@ void qemu_fwcfg_free_files(void)
}
 }
 
+struct fw_file *qemu_fwcfg_file_iter_init(struct fw_cfg_file_iter *iter)
+{
+   iter->entry = fw_list.next;
+   return list_entry(iter->entry, struct fw_file, list);
+}
+
+struct fw_file *qemu_fwcfg_file_iter_next(struct fw_cfg_file_iter *iter)
+{
+   iter->entry = iter->entry->next;
+   return list_entry(iter->entry, struct fw_file, list);
+}
+
+bool qemu_fwcfg_file_iter_end(struct fw_cfg_file_iter *iter)
+{
+   return iter->entry == &fw_list;
+}
+
 static int qemu_fwcfg_list_firmware(void)
 {
int ret;
-   struct list_head *entry;
+   struct fw_cfg_file_iter iter;
struct fw_file *file;
 
/* make sure fw_list is loaded */
@@ -240,8 +257,10 @@ static int qemu_fwcfg_list_firmware(void)
if (ret)
return ret;
 
-   list_for_each(entry, &fw_list) {
-   file = list_entry(entry, struct fw_file, list);
+
+   for (file = qemu_fwcfg_file_iter_init(&iter);
+!qemu_fwcfg_file_iter_end(&iter);
+file = qemu_fwcfg_file_iter_next(&iter)) {
printf("%-56s\n", file->cfg.name);
}
 
diff --git a/include/qemu_fw_cfg.h b/include/qemu_fw_cfg.h
index e21f150..19d0ba0 100644
--- a/include/qemu_fw_cfg.h
+++ b/include/qemu_fw_cfg.h
@@ -87,6 +87,10 @@ struct fw_file {
struct list_head list;  /* list node to link to fw_list */
 };
 
+struct fw_cfg_file_iter {
+   struct list_head *entry; /* structure to iterate file list */
+};
+
 struct fw_cfg_dma_access {
__be32 control;
__be32 length;
@@ -159,4 +163,9 @@ void qemu_fwcfg_free_files(void);
  */
 int qemu_fwcfg_online_cpus(void);
 
+/* helper functions to iterate firmware file list */
+struct fw_file *qemu_fwcfg_file_iter_init(struct fw_cfg_file_iter *iter);
+struct fw_file *qemu_fwcfg_file_iter_next(struct fw_cfg_file_iter *iter);
+bool qemu_fwcfg_file_iter_end(struct fw_cfg_file_iter *iter);
+
 #endif
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot