/**
* @file daemon/liblegacy/opd_kernel.h
* Dealing with the kernel and kernel module samples
*
* @remark Copyright 2002 OProfile authors
* @remark Read the file COPYING
*
* @author John Levon
* @author Philippe Elie
*/
#ifndef OPD_KERNEL_H
#define OPD_KERNEL_H
#include "op_types.h"
struct opd_proc;
/**
* opd_init_kernel_image - initialise the kernel image
*/
void opd_init_kernel_image(void);
/**
* opd_parse_kernel_range - parse the kernel range values
*/
void opd_parse_kernel_range(char const * arg);
/**
* opd_clear_module_info - clear kernel module information
*
* Clear and free all kernel module information and reset
* values.
*/
void opd_clear_module_info(void);
/**
* opd_handle_kernel_sample - process a kernel sample
* @param eip EIP value of sample
* @param counter counter number
*
* Handle a sample in kernel address space or in a module. The sample is
* output to the relevant image file.
*/
void opd_handle_kernel_sample(unsigned long eip, u32 counter);
/**
* opd_eip_is_kernel - is the sample from kernel/module space
* @param eip EIP value
*
* Returns %1 if eip is in the address space starting at
* kernel_start, %0 otherwise.
*/
int opd_eip_is_kernel(unsigned long eip);
/**
* opd_add_kernel_map - add a module or kernel maps to a proc struct
*
* @param proc owning proc of the new mapping
* @param eip eip inside the new mapping
*
* We assume than eip >= kernel_start
*
*/
void opd_add_kernel_map(struct opd_proc * proc, unsigned long eip);
#endif /* OPD_KERNEL_H */