*/
#include "qemu-common.h"
-#include "console.h"
+#include "monitor.h"
#include "hw/usb.h"
/* usb.h declares these */
#undef USB_SPEED_LOW
#include <sys/ioctl.h>
+#ifndef __DragonFly__
#include <dev/usb/usb.h>
+#else
+#include <bus/usb/usb.h>
+#endif
#include <signal.h>
/* This value has maximum potential at 16.
ep = UE_GET_ADDR(ep);
if (dev->ep_fd[ep] < 0) {
-#if __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
snprintf(buf, sizeof(buf) - 1, "%s.%d", dev->devpath, ep);
#else
snprintf(buf, sizeof(buf) - 1, "%s.%02d", dev->devpath, ep);
req.ucr_flags = USBD_SHORT_XFER_OK;
ret = ioctl(s->devfd, USB_SET_TIMEOUT, &timeout);
-#if (__NetBSD__ || __OpenBSD__)
+#if defined(__NetBSD__) || defined(__OpenBSD__)
if (ret < 0 && errno != EINVAL) {
#else
if (ret < 0) {
return NULL;
}
-#if __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
snprintf(ctlpath, PATH_MAX, "/dev/%s", bus_info.udi_devnames[0]);
#else
snprintf(ctlpath, PATH_MAX, "/dev/%s.00", bus_info.udi_devnames[0]);
if (dfd >= 0) {
dev = qemu_mallocz(sizeof(USBHostDevice));
- if (!dev)
- goto fail;
dev->devfd = dfd;
if (ioctl(dfd, USB_GET_DEVICEINFO, &dev_info) < 0) {
"host:%s", devname);
pstrcpy(dev->devpath, sizeof(dev->devpath), "/dev/");
- strcat(dev->devpath, dev_info.udi_devnames[0]);
+ pstrcat(dev->devpath, sizeof(dev->devpath), dev_info.udi_devnames[0]);
/* Mark the endpoints as not yet open */
for (i = 0; i < USB_MAX_ENDPOINTS; i++)
if (strncmp(bus_info.udi_devnames[0], "ugen", 4) != 0)
continue;
-#if __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
snprintf(devbuf, sizeof(devbuf) - 1, "/dev/%s", bus_info.udi_devnames[0]);
#else
snprintf(devbuf, sizeof(devbuf) - 1, "/dev/%s.00", bus_info.udi_devnames[0]);
return p->class_name;
}
-void usb_info_device(int bus_num, int addr, int class_id,
- int vendor_id, int product_id,
- const char *product_name,
- int speed)
+static void usb_info_device(int bus_num, int addr, int class_id,
+ int vendor_id, int product_id,
+ const char *product_name,
+ int speed)
{
const char *class_str, *speed_str;
+ Monitor *mon = cur_mon;
switch(speed) {
case USB_SPEED_LOW:
break;
}
- term_printf(" Device %d.%d, speed %s Mb/s\n",
- bus_num, addr, speed_str);
+ monitor_printf(mon, " Device %d.%d, speed %s Mb/s\n",
+ bus_num, addr, speed_str);
class_str = usb_class_str(class_id);
if (class_str)
- term_printf(" %s:", class_str);
+ monitor_printf(mon, " %s:", class_str);
else
- term_printf(" Class %02x:", class_id);
- term_printf(" USB device %04x:%04x", vendor_id, product_id);
+ monitor_printf(mon, " Class %02x:", class_id);
+ monitor_printf(mon, " USB device %04x:%04x", vendor_id, product_id);
if (product_name[0] != '\0')
- term_printf(", %s", product_name);
- term_printf("\n");
+ monitor_printf(mon, ", %s", product_name);
+ monitor_printf(mon, "\n");
}
-static int usb_host_info_device(void *opaque, int bus_num, int addr,
+static int usb_host_info_device(void *opaque,
+ int bus_num, int addr,
int class_id,
int vendor_id, int product_id,
const char *product_name,
return 0;
}
-void usb_host_info(void)
+void usb_host_info(Monitor *mon)
{
usb_host_scan(NULL, usb_host_info_device);
}