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::static_kobj_type)
35 Jdb_kobject::module()->register_handler(this);
40 Jdb_space::show_kobject(Kobject_common *o, int lvl)
42 Task *t = Kobject::dcast<Task*>(o);
55 Jdb_space::kobject_type() const
57 return JDB_ANSI_COLOR(red) "Task" JDB_ANSI_COLOR(default);
62 Jdb_space::show_kobject_short(char *buf, int max, Kobject_common *o)
64 Task *t = Kobject::dcast<Task*>(o);
66 if (t == Kernel_task::kernel_task())
68 cnt = snprintf(buf, max, " {KERNEL}");
72 return cnt + snprintf(buf, max, " R=%ld", t->ref_cnt());
77 Jdb_space::print_space(Space *s)
84 Jdb_space::show(Task *t)
86 printf("Space %p (Kobject*)%p\n", t, static_cast<Kobject*>(t));
87 printf("\n page table: %p\n", t->mem_space());
91 for (Space::Ku_mem const *m = t->_ku_mem; m; m = m->next)
92 printf(" utcb area: user_va=%p kernel_va=%p size=%x\n",
93 m->u_addr.get(), m->k_addr, m->size);
95 unsigned long m = t->ram_quota()->current();
96 unsigned long l = t->ram_quota()->limit();
97 printf(" mem usage: %ld (%ldKB) of %ld (%ldKB) @%p\n",
98 m, m/1024, l, l/1024, t->ram_quota());
101 static bool space_filter(Kobject_common const *o)
102 { return Kobject::dcast<Task const *>(o); }
105 Jdb_module::Action_code
106 Jdb_space::action(int cmd, void *&, char const *&, int &)
110 Jdb_kobject_list list(space_filter);
117 Jdb_module::Cmd const *
118 Jdb_space::cmds() const
122 { 0, "s", "spacelist", "", "s\tshow task list", 0 },
129 Jdb_space::num_cmds() const
134 Jdb_space::obj_space_info(Space *s)
136 printf(" obj_space: %p\n", s->obj_space());
141 filter_task_thread(Kobject_common const *o)
143 return Kobject::dcast<Task const *>(o) || Kobject::dcast<Thread_object const *>(o);
145 static Jdb_space jdb_space INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
146 static Jdb_kobject_list::Mode INIT_PRIORITY(JDB_MODULE_INIT_PRIO) tnt("[Tasks + Threads]", filter_task_thread);
148 IMPLEMENTATION[!io || ux]:
152 Jdb_space::io_space_info(Space *)
156 IMPLEMENTATION[io && !ux]:
160 Jdb_space::io_space_info(Space *s)
162 printf(" io_space: %p\n", s->io_space());