1e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifndef __PERF_THREAD_H
2e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define __PERF_THREAD_H
3e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
4e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/* ANDROID_CHANGE_BEGIN */
5e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#if 0
6e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <linux/rbtree.h>
7e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else
8e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "include/linux/rbtree.h"
9e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
10e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/* ANDROID_CHANGE_END */
11e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <unistd.h>
12e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "symbol.h"
13e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
14e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct thread {
15e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	union {
16e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng		struct rb_node	 rb_node;
17e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng		struct list_head node;
18e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	};
19e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	struct map_groups	mg;
20e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	pid_t			pid;
21e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	char			shortname[3];
22e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	bool			comm_set;
23e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	char			*comm;
24e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	int			comm_len;
25e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng};
26e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
27e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct perf_session;
28e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
29e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid thread__delete(struct thread *self);
30e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
31e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint thread__set_comm(struct thread *self, const char *comm);
32e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint thread__comm_len(struct thread *self);
33e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct thread *perf_session__findnew(struct perf_session *self, pid_t pid);
34e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid thread__insert_map(struct thread *self, struct map *map);
35e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint thread__fork(struct thread *self, struct thread *parent);
36e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengsize_t perf_session__fprintf(struct perf_session *self, FILE *fp);
37e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
38e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstatic inline struct map *thread__find_map(struct thread *self,
39e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng					   enum map_type type, u64 addr)
40e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{
41e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	return self ? map_groups__find(&self->mg, type, addr) : NULL;
42e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}
43e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
44e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid thread__find_addr_map(struct thread *self,
45e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng			   struct perf_session *session, u8 cpumode,
46e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng			   enum map_type type, pid_t pid, u64 addr,
47e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng			   struct addr_location *al);
48e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
49e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid thread__find_addr_location(struct thread *self,
50e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng				struct perf_session *session, u8 cpumode,
51e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng				enum map_type type, pid_t pid, u64 addr,
52e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng				struct addr_location *al,
53e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng				symbol_filter_t filter);
54e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif	/* __PERF_THREAD_H */
55