From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751727AbdBAOlZ (ORCPT ); Wed, 1 Feb 2017 09:41:25 -0500 Received: from terminus.zytor.com ([65.50.211.136]:48190 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750861AbdBAOlY (ORCPT ); Wed, 1 Feb 2017 09:41:24 -0500 Date: Wed, 1 Feb 2017 06:40:45 -0800 From: tip-bot for Joe Stringer Message-ID: Cc: wangnan0@huawei.com, ast@fb.com, linux-kernel@vger.kernel.org, hpa@zytor.com, daniel@iogearbox.net, tglx@linutronix.de, acme@redhat.com, joe@ovn.org, mingo@kernel.org Reply-To: ast@fb.com, wangnan0@huawei.com, daniel@iogearbox.net, hpa@zytor.com, linux-kernel@vger.kernel.org, joe@ovn.org, mingo@kernel.org, acme@redhat.com, tglx@linutronix.de In-Reply-To: <20170126212001.14103-3-joe@ovn.org> References: <20170126212001.14103-3-joe@ovn.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] tools lib bpf: Add bpf_map__pin() Git-Commit-ID: b6989f35e80bf830f8dc97b74128d619faef0273 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: b6989f35e80bf830f8dc97b74128d619faef0273 Gitweb: http://git.kernel.org/tip/b6989f35e80bf830f8dc97b74128d619faef0273 Author: Joe Stringer AuthorDate: Thu, 26 Jan 2017 13:19:57 -0800 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 31 Jan 2017 16:20:06 -0300 tools lib bpf: Add bpf_map__pin() Add a new API to pin a BPF map to the filesystem. The user can specify the path full path within a BPF filesystem to pin the map. Signed-off-by: Joe Stringer Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Wang Nan Cc: netdev@vger.kernel.org Link: http://lkml.kernel.org/r/20170126212001.14103-3-joe@ovn.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/lib/bpf/libbpf.c | 22 ++++++++++++++++++++++ tools/lib/bpf/libbpf.h | 1 + 2 files changed, 23 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index c4465b2fd..6a8c8bee 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -1357,6 +1357,28 @@ int bpf_program__pin(struct bpf_program *prog, const char *path) return 0; } +int bpf_map__pin(struct bpf_map *map, const char *path) +{ + int err; + + err = check_path(path); + if (err) + return err; + + if (map == NULL) { + pr_warning("invalid map pointer\n"); + return -EINVAL; + } + + if (bpf_obj_pin(map->fd, path)) { + pr_warning("failed to pin map: %s\n", strerror(errno)); + return -errno; + } + + pr_debug("pinned map '%s'\n", path); + return 0; +} + void bpf_object__close(struct bpf_object *obj) { size_t i; diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 9f8aa63..2addf9d 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -236,6 +236,7 @@ typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *); int bpf_map__set_priv(struct bpf_map *map, void *priv, bpf_map_clear_priv_t clear_priv); void *bpf_map__priv(struct bpf_map *map); +int bpf_map__pin(struct bpf_map *map, const char *path); long libbpf_get_error(const void *ptr);