Lines Matching refs:rp
106 mon_text_read_wait(struct mon_reader_text *rp, struct file *file);
107 static void mon_text_read_head_t(struct mon_reader_text *rp,
109 static void mon_text_read_head_u(struct mon_reader_text *rp,
111 static void mon_text_read_statset(struct mon_reader_text *rp,
113 static void mon_text_read_intstat(struct mon_reader_text *rp,
115 static void mon_text_read_isostat(struct mon_reader_text *rp,
117 static void mon_text_read_isodesc(struct mon_reader_text *rp,
119 static void mon_text_read_data(struct mon_reader_text *rp,
193 static void mon_text_event(struct mon_reader_text *rp, struct urb *urb,
204 if (rp->nevents >= EVENT_MAX ||
205 (ep = kmem_cache_alloc(rp->e_slab, GFP_ATOMIC)) == NULL) {
206 rp->r.m_bus->cnt_text_lost++;
250 ep->setup_flag = mon_text_get_setup(ep, urb, ev_type, rp->r.m_bus);
252 rp->r.m_bus);
254 rp->nevents++;
255 list_add_tail(&ep->e_link, &rp->e_list);
256 wake_up(&rp->wait);
261 struct mon_reader_text *rp = data;
262 mon_text_event(rp, urb, 'S', -EINPROGRESS);
267 struct mon_reader_text *rp = data;
268 mon_text_event(rp, urb, 'C', status);
273 struct mon_reader_text *rp = data;
276 if (rp->nevents >= EVENT_MAX ||
277 (ep = kmem_cache_alloc(rp->e_slab, GFP_ATOMIC)) == NULL) {
278 rp->r.m_bus->cnt_text_lost++;
296 rp->nevents++;
297 list_add_tail(&ep->e_link, &rp->e_list);
298 wake_up(&rp->wait);
304 static struct mon_event_text *mon_text_fetch(struct mon_reader_text *rp,
311 if (list_empty(&rp->e_list)) {
315 p = rp->e_list.next;
317 --rp->nevents;
327 struct mon_reader_text *rp;
333 rp = kzalloc(sizeof(struct mon_reader_text), GFP_KERNEL);
334 if (rp == NULL) {
338 INIT_LIST_HEAD(&rp->e_list);
339 init_waitqueue_head(&rp->wait);
340 mutex_init(&rp->printf_lock);
342 rp->printf_size = PRINTF_DFL;
343 rp->printf_buf = kmalloc(rp->printf_size, GFP_KERNEL);
344 if (rp->printf_buf == NULL) {
349 rp->r.m_bus = mbus;
350 rp->r.r_data = rp;
351 rp->r.rnf_submit = mon_text_submit;
352 rp->r.rnf_error = mon_text_error;
353 rp->r.rnf_complete = mon_text_complete;
355 snprintf(rp->slab_name, SLAB_NAME_SZ, "mon_text_%p", rp);
356 rp->e_slab = kmem_cache_create(rp->slab_name,
359 if (rp->e_slab == NULL) {
364 mon_reader_add(mbus, &rp->r);
366 file->private_data = rp;
371 // kmem_cache_destroy(rp->e_slab);
373 kfree(rp->printf_buf);
375 kfree(rp);
381 static ssize_t mon_text_copy_to_user(struct mon_reader_text *rp,
384 const size_t togo = min(nbytes, rp->printf_togo);
386 if (copy_to_user(buf, &rp->printf_buf[rp->printf_offset], togo))
388 rp->printf_togo -= togo;
389 rp->printf_offset += togo;
397 struct mon_reader_text *rp = file->private_data;
402 mutex_lock(&rp->printf_lock);
404 if (rp->printf_togo == 0) {
406 ep = mon_text_read_wait(rp, file);
408 mutex_unlock(&rp->printf_lock);
412 ptr.pbuf = rp->printf_buf;
413 ptr.limit = rp->printf_size;
415 mon_text_read_head_t(rp, &ptr, ep);
416 mon_text_read_statset(rp, &ptr, ep);
419 mon_text_read_data(rp, &ptr, ep);
421 rp->printf_togo = ptr.cnt;
422 rp->printf_offset = 0;
424 kmem_cache_free(rp->e_slab, ep);
427 ret = mon_text_copy_to_user(rp, buf, nbytes);
428 mutex_unlock(&rp->printf_lock);
436 struct mon_reader_text *rp = file->private_data;
441 mutex_lock(&rp->printf_lock);
443 if (rp->printf_togo == 0) {
445 ep = mon_text_read_wait(rp, file);
447 mutex_unlock(&rp->printf_lock);
451 ptr.pbuf = rp->printf_buf;
452 ptr.limit = rp->printf_size;
454 mon_text_read_head_u(rp, &ptr, ep);
456 mon_text_read_statset(rp, &ptr, ep);
458 mon_text_read_isostat(rp, &ptr, ep);
459 mon_text_read_isodesc(rp, &ptr, ep);
461 mon_text_read_intstat(rp, &ptr, ep);
463 mon_text_read_statset(rp, &ptr, ep);
467 mon_text_read_data(rp, &ptr, ep);
469 rp->printf_togo = ptr.cnt;
470 rp->printf_offset = 0;
472 kmem_cache_free(rp->e_slab, ep);
475 ret = mon_text_copy_to_user(rp, buf, nbytes);
476 mutex_unlock(&rp->printf_lock);
480 static struct mon_event_text *mon_text_read_wait(struct mon_reader_text *rp,
483 struct mon_bus *mbus = rp->r.m_bus;
487 add_wait_queue(&rp->wait, &waita);
489 while ((ep = mon_text_fetch(rp, mbus)) == NULL) {
492 remove_wait_queue(&rp->wait, &waita);
501 remove_wait_queue(&rp->wait, &waita);
507 remove_wait_queue(&rp->wait, &waita);
511 static void mon_text_read_head_t(struct mon_reader_text *rp,
529 static void mon_text_read_head_u(struct mon_reader_text *rp,
547 static void mon_text_read_statset(struct mon_reader_text *rp,
568 static void mon_text_read_intstat(struct mon_reader_text *rp,
575 static void mon_text_read_isostat(struct mon_reader_text *rp,
588 static void mon_text_read_isodesc(struct mon_reader_text *rp,
610 static void mon_text_read_data(struct mon_reader_text *rp,
644 struct mon_reader_text *rp = file->private_data;
658 mon_reader_del(mbus, &rp->r);
668 while (!list_empty(&rp->e_list)) {
669 p = rp->e_list.next;
672 --rp->nevents;
673 kmem_cache_free(rp->e_slab, ep);
677 kmem_cache_destroy(rp->e_slab);
678 kfree(rp->printf_buf);
679 kfree(rp);