mirror of https://github.com/xzeldon/htop.git
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
/* Do not edit this file. It was automatically generated. */
|
|
|
|
#ifndef HEADER_PerfCounter
|
|
#define HEADER_PerfCounter
|
|
/*
|
|
* This file is based on tiptop.
|
|
* by Erven ROHOU
|
|
* Copyright (c) 2011, 2012, 2014 Inria
|
|
* License: GNU General Public License version 2.
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <asm/unistd.h>
|
|
#include <inttypes.h>
|
|
#include <stdbool.h>
|
|
// The sys_perf_counter_open syscall and header files changed names
|
|
// between Linux 2.6.31 and 2.6.32. Do the mangling here.
|
|
#ifdef HAVE_LINUX_PERF_COUNTER_H
|
|
#include <linux/perf_counter.h>
|
|
#define STRUCT_NAME perf_counter_attr
|
|
#define SYSCALL_NUM __NR_perf_counter_open
|
|
|
|
#elif HAVE_LINUX_PERF_EVENT_H
|
|
#include <linux/perf_event.h>
|
|
#define STRUCT_NAME perf_event_attr
|
|
#define SYSCALL_NUM __NR_perf_event_open
|
|
|
|
#else
|
|
#error Sorry, performance counters not supported on this system.
|
|
#endif
|
|
|
|
typedef struct PerfCounter_ {
|
|
struct STRUCT_NAME events;
|
|
pid_t pid;
|
|
int fd;
|
|
uint64_t prevValue;
|
|
uint64_t value;
|
|
} PerfCounter;
|
|
|
|
#define PerfCounter_delta(pc_) ((pc_)->value - (pc_)->prevValue)
|
|
|
|
|
|
extern int PerfCounter_openFds;
|
|
PerfCounter* PerfCounter_new(pid_t pid, uint32_t type, uint64_t config);
|
|
|
|
void PerfCounter_delete(PerfCounter* this);
|
|
|
|
bool PerfCounter_read(PerfCounter* this);
|
|
|
|
#endif
|