9 #include "jdb_module.h"
10 #include "jdb_screen.h"
11 #include "jdb_kobject.h"
12 #include "kernel_console.h"
14 #include "ram_quota.h"
17 #include "static_init.h"
19 class Jdb_space : public Jdb_module, public Jdb_kobject_handler
22 Jdb_space() FIASCO_INIT;
27 Task *Jdb_space::task;
30 Jdb_space::Jdb_space()
31 : Jdb_module("INFO"), Jdb_kobject_handler(Task::static_kobj_type)
33 Jdb_kobject::module()->register_handler(this);
38 Jdb_space::show_kobject(Kobject *o, int lvl)
40 Task *t = Kobject::dcast<Task*>(o);
53 Jdb_space::kobject_type() const
55 return JDB_ANSI_COLOR(red) "Task" JDB_ANSI_COLOR(default);
60 Jdb_space::show_kobject_short(char *buf, int max, Kobject *o)
62 Task *t = Kobject::dcast<Task*>(o);
64 if (t == Kernel_task::kernel_task())
66 cnt = snprintf(buf, max, " {KERNEL}");
70 return cnt + snprintf(buf, max, " R=%ld", t->ref_cnt());
75 Jdb_space::print_space(Space *s)
82 Jdb_space::show(Task *t)
84 printf("Space %p (Kobject*)%p\n", t, static_cast<Kobject*>(t));
85 printf("\n page table: %p\n", t->mem_space());
89 printf(" utcb area: user_va=%lx kernel_va=%lx size=%lx\n",
90 t->user_utcb_area(), t->_utcb_kernel_area_start,
93 unsigned long m = t->ram_quota()->current();
94 unsigned long l = t->ram_quota()->limit();
95 printf(" mem usage: %ld (%ldKB) of %ld (%ldKB) @%p\n",
96 m, m/1024, l, l/1024, t->ram_quota());
99 static bool space_filter(Kobject const *o)
100 { return Kobject::dcast<Task const *>(o); }
103 Jdb_module::Action_code
104 Jdb_space::action(int cmd, void *&, char const *&, int &)
108 Jdb_kobject_list list(space_filter);
115 Jdb_module::Cmd const *
116 Jdb_space::cmds() const
120 { 0, "s", "spacelist", "", "s\tshow task list", 0 },
127 Jdb_space::num_cmds() const
132 Jdb_space::obj_space_info(Space *s)
134 printf(" obj_space: %p\n", s->obj_space());
139 filter_task_thread(Kobject const *o)
141 return Kobject::dcast<Task const *>(o) || Kobject::dcast<Thread const *>(o);
143 static Jdb_space jdb_space INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
144 static Jdb_kobject_list::Mode INIT_PRIORITY(JDB_MODULE_INIT_PRIO) tnt("[Tasks + Threads]", filter_task_thread);
146 IMPLEMENTATION[!io || ux]:
150 Jdb_space::io_space_info(Space *)
154 IMPLEMENTATION[io && !ux]:
158 Jdb_space::io_space_info(Space *s)
160 printf(" io_space: %p\n", s->io_space());