Lines Matching refs:thread
176 struct dmatest_thread *thread; in is_threaded_test_run() local
178 list_for_each_entry(thread, &dtc->threads, node) { in is_threaded_test_run()
179 if (!thread->done) in is_threaded_test_run()
402 struct dmatest_thread *thread = data; in dmatest_func() local
428 info = thread->info; in dmatest_func()
430 chan = thread->chan; in dmatest_func()
432 if (thread->type == DMA_MEMCPY) in dmatest_func()
434 else if (thread->type == DMA_XOR) { in dmatest_func()
438 } else if (thread->type == DMA_PQ) { in dmatest_func()
452 thread->srcs = kcalloc(src_cnt+1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
453 if (!thread->srcs) in dmatest_func()
456 thread->srcs[i] = kmalloc(params->buf_size, GFP_KERNEL); in dmatest_func()
457 if (!thread->srcs[i]) in dmatest_func()
460 thread->srcs[i] = NULL; in dmatest_func()
462 thread->dsts = kcalloc(dst_cnt+1, sizeof(u8 *), GFP_KERNEL); in dmatest_func()
463 if (!thread->dsts) in dmatest_func()
466 thread->dsts[i] = kmalloc(params->buf_size, GFP_KERNEL); in dmatest_func()
467 if (!thread->dsts[i]) in dmatest_func()
470 thread->dsts[i] = NULL; in dmatest_func()
492 if (thread->type == DMA_MEMCPY) in dmatest_func()
494 else if (thread->type == DMA_XOR) in dmatest_func()
496 else if (thread->type == DMA_PQ) in dmatest_func()
526 dmatest_init_srcs(thread->srcs, src_off, len, in dmatest_func()
528 dmatest_init_dsts(thread->dsts, dst_off, len, in dmatest_func()
543 void *buf = thread->srcs[i]; in dmatest_func()
563 void *buf = thread->dsts[i]; in dmatest_func()
580 if (thread->type == DMA_MEMCPY) in dmatest_func()
584 else if (thread->type == DMA_XOR) in dmatest_func()
589 else if (thread->type == DMA_PQ) { in dmatest_func()
661 error_count = dmatest_verify(thread->srcs, 0, src_off, in dmatest_func()
663 error_count += dmatest_verify(thread->srcs, src_off, in dmatest_func()
666 error_count += dmatest_verify(thread->srcs, src_off + len, in dmatest_func()
671 error_count += dmatest_verify(thread->dsts, 0, dst_off, in dmatest_func()
673 error_count += dmatest_verify(thread->dsts, dst_off, in dmatest_func()
676 error_count += dmatest_verify(thread->dsts, dst_off + len, in dmatest_func()
693 for (i = 0; thread->dsts[i]; i++) in dmatest_func()
694 kfree(thread->dsts[i]); in dmatest_func()
695 kfree(thread->dsts); in dmatest_func()
698 for (i = 0; thread->srcs[i]; i++) in dmatest_func()
699 kfree(thread->srcs[i]); in dmatest_func()
700 kfree(thread->srcs); in dmatest_func()
713 thread->done = true; in dmatest_func()
721 struct dmatest_thread *thread; in dmatest_cleanup_channel() local
725 list_for_each_entry_safe(thread, _thread, &dtc->threads, node) { in dmatest_cleanup_channel()
726 ret = kthread_stop(thread->task); in dmatest_cleanup_channel()
728 thread->task->comm, ret); in dmatest_cleanup_channel()
729 list_del(&thread->node); in dmatest_cleanup_channel()
730 put_task_struct(thread->task); in dmatest_cleanup_channel()
731 kfree(thread); in dmatest_cleanup_channel()
744 struct dmatest_thread *thread; in dmatest_add_threads() local
759 thread = kzalloc(sizeof(struct dmatest_thread), GFP_KERNEL); in dmatest_add_threads()
760 if (!thread) { in dmatest_add_threads()
765 thread->info = info; in dmatest_add_threads()
766 thread->chan = dtc->chan; in dmatest_add_threads()
767 thread->type = type; in dmatest_add_threads()
769 thread->task = kthread_create(dmatest_func, thread, "%s-%s%u", in dmatest_add_threads()
771 if (IS_ERR(thread->task)) { in dmatest_add_threads()
774 kfree(thread); in dmatest_add_threads()
779 get_task_struct(thread->task); in dmatest_add_threads()
780 list_add_tail(&thread->node, &dtc->threads); in dmatest_add_threads()
781 wake_up_process(thread->task); in dmatest_add_threads()