9 #include "jdb_module.h"
10 #include "jdb_screen.h"
11 #include "jdb_kobject.h"
12 #include "kernel_console.h"
13 #include "kernel_task.h"
15 #include "ram_quota.h"
18 #include "thread_object.h"
19 #include "static_init.h"
21 class Jdb_space : public Jdb_module, public Jdb_kobject_handler
24 Jdb_space() FIASCO_INIT;
29 Task *Jdb_space::task;
32 Jdb_space::Jdb_space()
33 : Jdb_module("INFO"), Jdb_kobject_handler((Task*)0)
35 Jdb_kobject::module()->register_handler(this);
40 Jdb_space::show_kobject(Kobject_common *o, int lvl)
42 Task *t = cxx::dyn_cast<Task*>(o);
55 Jdb_space::kobject_type(Kobject_common *) const
57 return JDB_ANSI_COLOR(red) "Task" JDB_ANSI_COLOR(default);
62 Jdb_space::show_kobject_short(String_buffer *buf, Kobject_common *o)
64 Task *t = cxx::dyn_cast<Task*>(o);
65 if (t == Kernel_task::kernel_task())
66 buf->printf(" {KERNEL}");
68 buf->printf(" R=%ld", t->ref_cnt());
73 Jdb_space::print_space(Space *s)
80 Jdb_space::show(Task *t)
82 printf("Space %p (Kobject*)%p\n", t, static_cast<Kobject*>(t));
84 for (Space::Ku_mem_list::Const_iterator m = t->_ku_mem.begin(); m != t->_ku_mem.end();
86 printf(" utcb area: user_va=%p kernel_va=%p size=%x\n",
87 m->u_addr.get(), m->k_addr, m->size);
89 unsigned long m = t->ram_quota()->current();
90 unsigned long l = t->ram_quota()->limit();
91 printf(" mem usage: %lu (%luKB) of %lu (%luKB) @%p\n",
92 m, m/1024, l, l/1024, t->ram_quota());
95 static bool space_filter(Kobject_common const *o)
96 { return cxx::dyn_cast<Task const *>(o); }
99 Jdb_module::Action_code
100 Jdb_space::action(int cmd, void *&, char const *&, int &)
104 Jdb_kobject_list list(space_filter);
111 Jdb_module::Cmd const *
112 Jdb_space::cmds() const
116 { 0, "s", "spacelist", "", "s\tshow task list", 0 },
123 Jdb_space::num_cmds() const
128 filter_task_thread(Kobject_common const *o)
130 return cxx::dyn_cast<Task const *>(o) || cxx::dyn_cast<Thread const *>(o);
132 static Jdb_space jdb_space INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
133 static Jdb_kobject_list::Mode INIT_PRIORITY(JDB_MODULE_INIT_PRIO) tnt("[Tasks + Threads]", filter_task_thread);