xref: /openbmc/linux/include/linux/latencytop.h (revision 988f11e0)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
29745512cSArjan van de Ven /*
39745512cSArjan van de Ven  * latencytop.h: Infrastructure for displaying latency
49745512cSArjan van de Ven  *
59745512cSArjan van de Ven  * (C) Copyright 2008 Intel Corporation
69745512cSArjan van de Ven  * Author: Arjan van de Ven <arjan@linux.intel.com>
79745512cSArjan van de Ven  *
89745512cSArjan van de Ven  */
99745512cSArjan van de Ven 
109745512cSArjan van de Ven #ifndef _INCLUDE_GUARD_LATENCYTOP_H_
119745512cSArjan van de Ven #define _INCLUDE_GUARD_LATENCYTOP_H_
129745512cSArjan van de Ven 
13ad0b0fd5SArjan van de Ven #include <linux/compiler.h>
14029632fbSPeter Zijlstra struct task_struct;
15029632fbSPeter Zijlstra 
169745512cSArjan van de Ven #ifdef CONFIG_LATENCYTOP
179745512cSArjan van de Ven 
189745512cSArjan van de Ven #define LT_SAVECOUNT		32
199745512cSArjan van de Ven #define LT_BACKTRACEDEPTH	12
209745512cSArjan van de Ven 
219745512cSArjan van de Ven struct latency_record {
229745512cSArjan van de Ven 	unsigned long	backtrace[LT_BACKTRACEDEPTH];
239745512cSArjan van de Ven 	unsigned int	count;
249745512cSArjan van de Ven 	unsigned long	time;
259745512cSArjan van de Ven 	unsigned long	max;
269745512cSArjan van de Ven };
279745512cSArjan van de Ven 
289745512cSArjan van de Ven 
299745512cSArjan van de Ven 
30ad0b0fd5SArjan van de Ven extern int latencytop_enabled;
31ad0b0fd5SArjan van de Ven void __account_scheduler_latency(struct task_struct *task, int usecs, int inter);
32ad0b0fd5SArjan van de Ven static inline void
account_scheduler_latency(struct task_struct * task,int usecs,int inter)33ad0b0fd5SArjan van de Ven account_scheduler_latency(struct task_struct *task, int usecs, int inter)
34ad0b0fd5SArjan van de Ven {
35ad0b0fd5SArjan van de Ven 	if (unlikely(latencytop_enabled))
36ad0b0fd5SArjan van de Ven 		__account_scheduler_latency(task, usecs, inter);
37ad0b0fd5SArjan van de Ven }
389745512cSArjan van de Ven 
39e02c9b0dSLin Feng void clear_tsk_latency_tracing(struct task_struct *p);
409745512cSArjan van de Ven 
419745512cSArjan van de Ven #else
429745512cSArjan van de Ven 
439745512cSArjan van de Ven static inline void
account_scheduler_latency(struct task_struct * task,int usecs,int inter)449745512cSArjan van de Ven account_scheduler_latency(struct task_struct *task, int usecs, int inter)
459745512cSArjan van de Ven {
469745512cSArjan van de Ven }
479745512cSArjan van de Ven 
clear_tsk_latency_tracing(struct task_struct * p)48e02c9b0dSLin Feng static inline void clear_tsk_latency_tracing(struct task_struct *p)
499745512cSArjan van de Ven {
509745512cSArjan van de Ven }
519745512cSArjan van de Ven 
529745512cSArjan van de Ven #endif
539745512cSArjan van de Ven 
549745512cSArjan van de Ven #endif
55