From: Gonglei <arei.gong...@huawei.com> when we remove bootindex form qdev.property to qom.property, we can use those functions set/get bootindex property for all correlative devices.
Signed-off-by: Gonglei <arei.gong...@huawei.com> --- include/sysemu/sysemu.h | 4 ++++ vl.c | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 672984c..ca231e4 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -208,6 +208,10 @@ void do_usb_del(Monitor *mon, const QDict *qdict); void usb_info(Monitor *mon, const QDict *qdict); void check_boot_index(int32_t bootindex, Error **errp); +void get_bootindex(int32_t *bootindex, Visitor *v, + const char *name, Error **errp); +void set_bootindex(int32_t *bootindex, Visitor *v, + const char *name, Error **errp); void del_boot_device_path(DeviceState *dev); void add_boot_device_path(int32_t bootindex, DeviceState *dev, const char *suffix); diff --git a/vl.c b/vl.c index f2c3b2d..4363185 100644 --- a/vl.c +++ b/vl.c @@ -1252,6 +1252,33 @@ void check_boot_index(int32_t bootindex, Error **errp) } } +void get_bootindex(int32_t *bootindex, Visitor *v, + const char *name, Error **errp) +{ + visit_type_int32(v, bootindex, name, errp); +} + +void set_bootindex(int32_t *bootindex, Visitor *v, + const char *name, Error **errp) +{ + int32_t boot_index; + Error *local_err = NULL; + + visit_type_int32(v, &boot_index, name, &local_err); + + if (local_err == NULL) { + /* check the bootindex existes or not in fw_boot_order list */ + check_boot_index(boot_index, &local_err); + } + + if (local_err) { + error_propagate(errp, local_err); + return; + } + /* change bootindex to a new one */ + *bootindex = boot_index; +} + static bool is_same_fw_dev_path(DeviceState *src, DeviceState *dst) { bool ret = false; -- 1.7.12.4