mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:27:45 +00:00
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
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* bufptr = (const char*)buffer.pointer();
|
||||||
auto* startOfName = bufptr;
|
auto* startOfName = bufptr;
|
||||||
dword address = 0;
|
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()) {
|
while (bufptr < buffer.endPointer()) {
|
||||||
for (unsigned i = 0; i < 8; ++i)
|
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.
|
// FIXME: The Strings here should be eternally allocated too.
|
||||||
ksyms().append({ address, String(startOfName, bufptr - startOfName) });
|
ksyms().append({ address, String(startOfName, bufptr - startOfName) });
|
||||||
|
|
||||||
|
kprintf("\033[u\033[s%u/%u", ksyms().size(), ksym_count);
|
||||||
++bufptr;
|
++bufptr;
|
||||||
}
|
}
|
||||||
|
kprintf("\n");
|
||||||
s_ksyms_ready = true;
|
s_ksyms_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
tmp=$(mktemp)
|
tmp=$(mktemp)
|
||||||
nm -C kernel > $tmp
|
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
|
rm $tmp
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue