6 extern "C" void entry_sys_ipc_log (void);
7 extern "C" void entry_sys_ipc_c (void);
8 extern "C" void entry_sys_ipc (void);
9 extern "C" void entry_sys_fast_ipc_log (void);
10 extern "C" void entry_sys_fast_ipc_c (void);
11 extern "C" void entry_sys_fast_ipc (void);
13 extern "C" void sys_ipc_wrapper (void);
14 extern "C" void ipc_short_cut_wrapper (void);
15 extern "C" void sys_ipc_log_wrapper (void);
16 extern "C" void sys_ipc_trace_wrapper (void);
18 typedef void (Fast_entry_func)(void);
22 Jdb_set_trace::ia32_set_fast_entry(unsigned cpu, void *entry)
24 Cpu::cpus.cpu(cpu).set_fast_entry((Fast_entry_func*)entry);
30 Set_fast_entry(Fast_entry_func *entry) : entry((void*)entry) {}
31 void operator () (unsigned cpu) const
32 { Jdb::remote_work(cpu, Jdb_set_trace::ia32_set_fast_entry, entry, true); }
37 Jdb_set_trace::set_ipc_vector()
39 void (*int30_entry)(void);
40 void (*fast_entry)(void);
42 if (Jdb_ipc_trace::_trace || Jdb_ipc_trace::_slow_ipc ||
43 Jdb_ipc_trace::_log || Jdb_nextper_trace::_log)
45 int30_entry = entry_sys_ipc_log;
46 fast_entry = entry_sys_fast_ipc_log;
50 int30_entry = entry_sys_ipc_c;
51 fast_entry = entry_sys_fast_ipc_c;
54 Idt::set_entry(0x30, (Address) int30_entry, true);
55 Jdb::foreach_cpu(Set_fast_entry(fast_entry));
57 if (Jdb_ipc_trace::_trace)
58 syscall_table[0] = sys_ipc_trace_wrapper;
59 else if ((Jdb_ipc_trace::_log && !Jdb_ipc_trace::_slow_ipc) ||
60 Jdb_nextper_trace::_log)
61 syscall_table[0] = sys_ipc_log_wrapper;
63 syscall_table[0] = sys_ipc_wrapper;
66 PUBLIC static FIASCO_NOINLINE
68 Jdb_set_trace::set_cpath()
70 Jdb_ipc_trace::_cpath = 0;
71 BEGIN_LOG_EVENT("Context switches", "csw", Tb_entry_empty)
72 Jdb_ipc_trace::_cpath = 1;
74 BEGIN_LOG_EVENT("Shortcut", "sc", Tb_entry_empty)
75 Jdb_ipc_trace::_cpath = 1;
81 jdb_trace_set_cpath(void)
83 Jdb_set_trace::set_cpath();
87 Jdb_set_trace::next_preiod_tracing(bool enable)
90 Jdb_nextper_trace::_log = 1;
92 Jdb_nextper_trace::_log = 0;
98 Jdb_set_trace::page_fault_tracing(bool /*enable*/)
103 Jdb_set_trace::ipc_tracing(Mode mode)
108 Jdb_ipc_trace::_trace = 0;
109 Jdb_ipc_trace::_log = 0;
110 Jdb_ipc_trace::_cshortcut = 0;
111 Jdb_ipc_trace::_slow_ipc = 0;
114 Jdb_ipc_trace::_trace = 0;
115 Jdb_ipc_trace::_log = 1;
116 Jdb_ipc_trace::_log_to_buf = 0;
117 Jdb_ipc_trace::_cshortcut = 0;
118 Jdb_ipc_trace::_slow_ipc = 0;
121 Jdb_ipc_trace::_trace = 0;
122 Jdb_ipc_trace::_log = 1;
123 Jdb_ipc_trace::_log_to_buf = 1;
124 Jdb_ipc_trace::_cshortcut = 0;
125 Jdb_ipc_trace::_slow_ipc = 0;
128 Jdb_ipc_trace::_trace = 1;
129 Jdb_ipc_trace::_cshortcut = 0;
130 Jdb_ipc_trace::_log = 0;
131 Jdb_ipc_trace::_slow_ipc = 0;
133 case Use_c_short_cut:
134 Jdb_ipc_trace::_cshortcut = 1;
137 Jdb_ipc_trace::_slow_ipc = 1;
146 Jdb_set_trace::set_unmap_vector()
151 Jdb_set_trace::unmap_tracing(bool /*enable*/)