2 * Copyright (C) 2011-2012 Julien Desfossez
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License Version 2 as
6 * published by the Free Software Foundation;
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include <semaphore.h>
23 #include <babeltrace/ctf/events.h>
25 #include <state/IntervalHistoryProvider.hpp>
26 #include <state/StateSystem.hpp>
27 #include <state/statevalue/StateValue.hpp>
28 #include <state/statevalue/IntegerStateValue.hpp>
29 #include <state/statevalue/StringStateValue.hpp>
30 #include <state/statevalue/NullStateValue.hpp>
31 #include <state/statevalue/QuarkStateValue.hpp>
37 #include "lttngtoptypes.h"
40 using namespace State
;
42 #define NSEC_PER_USEC 1000
43 #define NSEC_PER_SEC 1000000000L
45 extern StateSystem
*state_system
;
46 extern std::set
<Quark
> modified_quarks
;
47 const unsigned long refresh_display
= 1 * NSEC_PER_SEC
;
48 extern unsigned long last_display_update
;
49 extern unsigned long first_display_update
;
51 extern sem_t goodtodisplay
, goodtoupdate
, timer
, pause_sem
, end_trace_sem
, bootstrap
;
53 bool find_process_tid(int tid
, Quark
&ret_proc_quark
);
54 Quark
add_proc(int tid
, std::string comm
, unsigned long timestamp
);
55 void update_proc(unsigned long timestamp
, Quark proc
, int pid
, int tid
,
56 int ppid
, char *comm
);
57 void add_thread(unsigned long timestamp
, Quark parent
, Quark thread
);
58 Quark
get_proc(int tid
, char *comm
, unsigned long timestamp
);
59 Quark
get_proc_pid(int pid
, int tid
, unsigned long timestamp
);
60 void death_proc(int tid
, char *comm
, unsigned long timestamp
);
62 Quark
add_cpu(int cpu
, unsigned long timestamp
);
63 Quark
get_cpu(int cpu
, unsigned long timestamp
);
64 void update_state_on_refresh(unsigned long start
, unsigned long end
);
65 Quark
get_perf_counter(unsigned long timestamp
, Quark root
, std::string name
);
67 /* common field access functions */
68 int get_cpu_id(const struct bt_ctf_event
*event
);
69 int get_context_tid(const struct bt_ctf_event
*event
);
70 int get_context_pid(const struct bt_ctf_event
*event
);
71 int get_context_ppid(const struct bt_ctf_event
*event
);
72 char *get_context_comm(const struct bt_ctf_event
*event
);
74 enum bt_cb_ret
handle_statedump_process_state(
75 struct bt_ctf_event
*call_data
, void *private_data
);
77 std::string
path_name_from_cpuid(int cpuid
);
78 std::string
thread_path_name_from_tid(int tid
);
79 std::string
path_name_from_tid(int tid
);
80 std::string
path_name_from_fd(int fd
);
82 void update_file_on_refresh(Quark proc
, Quark file
, unsigned long end
);
83 void update_proc_on_refresh(Quark proc
, unsigned long start
, unsigned long end
);
85 void modify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
86 std::string attribute
, int value
);
87 void modify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
88 std::string attribute
, Quark value
);
89 void modify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
90 std::string attribute
, char *value
);
91 void modify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
92 std::string attribute
, unsigned long value
);
93 void modify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
94 std::string attribute
, std::string value
);
95 void nullify_attribute(unsigned long timestamp
, const Quark
*starting_node
,
96 std::string attribute
);
97 void increment_attribute(unsigned long timestamp
, const Quark
*starting_node
,
98 std::string attribute
);
99 void increase_attribute(unsigned long timestamp
, const Quark
*starting_node
,
100 std::string attribute
, int amount
);
101 void increase_attribute(unsigned long timestamp
, const Quark
*starting_node
,
102 std::string attribute
, unsigned long amount
);
103 void decrement_attribute(unsigned long timestamp
, const Quark
*starting_node
,
104 std::string attribute
);
105 void decrease_attribute(unsigned long timestamp
, const Quark
*starting_node
,
106 std::string attribute
, int amount
);
107 void decrease_attribute(unsigned long timestamp
, const Quark
*starting_node
,
108 std::string attribute
, unsigned long amount
);
109 bool get_current_attribute_value_int(const Quark
*starting_node
,
110 std::string attribute
, int &value
);
111 bool get_current_attribute_value_ulong(const Quark
*starting_node
,
112 std::string attribute
, unsigned long &value
);
113 bool get_current_attribute_value_quark(const Quark
*starting_node
,
114 std::string attribute
, Quark
&value
);
115 bool get_current_attribute_value_string(const Quark
*starting_node
,
116 std::string attribute
, std::string
&value
);
117 bool get_attribute_value_at_int(unsigned long timestamp
,
118 const Quark
*starting_node
,
119 std::string attribute
,
121 bool get_attribute_value_at_ulong(unsigned long timestamp
,
122 const Quark
*starting_node
,
123 std::string attribute
,
124 unsigned long &value
);
125 bool get_attribute_value_at_quark(unsigned long timestamp
,
126 const Quark
*starting_node
,
127 std::string attribute
,
129 bool get_attribute_value_at_string(unsigned long timestamp
,
130 const Quark
*starting_node
,
131 std::string attribute
,
133 bool get_interval_value_int(unsigned long start
,
135 const Quark
*starting_node
,
136 std::string attribute
,
138 bool get_interval_value_ulong(unsigned long start
,
140 const Quark
*starting_node
,
141 std::string attribute
,
142 unsigned long &value
);
143 void add_in_sequence(unsigned long timestamp
, Quark item
, Quark beg
);
144 void remove_from_sequence(unsigned long timestamp
, Quark item
, Quark beg
);
145 int get_sequence_length(unsigned long timestamp
, Quark beg
);
146 int sequence_to_array(unsigned long timestamp
, Quark beg
, Quark
*arr
,
148 int get_global_perf_list(unsigned long timestamp
, Quark
*arr
, int len
);
149 int get_global_perf_list_size(unsigned long timestamp
);
150 int get_number_of_opened_files(unsigned long timestamp
, Quark proc
);
151 int get_opened_files(unsigned long timestamp
, Quark proc
, Quark
*arr
, int len
);
153 #endif /* _COMMON_H */
This page took 0.032973 seconds and 4 git commands to generate.