提交 3e5ccd86 编写于 作者: A Andy Shevchenko 提交者: Vinod Koul

dmatest: return actual state in 'run' file

The following command should return actual state of the test.
	% cat /sys/kernel/debug/dmatest/run

To wait for test done the user may perform a busy loop that checks the state.
	% while [ $(cat /sys/kernel/debug/dmatest/run) = "Y" ]
	> do
	> 	echo -n "."
	> 	sleep 1
	> done
	> echo
Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: NVinod Koul <vinod.koul@intel.com>
上级 851b7e16
...@@ -36,6 +36,18 @@ in the original code. ...@@ -36,6 +36,18 @@ in the original code.
Note that running a new test will stop any in progress test. Note that running a new test will stop any in progress test.
The following command should return actual state of the test.
% cat /sys/kernel/debug/dmatest/run
To wait for test done the user may perform a busy loop that checks the state.
% while [ $(cat /sys/kernel/debug/dmatest/run) = "Y" ]
> do
> echo -n "."
> sleep 1
> done
> echo
Part 3 - When built-in in the kernel... Part 3 - When built-in in the kernel...
The module parameters that is supplied to the kernel command line will be used The module parameters that is supplied to the kernel command line will be used
......
...@@ -93,6 +93,7 @@ struct dmatest_thread { ...@@ -93,6 +93,7 @@ struct dmatest_thread {
u8 **srcs; u8 **srcs;
u8 **dsts; u8 **dsts;
enum dma_transaction_type type; enum dma_transaction_type type;
bool done;
}; };
struct dmatest_chan { struct dmatest_chan {
...@@ -603,6 +604,8 @@ static int dmatest_func(void *data) ...@@ -603,6 +604,8 @@ static int dmatest_func(void *data)
if (ret) if (ret)
dmaengine_terminate_all(chan); dmaengine_terminate_all(chan);
thread->done = true;
if (params->iterations > 0) if (params->iterations > 0)
while (!kthread_should_stop()) { while (!kthread_should_stop()) {
DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wait_dmatest_exit); DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wait_dmatest_exit);
...@@ -884,12 +887,28 @@ static ssize_t dtf_read_run(struct file *file, char __user *user_buf, ...@@ -884,12 +887,28 @@ static ssize_t dtf_read_run(struct file *file, char __user *user_buf,
{ {
struct dmatest_info *info = file->private_data; struct dmatest_info *info = file->private_data;
char buf[3]; char buf[3];
struct dmatest_chan *dtc;
bool alive = false;
mutex_lock(&info->lock); mutex_lock(&info->lock);
if (info->nr_channels) list_for_each_entry(dtc, &info->channels, node) {
struct dmatest_thread *thread;
list_for_each_entry(thread, &dtc->threads, node) {
if (!thread->done) {
alive = true;
break;
}
}
}
if (alive) {
buf[0] = 'Y'; buf[0] = 'Y';
else } else {
__stop_threaded_test(info);
buf[0] = 'N'; buf[0] = 'N';
}
mutex_unlock(&info->lock); mutex_unlock(&info->lock);
buf[1] = '\n'; buf[1] = '\n';
buf[2] = 0x00; buf[2] = 0x00;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册