From: Lonnie Mendez <lmendez19@austin.rr.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [usb] display device identifier string for user with info usb
Date: Thu, 15 Jun 2006 02:52:11 -0500 [thread overview]
Message-ID: <1150357931.5338.11.camel@localhost> (raw)
In-Reply-To: <4490367D.605@bellard.org>
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
On Wed, 2006-06-14 at 18:17 +0200, Fabrice Bellard wrote:
> OK for this patch, but the following must be changed:
>
> 1) All instances of strcpy and strncpy must be replaced by pstrcpy.
>
> 2) product_name_size must be passed as parameter to usb_host_find_device().
lo. Attached is something I hope you will find to be more clean. I
used a define for product name size since this is used in two places to
define an array size (in usb_host_device_open() and the FindDeviceState
struct).
[-- Attachment #2: qemu-usb-devname.diff --]
[-- Type: text/x-patch, Size: 5440 bytes --]
--- qemu/hw/usb.h 2006-05-25 18:58:51.000000000 -0500
+++ qemu/hw/usb.h 2006-06-15 00:56:38.000000000 -0500
@@ -128,6 +128,7 @@
int (*handle_data)(USBDevice *dev, int pid, uint8_t devep,
uint8_t *data, int len);
uint8_t addr;
+ char devname[32];
int state;
uint8_t setup_buf[8];
--- qemu/hw/usb-hub.c 2006-05-25 18:58:51.000000000 -0500
+++ qemu/hw/usb-hub.c 2006-06-15 01:27:09.000000000 -0500
@@ -544,6 +544,8 @@
s->dev.handle_control = usb_hub_handle_control;
s->dev.handle_data = usb_hub_handle_data;
+ pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Hub");
+
s->nb_ports = nb_ports;
for(i = 0; i < s->nb_ports; i++) {
port = &s->ports[i];
--- qemu/hw/usb-hid.c 2006-05-25 18:58:51.000000000 -0500
+++ qemu/hw/usb-hid.c 2006-06-15 01:26:37.000000000 -0500
@@ -521,6 +521,8 @@
s->dev.handle_data = usb_mouse_handle_data;
s->kind = USB_TABLET;
+ pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Tablet");
+
return (USBDevice *)s;
}
@@ -539,5 +541,7 @@
s->dev.handle_data = usb_mouse_handle_data;
s->kind = USB_MOUSE;
+ pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Mouse");
+
return (USBDevice *)s;
}
--- qemu/hw/usb-msd.c 2006-05-26 16:53:41.000000000 -0500
+++ qemu/hw/usb-msd.c 2006-06-15 02:17:18.000000000 -0500
@@ -374,6 +374,7 @@
{
MSDState *s;
BlockDriverState *bdrv;
+ char msd_info_str[32];
s = qemu_mallocz(sizeof(MSDState));
if (!s)
@@ -389,6 +390,10 @@
s->dev.handle_control = usb_msd_handle_control;
s->dev.handle_data = usb_msd_handle_data;
+ snprintf(msd_info_str, sizeof(msd_info_str), "QEMU USB MSD(%.17s)",
+ filename);
+ pstrcpy(s->dev.devname, sizeof(s->dev.devname), msd_info_str);
+
s->scsi_dev = scsi_disk_init(bdrv, usb_msd_command_complete, s);
usb_msd_handle_reset((USBDevice *)s, 0);
return (USBDevice *)s;
--- qemu/vl.c 2006-06-14 12:32:25.000000000 -0500
+++ qemu/vl.c 2006-06-15 00:56:38.000000000 -0500
@@ -3412,8 +3447,8 @@
speed_str = "?";
break;
}
- term_printf(" Device %d.%d, speed %s Mb/s\n",
- 0, dev->addr, speed_str);
+ term_printf(" Device %d.%d, Speed %s Mb/s, Product %s\n",
+ 0, dev->addr, speed_str, dev->devname);
}
}
--- qemu/usb-linux.c 2006-05-25 18:58:51.000000000 -0500
+++ qemu/usb-linux.c 2006-06-15 02:35:56.000000000 -0500
@@ -44,11 +44,13 @@
int vendor_id, int product_id,
const char *product_name, int speed);
static int usb_host_find_device(int *pbus_num, int *paddr,
+ char *product_name,
const char *devname);
//#define DEBUG
#define USBDEVFS_PATH "/proc/bus/usb"
+#define PRODUCT_NAME_SZ 32
typedef struct USBHostDevice {
USBDevice dev;
@@ -145,8 +147,9 @@
char buf[1024];
int descr_len, dev_descr_len, config_descr_len, nb_interfaces;
int bus_num, addr;
+ char product_name[PRODUCT_NAME_SZ];
- if (usb_host_find_device(&bus_num, &addr, devname) < 0)
+ if (usb_host_find_device(&bus_num, &addr, product_name, devname) < 0)
return NULL;
snprintf(buf, sizeof(buf), USBDEVFS_PATH "/%03d/%03d",
@@ -230,6 +233,14 @@
dev->dev.handle_reset = usb_host_handle_reset;
dev->dev.handle_control = usb_host_handle_control;
dev->dev.handle_data = usb_host_handle_data;
+
+ if (product_name[0] == '\0')
+ snprintf(dev->dev.devname, sizeof(dev->dev.devname),
+ "host:%s", devname);
+ else
+ pstrcpy(dev->dev.devname, sizeof(dev->dev.devname),
+ product_name);
+
return (USBDevice *)dev;
}
@@ -337,6 +348,7 @@
int product_id;
int bus_num;
int addr;
+ char product_name[PRODUCT_NAME_SZ];
} FindDeviceState;
static int usb_host_find_device_scan(void *opaque, int bus_num, int addr,
@@ -345,8 +357,11 @@
const char *product_name, int speed)
{
FindDeviceState *s = opaque;
- if (vendor_id == s->vendor_id &&
- product_id == s->product_id) {
+ if ((vendor_id == s->vendor_id &&
+ product_id == s->product_id) ||
+ (bus_num == s->bus_num &&
+ addr == s->addr)) {
+ pstrcpy(s->product_name, PRODUCT_NAME_SZ, product_name);
s->bus_num = bus_num;
s->addr = addr;
return 1;
@@ -359,6 +374,7 @@
'bus.addr' (decimal numbers) or
'vendor_id:product_id' (hexa numbers) */
static int usb_host_find_device(int *pbus_num, int *paddr,
+ char *product_name,
const char *devname)
{
const char *p;
@@ -369,6 +385,11 @@
if (p) {
*pbus_num = strtoul(devname, NULL, 0);
*paddr = strtoul(p + 1, NULL, 0);
+ fs.bus_num = *pbus_num;
+ fs.addr = *paddr;
+ ret = usb_host_scan(&fs, usb_host_find_device_scan);
+ if (ret)
+ pstrcpy(product_name, PRODUCT_NAME_SZ, fs.product_name);
return 0;
}
p = strchr(devname, ':');
@@ -379,6 +400,7 @@
if (ret) {
*pbus_num = fs.bus_num;
*paddr = fs.addr;
+ pstrcpy(product_name, PRODUCT_NAME_SZ, fs.product_name);
return 0;
}
}
prev parent reply other threads:[~2006-06-15 7:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-22 20:12 [Qemu-devel] [usb] display device identifier string for user with info usb Lonnie Mendez
2006-05-22 20:15 ` Lonnie Mendez
[not found] ` <4490367D.605@bellard.org>
2006-06-15 7:52 ` Lonnie Mendez [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1150357931.5338.11.camel@localhost \
--to=lmendez19@austin.rr.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).