/*
* message.c - synchronous message handling
*/
#include <linux/pci.h> /* for scatterlist macros */
#include <linux/usb.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/timer.h>
#include <linux/ctype.h>
#include <linux/device.h>
#include <asm/byteorder.h>
#include <asm/scatterlist.h>
#include "hcd.h" /* for usbcore internals */
#include "usb.h"
static void usb_api_blocking_completion(struct urb *urb)
{
complete((struct completion *)urb->context);
}
/*
* Starts urb and waits for completion or timeout. Note that this call
* is NOT interruptible. Ma