usb: Support for removing device by host addr, improved auto filter syntax
PATCH 1/1 usb: Support for removing device by host addr, improved auto filter syntax
This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:
usb_add host:3.5
...
usb_del host:3.5
Before the patch 'usb_del' did not support 'host:' notation.
----
Syntax for specifying auto connect filters has been improved. Old syntax was
host:bus.dev
host:pid:vid
New syntax is
host:auto:bus.dev[:pid:vid]
In both the cases any attribute can be set to "*".
New syntax is more flexible and lets you do things like
host:3.*:5533:* /* grab any device on bus 3 with vendor id 5533 */
It's now possible to remove auto filters. For example:
usb_del host:auto:3.*:5533:*
Active filters are printed after all host devices in 'info usb' output. Which now looks like this:
Device 1.1, speed 480 Mb/s
Hub: USB device 1d6b:0002, EHCI Host Controller
Device 1.4, speed 480 Mb/s
Class 00: USB device 1058:0704, External HDD
Auto filters:
Device 3.* ID *:*--- hw/usb.h | 1 + usb-linux.c | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- vl.c | 3 + 3 files changed, 176 insertions(+), 31 deletions(-)
hw/usb.h +1 -0
@@ -240,6 +240,7 @@ USBDevice *usb_hub_init(int nb_ports);/* usb-linux.c */ USBDevice *usb_host_device_open (const char *devname); +int usb_host_device_close (const char *devname);void usb_host_info (void );/* usb-hid.c */
usb-linux.c +172 -31
281 lines not on this page · raw message
vl.c +3 -0
@@ -5866,6 +5866,9 @@ static int usb_device_del(const char *devname)int bus_num, addr;const char *p; +if (strstart (devname,"host:" , &p)) +return usb_host_device_close (p); +if (!used_usb_ports)return -1 ;
Signature · 1 line
1.5.5.1
Quoted 10 lines · Max Krasnyansky
This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:usb_add host:3.5 ... usb_del host:3.5Before the patch '
usb_del' did not support 'host:' notation.
This patch breaks the windows build with:
i686-pc-mingw32-gcc -Wall -O2 -g -fno-strict-aliasing -m32 -I. -I/home/anthony/svn/qemu -MMD -MP -MT usb-linux.o -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/anthony/svn/qemu/slirp -c -o usb-linux.o /home/anthony/svn/qemu/usb-linux.c /home/anthony/svn/qemu/usb-linux.c:1205: error: conflicting types for 'usb_host_device_close'/home/anthony/svn/qemu/hw/usb.h:243: error: previous declaration of 'usb_host_device_close' was here
make: *** [usb-linux.o] Error 1
Regards,
Anthony Liguori
Quoted 18 lines · Anthony Liguori
Quoted 10 lines · Max Krasnyansky
This patch adds support for removing USB devices by host address. Which is usefull for things like libvirtd because there is no easy way to find guest USB address of the host device.
In other words you can now do:usb_add host:3.5 ... usb_del host:3.5Before the patch '
usb_del' did not support 'host:' notation.This patch breaks the windows build with:
i686-pc-mingw32-gcc -Wall -O2 -g -fno-strict-aliasing -m32 -I.
(quoted diff) +0
-3-I/home/anthony/svn/qemu -MMD -MP -MT usb-linux.o -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/anthony/svn/qemu/slirp -c -o usb-linux.o
Quoted 6 lines
/home/anthony/svn/qemu/usb-linux.c/home/anthony/svn/qemu/usb-linux.c:1205: error: conflicting types for 'usb_host_device_close'/home/anthony/svn/qemu/hw/usb.h:243: error: previous declaration of 'usb_host_device_close' was here
make: *** [usb-linux.o] Error 1
I'll take a look and resend. Thanx for testing.
Max