cregit-Linux how code gets into the kernel

Release 4.7 include/linux/kernel_stat.h

Directory: include/linux
#ifndef _LINUX_KERNEL_STAT_H

#define _LINUX_KERNEL_STAT_H

#include <linux/smp.h>
#include <linux/threads.h>
#include <linux/percpu.h>
#include <linux/cpumask.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/vtime.h>
#include <asm/irq.h>
#include <linux/cputime.h>

/*
 * 'kernel_stat.h' contains the definitions needed for doing
 * some kernel statistics (CPU usage, context switches ...),
 * used by rstatd/perfmeter
 */


enum cpu_usage_stat {
	
CPUTIME_USER,
	
CPUTIME_NICE,
	
CPUTIME_SYSTEM,
	
CPUTIME_SOFTIRQ,
	
CPUTIME_IRQ,
	
CPUTIME_IDLE,
	
CPUTIME_IOWAIT,
	
CPUTIME_STEAL,
	
CPUTIME_GUEST,
	
CPUTIME_GUEST_NICE,
	
NR_STATS,
};


struct kernel_cpustat {
	
u64 cpustat[NR_STATS];
};


struct kernel_stat {
	
unsigned long irqs_sum;
	
unsigned int softirqs[NR_SOFTIRQS];
};

DECLARE_PER_CPU(struct kernel_stat, kstat);
DECLARE_PER_CPU(struct kernel_cpustat, kernel_cpustat);

/* Must have preemption disabled for this to be meaningful. */

#define kstat_this_cpu this_cpu_ptr(&kstat)

#define kcpustat_this_cpu this_cpu_ptr(&kernel_cpustat)

#define kstat_cpu(cpu) per_cpu(kstat, cpu)

#define kcpustat_cpu(cpu) per_cpu(kernel_cpustat, cpu)

extern unsigned long long nr_context_switches(void);

extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu);
extern void kstat_incr_irq_this_cpu(unsigned int irq);


static inline void kstat_incr_softirqs_this_cpu(unsigned int irq) { __this_cpu_inc(kstat.softirqs[irq]); }

Contributors

PersonTokensPropCommitsCommitProp
keika kobayashikeika kobayashi1780.95%150.00%
eric dumazeteric dumazet419.05%150.00%
Total21100.00%2100.00%


static inline unsigned int kstat_softirqs_cpu(unsigned int irq, int cpu) { return kstat_cpu(cpu).softirqs[irq]; }

Contributors

PersonTokensPropCommitsCommitProp
keika kobayashikeika kobayashi26100.00%1100.00%
Total26100.00%1100.00%

/* * Number of interrupts per specific IRQ source, since bootup */ extern unsigned int kstat_irqs(unsigned int irq); extern unsigned int kstat_irqs_usr(unsigned int irq); /* * Number of interrupts per cpu, since bootup */
static inline unsigned int kstat_cpu_irqs_sum(unsigned int cpu) { return kstat_cpu(cpu).irqs_sum; }

Contributors

PersonTokensPropCommitsCommitProp
kamezawa hiroyukikamezawa hiroyuki20100.00%1100.00%
Total20100.00%1100.00%

extern void account_user_time(struct task_struct *, cputime_t, cputime_t); extern void account_system_time(struct task_struct *, int, cputime_t, cputime_t); extern void account_steal_time(cputime_t); extern void account_idle_time(cputime_t); #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
static inline void account_process_tick(struct task_struct *tsk, int user) { vtime_account_user(tsk); }

Contributors

PersonTokensPropCommitsCommitProp
frederic weisbeckerfrederic weisbecker20100.00%1100.00%
Total20100.00%1100.00%

#else extern void account_process_tick(struct task_struct *, int user); #endif extern void account_steal_ticks(unsigned long ticks); extern void account_idle_ticks(unsigned long ticks); #endif /* _LINUX_KERNEL_STAT_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
glauber costaglauber costa5515.80%13.33%
martin schwidefskymartin schwidefsky5415.52%26.67%
keika kobayashikeika kobayashi5315.23%13.33%
kamezawa hiroyukikamezawa hiroyuki3510.06%26.67%
frederic weisbeckerfrederic weisbecker318.91%413.33%
andrew mortonandrew morton246.90%26.67%
pre-gitpre-git236.61%620.00%
michael neulingmichael neuling195.46%13.33%
thomas gleixnerthomas gleixner174.89%26.67%
yinghai luyinghai lu154.31%26.67%
linus torvaldslinus torvalds82.30%13.33%
eric dumazeteric dumazet41.15%13.33%
ingo molnaringo molnar30.86%13.33%
alan mayeralan mayer30.86%13.33%
christoph lameterchristoph lameter20.57%13.33%
frank mayharfrank mayhar10.29%13.33%
ryota ozakiryota ozaki10.29%13.33%
Total348100.00%30100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}