extern int jdb_dump_addr_task (Address addr, Space *task, int level)
__attribute__((weak));
+
+// default implementations: --------------------------------------------
+
+// nothing special to do for edit registers
+IMPLEMENT_DEFAULT bool Jdb_stack_view::edit_registers() { return true; }
+
+
PUBLIC
Jdb_stack_view::Jdb_stack_view(unsigned y)
: start_y(y), absy(0), memdump_is_colored(true)
{
if (!p.valid() || !Jdb_util::is_mapped((void const*)p.addr()))
{
- printf(" %.*s", Jdb_screen::Mword_size_bmode, Jdb_screen::Mword_not_mapped);
+ printf(" %.*s", (int)Jdb_screen::Mword_size_bmode, Jdb_screen::Mword_not_mapped);
return;
}
int c;
Jdb::cursor(posy(), posx());
- printf(" %.*s", Jdb_screen::Mword_size_bmode, Jdb_screen::Mword_blank);
+ printf(" %.*s", (int)Jdb_screen::Mword_size_bmode, Jdb_screen::Mword_blank);
Jdb::printf_statline("tcb",
is_current ? "<Space>=edit registers" : 0,
"edit <" ADDR_FMT "> = " ADDR_FMT,
PUBLIC
Jdb_tcb::Jdb_tcb()
- : Jdb_module("INFO"), Jdb_kobject_handler(Thread_object::static_kobj_type)
+ : Jdb_module("INFO"), Jdb_kobject_handler((Thread*)0)
{
static Jdb_handler enter(at_jdb_enter);
PUBLIC virtual
Kobject *
-Jdb_tcb::parent(Kobject *o)
+Jdb_tcb::parent(Kobject_common *o)
{
- Thread *t = Kobject::dcast<Thread_object*>(o);
+ Thread *t = cxx::dyn_cast<Thread*>(o);
if (!t)
return 0;
cxx::int_value<Cpu_number>(t->get_current_cpu()));
printf("\tprio: %02x\n",
- t->sched()->prio());
+ (unsigned)t->sched()->prio());
printf("state : %03lx ", t->state(false));
Jdb_thread::print_state_long(t);
putstr("\trcv descr: ");
- if ((t->state(false) & Thread_ipc_mask) == Thread_receive_wait)
+ if ((t->state(false) & Thread_ipc_mask) == Thread_receive_wait
+ && t->rcv_regs())
printf("%08lx", t->rcv_regs()->from_spec());
else
putstr(" ");
time_str.terminate();
printf("%-13s", time_str.begin());
- printf("\t\ttimeslice: %llu/%lld %cs\n"
+ printf("\t\ttimeslice: %llu/%llu %cs\n"
"pager\t: ",
t->sched()->left(), ~0ULL/*t->sched()->quantum()*/, Config::char_micro);
print_kobject(t, t->_pager.raw());
show((Thread*)tcb_addr, 0, false);
else
{
- Thread *t = Kobject::dcast<Thread_object *>(threadid);
+ Thread *t = cxx::dyn_cast<Thread *>(threadid);
if (t)
show(t, 0, false);
else
}
else if (args == &threadid)
{
- Thread *t = Kobject::dcast<Thread_object *>(threadid);
+ Thread *t = cxx::dyn_cast<Thread *>(threadid);
if (t)
show(t, 1, true);
}
Kobject_common *
Jdb_tcb::follow_link(Kobject_common *o)
{
- Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
+ Thread *t = cxx::dyn_cast<Thread *>(Kobject::from_dbg(o->dbg_info()));
if (t->space() == Kernel_task::kernel_task())
return o;
return static_cast<Kobject*>(static_cast<Task*>(t->space()));
bool
Jdb_tcb::show_kobject(Kobject_common *o, int level)
{
- Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
+ Thread *t = cxx::dyn_cast<Thread *>(Kobject::from_dbg(o->dbg_info()));
return show(t, level, false);
}
void
Jdb_tcb::show_kobject_short(String_buffer *buf, Kobject_common *o)
{
- Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
+ Thread *t = cxx::dyn_cast<Thread *>(Kobject::from_dbg(o->dbg_info()));
bool is_current = Jdb_tcb::is_current(t);
if (t == Context::kernel_context(t->home_cpu()))
{
PUBLIC
char const *
-Jdb_tcb::kobject_type() const
+Jdb_tcb::kobject_type(Kobject_common *) const
{
return JDB_ANSI_COLOR(green) "Thread" JDB_ANSI_COLOR(default);
}