18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file op_header.h
38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * various free function acting on a sample file header
48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2002 OProfile authors
68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING
78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon
98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie
108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef OP_HEADER_H
138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define OP_HEADER_H
148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <iosfwd>
168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string>
178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_sample_file.h"
198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param h1 sample file header
228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param h2 sample file header
238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param filename sample filename
248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * check that the h1 and h2 are coherent (same size, same mtime etc.)
268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * all error are fatal
278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddvoid op_check_header(opd_header const & h1, opd_header const & h2,
298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd                     std::string const & filename);
308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddbool is_jit_sample(std::string const & filename);
328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * check mtime of samples file header against file
358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * all error are fatal
368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddvoid check_mtime(std::string const & file, opd_header const & header);
388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param sample_filename  the sample to open
418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Return the header of this sample file. Only the magic number is checked
438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * the version number is not checked. All error are fatal
448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddopd_header const read_header(std::string const & sample_filename);
468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * output a readable form of header, this don't include the cpu type
498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * and speed
508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstd::string const describe_header(opd_header const & header);
528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/// output a readable form of cpu type and speed
548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstd::string const describe_cpu(opd_header const & header);
558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif // OP_HEADER_H
57