110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_mangle.h
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Mangling of sample file names
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors
610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING
710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author John Levon
910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OP_MANGLE_H
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_MANGLE_H
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <sys/types.h>
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectextern "C" {
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectenum mangle_flags {
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_NONE      = 0,
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_CPU       = (1 << 0),
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_TGID      = (1 << 1),
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_TID       = (1 << 2),
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_KERNEL    = (1 << 3),
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_CALLGRAPH = (1 << 4),
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_ANON      = (1 << 5),
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	MANGLE_CG_ANON   = (1 << 6),
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Temporary structure for passing parameters to
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * op_mangle_filename.
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct mangle_values {
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	int flags;
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * image_name;
4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * anon_name;
4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * dep_name;
4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * cg_image_name;
4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * event_name;
4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	int count;
4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	unsigned int unit_mask;
4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	pid_t tgid;
4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	pid_t tid;
4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	int cpu;
4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * op_mangle_filename - mangle a sample filename
5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param values  parameters to use as mangling input
5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
5510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * See also PP:3 for the encoding scheme
5610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
5710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Returns a char* pointer to the mangled string. Caller
5810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * is responsible for freeing this string.
5910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
6010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectchar * op_mangle_filename(struct mangle_values const * values);
6110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
6210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
6310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}
6410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
6510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
6610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif /* OP_MANGLE_H */
67