linux/include/linux/kernel_stat.h History
<<
>>
Prefs
   1#ifndef _LINUX_KERNEL_STAT_H
   2#define _LINUX_KERNEL_STAT_H
   3
   4#include <linux/smp.h>
   5#include <linux/threads.h>
   6#include <linux/percpu.h>
   7#include <linux/cpumask.h>
   8#include <asm/irq.h>
   9#include <asm/cputime.h>
  10
  11/*
  12 * 'kernel_stat.h' contains the definitions needed for doing
  13 * some kernel statistics (CPU usage, context switches ...),
  14 * used by rstatd/perfmeter
  15 */
  16
  17struct cpu_usage_stat {
  18        cputime64_t user;
  19        cputime64_t nice;
  20        cputime64_t system;
  21        cputime64_t softirq;
  22        cputime64_t irq;
  23        cputime64_t idle;
  24        cputime64_t iowait;
  25        cputime64_t steal;
  26        cputime64_t guest;
  27};
  28
  29struct kernel_stat {
  30        struct cpu_usage_stat   cpustat;
  31#ifndef CONFIG_SPARSE_IRQ
  32       unsigned int irqs[NR_IRQS];
  33#endif
  34};
  35
  36DECLARE_PER_CPU(struct kernel_stat, kstat);
  37
  38#define kstat_cpu(cpu)  per_cpu(kstat, cpu)
  39/* Must have preemption disabled for this to be meaningful. */
  40#define kstat_this_cpu  __get_cpu_var(kstat)
  41
  42extern unsigned long long nr_context_switches(void);
  43
  44#ifndef CONFIG_SPARSE_IRQ
  45#define kstat_irqs_this_cpu(irq) \
  46        (kstat_this_cpu.irqs[irq])
  47
  48struct irq_desc;
  49
  50static inline void kstat_incr_irqs_this_cpu(unsigned int irq,
  51                                            struct irq_desc *desc)
  52{
  53        kstat_this_cpu.irqs[irq]++;
  54}
  55#endif
  56
  57
  58#ifndef CONFIG_SPARSE_IRQ
  59static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
  60{
  61       return kstat_cpu(cpu).irqs[irq];
  62}
  63#else
  64extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu);
  65#endif
  66
  67/*
  68 * Number of interrupts per specific IRQ source, since bootup
  69 */
  70static inline unsigned int kstat_irqs(unsigned int irq)
  71{
  72        unsigned int sum = 0;
  73        int cpu;
  74
  75        for_each_possible_cpu(cpu)
  76                sum += kstat_irqs_cpu(irq, cpu);
  77
  78        return sum;
  79}
  80
  81extern unsigned long long task_delta_exec(struct task_struct *);
  82extern void account_user_time(struct task_struct *, cputime_t, cputime_t);
  83extern void account_system_time(struct task_struct *, int, cputime_t, cputime_t);
  84extern void account_steal_time(cputime_t);
  85extern void account_idle_time(cputime_t);
  86
  87extern void account_process_tick(struct task_struct *, int user);
  88extern void account_steal_ticks(unsigned long ticks);
  89extern void account_idle_ticks(unsigned long ticks);
  90
  91#endif /* _LINUX_KERNEL_STAT_H */
  92
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.