linux/include/linux/profile.h
<<
>>
Prefs
   1#ifndef _LINUX_PROFILE_H
   2#define _LINUX_PROFILE_H
   3
   4#ifdef __KERNEL__
   5
   6#include <linux/kernel.h>
   7#include <linux/config.h>
   8#include <linux/init.h>
   9#include <linux/cpumask.h>
  10#include <asm/errno.h>
  11
  12#define CPU_PROFILING   1
  13#define SCHED_PROFILING 2
  14
  15struct proc_dir_entry;
  16struct pt_regs;
  17
  18/* init basic kernel profiler */
  19void __init profile_init(void);
  20void profile_tick(int, struct pt_regs *);
  21void profile_hit(int, void *);
  22#ifdef CONFIG_PROC_FS
  23void create_prof_cpu_mask(struct proc_dir_entry *);
  24#else
  25#define create_prof_cpu_mask(x)                 do { (void)(x); } while (0)
  26#endif
  27
  28enum profile_type {
  29        PROFILE_TASK_EXIT,
  30        PROFILE_MUNMAP
  31};
  32
  33#ifdef CONFIG_PROFILING
  34
  35struct notifier_block;
  36struct task_struct;
  37struct mm_struct;
  38
  39/* task is in do_exit() */
  40void profile_task_exit(struct task_struct * task);
  41
  42/* task is dead, free task struct ? Returns 1 if
  43 * the task was taken, 0 if the task should be freed.
  44 */
  45int profile_handoff_task(struct task_struct * task);
  46
  47/* sys_munmap */
  48void profile_munmap(unsigned long addr);
  49
  50int task_handoff_register(struct notifier_block * n);
  51int task_handoff_unregister(struct notifier_block * n);
  52
  53int profile_event_register(enum profile_type, struct notifier_block * n);
  54int profile_event_unregister(enum profile_type, struct notifier_block * n);
  55
  56int register_timer_hook(int (*hook)(struct pt_regs *));
  57void unregister_timer_hook(int (*hook)(struct pt_regs *));
  58
  59/* Timer based profiling hook */
  60extern int (*timer_hook)(struct pt_regs *);
  61
  62struct pt_regs;
  63
  64#else
  65
  66static inline int task_handoff_register(struct notifier_block * n)
  67{
  68        return -ENOSYS;
  69}
  70
  71static inline int task_handoff_unregister(struct notifier_block * n)
  72{
  73        return -ENOSYS;
  74}
  75
  76static inline int profile_event_register(enum profile_type t, struct notifier_block * n)
  77{
  78        return -ENOSYS;
  79}
  80
  81static inline int profile_event_unregister(enum profile_type t, struct notifier_block * n)
  82{
  83        return -ENOSYS;
  84}
  85
  86#define profile_task_exit(a) do { } while (0)
  87#define profile_handoff_task(a) (0)
  88#define profile_munmap(a) do { } while (0)
  89
  90static inline int register_timer_hook(int (*hook)(struct pt_regs *))
  91{
  92        return -ENOSYS;
  93}
  94
  95static inline void unregister_timer_hook(int (*hook)(struct pt_regs *))
  96{
  97        return;
  98}
  99
 100#endif /* CONFIG_PROFILING */
 101
 102#endif /* __KERNEL__ */
 103
 104#endif /* _LINUX_PROFILE_H */
 105
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.