MCPcopy Create free account
hub / github.com/Bananymous/banan-os / compress_kernel_logs

Function compress_kernel_logs

kernel/kernel/Debug.cpp:126–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 }
125
126 static BAN::ErrorOr<BAN::Vector<uint8_t>> compress_kernel_logs()
127 {
128 constexpr size_t max_size = ((s_qr_code_max_capacity + 3) / 4 * 3) - sizeof(s_panic_url_prefix);
129
130 BAN::Vector<uint8_t> result;
131
132 size_t l = 0, r = s_debug_buffer_size;
133 while (l + 50 < r)
134 {
135 const size_t middle = (l + r) / 2;
136 const uint8_t* base = reinterpret_cast<const uint8_t*>(s_debug_buffer) + s_debug_buffer_size - middle;
137
138 auto compressed = TRY(LibDEFLATE::Compressor({ base, middle }, LibDEFLATE::StreamType::Zlib).compress());
139 if (compressed.size() > max_size)
140 r = middle;
141 else
142 {
143 l = middle;
144 result = BAN::move(compressed);
145 }
146 }
147
148 return result;
149 }
150
151 void dump_qr_code()
152 {

Callers 1

dump_qr_codeFunction · 0.85

Calls 3

CompressorClass · 0.85
compressMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected