From owner-svn-src-user@FreeBSD.ORG Sun Oct 10 21:40:36 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 408D6106564A; Sun, 10 Oct 2010 21:40:36 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 25FAB8FC14; Sun, 10 Oct 2010 21:40:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9ALeag9093802; Sun, 10 Oct 2010 21:40:36 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9ALeadX093798; Sun, 10 Oct 2010 21:40:36 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201010102140.o9ALeadX093798@svn.freebsd.org> From: Weongyo Jeong Date: Sun, 10 Oct 2010 21:40:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r213675 - in user/weongyo/usb/sys/dev/usb: . controller X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Oct 2010 21:40:36 -0000 Author: weongyo Date: Sun Oct 10 21:40:35 2010 New Revision: 213675 URL: http://svn.freebsd.org/changeset/base/213675 Log: Adds a global linked-list to link all `struct usb_bus' structures. This would be used to find a USB bus pointer by name that main consumer would be a implementation like USB transaction monitoring tools (e.g. usbmon in linux). Modified: user/weongyo/usb/sys/dev/usb/controller/usb_controller.c user/weongyo/usb/sys/dev/usb/usb_bus.h user/weongyo/usb/sys/dev/usb/usb_controller.h Modified: user/weongyo/usb/sys/dev/usb/controller/usb_controller.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/controller/usb_controller.c Sun Oct 10 20:54:01 2010 (r213674) +++ user/weongyo/usb/sys/dev/usb/controller/usb_controller.c Sun Oct 10 21:40:35 2010 (r213675) @@ -72,6 +72,8 @@ static void usb_bus_mem_free_all(struct /* static variables */ +static TAILQ_HEAD(, usb_bus) usb_bus_head; + #ifdef USB_DEBUG static int usb_ctrl_debug = 0; @@ -540,6 +542,9 @@ usb_bus_struct_init(struct usb_bus *bus, /* get all DMA memory */ if (usb_bus_mem_alloc_all(bus, USB_GET_DMA_TAG(dev))) return (ENOMEM); + + TAILQ_INSERT_TAIL(&usb_bus_head, bus, bus_link); + return (0); } @@ -547,6 +552,31 @@ void usb_bus_struct_fini(struct usb_bus *bus) { + TAILQ_REMOVE(&usb_bus_head, bus, bus_link); + usb_bus_mem_free_all(bus); mtx_destroy(&bus->bus_mtx); } + +struct usb_bus * +usb_bus_find(const char *name) +{ + struct usb_bus *bus; + const char *nameunit; + + TAILQ_FOREACH(bus, &usb_bus_head, bus_link) { + nameunit = device_get_nameunit(bus->bdev); + if (!strncmp(nameunit, name, strlen(nameunit))) + return (bus); + } + return (NULL); +} + +static void +usb_bus_first(void *arg) +{ + + TAILQ_INIT(&usb_bus_head); +} + +SYSINIT(usb_bus_first, SI_SUB_KLD, SI_ORDER_FIRST, usb_bus_first, NULL); Modified: user/weongyo/usb/sys/dev/usb/usb_bus.h ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_bus.h Sun Oct 10 20:54:01 2010 (r213674) +++ user/weongyo/usb/sys/dev/usb/usb_bus.h Sun Oct 10 21:40:35 2010 (r213675) @@ -103,6 +103,8 @@ struct usb_bus { struct usb_temp_setup temp_setup[1]; uint8_t data[255]; } scratch[1]; + + TAILQ_ENTRY(usb_bus) bus_link; }; #endif /* _USB_BUS_H_ */ Modified: user/weongyo/usb/sys/dev/usb/usb_controller.h ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_controller.h Sun Oct 10 20:54:01 2010 (r213674) +++ user/weongyo/usb/sys/dev/usb/usb_controller.h Sun Oct 10 21:40:35 2010 (r213675) @@ -199,6 +199,7 @@ int usb_bus_struct_init(struct usb_bus void (*busmem_func)(struct usb_bus *, usb_bus_mem_callback_t *)); void usb_bus_struct_fini(struct usb_bus *bus); +struct usb_bus *usb_bus_find(const char *name); void usb_bus_mem_flush_all(struct usb_bus *bus); uint16_t usb_isoc_time_expand(struct usb_bus *bus, uint16_t isoc_time_curr);