Convert LTTngTop to C++ and state system
[lttngtop.git] / src / common.h
index fd9a367211d799bbf7f5fac145fb06eb6bbb2b0b..4aad99290b4a0ced57a2e3cac62bf0bff8dc9de2 100644 (file)
 #define _COMMON_H
 
 #include <semaphore.h>
+extern "C" {
 #include <babeltrace/ctf/events.h>
+}
+#include <state/IntervalHistoryProvider.hpp>
+#include <state/StateSystem.hpp>
+#include <state/statevalue/StateValue.hpp>
+#include <state/statevalue/IntegerStateValue.hpp>
+#include <state/statevalue/StringStateValue.hpp>
+#include <state/statevalue/NullStateValue.hpp>
+#include <state/statevalue/QuarkStateValue.hpp>
+#include <sstream>
+#include <map>
+#include <vector>
+#include <set>
+
 #include "lttngtoptypes.h"
 #include "cputop.h"
 
+using namespace State;
+
 #define NSEC_PER_USEC 1000
 #define NSEC_PER_SEC 1000000000L
 
-sem_t goodtodisplay, goodtoupdate, timer, pause_sem, end_trace_sem, bootstrap;
-
-GPtrArray *copies; /* struct lttngtop */
-GHashTable *global_perf_liszt;
-
-struct lttngtop *data;
+extern StateSystem *state_system;
+extern std::set<Quark> modified_quarks;
+const unsigned long refresh_display = 1 * NSEC_PER_SEC;
+extern unsigned long last_display_update;
+extern unsigned long first_display_update;
 
-struct processtop *find_process_tid(struct lttngtop *ctx, int pid, char *comm);
-struct processtop* add_proc(struct lttngtop *ctx, int pid, char *comm,
-               unsigned long timestamp);
-struct processtop* update_proc(struct processtop* proc, int pid, int tid,
-               int ppid, char *comm);
-void add_thread(struct processtop *parent, struct processtop *thread);
-struct processtop* get_proc(struct lttngtop *ctx, int tid, char *comm,
-               unsigned long timestamp);
+extern sem_t goodtodisplay, goodtoupdate, timer, pause_sem, end_trace_sem, bootstrap;
 
-struct processtop *get_proc_pid(struct lttngtop *ctx, int tid, int pid,
-               unsigned long timestamp);
+bool find_process_tid(int tid, Quark &ret_proc_quark);
+Quark add_proc(int tid, std::string comm, unsigned long timestamp);
+void update_proc(unsigned long timestamp, Quark proc, int pid, int tid,
+                int ppid, char *comm);
+void add_thread(unsigned long timestamp, Quark parent, Quark thread);
+Quark get_proc(int tid, char *comm, unsigned long timestamp);
+Quark get_proc_pid(int pid, int tid, unsigned long timestamp);
+void death_proc(int tid, char *comm, unsigned long timestamp);
 
-void death_proc(struct lttngtop *ctx, int tid, char *comm,
-               unsigned long timestamp);
-struct cputime* add_cpu(int cpu);
-struct cputime* get_cpu(int cpu);
-struct lttngtop* get_copy_lttngtop(unsigned long start, unsigned long end);
-struct perfcounter *add_perf_counter(GPtrArray *perf, GQuark quark,
-               unsigned long count);
-struct perfcounter *get_perf_counter(const char *name, struct processtop *proc,
-               struct cputime *cpu);
-void reset_global_counters(void);
+Quark add_cpu(int cpu, unsigned long timestamp);
+Quark get_cpu(int cpu, unsigned long timestamp);
+void update_state_on_refresh(unsigned long start, unsigned long end);
+Quark get_perf_counter(unsigned long timestamp, Quark root, std::string name);
 
 /* common field access functions */
-uint64_t get_cpu_id(const struct bt_ctf_event *event);
-uint64_t get_context_tid(const struct bt_ctf_event *event);
-uint64_t get_context_pid(const struct bt_ctf_event *event);
-uint64_t get_context_ppid(const struct bt_ctf_event *event);
+int get_cpu_id(const struct bt_ctf_event *event);
+int get_context_tid(const struct bt_ctf_event *event);
+int get_context_pid(const struct bt_ctf_event *event);
+int get_context_ppid(const struct bt_ctf_event *event);
 char *get_context_comm(const struct bt_ctf_event *event);
 
-enum bt_cb_ret handle_statedump_process_state(struct bt_ctf_event *call_data,
-                                             void *private_data);
+enum bt_cb_ret handle_statedump_process_state(
+       struct bt_ctf_event *call_data, void *private_data);
+
+std::string path_name_from_cpuid(int cpuid);
+std::string thread_path_name_from_tid(int tid);
+std::string path_name_from_tid(int tid);
+std::string path_name_from_fd(int fd);
+
+void update_file_on_refresh(Quark proc, Quark file, unsigned long end);
+void update_proc_on_refresh(Quark proc, unsigned long start, unsigned long end);
+
+void modify_attribute(unsigned long timestamp, const Quark *starting_node,
+                     std::string attribute, int value);
+void modify_attribute(unsigned long timestamp, const Quark *starting_node,
+                     std::string attribute, Quark value);
+void modify_attribute(unsigned long timestamp, const Quark *starting_node,
+                     std::string attribute, char *value);
+void modify_attribute(unsigned long timestamp, const Quark *starting_node,
+                     std::string attribute, unsigned long value);
+void modify_attribute(unsigned long timestamp, const Quark *starting_node,
+                     std::string attribute, std::string value);
+void nullify_attribute(unsigned long timestamp, const Quark *starting_node,
+                      std::string attribute);
+void increment_attribute(unsigned long timestamp, const Quark *starting_node,
+                        std::string attribute);
+void increase_attribute(unsigned long timestamp, const Quark *starting_node,
+                       std::string attribute, int amount);
+void increase_attribute(unsigned long timestamp, const Quark *starting_node,
+                       std::string attribute, unsigned long amount);
+void decrement_attribute(unsigned long timestamp, const Quark *starting_node,
+                        std::string attribute);
+void decrease_attribute(unsigned long timestamp, const Quark *starting_node,
+                       std::string attribute, int amount);
+void decrease_attribute(unsigned long timestamp, const Quark *starting_node,
+                       std::string attribute, unsigned long amount);
+bool get_current_attribute_value_int(const Quark *starting_node,
+                                    std::string attribute, int &value);
+bool get_current_attribute_value_ulong(const Quark *starting_node,
+                                      std::string attribute, unsigned long &value);
+bool get_current_attribute_value_quark(const Quark *starting_node,
+                                      std::string attribute, Quark &value);
+bool get_current_attribute_value_string(const Quark *starting_node,
+                                       std::string attribute, std::string &value);
+bool get_attribute_value_at_int(unsigned long timestamp,
+                               const Quark *starting_node,
+                               std::string attribute,
+                               int &value);
+bool get_attribute_value_at_ulong(unsigned long timestamp,
+                                 const Quark *starting_node,
+                                 std::string attribute,
+                                 unsigned long &value);
+bool get_attribute_value_at_quark(unsigned long timestamp,
+                                 const Quark *starting_node,
+                                 std::string attribute,
+                                 Quark &value);
+bool get_attribute_value_at_string(unsigned long timestamp,
+                                  const Quark *starting_node,
+                                  std::string attribute,
+                                  std::string &value);
+bool get_interval_value_int(unsigned long start,
+                           unsigned long end,
+                           const Quark *starting_node,
+                           std::string attribute,
+                           int &value);
+bool get_interval_value_ulong(unsigned long start,
+                             unsigned long end,
+                             const Quark *starting_node,
+                             std::string attribute,
+                             unsigned long &value);
+void add_in_sequence(unsigned long timestamp, Quark item, Quark beg);
+void remove_from_sequence(unsigned long timestamp, Quark item, Quark beg);
+int get_sequence_length(unsigned long timestamp, Quark beg);
+int sequence_to_array(unsigned long timestamp, Quark beg, Quark *arr,
+                     int len);
+int get_global_perf_list(unsigned long timestamp, Quark *arr, int len);
+int get_global_perf_list_size(unsigned long timestamp);
+int get_number_of_opened_files(unsigned long timestamp, Quark proc);
+int get_opened_files(unsigned long timestamp, Quark proc, Quark *arr, int len);
 
 #endif /* _COMMON_H */
This page took 0.024465 seconds and 4 git commands to generate.