summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2016-05-23 11:31:12 +0000
committermpi <mpi@openbsd.org>2016-05-23 11:31:12 +0000
commitd47d3d239a9cc1d70bcb7573daa5180152906c8e (patch)
tree540fc9c088e59a896e3f9f085a9afeee644e4fb3 /sys
parentFix shutdown sequence. (diff)
downloadwireguard-openbsd-d47d3d239a9cc1d70bcb7573daa5180152906c8e.tar.xz
wireguard-openbsd-d47d3d239a9cc1d70bcb7573daa5180152906c8e.zip
Get rid of usbd_get_device_strings() because we use it only once.
Return a char * rather using a void function for usbd_get_device_string() ok patrick@
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/usb_subr.c44
-rw-r--r--sys/dev/usb/usbdivar.h3
2 files changed, 21 insertions, 26 deletions
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
index 9eb460993f2..4495a49483b 100644
--- a/sys/dev/usb/usb_subr.c
+++ b/sys/dev/usb/usb_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: usb_subr.c,v 1.122 2016/05/21 10:40:45 patrick Exp $ */
+/* $OpenBSD: usb_subr.c,v 1.123 2016/05/23 11:31:12 mpi Exp $ */
/* $NetBSD: usb_subr.c,v 1.103 2003/01/10 11:19:13 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */
@@ -63,7 +63,7 @@ usbd_status usbd_set_config(struct usbd_device *, int);
void usbd_devinfo(struct usbd_device *, int, char *, size_t);
void usbd_devinfo_vp(struct usbd_device *, char *, size_t,
char *, size_t, int);
-void usbd_get_device_string(struct usbd_device *, uByte, char **);
+char *usbd_get_device_string(struct usbd_device *, uByte);
char *usbd_get_string(struct usbd_device *, int, char *, size_t);
int usbd_getnewaddr(struct usbd_bus *);
int usbd_print(void *, const char *);
@@ -212,30 +212,23 @@ usbd_trim_spaces(char *p)
*e = 0; /* kill trailing spaces */
}
-void
-usbd_get_device_string(struct usbd_device *dev, uByte index, char **buf)
+char *
+usbd_get_device_string(struct usbd_device *dev, uByte index)
{
- char *b = malloc(USB_MAX_STRING_LEN, M_USB, M_NOWAIT);
- if (b != NULL) {
- if (usbd_get_string(dev, index, b, USB_MAX_STRING_LEN) != NULL)
- usbd_trim_spaces(b);
- else {
- free(b, M_USB, USB_MAX_STRING_LEN);
- b = NULL;
- }
+ char *buf;
+
+ buf = malloc(USB_MAX_STRING_LEN, M_USB, M_NOWAIT);
+ if (buf == NULL)
+ return (NULL);
+
+ if (usbd_get_string(dev, index, buf, USB_MAX_STRING_LEN) != NULL) {
+ usbd_trim_spaces(buf);
+ } else {
+ free(buf, M_USB, USB_MAX_STRING_LEN);
+ buf = NULL;
}
- *buf = b;
-}
-void
-usbd_get_device_strings(struct usbd_device *dev)
-{
- usbd_get_device_string(dev, dev->ddesc.iManufacturer,
- &dev->vendor);
- usbd_get_device_string(dev, dev->ddesc.iProduct,
- &dev->product);
- usbd_get_device_string(dev, dev->ddesc.iSerialNumber,
- &dev->serial);
+ return (buf);
}
void
@@ -1220,7 +1213,10 @@ usbd_new_device(struct device *parent, struct usbd_bus *bus, int depth,
DPRINTF(("usbd_new_device: new dev (addr %d), dev=%p, parent=%p\n",
addr, dev, parent));
- usbd_get_device_strings(dev);
+ /* Cache some strings if possible. */
+ dev->vendor = usbd_get_device_string(dev, dev->ddesc.iManufacturer);
+ dev->product = usbd_get_device_string(dev, dev->ddesc.iProduct);
+ dev->serial = usbd_get_device_string(dev, dev->ddesc.iSerialNumber);
err = usbd_probe_and_attach(parent, dev, port, addr);
if (err) {
diff --git a/sys/dev/usb/usbdivar.h b/sys/dev/usb/usbdivar.h
index 59c42f0dcda..683f2f4c52e 100644
--- a/sys/dev/usb/usbdivar.h
+++ b/sys/dev/usb/usbdivar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: usbdivar.h,v 1.70 2016/05/18 18:28:58 patrick Exp $ */
+/* $OpenBSD: usbdivar.h,v 1.71 2016/05/23 11:31:12 mpi Exp $ */
/* $NetBSD: usbdivar.h,v 1.70 2002/07/11 21:14:36 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdivar.h,v 1.11 1999/11/17 22:33:51 n_hibma Exp $ */
@@ -233,7 +233,6 @@ void usbd_dump_pipe(struct usbd_pipe *);
/* Routines from usb_subr.c */
int usbctlprint(void *, const char *);
-void usbd_get_device_strings(struct usbd_device *);
void usb_delay_ms(struct usbd_bus *, u_int);
usbd_status usbd_port_disown_to_1_1(struct usbd_device *, int);
int usbd_reset_port(struct usbd_device *, int);