/**
 * @file daemon/opd_events.h
 * Event details for each counter
 *
 * @remark Copyright 2002, 2003 OProfile authors
 * @remark Read the file COPYING
 *
 * @author John Levon
 * @author Philippe Elie
 */

#ifndef OPD_EVENTS_H

#include "op_types.h"

#include <stdint.h>
#include <time.h>

/** event description for setup (perfmon) and mangling */
struct opd_event {
	char * name;
	unsigned long value;
	unsigned long counter;
	unsigned long count;
	unsigned long um;
	unsigned long kernel;
	unsigned long user;
};

/* needed for opd_perfmon.c */
extern struct opd_event opd_events[];

/** parse the events into the opd_events array */
void opd_parse_events(char const * events);

/** Find the event for the given counter */
struct opd_event * find_counter_event(unsigned long counter);

struct opd_header;

/** fill the sample file header with event info etc. */
void fill_header(struct opd_header * header, unsigned long counter,
		 vma_t anon_start, vma_t anon_end,
		 int is_kernel, int cg_to_is_kernel,
                 int spu_samples, uint64_t embed_offset, time_t mtime);

#endif /* OPD_EVENTS_H */