Lines Matching refs:thread

198 		struct dmatest_thread *thread;  in is_threaded_test_run()  local
200 list_for_each_entry(thread, &dtc->threads, node) { in is_threaded_test_run()
201 if (!thread->done) in is_threaded_test_run()
362 struct dmatest_thread *thread = in dmatest_callback() local
364 if (!thread->done) { in dmatest_callback()
447 struct dmatest_thread *thread = data; in dmatest_func() local
448 struct dmatest_done *done = &thread->test_done; in dmatest_func()
479 info = thread->info; in dmatest_func()
481 chan = thread->chan; in dmatest_func()
483 if (thread->type == DMA_MEMCPY) { in dmatest_func()
486 } else if (thread->type == DMA_MEMSET) { in dmatest_func()
490 } else if (thread->type == DMA_XOR) { in dmatest_func()
495 } else if (thread->type == DMA_PQ) { in dmatest_func()
510 thread->srcs = kcalloc(src_cnt + 1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
511 if (!thread->srcs) in dmatest_func()
514 thread->usrcs = kcalloc(src_cnt + 1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
515 if (!thread->usrcs) in dmatest_func()
519 thread->usrcs[i] = kmalloc(params->buf_size + align, in dmatest_func()
521 if (!thread->usrcs[i]) in dmatest_func()
526 thread->srcs[i] = PTR_ALIGN(thread->usrcs[i], align); in dmatest_func()
528 thread->srcs[i] = thread->usrcs[i]; in dmatest_func()
530 thread->srcs[i] = NULL; in dmatest_func()
532 thread->dsts = kcalloc(dst_cnt + 1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
533 if (!thread->dsts) in dmatest_func()
536 thread->udsts = kcalloc(dst_cnt + 1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
537 if (!thread->udsts) in dmatest_func()
541 thread->udsts[i] = kmalloc(params->buf_size + align, in dmatest_func()
543 if (!thread->udsts[i]) in dmatest_func()
548 thread->dsts[i] = PTR_ALIGN(thread->udsts[i], align); in dmatest_func()
550 thread->dsts[i] = thread->udsts[i]; in dmatest_func()
552 thread->dsts[i] = NULL; in dmatest_func()
616 dmatest_init_srcs(thread->srcs, src_off, len, in dmatest_func()
618 dmatest_init_dsts(thread->dsts, dst_off, len, in dmatest_func()
636 void *buf = thread->srcs[i]; in dmatest_func()
656 void *buf = thread->dsts[i]; in dmatest_func()
673 if (thread->type == DMA_MEMCPY) in dmatest_func()
677 else if (thread->type == DMA_MEMSET) in dmatest_func()
680 *(thread->srcs[0] + src_off), in dmatest_func()
682 else if (thread->type == DMA_XOR) in dmatest_func()
687 else if (thread->type == DMA_PQ) { in dmatest_func()
719 wait_event_freezable_timeout(thread->done_wait, done->done, in dmatest_func()
750 error_count = dmatest_verify(thread->srcs, 0, src_off, in dmatest_func()
752 error_count += dmatest_verify(thread->srcs, src_off, in dmatest_func()
755 error_count += dmatest_verify(thread->srcs, src_off + len, in dmatest_func()
760 error_count += dmatest_verify(thread->dsts, 0, dst_off, in dmatest_func()
763 error_count += dmatest_verify(thread->dsts, dst_off, in dmatest_func()
767 error_count += dmatest_verify(thread->dsts, dst_off + len, in dmatest_func()
793 for (i = 0; thread->udsts[i]; i++) in dmatest_func()
794 kfree(thread->udsts[i]); in dmatest_func()
795 kfree(thread->udsts); in dmatest_func()
797 kfree(thread->dsts); in dmatest_func()
800 for (i = 0; thread->usrcs[i]; i++) in dmatest_func()
801 kfree(thread->usrcs[i]); in dmatest_func()
802 kfree(thread->usrcs); in dmatest_func()
804 kfree(thread->srcs); in dmatest_func()
817 thread->done = true; in dmatest_func()
825 struct dmatest_thread *thread; in dmatest_cleanup_channel() local
829 list_for_each_entry_safe(thread, _thread, &dtc->threads, node) { in dmatest_cleanup_channel()
830 ret = kthread_stop(thread->task); in dmatest_cleanup_channel()
832 thread->task->comm, ret); in dmatest_cleanup_channel()
833 list_del(&thread->node); in dmatest_cleanup_channel()
834 put_task_struct(thread->task); in dmatest_cleanup_channel()
835 kfree(thread); in dmatest_cleanup_channel()
848 struct dmatest_thread *thread; in dmatest_add_threads() local
865 thread = kzalloc(sizeof(struct dmatest_thread), GFP_KERNEL); in dmatest_add_threads()
866 if (!thread) { in dmatest_add_threads()
871 thread->info = info; in dmatest_add_threads()
872 thread->chan = dtc->chan; in dmatest_add_threads()
873 thread->type = type; in dmatest_add_threads()
874 thread->test_done.wait = &thread->done_wait; in dmatest_add_threads()
875 init_waitqueue_head(&thread->done_wait); in dmatest_add_threads()
877 thread->task = kthread_create(dmatest_func, thread, "%s-%s%u", in dmatest_add_threads()
879 if (IS_ERR(thread->task)) { in dmatest_add_threads()
882 kfree(thread); in dmatest_add_threads()
887 get_task_struct(thread->task); in dmatest_add_threads()
888 list_add_tail(&thread->node, &dtc->threads); in dmatest_add_threads()
889 wake_up_process(thread->task); in dmatest_add_threads()