QMP: Introduce command dispatch table
Also update QMP functions to use it. The table is generated from the qmp-commands.hx file. From now on, QMP and HMP have different command dispatch tables. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									bead3ce139
								
							
						
					
					
						commit
						f36b4afba9
					
				@ -307,7 +307,7 @@ obj-alpha-y = alpha_palcode.o
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
 | 
					main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
monitor.o: qemu-monitor.h
 | 
					monitor.o: qemu-monitor.h qmp-commands.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
 | 
					$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -331,10 +331,13 @@ gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/feature_to_c.sh
 | 
				
			|||||||
qemu-monitor.h: $(SRC_PATH)/qemu-monitor.hx
 | 
					qemu-monitor.h: $(SRC_PATH)/qemu-monitor.hx
 | 
				
			||||||
	$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
 | 
						$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					qmp-commands.h: $(SRC_PATH)/qmp-commands.hx
 | 
				
			||||||
 | 
						$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
 | 
						rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
 | 
				
			||||||
	rm -f *.d */*.d tcg/*.o ide/*.o
 | 
						rm -f *.d */*.d tcg/*.o ide/*.o
 | 
				
			||||||
	rm -f qemu-monitor.h gdbstub-xml.c
 | 
						rm -f qemu-monitor.h qmp-commands.h gdbstub-xml.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install: all
 | 
					install: all
 | 
				
			||||||
ifneq ($(PROGS),)
 | 
					ifneq ($(PROGS),)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								monitor.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								monitor.c
									
									
									
									
									
								
							@ -189,6 +189,8 @@ static QLIST_HEAD(mon_list, Monitor) mon_list;
 | 
				
			|||||||
static const mon_cmd_t mon_cmds[];
 | 
					static const mon_cmd_t mon_cmds[];
 | 
				
			||||||
static const mon_cmd_t info_cmds[];
 | 
					static const mon_cmd_t info_cmds[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const mon_cmd_t qmp_cmds[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Monitor *cur_mon;
 | 
					Monitor *cur_mon;
 | 
				
			||||||
Monitor *default_mon;
 | 
					Monitor *default_mon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -745,7 +747,7 @@ static void do_info_commands(Monitor *mon, QObject **ret_data)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    cmd_list = qlist_new();
 | 
					    cmd_list = qlist_new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (cmd = mon_cmds; cmd->name != NULL; cmd++) {
 | 
					    for (cmd = qmp_cmds; cmd->name != NULL; cmd++) {
 | 
				
			||||||
        if (monitor_handler_ported(cmd) && !monitor_cmd_user_only(cmd) &&
 | 
					        if (monitor_handler_ported(cmd) && !monitor_cmd_user_only(cmd) &&
 | 
				
			||||||
            !compare_cmd(cmd->name, "info")) {
 | 
					            !compare_cmd(cmd->name, "info")) {
 | 
				
			||||||
            qlist_append_obj(cmd_list, get_cmd_dict(cmd->name));
 | 
					            qlist_append_obj(cmd_list, get_cmd_dict(cmd->name));
 | 
				
			||||||
@ -2635,6 +2637,11 @@ static const mon_cmd_t info_cmds[] = {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const mon_cmd_t qmp_cmds[] = {
 | 
				
			||||||
 | 
					#include "qmp-commands.h"
 | 
				
			||||||
 | 
					    { /* NULL */ },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*******************************************************************/
 | 
					/*******************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char *pch;
 | 
					static const char *pch;
 | 
				
			||||||
@ -3367,7 +3374,7 @@ static const mon_cmd_t *qmp_find_query_cmd(const char *info_item)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static const mon_cmd_t *qmp_find_cmd(const char *cmdname)
 | 
					static const mon_cmd_t *qmp_find_cmd(const char *cmdname)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return search_dispatch_table(mon_cmds, cmdname);
 | 
					    return search_dispatch_table(qmp_cmds, cmdname);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const mon_cmd_t *monitor_parse_command(Monitor *mon,
 | 
					static const mon_cmd_t *monitor_parse_command(Monitor *mon,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user