cmd: qfw: add API to iterate firmware list

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 <yanmiaobest@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
master
Miao Yan 8 years ago committed by Bin Meng
parent 34865a65c4
commit 099b2196e4
  1. 25
      cmd/qemu_fw_cfg.c
  2. 9
      include/qemu_fw_cfg.h

@ -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);
}

@ -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

Loading…
Cancel
Save