00001
00002
00003 #ifndef jdb_tbuf_show_i_h
00004 #define jdb_tbuf_show_i_h
00005
00006 #include <cstdio>
00007 #include <cstring>
00008
00009 #include "config.h"
00010 #include "cpu.h"
00011 #include "jdb.h"
00012 #include "jdb_input.h"
00013 #include "jdb_module.h"
00014 #include "jdb_screen.h"
00015 #include "jdb_symbol.h"
00016 #include "jdb_tbuf.h"
00017 #include "jdb_tbuf_output.h"
00018 #include "kern_cnt.h"
00019 #include "kernel_console.h"
00020 #include "keycodes.h"
00021 #include "perf_cnt.h"
00022 #include "static_init.h"
00023 #include "thread.h"
00024
00025 class Jdb_tbuf_show : public Jdb_module
00026 {
00027 static char _search_str[40];
00028 static char _filter_str[40];
00029 static char _buffer_str[80];
00030 static Mword _status_type;
00031 static Mword _absy;
00032 static Mword _nr_cur;
00033 static Mword _nr_ref;
00034 static Mword _nr_pos[10];
00035
00036 enum
00037 {
00038 Index_mode = 0,
00039 Tsc_delta_mode = 1,
00040 Tsc_ref_mode = 2,
00041 Tsc_start_mode = 3,
00042 Kclock_ref_mode = 4,
00043 Kclock_start_mode = 5,
00044 Pmc1_delta_mode = 6,
00045 Pmc2_delta_mode = 7,
00046 Pmc1_ref_mode = 8,
00047 Pmc2_ref_mode = 9,
00048 };
00049
00050 enum
00051 {
00052 Tbuf_start_line = 3,
00053 };
00054
00055 enum
00056 {
00057 Status_ok = 0,
00058 Status_redraw = 1,
00059 Status_error = 2,
00060 };
00061
00062 enum
00063 {
00064 Nil = (Mword)-1,
00065 };
00066
00067 public:
00068 Jdb_module::Action_code action(int cmd, void *&, char const *&, int &);
00069
00070 Jdb_module::Cmd const *const cmds() const;
00071
00072 int const num_cmds() const;
00073
00074 Jdb_tbuf_show();
00075
00076 private:
00077 static void error(const char * const msg);
00078
00079 static int get_string(char *string, unsigned size);
00080
00081 static void show_perf_event_unit_mask_entry(Mword nr, Mword idx, Mword unit_mask, int exclusive);
00082
00083 static void show_perf_event(Mword nr);
00084
00085 static Mword select_perf_event_unit_mask(Mword nr, Mword unit_mask);
00086
00087 static Mword select_perf_event(Mword event);
00088
00089 static void show_events(Mword n, Mword ref, Mword count, Unsigned8 mode, Unsigned8 time_mode, int long_output);
00090
00091
00092 static Mword search(Mword start, Mword entries, const char *str, Unsigned8 direction);
00093
00094 static void show();
00095 };
00096
00097 #endif // jdb_tbuf_show_i_h