at v6.18 1.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_PROFILE_H 3#define _LINUX_PROFILE_H 4 5#include <linux/kernel.h> 6#include <linux/init.h> 7#include <linux/cache.h> 8 9#include <asm/errno.h> 10 11#define CPU_PROFILING 1 12#define SCHED_PROFILING 2 13#define KVM_PROFILING 4 14 15struct proc_dir_entry; 16struct notifier_block; 17 18#if defined(CONFIG_PROFILING) && defined(CONFIG_PROC_FS) 19int create_proc_profile(void); 20#else 21static inline int create_proc_profile(void) 22{ 23 return 0; 24} 25#endif 26 27#ifdef CONFIG_PROFILING 28 29extern int prof_on __read_mostly; 30 31/* init basic kernel profiler */ 32int profile_init(void); 33int profile_setup(char *str); 34void profile_tick(int type); 35int setup_profiling_timer(unsigned int multiplier); 36 37/* 38 * Add multiple profiler hits to a given address: 39 */ 40void profile_hits(int type, void *ip, unsigned int nr_hits); 41 42/* 43 * Single profiler hit: 44 */ 45static inline void profile_hit(int type, void *ip) 46{ 47 /* 48 * Speedup for the common (no profiling enabled) case: 49 */ 50 if (unlikely(prof_on == type)) 51 profile_hits(type, ip, 1); 52} 53 54struct task_struct; 55struct mm_struct; 56 57#else 58 59#define prof_on 0 60 61static inline int profile_init(void) 62{ 63 return 0; 64} 65 66static inline void profile_tick(int type) 67{ 68 return; 69} 70 71static inline void profile_hits(int type, void *ip, unsigned int nr_hits) 72{ 73 return; 74} 75 76static inline void profile_hit(int type, void *ip) 77{ 78 return; 79} 80 81 82#endif /* CONFIG_PROFILING */ 83 84#endif /* _LINUX_PROFILE_H */