Pre-size the ksyms vector for speedier loading.
Also show loading progress on the screen because it looks neat.
This commit is contained in:
parent
de38e63d3e
commit
8a865c11ec
Notes:
sideshowbarker
2024-07-19 16:11:46 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/8a865c11ec2
2 changed files with 15 additions and 1 deletions
|
@ -83,6 +83,14 @@ static void loadKsyms(const ByteBuffer& buffer)
|
|||
auto* bufptr = (const char*)buffer.pointer();
|
||||
auto* startOfName = bufptr;
|
||||
dword address = 0;
|
||||
dword ksym_count = 0;
|
||||
|
||||
for (unsigned i = 0; i < 8; ++i)
|
||||
ksym_count = (ksym_count << 4) | parseHexDigit(*(bufptr++));
|
||||
s_ksyms->ensureCapacity(ksym_count);
|
||||
++bufptr; // skip newline
|
||||
|
||||
kprintf("Loading ksyms: \033[s");
|
||||
|
||||
while (bufptr < buffer.endPointer()) {
|
||||
for (unsigned i = 0; i < 8; ++i)
|
||||
|
@ -96,8 +104,11 @@ static void loadKsyms(const ByteBuffer& buffer)
|
|||
}
|
||||
// FIXME: The Strings here should be eternally allocated too.
|
||||
ksyms().append({ address, String(startOfName, bufptr - startOfName) });
|
||||
|
||||
kprintf("\033[u\033[s%u/%u", ksyms().size(), ksym_count);
|
||||
++bufptr;
|
||||
}
|
||||
kprintf("\n");
|
||||
s_ksyms_ready = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
#!/bin/sh
|
||||
tmp=$(mktemp)
|
||||
nm -C kernel > $tmp
|
||||
perl -lpe '$_=hex' $tmp | paste -d" " - $tmp | sort -n | cut -d" " -f 2- > kernel.map
|
||||
perl -lpe '$_=hex' $tmp | paste -d" " - $tmp | sort -n | cut -d" " -f 2- > kernel.map.tmp
|
||||
printf "%08x\n" $(wc -l kernel.map.tmp | cut -f1 -d' ') > kernel.map
|
||||
cat kernel.map.tmp >> kernel.map
|
||||
rm -f kernel.map.tmp
|
||||
rm $tmp
|
||||
|
|
Loading…
Add table
Reference in a new issue