From nobody Sun Feb 8 23:04:14 2026 Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48774286D70 for ; Thu, 8 Jan 2026 03:17:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767842243; cv=none; b=GNgGZWSWjhBzyFKq/ra/h3vLwC1LaR6VFGi1snNiPC5Ny5j/QM2p2O0B72nRNRrXklBjzqORonrm5TP2sBenRdMG2wZnVsNcGKS64ctrqeGwuEqc2q5YxuHQPZ8GxrQAlTWBe/pUN+BAl9BdYAjRmlUsNk4WnnNeRFZ2UEKUSnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767842243; c=relaxed/simple; bh=k/SsHZ5DiNBKCwpIZ6HyT/U/YK/VAISbL5KNMEGIsjA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Owm36p3HUGnjA2JPzC35aOmuOyWcIv14zza+Xz+U0JPMj33xaPNTJTAnH39i0ZgLT6s7G38SRjQ4pgJtfNiJM1AD7zKaQdx4eIUITa5pJ6VpE3UsBFmMuyzmNi0FemHiFBkghAt7D46sbM0dzxHpvxQQY/7qjNM3fPDgFx2J3AM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b+FlhBeU; arc=none smtp.client-ip=209.85.210.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b+FlhBeU" Received: by mail-pf1-f193.google.com with SMTP id d2e1a72fcca58-7f0da2dfeaeso2389222b3a.1 for ; Wed, 07 Jan 2026 19:17:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767842241; x=1768447041; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ppA0C32r+tZo1J9bYSHe7omsyAFm3sfGap53g1ih6tk=; b=b+FlhBeU98dF8LDu2Yuc9JsHL4tJjq+ppZoCYorYprgrL8SgHV67QMKDNd+TAvVL8W nmmMpGr9+w871ztSfWdBfJnjs1Hcr4vuRB2NfgW8FvhYUeCW/yqX1teWisxZD4oy3WPe s9NOi/SigXV3vS/xlhmx7ASIR45lEVGtEK0a8VKZMYRvJXfBKCKHY37sUF0UL4b81Hih 8A0uO7BzGgb2u913Y/yZ3VAq6OoEHXv9FORLMyK2Y3Y2W0dcigKwoDbOYh5ZGU//9Bm4 T8LYnq7wxyimzoGxPO2DQGPJe5CZLGIlvZtw+qH8Q93lf6/9VeIMa9tsPGbE4nygjvz8 O/9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767842241; x=1768447041; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ppA0C32r+tZo1J9bYSHe7omsyAFm3sfGap53g1ih6tk=; b=G+nRKCbTUqMb+yHVcKcFDRM7ihJOz2wMTekDzwkU5Zdb1BiuLY+fhg9D5kVhMGkpgn tN1yoZ9pr6p0Olw7MVbvLHWOo2j2wLLBGQc8hE0pCtnaF9krOehwDEG73ok183QilZmO e+T8ggwQl9n1rOLQVmft9ZFZfrDJTWz5YEMjYx2MRY69GBESksBbp7B6L0rBCGa10hzv 1WnU9m+4VMZDFJmROYAfOF1z1M3uW4iIkpUIxxhPy3ci1EzEwFG3S732tf6wT3R77bnj A9keWaMCz3ZL3YanTbq1Fdq8OczN6SK6zIS8Oz5x1MmIZhtgB3M49ZzQPmnwsWbM6ydp t9cA== X-Forwarded-Encrypted: i=1; AJvYcCU/sNoTiJB6DN6Osa3VyvajVy1SlZPzcrDeb8XuvlsgdpqaZWWyoa+YQqBLqRro/fJH3mKfpJMVdhFggfQ=@vger.kernel.org X-Gm-Message-State: AOJu0YysSpKRAOYuFeMXz9UrIB7uOhloAVYtTsw7Mq1Y0VyVMogPxZE2 W/tS9cuhEcknohwIto3msVkxUHVO9sfdHm2tycSFzXRLLztDjfbfY+sB X-Gm-Gg: AY/fxX4HBVCYc3A7lzUJP2Xw9adFz+t0UhrxqYGoSQTKfep4VUqw6p+iFhg6/CUY3vT lFFJqSKnWUfLfxxMWDP6qIpRhnNV7GgRsE2q++CaaDE80iOGPEpWgEzBcqmUsUG1CIjZzMwrPs2 6+C5eDZCwDcuIDoWXt0QYjCFfNwASTTmGVD2/kOYkjl6FTj3jtW4FE6qYV9CtZgkA0VXGMnz+hF VvCEXoq0x0Zs8WYEUARCuWLlbQhwCb/GkLY1hUL5hUmks2lIN8a94uy/Vxl23kDp1AFdnlsi/HB p4o8Kiuptp7KDl03OH/nERf/n6Rnc2/mo2Zf8VR+6x6w02YmJOuuRxIMcAl31O8k6XE2Tjdx2vJ 5Qr+riTIycHtWj4X6G4njJrjhmQpsMEzIcgsYBHB3cctei9OHf7BoTnbcY0y+owNVdMeO1K9mpX RTav0EDIbxdkinp2RljmlUgskUhtE= X-Google-Smtp-Source: AGHT+IFST5MI6yDneKKwxRZqXrRJHnWyFrSyRG8+UfqIpoNr8TF9Bt7R6vZlLpFwpqTGnOdCk3i6vg== X-Received: by 2002:a05:6a00:90a6:b0:7ef:3f4e:9176 with SMTP id d2e1a72fcca58-81b7f9d1932mr3793392b3a.49.1767842241503; Wed, 07 Jan 2026 19:17:21 -0800 (PST) Received: from pengdl-pc.mioffice.cn ([43.224.245.249]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819c5de655bsm6134860b3a.60.2026.01.07.19.17.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 19:17:20 -0800 (PST) From: Donglin Peng To: ast@kernel.org, andrii.nakryiko@gmail.com, eddyz87@gmail.com Cc: zhangxiaoqin@xiaomi.com, ihor.solodrai@linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Donglin Peng , Alan Maguire , Andrii Nakryiko Subject: [PATCH bpf-next v11 10/11] libbpf: Optimize the performance of determine_ptr_size Date: Thu, 8 Jan 2026 11:16:44 +0800 Message-Id: <20260108031645.1350069-11-dolinux.peng@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260108031645.1350069-1-dolinux.peng@gmail.com> References: <20260108031645.1350069-1-dolinux.peng@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Donglin Peng Leverage the performance improvement of btf__find_by_name_kind() when BTF is sorted. For sorted BTF, the function uses binary search with O(log n) complexity instead of linear search, providing significant performance benefits, especially for large BTF like vmlinux. Cc: Eduard Zingerman Cc: Alexei Starovoitov Cc: Andrii Nakryiko Cc: Alan Maguire Cc: Ihor Solodrai Cc: Xiaoqin Zhang Signed-off-by: Donglin Peng Acked-by: Eduard Zingerman Acked-by: Andrii Nakryiko --- tools/lib/bpf/btf.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 277df0077df6..9e8911755a79 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -659,29 +659,21 @@ static int determine_ptr_size(const struct btf *btf) "int long unsigned", }; const struct btf_type *t; - const char *name; - int i, j, n; + int i, id; =20 if (btf->base_btf && btf->base_btf->ptr_sz > 0) return btf->base_btf->ptr_sz; =20 - n =3D btf__type_cnt(btf); - for (i =3D 1; i < n; i++) { - t =3D btf__type_by_id(btf, i); - if (!btf_is_int(t)) + for (i =3D 0; i < ARRAY_SIZE(long_aliases); i++) { + id =3D btf__find_by_name_kind(btf, long_aliases[i], BTF_KIND_INT); + if (id < 0) continue; =20 + t =3D btf__type_by_id(btf, id); if (t->size !=3D 4 && t->size !=3D 8) continue; =20 - name =3D btf__name_by_offset(btf, t->name_off); - if (!name) - continue; - - for (j =3D 0; j < ARRAY_SIZE(long_aliases); j++) { - if (strcmp(name, long_aliases[j]) =3D=3D 0) - return t->size; - } + return t->size; } =20 return -1; --=20 2.34.1