Commit 3320e56e54021acab2d6eeb4797ddac30c2411ef

Authored by Gerd Hoffmann
Committed by Anthony Liguori
1 parent b6b61144

qdev: add no_user, alias and desc

no_user: prevent users from adding certain devices.
desc: description of the device.
alias: to allow user friendly shortcuts on the command line, i.e.
  -device usbmouse  instead of  -device "QEMU USB Mouse"  or
  -device lsi       instead of  -device lsi53c895a

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing 2 changed files with 15 additions and 0 deletions
hw/qdev.c
@@ -50,6 +50,7 @@ static DeviceInfo *qdev_find_info(BusInfo *bus_info, const char *name) @@ -50,6 +50,7 @@ static DeviceInfo *qdev_find_info(BusInfo *bus_info, const char *name)
50 { 50 {
51 DeviceInfo *info; 51 DeviceInfo *info;
52 52
  53 + /* first check device names */
53 for (info = device_info_list; info != NULL; info = info->next) { 54 for (info = device_info_list; info != NULL; info = info->next) {
54 if (bus_info && info->bus_info != bus_info) 55 if (bus_info && info->bus_info != bus_info)
55 continue; 56 continue;
@@ -57,6 +58,17 @@ static DeviceInfo *qdev_find_info(BusInfo *bus_info, const char *name) @@ -57,6 +58,17 @@ static DeviceInfo *qdev_find_info(BusInfo *bus_info, const char *name)
57 continue; 58 continue;
58 return info; 59 return info;
59 } 60 }
  61 +
  62 + /* failing that check the aliases */
  63 + for (info = device_info_list; info != NULL; info = info->next) {
  64 + if (bus_info && info->bus_info != bus_info)
  65 + continue;
  66 + if (!info->alias)
  67 + continue;
  68 + if (strcmp(info->alias, name) != 0)
  69 + continue;
  70 + return info;
  71 + }
60 return NULL; 72 return NULL;
61 } 73 }
62 74
hw/qdev.h
@@ -95,8 +95,11 @@ typedef void (*SCSIAttachFn)(DeviceState *host, BlockDriverState *bdrv, @@ -95,8 +95,11 @@ typedef void (*SCSIAttachFn)(DeviceState *host, BlockDriverState *bdrv,
95 95
96 struct DeviceInfo { 96 struct DeviceInfo {
97 const char *name; 97 const char *name;
  98 + const char *alias;
  99 + const char *desc;
98 size_t size; 100 size_t size;
99 Property *props; 101 Property *props;
  102 + int no_user;
100 103
101 /* Private to qdev / bus. */ 104 /* Private to qdev / bus. */
102 qdev_initfn init; 105 qdev_initfn init;