6 #include "thread_object.h"
8 #include "jdb_kobject.h"
9 #include "jdb_module.h"
12 class Jdb_sender_list : public Jdb_module, public Jdb_kobject_handler
15 Jdb_sender_list() FIASCO_INIT;
17 virtual bool show_kobject(Kobject *, int) { return true; }
19 static Kobject *thread;
22 static Jdb_sender_list jdb_sender_list INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
24 Kobject *Jdb_sender_list::thread;
29 Jdb_sender_list::show_sender_list(Thread *t, int printlines)
31 puts(printlines ? Jdb_screen::Line : "");
33 printf("Thread: %lx\n", t->dbg_info()->dbg_id());
35 Prio_list_elem *p = t->sender_list()->head();
39 printf("Nothing in sender list\n");
41 puts(Jdb_screen::Line);
48 printf("%02x: ", p->prio());
49 Prio_list_elem *s = p;
52 Thread *ts = static_cast<Thread *>(Sender::cast(s));
53 printf("%s %lx", s == p ? "" : ",", ts->dbg_info()->dbg_id());
61 puts(Jdb_screen::Line);
65 Jdb_module::Action_code
66 Jdb_sender_list::action(int cmd, void *&, char const *&, int &)
71 Thread *t = Kobject::dcast<Thread_object *>(thread);
74 printf(" Invalid thread\n");
78 show_sender_list(t, 0);
85 Jdb_sender_list::handle_key(Kobject *o, int keycode)
90 Thread *t = Kobject::dcast<Thread_object *>(o);
94 show_sender_list(t, 1);
100 int Jdb_sender_list::num_cmds() const
104 Jdb_module::Cmd const * Jdb_sender_list::cmds() const
108 { 0, "S", "senderlist", "%q",
109 "senderlist\tshow sender-list of thread", &thread }
116 Jdb_sender_list::Jdb_sender_list()
117 : Jdb_module("INFO"), Jdb_kobject_handler(0)
119 Jdb_kobject::module()->register_handler(this);