2 * @brief Jdb-Utcb module
4 * This module shows the user tcbs and the vCPU state of a thread/vcpu
14 #include "jdb_kobject.h"
15 #include "jdb_module.h"
17 #include "static_init.h"
19 #include "thread_state.h"
21 class Jdb_utcb : public Jdb_module
24 Jdb_utcb() FIASCO_INIT;
26 static Kobject *thread;
30 static Jdb_utcb Jdb_utcb INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
32 Kobject *Jdb_utcb::thread;
41 Jdb_utcb::print(Thread *t)
45 printf("\nUtcb-addr: %p\n", t->utcb());
49 if (t->state() & Thread_vcpu_enabled)
51 Vcpu_state *v = t->vcpu_state();
52 printf("\nVcpu-state-addr: %p\n", v);
53 printf("state: %lx saved-state: %lx sticky: %lx\n",
54 v->state, v->_saved_state, v->sticky_flags);
55 printf("entry_sp = %lx entry_ip = %lx sp = %lx\n",
56 v->_entry_sp, v->_entry_ip, v->_sp);
62 Jdb_module::Action_code
63 Jdb_utcb::action( int cmd, void *&, char const *&, int &)
68 Thread *t = Kobject::dcast<Thread *>(thread);
71 printf(" Invalid thread\n");
82 Jdb_utcb::num_cmds() const
87 const * Jdb_utcb::cmds() const
91 { 0, "z", "z", "%q", "z<thread>\tshow UTCB and vCPU state", &thread }
96 // --------------------------------------------------------------------------
97 // Handler for kobject list
99 class Jdb_kobject_utcb_hdl : public Jdb_kobject_handler
102 Jdb_kobject_utcb_hdl() : Jdb_kobject_handler(0) {}
103 virtual bool show_kobject(Kobject *, int) { return true; }
104 virtual ~Jdb_kobject_utcb_hdl() {}
107 PUBLIC static FIASCO_INIT
109 Jdb_kobject_utcb_hdl::init()
111 static Jdb_kobject_utcb_hdl hdl;
112 Jdb_kobject::module()->register_handler(&hdl);
117 Jdb_kobject_utcb_hdl::handle_key(Kobject *o, int keycode)
121 Thread *t = Kobject::dcast<Thread *>(o);
133 STATIC_INITIALIZE(Jdb_kobject_utcb_hdl);