X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon.h;fp=src%2Fcommon.h;h=4aad99290b4a0ced57a2e3cac62bf0bff8dc9de2;hb=715cf83c121d2aeac7ae030d49ff5a31bd6b9ac5;hp=fd9a367211d799bbf7f5fac145fb06eb6bbb2b0b;hpb=62895477c7e60525e63e9e5117f92b34d467d0e6;p=lttngtop.git diff --git a/src/common.h b/src/common.h index fd9a367..4aad992 100644 --- a/src/common.h +++ b/src/common.h @@ -19,51 +19,135 @@ #define _COMMON_H #include +extern "C" { #include +} +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #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 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 */