Commit 81ebb98b24eb5ea0f9d5a2717d71bcd01d652972
Committed by
Anthony Liguori
1 parent
15239b2e
qdev: factor out driver search to qdev_find_info()
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
15 additions
and
7 deletions
hw/qdev.c
... | ... | @@ -46,6 +46,20 @@ void qdev_register(DeviceInfo *info) |
46 | 46 | device_info_list = info; |
47 | 47 | } |
48 | 48 | |
49 | +static DeviceInfo *qdev_find_info(BusInfo *bus_info, const char *name) | |
50 | +{ | |
51 | + DeviceInfo *info; | |
52 | + | |
53 | + for (info = device_info_list; info != NULL; info = info->next) { | |
54 | + if (bus_info && info->bus_info != bus_info) | |
55 | + continue; | |
56 | + if (strcmp(info->name, name) != 0) | |
57 | + continue; | |
58 | + return info; | |
59 | + } | |
60 | + return NULL; | |
61 | +} | |
62 | + | |
49 | 63 | /* Create a new device. This only initializes the device state structure |
50 | 64 | and allows properties to be set. qdev_init should be called to |
51 | 65 | initialize the actual device emulation. */ |
... | ... | @@ -61,13 +75,7 @@ DeviceState *qdev_create(BusState *bus, const char *name) |
61 | 75 | bus = main_system_bus; |
62 | 76 | } |
63 | 77 | |
64 | - for (info = device_info_list; info != NULL; info = info->next) { | |
65 | - if (info->bus_info != bus->info) | |
66 | - continue; | |
67 | - if (strcmp(info->name, name) != 0) | |
68 | - continue; | |
69 | - break; | |
70 | - } | |
78 | + info = qdev_find_info(bus->info, name); | |
71 | 79 | if (!info) { |
72 | 80 | hw_error("Unknown device '%s' for bus '%s'\n", name, bus->info->name); |
73 | 81 | } | ... | ... |