linux/tools/perf/perf.h
<<
>>
Prefs
   1#ifndef _PERF_PERF_H
   2#define _PERF_PERF_H
   3
   4#if defined(__i386__)
   5#include "../../arch/x86/include/asm/unistd.h"
   6#define rmb()           asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
   7#define cpu_relax()     asm volatile("rep; nop" ::: "memory");
   8#endif
   9
  10#if defined(__x86_64__)
  11#include "../../arch/x86/include/asm/unistd.h"
  12#define rmb()           asm volatile("lfence" ::: "memory")
  13#define cpu_relax()     asm volatile("rep; nop" ::: "memory");
  14#endif
  15
  16#ifdef __powerpc__
  17#include "../../arch/powerpc/include/asm/unistd.h"
  18#define rmb()           asm volatile ("sync" ::: "memory")
  19#define cpu_relax()     asm volatile ("" ::: "memory");
  20#endif
  21
  22#ifdef __s390__
  23#include "../../arch/s390/include/asm/unistd.h"
  24#define rmb()           asm volatile("bcr 15,0" ::: "memory")
  25#define cpu_relax()     asm volatile("" ::: "memory");
  26#endif
  27
  28#ifdef __sh__
  29#include "../../arch/sh/include/asm/unistd.h"
  30#if defined(__SH4A__) || defined(__SH5__)
  31# define rmb()          asm volatile("synco" ::: "memory")
  32#else
  33# define rmb()          asm volatile("" ::: "memory")
  34#endif
  35#define cpu_relax()     asm volatile("" ::: "memory")
  36#endif
  37
  38#ifdef __hppa__
  39#include "../../arch/parisc/include/asm/unistd.h"
  40#define rmb()           asm volatile("" ::: "memory")
  41#define cpu_relax()     asm volatile("" ::: "memory");
  42#endif
  43
  44#ifdef __sparc__
  45#include "../../arch/sparc/include/asm/unistd.h"
  46#define rmb()           asm volatile("":::"memory")
  47#define cpu_relax()     asm volatile("":::"memory")
  48#endif
  49
  50#include <time.h>
  51#include <unistd.h>
  52#include <sys/types.h>
  53#include <sys/syscall.h>
  54
  55#include "../../include/linux/perf_event.h"
  56#include "util/types.h"
  57
  58/*
  59 * prctl(PR_TASK_PERF_EVENTS_DISABLE) will (cheaply) disable all
  60 * counters in the current task.
  61 */
  62#define PR_TASK_PERF_EVENTS_DISABLE   31
  63#define PR_TASK_PERF_EVENTS_ENABLE    32
  64
  65#ifndef NSEC_PER_SEC
  66# define NSEC_PER_SEC                   1000000000ULL
  67#endif
  68
  69static inline unsigned long long rdclock(void)
  70{
  71        struct timespec ts;
  72
  73        clock_gettime(CLOCK_MONOTONIC, &ts);
  74        return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
  75}
  76
  77/*
  78 * Pick up some kernel type conventions:
  79 */
  80#define __user
  81#define asmlinkage
  82
  83#define __used          __attribute__((__unused__))
  84
  85#define unlikely(x)     __builtin_expect(!!(x), 0)
  86#define min(x, y) ({                            \
  87        typeof(x) _min1 = (x);                  \
  88        typeof(y) _min2 = (y);                  \
  89        (void) (&_min1 == &_min2);              \
  90        _min1 < _min2 ? _min1 : _min2; })
  91
  92static inline int
  93sys_perf_event_open(struct perf_event_attr *attr,
  94                      pid_t pid, int cpu, int group_fd,
  95                      unsigned long flags)
  96{
  97        attr->size = sizeof(*attr);
  98        return syscall(__NR_perf_event_open, attr, pid, cpu,
  99                       group_fd, flags);
 100}
 101
 102#define MAX_COUNTERS                    256
 103#define MAX_NR_CPUS                     256
 104
 105struct ip_callchain {
 106        u64 nr;
 107        u64 ips[0];
 108};
 109
 110#endif
 111
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.