2011-01-18 15:15:24 -02:00
# ifndef __PERF_THREAD_MAP_H
# define __PERF_THREAD_MAP_H
# include <sys/types.h>
2012-01-19 14:07:23 -02:00
# include <stdio.h>
2015-06-23 00:36:05 +02:00
# include <linux/atomic.h>
2011-01-18 15:15:24 -02:00
2015-06-23 00:36:02 +02:00
struct thread_map_data {
pid_t pid ;
2015-06-26 11:29:07 +02:00
char * comm ;
2015-06-23 00:36:02 +02:00
} ;
2011-01-18 15:15:24 -02:00
struct thread_map {
2015-06-23 00:36:05 +02:00
atomic_t refcnt ;
2011-01-18 15:15:24 -02:00
int nr ;
2015-06-23 00:36:02 +02:00
struct thread_map_data map [ ] ;
2011-01-18 15:15:24 -02:00
} ;
2015-10-25 15:51:21 +01:00
struct thread_map_event ;
2014-10-10 12:03:46 -03:00
struct thread_map * thread_map__new_dummy ( void ) ;
2011-01-18 15:15:24 -02:00
struct thread_map * thread_map__new_by_pid ( pid_t pid ) ;
struct thread_map * thread_map__new_by_tid ( pid_t tid ) ;
2012-01-19 14:08:15 -02:00
struct thread_map * thread_map__new_by_uid ( uid_t uid ) ;
struct thread_map * thread_map__new ( pid_t pid , pid_t tid , uid_t uid ) ;
2015-10-25 15:51:21 +01:00
struct thread_map * thread_map__new_event ( struct thread_map_event * event ) ;
2012-02-08 09:32:52 -07:00
2015-06-23 00:36:05 +02:00
struct thread_map * thread_map__get ( struct thread_map * map ) ;
void thread_map__put ( struct thread_map * map ) ;
2012-02-08 09:32:52 -07:00
struct thread_map * thread_map__new_str ( const char * pid ,
const char * tid , uid_t uid ) ;
2016-04-12 15:29:28 +02:00
struct thread_map * thread_map__new_by_tid_str ( const char * tid_str ) ;
2012-01-19 14:07:23 -02:00
size_t thread_map__fprintf ( struct thread_map * threads , FILE * fp ) ;
2013-03-11 16:43:14 +09:00
static inline int thread_map__nr ( struct thread_map * threads )
{
return threads ? threads - > nr : 1 ;
}
2015-06-23 00:36:02 +02:00
static inline pid_t thread_map__pid ( struct thread_map * map , int thread )
{
2015-06-23 00:36:02 +02:00
return map - > map [ thread ] . pid ;
2015-06-23 00:36:02 +02:00
}
static inline void
thread_map__set_pid ( struct thread_map * map , int thread , pid_t pid )
{
2015-06-23 00:36:02 +02:00
map - > map [ thread ] . pid = pid ;
2015-06-23 00:36:02 +02:00
}
2015-06-26 11:29:07 +02:00
static inline char * thread_map__comm ( struct thread_map * map , int thread )
{
return map - > map [ thread ] . comm ;
}
void thread_map__read_comms ( struct thread_map * threads ) ;
2016-04-12 15:29:24 +02:00
bool thread_map__has ( struct thread_map * threads , pid_t pid ) ;
2011-01-18 15:15:24 -02:00
# endif /* __PERF_THREAD_MAP_H */