Listing 2. The skel_write Function
/* we can only write as much as 1 urb will hold */
bytes_written = (count > skel->bulk_out_size)
? skel->bulk_out_size : count;
/* copy the data from user space into our urb */
copy_from_user(skel->write_urb->transfer_buffer,
buffer, bytes_written);
/* set up our urb */
FILL_BULK_URB(skel->write_urb, skel->dev,
usb_sndbulkpipe(skel->dev,
skel->bulk_out_endpointAddr),
skel->write_urb->transfer_buffer,
bytes_written, skel_write_bulk_callback,
skel);
/* send the data out the bulk port */
result = usb_submit_urb(skel->write_urb);
if (result) {
err(__FUNCTION__ " - failed submitting write
urb, error %d", result);
}