1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <raleigh/w/padding.h>
#include <raleigh/w/vbox.h>
#include <raleigh/w/label.h>
#include <raleigh/runtime.h>
#include <raleigh/window.h>
#include <pland/syscall.h>
#include <knob/format.h>
#include <pland/pcrt.h>
using namespace raleigh;
label *kmem;
label *umem;
void refresh(window &w) {
char *const kstr = format("kernel memory free: %uk", _kernel_dynamic_area_left() * 4);
char *const ustr = format("userspace memory free: %uk / %uk", _total_userspace_left() * 4, _total_userspace_size() * 4);
kmem->change_value(kstr);
umem->change_value(ustr);
free_block(kstr);
free_block(ustr);
}
void main() {
kmem = new label("");
umem = new label("");
label msg("press Alt+F4 to quit, or F5 to refresh");
padding pkmem(*kmem, 1);
padding pumem(*umem, 1);
padding pmsg(msg, 1);
dllist<widget &> ll;
ll.add_front(pmsg);
ll.add_front(pumem);
ll.add_front(pkmem);
vbox box(ll);
padding pbox(box, 3);
window w(pbox, RGB(bf, bf, bf), (bool (*)(window &))&__pcrt_quit);
w.add_keybind((struct key_packet){.key_id = key_packet::KEY_F5, .modifiers = key_packet::NO_MODS}, &refresh);
refresh(w);
w.show();
start_runtime();
}
|