[PATCH] USB: implement error event in usbmon

Implement the "error" event in usbmon.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Pete Zaitcev
2006-06-09 22:03:32 -07:00
committed by Greg Kroah-Hartman
parent 5b1c674d22
commit 12e72feab5
3 changed files with 44 additions and 4 deletions

View File

@@ -182,6 +182,32 @@ static void mon_text_complete(void *data, struct urb *urb)
mon_text_event(rp, urb, 'C');
}
static void mon_text_error(void *data, struct urb *urb, int error)
{
struct mon_reader_text *rp = data;
struct mon_event_text *ep;
if (rp->nevents >= EVENT_MAX ||
(ep = kmem_cache_alloc(rp->e_slab, SLAB_ATOMIC)) == NULL) {
rp->r.m_bus->cnt_text_lost++;
return;
}
ep->type = 'E';
ep->pipe = urb->pipe;
ep->id = (unsigned long) urb;
ep->tstamp = 0;
ep->length = 0;
ep->status = error;
ep->setup_flag = '-';
ep->data_flag = 'E';
rp->nevents++;
list_add_tail(&ep->e_link, &rp->e_list);
wake_up(&rp->wait);
}
/*
* Fetch next event from the circular buffer.
*/
@@ -235,6 +261,7 @@ static int mon_text_open(struct inode *inode, struct file *file)
rp->r.m_bus = mbus;
rp->r.r_data = rp;
rp->r.rnf_submit = mon_text_submit;
rp->r.rnf_error = mon_text_error;
rp->r.rnf_complete = mon_text_complete;
snprintf(rp->slab_name, SLAB_NAME_SZ, "mon%dt_%lx", ubus->busnum,