linux/drivers/oprofile/oprofile_stats.c
<<
>>
Prefs
   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 = &per_cpu(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 = &per_cpu(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}
  79
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.