110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file opd_anon.h
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Anonymous region handling.
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2005 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 */
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OPD_ANON_H
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OPD_ANON_H
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_types.h"
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_list.h"
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "opd_cookie.h"
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <sys/types.h>
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct transient;
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Shift useful bits into play for VMA hashing.
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define VMA_SHIFT 13
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/* Maximum size of the image name considered */
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define MAX_IMAGE_NAME_SIZE 20
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct anon_mapping {
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** start of the mapping */
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	vma_t start;
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** end of the mapping */
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	vma_t end;
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** tgid of the app */
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	pid_t tgid;
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** cookie of the app */
3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	cookie_t app_cookie;
4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** hash list */
4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	struct list_head list;
4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/** lru list */
4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	struct list_head lru_list;
4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char name[MAX_IMAGE_NAME_SIZE+1];
4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Try to find an anonymous mapping for the given pc/tgid pair.
4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct anon_mapping * find_anon_mapping(struct transient *);
5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectvoid anon_init(void);
5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif /* OPD_ANON_H */
55