monitor: add del completion for peripheral device
Add peripheral_device_del_completion() to let peripheral device del completion be possible. Signed-off-by: Zhu Guihua <zhugh.fnst@cn.fujitsu.com> Reviewed-by: Marcel Apfelbaum <marcel.a@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									66e56b13ad
								
							
						
					
					
						commit
						6a1fa9f5a6
					
				
							
								
								
									
										26
									
								
								monitor.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								monitor.c
									
									
									
									
									
								
							@ -4341,6 +4341,31 @@ static void device_del_bus_completion(ReadLineState *rs,  BusState *bus,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void peripheral_device_del_completion(ReadLineState *rs,
 | 
				
			||||||
 | 
					                                             const char *str, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Object *peripheral;
 | 
				
			||||||
 | 
					    GSList *list = NULL, *item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    peripheral = object_resolve_path("/machine/peripheral/", NULL);
 | 
				
			||||||
 | 
					    if (peripheral == NULL) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    object_child_foreach(peripheral, qdev_build_hotpluggable_device_list,
 | 
				
			||||||
 | 
					                         &list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (item = list; item; item = g_slist_next(item)) {
 | 
				
			||||||
 | 
					        DeviceState *dev = item->data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (dev->id && !strncmp(str, dev->id, len)) {
 | 
				
			||||||
 | 
					            readline_add_completion(rs, dev->id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_slist_free(list);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str)
 | 
					void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    size_t len;
 | 
					    size_t len;
 | 
				
			||||||
@ -4414,6 +4439,7 @@ void device_del_completion(ReadLineState *rs, int nb_args, const char *str)
 | 
				
			|||||||
    len = strlen(str);
 | 
					    len = strlen(str);
 | 
				
			||||||
    readline_set_completion_index(rs, len);
 | 
					    readline_set_completion_index(rs, len);
 | 
				
			||||||
    device_del_bus_completion(rs, sysbus_get_default(), str, len);
 | 
					    device_del_bus_completion(rs, sysbus_get_default(), str, len);
 | 
				
			||||||
 | 
					    peripheral_device_del_completion(rs, str, len);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void object_del_completion(ReadLineState *rs, int nb_args, const char *str)
 | 
					void object_del_completion(ReadLineState *rs, int nb_args, const char *str)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user