Commit 76e30d0f13a8eb1f4dee86273b50b17b81dad9f4

Authored by Jan Kiszka
Committed by Anthony Liguori
1 parent ef3adf68

Move boot_set callback backend

Move registration function for the boot_set callback handler and provide
qemu_boot_set so that it can also be used outside the monitor code.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing 3 changed files with 25 additions and 20 deletions
@@ -262,9 +262,10 @@ typedef void QEMUResetHandler(void *opaque); @@ -262,9 +262,10 @@ typedef void QEMUResetHandler(void *opaque);
262 262
263 void qemu_register_reset(QEMUResetHandler *func, void *opaque); 263 void qemu_register_reset(QEMUResetHandler *func, void *opaque);
264 264
265 -/* handler to set the boot_device for a specific type of QEMUMachine */ 265 +/* handler to set the boot_device order for a specific type of QEMUMachine */
266 /* return 0 if success */ 266 /* return 0 if success */
267 -typedef int QEMUBootSetHandler(void *opaque, const char *boot_device); 267 +typedef int QEMUBootSetHandler(void *opaque, const char *boot_devices);
268 void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque); 268 void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
  269 +int qemu_boot_set(const char *boot_devices);
269 270
270 #endif 271 #endif
monitor.c
@@ -1185,28 +1185,15 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size, @@ -1185,28 +1185,15 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size,
1185 suffix, addr, size * 2, val); 1185 suffix, addr, size * 2, val);
1186 } 1186 }
1187 1187
1188 -/* boot_set handler */  
1189 -static QEMUBootSetHandler *qemu_boot_set_handler = NULL;  
1190 -static void *boot_opaque;  
1191 -  
1192 -void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque)  
1193 -{  
1194 - qemu_boot_set_handler = func;  
1195 - boot_opaque = opaque;  
1196 -}  
1197 -  
1198 static void do_boot_set(Monitor *mon, const char *bootdevice) 1188 static void do_boot_set(Monitor *mon, const char *bootdevice)
1199 { 1189 {
1200 int res; 1190 int res;
1201 1191
1202 - if (qemu_boot_set_handler) {  
1203 - res = qemu_boot_set_handler(boot_opaque, bootdevice);  
1204 - if (res == 0)  
1205 - monitor_printf(mon, "boot device list now set to %s\n",  
1206 - bootdevice);  
1207 - else  
1208 - monitor_printf(mon, "setting boot device list failed with "  
1209 - "error %i\n", res); 1192 + res = qemu_boot_set(bootdevice);
  1193 + if (res == 0) {
  1194 + monitor_printf(mon, "boot device list now set to %s\n", bootdevice);
  1195 + } else if (res > 0) {
  1196 + monitor_printf(mon, "setting boot device list failed\n");
1210 } else { 1197 } else {
1211 monitor_printf(mon, "no function defined to set boot device list for " 1198 monitor_printf(mon, "no function defined to set boot device list for "
1212 "this architecture\n"); 1199 "this architecture\n");
@@ -274,6 +274,9 @@ static QEMUTimer *nographic_timer; @@ -274,6 +274,9 @@ static QEMUTimer *nographic_timer;
274 274
275 uint8_t qemu_uuid[16]; 275 uint8_t qemu_uuid[16];
276 276
  277 +static QEMUBootSetHandler *boot_set_handler;
  278 +static void *boot_set_opaque;
  279 +
277 /***********************************************************/ 280 /***********************************************************/
278 /* x86 ISA bus support */ 281 /* x86 ISA bus support */
279 282
@@ -2356,6 +2359,20 @@ int drive_init(struct drive_opt *arg, int snapshot, void *opaque) @@ -2356,6 +2359,20 @@ int drive_init(struct drive_opt *arg, int snapshot, void *opaque)
2356 return drives_table_idx; 2359 return drives_table_idx;
2357 } 2360 }
2358 2361
  2362 +void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque)
  2363 +{
  2364 + boot_set_handler = func;
  2365 + boot_set_opaque = opaque;
  2366 +}
  2367 +
  2368 +int qemu_boot_set(const char *boot_devices)
  2369 +{
  2370 + if (!boot_set_handler) {
  2371 + return -EINVAL;
  2372 + }
  2373 + return boot_set_handler(boot_set_opaque, boot_devices);
  2374 +}
  2375 +
2359 static int parse_bootdevices(char *devices) 2376 static int parse_bootdevices(char *devices)
2360 { 2377 {
2361 /* We just do some generic consistency checks */ 2378 /* We just do some generic consistency checks */