packages feed

linux-perf-0.3: Profiling/Linux/Perf/perf_file.h

#include "HsFFI.h"
#include <linux/perf_event.h>

typedef HsWord64 u64;

#define HEADER_FEAT_BITS                        256

#define BITS_PER_BYTE           8
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
#define BITS_TO_LONGS(nr)       DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
#define DECLARE_BITMAP(name,bits) \
        unsigned long name[BITS_TO_LONGS(bits)]

struct perf_file_section {
        u64 offset;
        u64 size;
};

struct perf_file_header {
        u64                             magic;
        u64                             size;
        u64                             attr_size;
        struct perf_file_section        attrs;
        struct perf_file_section        data;
        struct perf_file_section        event_types;
        DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS);
};

struct perf_file_attr {
        struct perf_event_attr  attr;
        struct perf_file_section        ids;
};

#define MAX_EVENT_NAME 64

struct perf_trace_event_type {
        u64     event_id;
        char    name[MAX_EVENT_NAME];
};