/* Define sysfs entries for the usbip driver */
-
/*
* busid_tables defines matching busids that usbip can grab. A user can change
* dynamically what device is locally used and what device is exported to a
static struct bus_id_priv busid_table[MAX_BUSID];
static spinlock_t busid_table_lock;
-
int match_busid(const char *busid)
{
int i;
return -1;
}
+
static void init_busid_table(void)
{
int i;
-
for (i = 0; i < MAX_BUSID; i++) {
memset(busid_table[i].name, 0, BUSID_SIZE);
busid_table[i].status = STUB_BUSID_OTHER;
busid_table[i].sdev = NULL;
busid_table[i].shutdown_busid = 0;
}
+
spin_lock_init(&busid_table_lock);
}
static ssize_t store_match_busid(struct device_driver *dev, const char *buf,
- size_t count)
+ size_t count)
{
int len;
char busid[BUSID_SIZE];
strncpy(busid, buf + 4, BUSID_SIZE);
-
if (!strncmp(buf, "add ", 4)) {
if (add_match_busid(busid) < 0)
return -ENOMEM;
} else
return -EINVAL;
}
-
static DRIVER_ATTR(match_busid, S_IRUSR|S_IWUSR, show_match_busid,
- store_match_busid);
-
-
+ store_match_busid);
/*-------------------------------------------------------------------------*/
kmem_cache_free(stub_priv_cache, priv);
kfree(urb->transfer_buffer);
-
kfree(urb->setup_packet);
usb_free_urb(urb);
}
}
-
/*-------------------------------------------------------------------------*/
static int __init usb_stub_init(void)
goto error_usb_register;
}
- printk(KERN_INFO KBUILD_MODNAME ":"
- DRIVER_DESC ":" DRIVER_VERSION "\n");
+ printk(KERN_INFO KBUILD_MODNAME ":" DRIVER_DESC ":" DRIVER_VERSION
+ "\n");
init_busid_table();