shared: improve strbuf_reserve_extra performance

If strbuf is used (depmod, modprobe -c) then strbuf_reserve_extra is
performance critical. This reduces amount of instructions for
modprobe -c by around 10 %, the total instruction count for depmod
by 1 % (majority is within reading module files).

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Link: https://github.com/kmod-project/kmod/pull/296
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
This commit is contained in:
Tobias Stoeckmann 2025-02-28 17:27:12 +01:00 committed by Lucas De Marchi
parent 55c779fa56
commit b4f1546bd3

View File

@ -36,12 +36,12 @@ static bool buf_realloc(struct strbuf *buf, size_t sz)
static bool strbuf_reserve_extra(struct strbuf *buf, size_t n)
{
if (n < buf->size - buf->used)
return true;
if (uaddsz_overflow(buf->used, n, &n) || n >= SIZE_MAX - BUF_STEP)
return false;
if (n < buf->size)
return true;
if (++n % BUF_STEP)
n = ((n / BUF_STEP) + 1) * BUF_STEP;