110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_interface.h 310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Module / user space interface for 2.4 510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors 710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING 810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author John Levon 1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie 1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OP_INTERFACE_H 1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_INTERFACE_H 1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_config.h" 1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_types.h" 1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/*@{\name notifications types encoded in op_note::type */ 2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** fork(),vfork(),clone() */ 2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_FORK 1 2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** mapping */ 2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_MAP 2 2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** execve() */ 2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_EXEC 4 2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** init_module() */ 2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_DROP_MODULES 8 2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** exit() */ 2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_EXIT 16 3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/*@}*/ 3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** Data type to transfer samples counts from the module to the daemon */ 3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_sample { 3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned long eip; /**< eip value where occur interrupt */ 3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project u32 counter; /**< counter nr */ 3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project u32 pid; /**< 32 bits can hold any pid */ 3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project u32 tgid; /**< always equal to pid for kernel < 2.4.0 */ 3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}; 3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** the current kernel-side profiler state */ 4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectenum oprof_state { 4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project STOPPED = 0, 4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project STOPPING = 1, 4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project RUNNING = 2 4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}; 4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * The head structure of a kernel sample buffer. 4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_buffer_head { 5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project int cpu_nr; /**< the CPU number of this buffer */ 5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project size_t count; /**< number of samples in this buffer */ 5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project enum oprof_state state; /**< current profiler state */ 5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project struct op_sample buffer[0]; /**< the sample buffer */ 5510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project} __attribute__((__packed__)); 5610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 5810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Data type used by the module to notify daemon of fork/exit/mapping etc. 5910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Meanings of fields depend on the type of notification encoded in the type 6010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * field. 6110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * \sa OP_FORK, OP_EXEC, OP_MAP, OP_DROP_MODULES and OP_EXIT 6210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 6310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_note { 6410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned long addr; 6510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned long len; 6610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned long offset; 6710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned int hash; 6810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned int pid; 6910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned int tgid; 7010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project unsigned short type; 7110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}; 7210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 7310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 7410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * A path component. Directory name are stored as a stack of path components. 7510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Note than the name index acts also as an unique identifier 7610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 7710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_hash_index { 7810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project /** index inside the string pool */ 7910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project u32 name; 8010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project /** parent component, zero if this component is the root */ 8110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project u32 parent; 8210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project} __attribute__((__packed__)); 8310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 8410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** size of hash map in bytes */ 8510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_HASH_MAP_SIZE (OP_HASH_MAP_NR * sizeof(struct op_hash_index) + POOL_SIZE) 8610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 8710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif /* OP_INTERFACE_H */ 88