]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/jdb/jdb_idle_stats.cpp
a05b99d49a7886454be33971df01fed5c6212df8
[l4.git] / kernel / fiasco / src / jdb / jdb_idle_stats.cpp
1 IMPLEMENTATION [tickless_idle]:
2
3 #include <climits>
4 #include <cstring>
5 #include <cstdio>
6
7 #include "jdb.h"
8 #include "jdb_module.h"
9 #include "kernel_thread.h"
10 #include "static_init.h"
11
12
13 class Jdb_idle_stats : public Jdb_module
14 {
15 public:
16   Jdb_idle_stats() FIASCO_INIT;
17 };
18
19 IMPLEMENT
20 Jdb_idle_stats::Jdb_idle_stats() : Jdb_module("INFO") {}
21
22 PUBLIC
23 Jdb_module::Action_code
24 Jdb_idle_stats::action(int, void *&, char const *&, int &)
25 {
26   printf("\nIDLE STATISTICS --------------------------\n");
27   for (unsigned i = 0; i < Config::Max_num_cpus; ++i)
28     {
29       if (!Cpu::online(i))
30         continue;
31
32       printf("CPU[%2u]: %lu times idle, %lu times deep sleep\n", i,
33              Kernel_thread::_idle_counter.cpu(i),
34              Kernel_thread::_deep_idle_counter.cpu(i));
35     }
36   return NOTHING;
37 }
38
39 PUBLIC
40 Jdb_module::Cmd const *
41 Jdb_idle_stats::cmds() const
42 {
43   static Cmd cs[] =
44     {
45         { 0, 0, "idle", "", "idle\tshow IDLE statistics", 0},
46     };
47   return cs;
48 }
49
50 PUBLIC
51 int
52 Jdb_idle_stats::num_cmds() const
53 { return 1; }
54
55 static Jdb_idle_stats jdb_idle_stats INIT_PRIORITY(JDB_MODULE_INIT_PRIO);