xref: /linux-6.15/include/linux/idle_inject.h (revision 333cff6c)
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 
1688763a5cSDaniel Lezcano void idle_inject_unregister(struct idle_inject_device *ii_dev);
1788763a5cSDaniel Lezcano 
1888763a5cSDaniel Lezcano int idle_inject_start(struct idle_inject_device *ii_dev);
1988763a5cSDaniel Lezcano 
2088763a5cSDaniel Lezcano void idle_inject_stop(struct idle_inject_device *ii_dev);
2188763a5cSDaniel Lezcano 
2288763a5cSDaniel Lezcano void idle_inject_set_duration(struct idle_inject_device *ii_dev,
23cd4c0763SDaniel Lezcano 				 unsigned int run_duration_us,
24cd4c0763SDaniel Lezcano 				 unsigned int idle_duration_us);
2588763a5cSDaniel Lezcano 
2688763a5cSDaniel Lezcano void idle_inject_get_duration(struct idle_inject_device *ii_dev,
27cd4c0763SDaniel Lezcano 				 unsigned int *run_duration_us,
28cd4c0763SDaniel Lezcano 				 unsigned int *idle_duration_us);
29*333cff6cSDaniel Lezcano 
30*333cff6cSDaniel Lezcano void idle_inject_set_latency(struct idle_inject_device *ii_dev,
31*333cff6cSDaniel Lezcano 			     unsigned int latency_ns);
32*333cff6cSDaniel Lezcano 
3388763a5cSDaniel Lezcano #endif /* __IDLE_INJECT_H__ */
34