diff options
Diffstat (limited to 'kernel/torture.c')
-rw-r--r-- | kernel/torture.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/kernel/torture.c b/kernel/torture.c index d600af21f022..dd70993c266c 100644 --- a/kernel/torture.c +++ b/kernel/torture.c | |||
@@ -211,18 +211,16 @@ EXPORT_SYMBOL_GPL(torture_onoff_cleanup); | |||
211 | /* | 211 | /* |
212 | * Print online/offline testing statistics. | 212 | * Print online/offline testing statistics. |
213 | */ | 213 | */ |
214 | char *torture_onoff_stats(char *page) | 214 | void torture_onoff_stats(void) |
215 | { | 215 | { |
216 | #ifdef CONFIG_HOTPLUG_CPU | 216 | #ifdef CONFIG_HOTPLUG_CPU |
217 | page += sprintf(page, | 217 | pr_cont("onoff: %ld/%ld:%ld/%ld %d,%d:%d,%d %lu:%lu (HZ=%d) ", |
218 | "onoff: %ld/%ld:%ld/%ld %d,%d:%d,%d %lu:%lu (HZ=%d) ", | 218 | n_online_successes, n_online_attempts, |
219 | n_online_successes, n_online_attempts, | 219 | n_offline_successes, n_offline_attempts, |
220 | n_offline_successes, n_offline_attempts, | 220 | min_online, max_online, |
221 | min_online, max_online, | 221 | min_offline, max_offline, |
222 | min_offline, max_offline, | 222 | sum_online, sum_offline, HZ); |
223 | sum_online, sum_offline, HZ); | ||
224 | #endif /* #ifdef CONFIG_HOTPLUG_CPU */ | 223 | #endif /* #ifdef CONFIG_HOTPLUG_CPU */ |
225 | return page; | ||
226 | } | 224 | } |
227 | EXPORT_SYMBOL_GPL(torture_onoff_stats); | 225 | EXPORT_SYMBOL_GPL(torture_onoff_stats); |
228 | 226 | ||
@@ -635,8 +633,13 @@ EXPORT_SYMBOL_GPL(torture_init_end); | |||
635 | * | 633 | * |
636 | * This must be called before the caller starts shutting down its own | 634 | * This must be called before the caller starts shutting down its own |
637 | * kthreads. | 635 | * kthreads. |
636 | * | ||
637 | * Both torture_cleanup_begin() and torture_cleanup_end() must be paired, | ||
638 | * in order to correctly perform the cleanup. They are separated because | ||
639 | * threads can still need to reference the torture_type type, thus nullify | ||
640 | * only after completing all other relevant calls. | ||
638 | */ | 641 | */ |
639 | bool torture_cleanup(void) | 642 | bool torture_cleanup_begin(void) |
640 | { | 643 | { |
641 | mutex_lock(&fullstop_mutex); | 644 | mutex_lock(&fullstop_mutex); |
642 | if (ACCESS_ONCE(fullstop) == FULLSTOP_SHUTDOWN) { | 645 | if (ACCESS_ONCE(fullstop) == FULLSTOP_SHUTDOWN) { |
@@ -651,12 +654,17 @@ bool torture_cleanup(void) | |||
651 | torture_shuffle_cleanup(); | 654 | torture_shuffle_cleanup(); |
652 | torture_stutter_cleanup(); | 655 | torture_stutter_cleanup(); |
653 | torture_onoff_cleanup(); | 656 | torture_onoff_cleanup(); |
657 | return false; | ||
658 | } | ||
659 | EXPORT_SYMBOL_GPL(torture_cleanup_begin); | ||
660 | |||
661 | void torture_cleanup_end(void) | ||
662 | { | ||
654 | mutex_lock(&fullstop_mutex); | 663 | mutex_lock(&fullstop_mutex); |
655 | torture_type = NULL; | 664 | torture_type = NULL; |
656 | mutex_unlock(&fullstop_mutex); | 665 | mutex_unlock(&fullstop_mutex); |
657 | return false; | ||
658 | } | 666 | } |
659 | EXPORT_SYMBOL_GPL(torture_cleanup); | 667 | EXPORT_SYMBOL_GPL(torture_cleanup_end); |
660 | 668 | ||
661 | /* | 669 | /* |
662 | * Is it time for the current torture test to stop? | 670 | * Is it time for the current torture test to stop? |