Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.24 78 lines 2.1 kB view raw
1/** 2 * @file oprofile_stats.c 3 * 4 * @remark Copyright 2002 OProfile authors 5 * @remark Read the file COPYING 6 * 7 * @author John Levon 8 */ 9 10#include <linux/oprofile.h> 11#include <linux/smp.h> 12#include <linux/cpumask.h> 13#include <linux/threads.h> 14 15#include "oprofile_stats.h" 16#include "cpu_buffer.h" 17 18struct oprofile_stat_struct oprofile_stats; 19 20void oprofile_reset_stats(void) 21{ 22 struct oprofile_cpu_buffer * cpu_buf; 23 int i; 24 25 for_each_possible_cpu(i) { 26 cpu_buf = &cpu_buffer[i]; 27 cpu_buf->sample_received = 0; 28 cpu_buf->sample_lost_overflow = 0; 29 cpu_buf->backtrace_aborted = 0; 30 cpu_buf->sample_invalid_eip = 0; 31 } 32 33 atomic_set(&oprofile_stats.sample_lost_no_mm, 0); 34 atomic_set(&oprofile_stats.sample_lost_no_mapping, 0); 35 atomic_set(&oprofile_stats.event_lost_overflow, 0); 36} 37 38 39void oprofile_create_stats_files(struct super_block * sb, struct dentry * root) 40{ 41 struct oprofile_cpu_buffer * cpu_buf; 42 struct dentry * cpudir; 43 struct dentry * dir; 44 char buf[10]; 45 int i; 46 47 dir = oprofilefs_mkdir(sb, root, "stats"); 48 if (!dir) 49 return; 50 51 for_each_possible_cpu(i) { 52 cpu_buf = &cpu_buffer[i]; 53 snprintf(buf, 10, "cpu%d", i); 54 cpudir = oprofilefs_mkdir(sb, dir, buf); 55 56 /* Strictly speaking access to these ulongs is racy, 57 * but we can't simply lock them, and they are 58 * informational only. 59 */ 60 oprofilefs_create_ro_ulong(sb, cpudir, "sample_received", 61 &cpu_buf->sample_received); 62 oprofilefs_create_ro_ulong(sb, cpudir, "sample_lost_overflow", 63 &cpu_buf->sample_lost_overflow); 64 oprofilefs_create_ro_ulong(sb, cpudir, "backtrace_aborted", 65 &cpu_buf->backtrace_aborted); 66 oprofilefs_create_ro_ulong(sb, cpudir, "sample_invalid_eip", 67 &cpu_buf->sample_invalid_eip); 68 } 69 70 oprofilefs_create_ro_atomic(sb, dir, "sample_lost_no_mm", 71 &oprofile_stats.sample_lost_no_mm); 72 oprofilefs_create_ro_atomic(sb, dir, "sample_lost_no_mapping", 73 &oprofile_stats.sample_lost_no_mapping); 74 oprofilefs_create_ro_atomic(sb, dir, "event_lost_overflow", 75 &oprofile_stats.event_lost_overflow); 76 oprofilefs_create_ro_atomic(sb, dir, "bt_lost_no_mapping", 77 &oprofile_stats.bt_lost_no_mapping); 78}