summaryrefslogtreecommitdiffstats
path: root/kernel/torture.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2023-07-19 15:50:07 -0700
committerPaul E. McKenney <paulmck@kernel.org>2023-08-14 15:00:37 -0700
commit67d5404d274376890d6d095a10e6565854918f8e (patch)
tree6b849719a7d64178d174c1604fee9b87b6fa35e2 /kernel/torture.c
parente2a0b786c50cf4f0c3abfcd05888ae583c98cf25 (diff)
downloadlinux-67d5404d274376890d6d095a10e6565854918f8e.tar.gz
linux-67d5404d274376890d6d095a10e6565854918f8e.tar.bz2
linux-67d5404d274376890d6d095a10e6565854918f8e.zip
torture: Add a kthread-creation callback to _torture_create_kthread()
This commit adds a kthread-creation callback to the _torture_create_kthread() function, which allows callers of a new torture_create_kthread_cb() macro to specify a function to be invoked after the kthread is created but before it is awakened for the first time. Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Valentin Schneider <vschneid@redhat.com> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> Cc: kernel-team@android.com Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Acked-by: John Stultz <jstultz@google.com>
Diffstat (limited to 'kernel/torture.c')
-rw-r--r--kernel/torture.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/torture.c b/kernel/torture.c
index 8be83fdc6be1..b88a1a86d9da 100644
--- a/kernel/torture.c
+++ b/kernel/torture.c
@@ -932,7 +932,7 @@ EXPORT_SYMBOL_GPL(torture_kthread_stopping);
* it starts, you will need to open-code your own.
*/
int _torture_create_kthread(int (*fn)(void *arg), void *arg, char *s, char *m,
- char *f, struct task_struct **tp)
+ char *f, struct task_struct **tp, void (*cbf)(struct task_struct *tp))
{
int ret = 0;
@@ -944,6 +944,10 @@ int _torture_create_kthread(int (*fn)(void *arg), void *arg, char *s, char *m,
*tp = NULL;
return ret;
}
+
+ if (cbf)
+ cbf(*tp);
+
wake_up_process(*tp); // Process is sleeping, so ordering provided.
torture_shuffle_task_register(*tp);
return ret;