#include "jdb_thread.h"
#include "jdb_util.h"
#include "kernel_console.h"
+#include "kernel_task.h"
#include "keycodes.h"
#include "l4_types.h"
#include "push_console.h"
#include "simpleio.h"
#include "static_init.h"
#include "task.h"
-#include "thread.h"
+#include "thread_object.h"
#include "thread_state.h"
#include "types.h"
{
public:
Jdb_tcb_ptr(Address addr = 0)
- : _base(addr & ~(Config::thread_block_size-1)),
- _offs(addr & (Config::thread_block_size-1))
+ : _base(addr & ~(Context::Size-1)),
+ _offs(addr & (Context::Size-1))
{}
Jdb_tcb_ptr(Jdb_tcb_ptr const &p)
{}
inline bool valid() const
- { return _offs <= Config::thread_block_size-sizeof(Mword); }
+ { return _offs <= Context::Size-sizeof(Mword); }
bool operator > (int offs) const
{
- return offs < 0 ? _offs > Config::thread_block_size + offs*sizeof(Mword)
- : _offs > offs*sizeof(Mword);
+ return offs < 0 ? _offs > Context::Size + offs*sizeof(Mword)
+ : _offs > offs*sizeof(Mword);
}
Jdb_tcb_ptr &operator += (int offs)
inline const char *user_value_desc() const;
inline Mword top_value(int offs) const
- { return *((Mword*)(Cpu::stack_align(_base + Config::thread_block_size)) + offs); }
+ { return *((Mword*)(Cpu::stack_align(_base + Context::Size)) + offs); }
inline Address base() const
{ return _base; }
private:
static void print_return_frame_regs(Jdb_tcb_ptr const ¤t, Mword ksp);
- static void print_entry_frame_regs(Space *task);
+ static void print_entry_frame_regs(Thread *t);
static void info_thread_state(Thread *t);
static Jdb_disasm_view _disasm_view;
Kobject *Jdb_tcb::threadid;
Address Jdb_tcb::address;
-char Jdb_tcb::first_char;
-char Jdb_tcb::auto_tcb;
+char Jdb_tcb::first_char;
+char Jdb_tcb::auto_tcb;
Jdb_disasm_view Jdb_tcb::_disasm_view(Jdb_tcb::Disasm_x, Jdb_tcb::Disasm_y);
Jdb_stack_view Jdb_tcb::_stack_view (Jdb_tcb::Stack_y);
} */
}
- printf(" %s"ADDR_FMT"%s", s1, p.value(), s2);
+ printf(" %s" ADDR_FMT "%s", s1, p.value(), s2);
}
Kconsole::console()->getchar_chance();
if (p.valid())
- {
- printf(" %03lx ", p.addr() & 0xfff);
- for (unsigned x = 0; x < cols(); ++x, p+=1)
- print_value(p);
- putchar('\n');
- }
+ {
+ printf(" %03lx ", p.addr() & 0xfff);
+ for (unsigned x = 0; x < cols(); ++x, p+=1)
+ print_value(p);
+ putchar('\n');
+ }
else
- puts("\033[K");
+ puts("\033[K");
}
}
char kobj_desc[120];
kobj_desc[0] = 0;
+ Kobject_dbg::Iterator o;
if (current.is_kern_code())
strcpy(kobj_desc, "Kernel code"); // todo: print kernel function name
snprintf(kobj_desc, sizeof(kobj_desc), "Return frame: %s",
current.user_value_desc());
else
- if (Kobject *o = Kobject::pointer_to_obj(reinterpret_cast<void *>(current.value())))
+ if ((o = Kobject_dbg::pointer_to_obj(reinterpret_cast<void *>(current.value()))) != Kobject_dbg::end())
{
- Jdb_kobject::obj_description(kobj_desc, sizeof(kobj_desc), true, o);
+ Jdb_kobject::obj_description(kobj_desc, sizeof(kobj_desc), true, *o);
kobj_desc[sizeof(kobj_desc) - 1] = 0;
}
Jdb_stack_view::handle_key(int key, bool *redraw)
{
Mword lines = Jdb_screen::height() - start_y;
- Mword max_lines = (Config::thread_block_size + bytes_per_line() - 1)/bytes_per_line();
+ Mword max_lines = (Context::Size + bytes_per_line() - 1)/bytes_per_line();
Address max_absy = max_lines - lines;
if (lines > max_lines)
Jdb::cursor(posy(), posx());
printf(" %.*s", Jdb_screen::Mword_size_bmode, Jdb_screen::Mword_blank);
Jdb::printf_statline("tcb",
- is_current ? "<Space>=edit registers" : 0,
- "edit <"ADDR_FMT"> = "ADDR_FMT,
- current.addr(), current.value());
+ is_current ? "<Space>=edit registers" : 0,
+ "edit <" ADDR_FMT "> = " ADDR_FMT,
+ current.addr(), current.value());
Jdb::cursor(posy(), posx() + 1);
c = Jdb_core::getchar();
if (c==KEY_ESC)
- {
- *redraw = true;
- return;
- }
+ {
+ *redraw = true;
+ return;
+ }
if (c != ' ' || !is_current)
- {
- // edit memory
- putchar(c);
- Jdb::printf_statline("tcb", 0, "edit <"ADDR_FMT"> = "ADDR_FMT,
- current.addr(), current.value());
- Jdb::cursor(posy(), posx() + 1);
- if (!Jdb_input::get_mword(&value, c, 16))
- {
- Jdb::cursor(posy(), posx());
- print_value(current);
- return;
- }
- else
- current.value(value);
- }
+ {
+ // edit memory
+ putchar(c);
+ Jdb::printf_statline("tcb", 0, "edit <" ADDR_FMT "> = " ADDR_FMT,
+ current.addr(), current.value());
+ Jdb::cursor(posy(), posx() + 1);
+ if (!Jdb_input::get_mword(&value, c, 16))
+ {
+ Jdb::cursor(posy(), posx());
+ print_value(current);
+ return;
+ }
+ else
+ current.value(value);
+ }
else
- {
- // edit registers
- Jdb::cursor(posy(), posx());
- print_value(current);
- edit_registers();
- return;
- }
+ {
+ // edit registers
+ Jdb::cursor(posy(), posx());
+ print_value(current);
+ edit_registers();
+ return;
+ }
*redraw = true;
}
}
PUBLIC
Jdb_tcb::Jdb_tcb()
- : Jdb_module("INFO"), Jdb_kobject_handler(Thread::static_kobj_type)
+ : Jdb_module("INFO"), Jdb_kobject_handler(Thread_object::static_kobj_type)
{
static Jdb_handler enter(at_jdb_enter);
Kobject *
Jdb_tcb::parent(Kobject *o)
{
- Thread *t = Kobject::dcast<Thread*>(o);
+ Thread *t = Kobject::dcast<Thread_object*>(o);
if (!t)
return 0;
Jdb_module::Action_code
Jdb_tcb::show(Thread *t, int level)
{
-new_tcb:
-
Thread *t_current = Jdb::get_current_active();
bool is_current_thread;
bool redraw_screen = true;
{
#if 0
const Mword mask
- = (Config::thread_block_size * Mem_layout::max_threads()) - 1;
- const Mword tsksz = Config::thread_block_size*L4_uid::threads_per_task();
+ = (Context::Size * Mem_layout::max_threads()) - 1;
+ const Mword tsksz = Context::Size*L4_uid::threads_per_task();
LThread_num task = ((Address)Jdb::get_thread() & mask) / tsksz;
#endif
#if 0
char time_str[12];
- putstr("thread: ");
+ putstr("thread : ");
Jdb_kobject::print_uid(t, 3);
print_thread_uid_raw(t);
- printf("CPU %3u ", t->cpu());
+ printf("\tCPU: %u ", cxx::int_value<Cpu_number>(t->cpu()));
printf("\tprio: %02x mode: %s\n",
t->sched()->prio(),
t->mode() & Context::Periodic ?
t->mode() & Context::Nonstrict ? "Per (IRT)" : "Per (SP)" : "Con");
- printf("state: %03lx ", t->state());
- t->print_state_long();
+ printf("state : %03lx ", t->state(false));
+ Jdb_thread::print_state_long(t);
- putstr("\n\nwait for: ");
+ putstr("\nwait for: ");
if (!t->partner())
- putstr("--- ");
+ putstr("--- ");
else
Jdb_thread::print_partner(t, 4);
- putstr(" polling: ");
+ putstr("\tpolling: ");
Jdb_thread::print_snd_partner(t, 3);
putstr("\trcv descr: ");
- if (t->state() & Thread_ipc_receiving_mask)
+ if ((t->state(false) & Thread_ipc_mask) == Thread_receive_wait)
printf("%08lx", t->rcv_regs()->from_spec());
else
putstr(" ");
putstr("\n"
"lcked by: ");
- Jdb_kobject::print_uid(Thread::lookup(t->thread_lock()->lock_owner()), 3);
+ if (t->thread_lock()->lock_owner())
+ Jdb_kobject::print_uid(static_cast<Thread*>(t->thread_lock()->lock_owner()), 3);
putstr("\t\t\ttimeout : ");
if (t->_timeout && t->_timeout->is_set())
{
Signed64 diff = (t->_timeout->get_timeout(Kip::k()->clock)) * 1000;
if (diff < 0)
- strcpy(time_str, "over");
+ strcpy(time_str, "over");
else
- Jdb::write_ll_ns(diff, time_str,
- 11 < sizeof(time_str)-1 ? 11 : sizeof(time_str)-1,
- false);
+ Jdb::write_ll_ns(diff, time_str,
+ 11 < sizeof(time_str)-1 ? 11 : sizeof(time_str)-1,
+ false);
printf("%-13s", time_str);
}
11 < sizeof(time_str) ? 11 : sizeof(time_str), false);
printf("%-13s", time_str);
- printf("\t\ttimeslice: %llu/%llu %cs\n"
+ printf("\t\ttimeslice: %llu/%lld %cs\n"
"pager\t: ",
- t->sched()->left(), t->sched()->quantum(), Config::char_micro);
+ t->sched()->left(), ~0ULL/*t->sched()->quantum()*/, Config::char_micro);
print_kobject(t, t->_pager.raw());
- putstr("\ttask: ");
+ putstr("\ttask : ");
if (t->space() == Kernel_task::kernel_task())
putstr(" kernel ");
else
print_kobject(static_cast<Task*>(t->space()));
- putstr("\tutcb: ");
- printf("%08lx", (Mword)t->utcb());
-
putstr("\nexc-hndl: ");
print_kobject(t, t->_exc_handler.raw());
+ printf("\tUTCB : %08lx/%08lx",
+ (Mword)t->utcb().kern(), (Mword)t->utcb().usr().get());
+
#if 0
putstr("\tready lnk: ");
- if (t->state() & Thread_ready)
+ if (t->state(false) & Thread_ready)
{
if (t->_ready_next)
- Jdb_kobject::print_uid(Thread::lookup(t->_ready_next), 3);
+ Jdb_kobject::print_uid(Thread::lookup(t->_ready_next), 3);
else if (is_current_thread)
- putstr(" ???.??");
+ putstr(" ???.??");
else
- putstr("\033[31;1m???.??\033[m");
+ putstr("\033[31;1m???.??\033[m");
if (t->_ready_prev)
- Jdb_kobject::print_uid(Thread::lookup(t->_ready_prev), 4);
+ Jdb_kobject::print_uid(Thread::lookup(t->_ready_prev), 4);
else if (is_current_thread)
- putstr(" ???.??");
+ putstr(" ???.??");
else
putstr(" \033[31;1m???.??\033[m");
putchar('\n');
puts("--- ---");
#endif
- putstr("\tprsent lnk: ");
- if (t->Present_list_item::next())
- Jdb_kobject::print_uid(static_cast<Thread*>(t->Present_list_item::next()), 3);
- else
- putstr("--- ");
- if (t->Present_list_item::prev())
- Jdb_kobject::print_uid(static_cast<Thread*>(t->Present_list_item::prev()), 4);
- else
- putstr("--- ");
putchar('\n');
- putstr("vCPU st: ");
- if (t->state() & Thread_vcpu_enabled)
+ putstr("vCPU : ");
+ if (t->state(false) & Thread_vcpu_enabled)
{
- char st[7];
- printf("c=%s s=%s e-ip=%08lx e-sp=%08lx S=",
- vcpu_state_str(t->vcpu_state()->state, st, sizeof(st)),
- vcpu_state_str(t->vcpu_state()->_saved_state, st, sizeof(st)),
- t->vcpu_state()->_entry_ip, t->vcpu_state()->_entry_sp);
+ char st1[7];
+ char st2[7];
+ Vcpu_state *v = t->vcpu_state().kern();
+ printf("%08lx/%08lx S=", (Mword)v, (Mword)t->vcpu_state().usr().get());
print_kobject(static_cast<Task*>(t->vcpu_user_space()));
+ putchar('\n');
+ printf("vCPU : c=%s s=%s sf=%c e-ip=%08lx e-sp=%08lx\n",
+ vcpu_state_str(v->state, st1, sizeof(st1)),
+ vcpu_state_str(v->_saved_state, st2, sizeof(st2)),
+ (v->sticky_flags & Vcpu_state::Sf_irq_pending) ? 'P' : '-',
+ v->_entry_ip, v->_entry_sp);
}
else
- putstr("---");
- putchar('\n');
+ putstr("---\nvCPU : ---\n");
Address ksp = is_current_thread ? ef->ksp()
- : (Address)t->get_kernel_sp();
+ : (Address)t->get_kernel_sp();
#if 0
Address tcb = (Address)context_of((void*)ksp);
_stack_view.init(ksp, ef, is_current_thread);
if (is_current_thread)
- print_entry_frame_regs(t->space());
+ print_entry_frame_regs(t);
else if (t->space() != Kernel_task::kernel_task())
{
{
// kernel thread
Jdb::cursor(15, 1);
- printf("kernel SP="ADDR_FMT, ksp);
+ printf("kernel SP=" ADDR_FMT, ksp);
}
dump_stack:
Jdb::cursor(Jdb_screen::height(), 6);
if (c == KEY_CURSOR_HOME && level > 0)
- return GO_BACK;
+ return GO_BACK;
if (!_stack_view.handle_key(c, &redraw))
- {
- switch (c)
- {
- case KEY_RETURN:
- if (jdb_dump_addr_task && _stack_view.current.valid())
- {
- if (!jdb_dump_addr_task(_stack_view.current.value(),
+ {
+ switch (c)
+ {
+ case KEY_RETURN:
+ if (jdb_dump_addr_task && _stack_view.current.valid())
+ {
+ if (!jdb_dump_addr_task(_stack_view.current.value(),
_stack_view.current.is_user_value() ? t->space() : 0, level+1))
- return NOTHING;
- redraw_screen = true;
- }
- break;
- case KEY_TAB:
- //bt_start = search_bt_start(tcb, (Mword*)ksp, is_current_thread);
- redraw = true;
- break;
- case ' ':
- if (Jdb_disasm::avail() && _stack_view.current.valid())
- {
+ return NOTHING;
+ redraw_screen = true;
+ }
+ break;
+ case KEY_TAB:
+ //bt_start = search_bt_start(tcb, (Mword*)ksp, is_current_thread);
+ redraw = true;
+ break;
+ case ' ':
+ if (Jdb_disasm::avail() && _stack_view.current.valid())
+ {
printf("V %lx\n", _stack_view.current.value());
- if (!Jdb_disasm::show(_stack_view.current.value(),
- _stack_view.current.is_user_value() ? t->space() : 0, level+1, true))
- return NOTHING;
- redraw_screen = true;
- }
- break;
- case 'u':
- if (Jdb_disasm::avail() && _stack_view.current.valid())
- {
- Jdb::printf_statline("tcb", "<CR>=disassemble here",
- "u[address=%08lx task=%lx] ",
- _stack_view.current.value(),
- Kobject_dbg::pointer_to_id(t->space()));
- int c1 = Jdb_core::getchar();
- if ((c1 != KEY_RETURN) && (c1 != ' '))
- {
- Jdb::printf_statline("tcb", 0, "u");
- Jdb::execute_command("u", c1);
- return NOTHING;
- }
-
- if (!Jdb_disasm::show(_stack_view.current.value(),
- _stack_view.current.is_user_value() ? t->space() : 0, level+1, true))
- return NOTHING;
- redraw_screen = true;
- }
- break;
+ if (!Jdb_disasm::show(_stack_view.current.value(),
+ _stack_view.current.is_user_value() ? t->space() : 0, level+1, true))
+ return NOTHING;
+ redraw_screen = true;
+ }
+ break;
+ case 'u':
+ if (Jdb_disasm::avail() && _stack_view.current.valid())
+ {
+ Jdb::printf_statline("tcb", "<CR>=disassemble here",
+ "u[address=%08lx task=%lx] ",
+ _stack_view.current.value(),
+ Kobject_dbg::pointer_to_id(t->space()));
+ int c1 = Jdb_core::getchar();
+ if ((c1 != KEY_RETURN) && (c1 != ' '))
+ {
+ Jdb::printf_statline("tcb", 0, "u");
+ Jdb::execute_command("u", c1);
+ return NOTHING;
+ }
+
+ if (!Jdb_disasm::show(_stack_view.current.value(),
+ _stack_view.current.is_user_value() ? t->space() : 0, level+1, true))
+ return NOTHING;
+ redraw_screen = true;
+ }
+ break;
#if 0
- case 'r': // ready-list
- putstr("[n]ext/[p]revious in ready list?");
- switch (Jdb_core::getchar())
- {
- case 'n':
- if (t->_ready_next)
- {
- t = static_cast<Thread*>(t->_ready_next);
- goto new_tcb;
- }
- break;
- case 'p':
- if (t->_ready_prev)
- {
- t = static_cast<Thread*>(t->_ready_prev);
- goto new_tcb;
- }
- break;
- }
- break;
+ case 'r': // ready-list
+ putstr("[n]ext/[p]revious in ready list?");
+ switch (Jdb_core::getchar())
+ {
+ case 'n':
+ if (t->_ready_next)
+ {
+ t = static_cast<Thread*>(t->_ready_next);
+ goto new_tcb;
+ }
+ break;
+ case 'p':
+ if (t->_ready_prev)
+ {
+ t = static_cast<Thread*>(t->_ready_prev);
+ goto new_tcb;
+ }
+ break;
+ }
+ break;
#endif
- case 'p': // present-list or show_pages
- putstr("[n]ext/[p]revious in present list?");
- switch (c=Jdb_core::getchar())
- {
- case 'n':
- if (t->Present_list_item::next())
- {
- t = static_cast<Thread*>(t->Present_list_item::next());
- goto new_tcb;
- }
- break;
- case 'p':
- if (t->Present_list_item::prev())
- {
- t = static_cast<Thread*>(t->Present_list_item::prev());
- goto new_tcb;
- }
- break;
- default:
- Jdb::execute_command("p", c);
- return NOTHING;
- }
- break;
case 'C':
_stack_view.memdump_is_colored = !_stack_view.memdump_is_colored;
redraw = true;
break;
- case KEY_ESC:
- Jdb::abort_command();
- return NOTHING;
- default:
- if (Jdb::is_toplevel_cmd(c))
- return NOTHING;
- break;
- }
- }
+ case KEY_ESC:
+ Jdb::abort_command();
+ return NOTHING;
+ default:
+ if (Jdb::is_toplevel_cmd(c))
+ return NOTHING;
+ break;
+ }
+ }
if (redraw_screen)
- goto whole_screen;
+ goto whole_screen;
if (redraw)
- goto dump_stack;
+ goto dump_stack;
}
}
/* --- original L4 screen ------------------------------------------------------
-thread: 0081 (001.01) <00020401 00080000> prio: 10
+thread: 0081 (001.01) <00020401 00080000> prio: 10
state : 85, ready lists: 81 mcp: ff
wait for: -- rcv descr: 00000000 partner: 00000000
if (cmd == 0)
{
if (args == &first_char)
- {
- switch (first_char)
- {
- case '+':
- case '-':
- printf("%c\n", first_char);
- auto_tcb = first_char == '+';
- break;
- case '?':
- args = &address;
- fmt = " addr="ADDR_FMT" => ";
- putchar(first_char);
- return Jdb_module::EXTRA_INPUT;
+ {
+ switch (first_char)
+ {
+ case '+':
+ case '-':
+ printf("%c\n", first_char);
+ auto_tcb = first_char == '+';
+ break;
+ case '?':
+ args = &address;
+ fmt = " addr=" ADDR_FMT " => ";
+ putchar(first_char);
+ return Jdb_module::EXTRA_INPUT;
case 'a':
args = &tcb_addr;
fmt = " tcb=%x => ";
case KEY_RETURN:
show(0, 0);
return NOTHING;
- default:
- args = &threadid;
- fmt = "%q";
- next_char = first_char;
- return Jdb_module::EXTRA_INPUT_WITH_NEXTCHAR;
- }
- }
+ default:
+ args = &threadid;
+ fmt = "%q";
+ next_char = first_char;
+ return Jdb_module::EXTRA_INPUT_WITH_NEXTCHAR;
+ }
+ }
else if (args == &address)
- {
- address &= ~(Config::thread_block_size-1);
- Jdb_kobject::print_uid(reinterpret_cast<Thread*>(address), 3);
- putchar('\n');
- }
+ {
+ address &= ~(Context::Size-1);
+ Jdb_kobject::print_uid(reinterpret_cast<Thread*>(address), 3);
+ putchar('\n');
+ }
else if (args == &tcb_addr)
- show((Thread*)tcb_addr, 0);
+ show((Thread*)tcb_addr, 0);
else
{
- Thread *t = Kobject::dcast<Thread *>(threadid);
+ Thread *t = Kobject::dcast<Thread_object *>(threadid);
if (t)
show(t, 0);
else
}
PUBLIC
-Kobject *
-Jdb_tcb::follow_link(Kobject *o)
+Kobject_common *
+Jdb_tcb::follow_link(Kobject_common *o)
{
- Thread *t = Kobject::dcast<Thread*>(o);
+ Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
if (t->space() == Kernel_task::kernel_task())
return o;
return static_cast<Kobject*>(static_cast<Task*>(t->space()));
PUBLIC
bool
-Jdb_tcb::show_kobject(Kobject *o, int level)
+Jdb_tcb::show_kobject(Kobject_common *o, int level)
{
- Thread *t = Kobject::dcast<Thread*>(o);
+ Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
return show(t, level);
}
+PRIVATE static
+bool
+Jdb_tcb::is_current(Thread *t)
+{
+ return t == Jdb::get_thread(t->cpu());
+}
+
PUBLIC
int
-Jdb_tcb::show_kobject_short(char *buf, int max, Kobject *o)
+Jdb_tcb::show_kobject_short(char *buf, int max, Kobject_common *o)
{
- Thread *t = Kobject::dcast<Thread*>(o);
- Thread *cur_t = Jdb::get_current_active();
+ Thread *t = Kobject::dcast<Thread_object *>(Kobject::from_dbg(o->dbg_info()));
+ bool is_current = Jdb_tcb::is_current(t);
int cnt = 0;
- if (t->space() == Kernel_task::kernel_task())
+ if (t == Context::kernel_context(t->cpu()))
{
- cnt = snprintf(buf, max, " {KERNEL} C=%u", t->cpu());
+ cnt = snprintf(buf, max, " {KERNEL} C=%u",
+ cxx::int_value<Cpu_number>(t->cpu()));
max -= cnt;
buf += cnt;
}
if (t->space() == Kernel_task::kernel_task())
return cnt + snprintf(buf, max, " R=%ld%s", t->ref_cnt(),
- cur_t == t ? " "JDB_ANSI_COLOR(green)"current"JDB_ANSI_END : "");
+ is_current ? " " JDB_ANSI_COLOR(green) "current" JDB_ANSI_END : "");
- return cnt + snprintf(buf, max, " C=%u S=D:%lx R=%ld %s", t->cpu(),
+ return cnt + snprintf(buf, max, " C=%u S=D:%lx R=%ld %s",
+ cxx::int_value<Cpu_number>(t->cpu()),
Kobject_dbg::pointer_to_id(t->space()),
t->ref_cnt(),
- cur_t == t ? " "JDB_ANSI_COLOR(green)"current"JDB_ANSI_END : "");
+ is_current ? " " JDB_ANSI_COLOR(green) "current" JDB_ANSI_END : "");
}
PUBLIC
{
static Cmd cs[] =
{
- { 0, "t", "tcb", "%C",
- "t[<threadid>]\tshow current/given thread control block (TCB)\n"
- "t{+|-}\tshow current thread control block at Jdb every entry\n",
- &first_char },
+ { 0, "t", "tcb", "%C",
+ "t[<threadid>]\tshow current/given thread control block (TCB)\n"
+ "t{+|-}\tshow current thread control block at every JDB entry\n",
+ &first_char },
};
return cs;
}
PRIVATE static
void
-Jdb_tcb::print_kobject(Mword n)
+Jdb_tcb::print_kobject(Cap_index n)
{
- printf("[C:%4lx] ", n);
+ printf("[C:%4lx] ", cxx::int_value<Cap_index>(n));
}
PRIVATE static
void
Jdb_tcb::print_kobject(Kobject *o)
{
- printf("D:%4lx ", o ? o->dbg_id() : 0);
+ printf("D:%4lx ", o ? o->dbg_info()->dbg_id() : 0);
}
PRIVATE static
void
-Jdb_tcb::print_kobject(Thread *t, Mword capidx)
+Jdb_tcb::print_kobject(Thread *t, Cap_index capidx)
{
Space *space = t->space();
if (!space)
return;
}
- Obj_space::Capability *c = space->obj_space()->get_cap(capidx);
+ Obj_space::Capability *c = space->jdb_lookup_cap(capidx);
if (!c || !c->valid())
{
print_kobject(capidx);
return;
}
- printf("[C:%4lx] D:%4lx", capidx, c->obj()->dbg_info()->dbg_id());
+ printf("[C:%4lx] D:%4lx", cxx::int_value<Cap_index>(capidx),
+ c->obj()->dbg_info()->dbg_id());
}
//