Hi, So instead of rewriting the config_*, I decided to just do the parts that give the most benefit. And fixing APIs usually should happen incrementally anyway... that leads to better APIs :)
I did basic testing that things should work still. However, 'make check' seems to fail for some weird reasons (e.g. sed tests just seg.fault) even without my patches, so I was not able to run test suite. I also did regular valgrinding on the patched binary, and there was no complaints. I benchmarked simple modprobe with callgrind (= userland cycles, not including kernel read() time). And the speedup is following: - start situation: 177M - after modprobe hash: 148M - after config_* using getline: 65M - after config_* no per-line malloc: 57M So the original code is >3x slower than after the patches. Though, the wall clock execution time might not be as much affected as we do spend time in kernel read() too. The module hashing is +51 bytes, and the getline changes (without the compat function) is around +90 bytes. Cheers, Timo Timo Teräs (3): modprobe: use hash table for module entry database platform: provide getline and getdelim if not available parse_config: use getline to read config include/libbb.h | 3 +- include/platform.h | 6 ++++ libbb/parse_config.c | 74 +++++++++++++++++++++++++------------------------ libbb/platform.c | 36 ++++++++++++++++++++++++ modutils/modprobe.c | 13 +++++++-- 5 files changed, 92 insertions(+), 40 deletions(-) _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
