Blame view

kernel/linux-imx6_3.14.28/tools/virtio/virtio-trace/trace-agent.h 2.05 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  #ifndef __TRACE_AGENT_H__
  #define __TRACE_AGENT_H__
  #include <pthread.h>
  #include <stdbool.h>
  
  #define MAX_CPUS	256
  #define PIPE_INIT       (1024*1024)
  
  /*
   * agent_info - structure managing total information of guest agent
   * @pipe_size:	size of pipe (default 1MB)
   * @use_stdout:	set to true when o option is added (default false)
   * @cpus:	total number of CPUs
   * @ctl_fd:	fd of control path, /dev/virtio-ports/agent-ctl-path
   * @rw_ti:	structure managing information of read/write threads
   */
  struct agent_info {
  	unsigned long pipe_size;
  	bool use_stdout;
  	int cpus;
  	int ctl_fd;
  	struct rw_thread_info *rw_ti[MAX_CPUS];
  };
  
  /*
   * rw_thread_info - structure managing a read/write thread a cpu
   * @cpu_num:	cpu number operating this read/write thread
   * @in_fd:	fd of reading trace data path in cpu_num
   * @out_fd:	fd of writing trace data path in cpu_num
   * @read_pipe:	fd of read pipe
   * @write_pipe:	fd of write pipe
   * @pipe_size:	size of pipe (default 1MB)
   */
  struct rw_thread_info {
  	int cpu_num;
  	int in_fd;
  	int out_fd;
  	int read_pipe;
  	int write_pipe;
  	unsigned long pipe_size;
  };
  
  /* use for stopping rw threads */
  extern bool global_sig_receive;
  
  /* use for notification */
  extern bool global_run_operation;
  extern pthread_mutex_t mutex_notify;
  extern pthread_cond_t cond_wakeup;
  
  /* for controller of read/write threads */
  extern int rw_ctl_init(const char *ctl_path);
  extern void *rw_ctl_loop(int ctl_fd);
  
  /* for trace read/write thread */
  extern void *rw_thread_info_new(void);
  extern void *rw_thread_init(int cpu, const char *in_path, const char *out_path,
  			bool stdout_flag, unsigned long pipe_size,
  			struct rw_thread_info *rw_ti);
  extern pthread_t rw_thread_run(struct rw_thread_info *rw_ti);
  
  static inline void *zalloc(size_t size)
  {
  	return calloc(1, size);
  }
  
  #define pr_err(format, ...) fprintf(stderr, format, ## __VA_ARGS__)
  #define pr_info(format, ...) fprintf(stdout, format, ## __VA_ARGS__)
  #ifdef DEBUG
  #define pr_debug(format, ...) fprintf(stderr, format, ## __VA_ARGS__)
  #else
  #define pr_debug(format, ...) do {} while (0)
  #endif
  
  #endif /*__TRACE_AGENT_H__*/