From patchwork Fri Feb 1 21:42:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maciej Fijalkowski X-Patchwork-Id: 1035212 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hJ9GPQQ7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43rrLg4B5bz9sCh for ; Sat, 2 Feb 2019 08:47:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726649AbfBAVrx (ORCPT ); Fri, 1 Feb 2019 16:47:53 -0500 Received: from mail-lj1-f194.google.com ([209.85.208.194]:42839 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726553AbfBAVrx (ORCPT ); Fri, 1 Feb 2019 16:47:53 -0500 Received: by mail-lj1-f194.google.com with SMTP id l15-v6so7041193lja.9 for ; Fri, 01 Feb 2019 13:47:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XAmPzVQQYDznHg82jK/S7ehbpIN8muQBttSGAOxXuso=; b=hJ9GPQQ7ucVhSHUoYBOyaNULPxEv0QW/gwIS1r3Q7lfG8S1gbeYMwqeySFnB4AOrfK Uv148NqyxicqPRhG5dkmqG5A+aLd6aO0xNpTT+CNjSOR8Nqz0/ClnfcbWtJ3bKF6UUgP jZgh0suI6Q51DXlg1UcrMAJggFOZdZRlExEAMGdXI6u/5UPa+2ODD/FXfVuuc86ac6IP oJ3gWLbDQmiq6Um6D1y4tg5LemulQK2aYF78usikE1Jmej3CRZB1ZDKv86JClWeAcm5T n9ioaEOGgcK9g2qtsn6EDg4hbBySBwK9W3C4rMB/negbGmPomR/keAnWxA9ENCPSnT2A WMIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XAmPzVQQYDznHg82jK/S7ehbpIN8muQBttSGAOxXuso=; b=B/6nM6WjpbeCBdXNDjayBT3UQq1rLGSotJ7XSOY0gb7+LIIM6utVHkI8UEULWgZWr8 +3L/1+EQ0hSxpAN7cqoCon69FY7pwgLIhu7yc6k9z+4QOD76Vlq2z7b0TP4m9v9SzMR9 U/5bfjdmyxTJogTHYqwnFKBK12DcE5ogHlcFV7qCniyutf+6Wy1y6cHyHGxxX/MsZkze 7eWpg1GsrRFYR2+NKuTQbonipzr6psOz6tkWJ8RJzV0phNNK9vuPaPUdiac6735omJfs j2ZdqNCj5nJuoEWAuL0sALBsJW6O1AH9q5p80chmUgVGgL/rVXebVMQMfDNxMjhPvIM8 WhHQ== X-Gm-Message-State: AJcUukfsnwJZUvlUmwzDm022llLNIIRjVLg+0DJxbO04CogfIYYgOht1 4/wy1GVUNpUrlcXedl4YYtw= X-Google-Smtp-Source: ALg8bN6JxUlqlfYlHiqsgWomCEvzqNEUvycWh4VSnnXuHXHWFs4U8WH7T26SdZXE0zC3wTfpH7Pp8A== X-Received: by 2002:a2e:5303:: with SMTP id h3-v6mr32363215ljb.35.1549057671008; Fri, 01 Feb 2019 13:47:51 -0800 (PST) Received: from localhost.localdomain (host-185-93-94-63.ip-point.pl. [185.93.94.63]) by smtp.gmail.com with ESMTPSA id d24-v6sm1456213ljg.2.2019.02.01.13.47.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Feb 2019 13:47:50 -0800 (PST) From: Maciej Fijalkowski X-Google-Original-From: Maciej Fijalkowski To: daniel@iogearbox.net, ast@kernel.org Cc: netdev@vger.kernel.org, jakub.kicinski@netronome.com, brouer@redhat.com, john.fastabend@gmail.com Subject: [PATCH bpf-next v6 1/8] libbpf: Add a helper for retrieving a map fd for a given name Date: Fri, 1 Feb 2019 22:42:23 +0100 Message-Id: <20190201214230.1441-2-maciej.fijalkowski@intel.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20190201214230.1441-1-maciej.fijalkowski@intel.com> References: <20190201214230.1441-1-maciej.fijalkowski@intel.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org XDP samples are mostly cooperating with eBPF maps through their file descriptors. In case of a eBPF program that contains multiple maps it might be tiresome to iterate through them and call bpf_map__fd for each one. Add a helper mostly based on bpf_object__find_map_by_name, but instead of returning the struct bpf_map pointer, return map fd. Suggested-by: Jakub Kicinski Signed-off-by: Maciej Fijalkowski Reviewed-by: Jakub Kicinski Acked-by: John Fastabend --- tools/lib/bpf/libbpf.c | 6 ++++++ tools/lib/bpf/libbpf.h | 3 +++ tools/lib/bpf/libbpf.map | 1 + 3 files changed, 10 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 2ccde17957e6..03bc01ca2577 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -2884,6 +2884,12 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name) return NULL; } +int +bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name) +{ + return bpf_map__fd(bpf_object__find_map_by_name(obj, name)); +} + struct bpf_map * bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) { diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 62ae6cb93da1..931be6f3408c 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -264,6 +264,9 @@ struct bpf_map; LIBBPF_API struct bpf_map * bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); +LIBBPF_API int +bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name); + /* * Get bpf_map through the offset of corresponding struct bpf_map_def * in the BPF object file. diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map index f6f96fc38c50..43ba9bb8d24b 100644 --- a/tools/lib/bpf/libbpf.map +++ b/tools/lib/bpf/libbpf.map @@ -131,4 +131,5 @@ LIBBPF_0.0.2 { bpf_probe_map_type; bpf_probe_prog_type; bpf_map_lookup_elem_flags; + bpf_object__find_map_fd_by_name; } LIBBPF_0.0.1;