xref: /linux-6.15/include/linux/idle_inject.h (revision acbc6610)
188763a5cSDaniel Lezcano /* SPDX-License-Identifier: GPL-2.0 */
288763a5cSDaniel Lezcano /*
388763a5cSDaniel Lezcano  * Copyright (C) 2018 Linaro Ltd
488763a5cSDaniel Lezcano  *
588763a5cSDaniel Lezcano  * Author: Daniel Lezcano <[email protected]>
688763a5cSDaniel Lezcano  *
788763a5cSDaniel Lezcano  */
888763a5cSDaniel Lezcano #ifndef __IDLE_INJECT_H__
988763a5cSDaniel Lezcano #define __IDLE_INJECT_H__
1088763a5cSDaniel Lezcano 
1188763a5cSDaniel Lezcano /* private idle injection device structure */
1288763a5cSDaniel Lezcano struct idle_inject_device;
1388763a5cSDaniel Lezcano 
1488763a5cSDaniel Lezcano struct idle_inject_device *idle_inject_register(struct cpumask *cpumask);
1588763a5cSDaniel Lezcano 
16*acbc6610SSrinivas Pandruvada struct idle_inject_device *idle_inject_register_full(struct cpumask *cpumask,
17*acbc6610SSrinivas Pandruvada 						     bool (*update)(void));
18*acbc6610SSrinivas Pandruvada 
1988763a5cSDaniel Lezcano void idle_inject_unregister(struct idle_inject_device *ii_dev);
2088763a5cSDaniel Lezcano 
2188763a5cSDaniel Lezcano int idle_inject_start(struct idle_inject_device *ii_dev);
2288763a5cSDaniel Lezcano 
2388763a5cSDaniel Lezcano void idle_inject_stop(struct idle_inject_device *ii_dev);
2488763a5cSDaniel Lezcano 
2588763a5cSDaniel Lezcano void idle_inject_set_duration(struct idle_inject_device *ii_dev,
26cd4c0763SDaniel Lezcano 				 unsigned int run_duration_us,
27cd4c0763SDaniel Lezcano 				 unsigned int idle_duration_us);
2888763a5cSDaniel Lezcano 
2988763a5cSDaniel Lezcano void idle_inject_get_duration(struct idle_inject_device *ii_dev,
30cd4c0763SDaniel Lezcano 				 unsigned int *run_duration_us,
31cd4c0763SDaniel Lezcano 				 unsigned int *idle_duration_us);
32333cff6cSDaniel Lezcano 
33333cff6cSDaniel Lezcano void idle_inject_set_latency(struct idle_inject_device *ii_dev,
34585834a5Szhuguangqing 			     unsigned int latency_us);
35333cff6cSDaniel Lezcano 
3688763a5cSDaniel Lezcano #endif /* __IDLE_INJECT_H__ */
37