From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
David Ahern <dsahern@gmail.com>, Ingo Molnar <mingo@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [PATCH 3/7] tools lib: Add bitmap_and function
Date: Mon, 1 Aug 2016 20:02:31 +0200 [thread overview]
Message-ID: <1470074555-24889-4-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1470074555-24889-1-git-send-email-jolsa@kernel.org>
Add support to perform logical and on bitmaps.
Code taken from kernel's include/linux/bitmap.h.
Link: http://lkml.kernel.org/n/tip-y8tuonfm14ltkge26g46ghwu@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/include/linux/bitmap.h | 17 +++++++++++++++++
tools/lib/bitmap.c | 15 +++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h
index 43a0d06beabb..1f72e13d11ac 100644
--- a/tools/include/linux/bitmap.h
+++ b/tools/include/linux/bitmap.h
@@ -11,6 +11,8 @@
int __bitmap_weight(const unsigned long *bitmap, int bits);
void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
const unsigned long *bitmap2, int bits);
+int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
+ const unsigned long *bitmap2, unsigned int bits);
#define BITMAP_FIRST_WORD_MASK(start) (~0UL << ((start) & (BITS_PER_LONG - 1)))
@@ -85,4 +87,19 @@ static inline unsigned long *bitmap_alloc(int nbits)
size_t bitmap_snprintf(unsigned long *bitmap, int nbits,
char *buf, size_t size);
+/**
+ * bitmap_and - Do logical and on bitmaps
+ * @dst: resulting bitmap
+ * @src1: operand 1
+ * @src2: operand 2
+ * @nbits: size of bitmap
+ */
+static inline int bitmap_and(unsigned long *dst, const unsigned long *src1,
+ const unsigned long *src2, unsigned int nbits)
+{
+ if (small_const_nbits(nbits))
+ return (*dst = *src1 & *src2 & BITMAP_LAST_WORD_MASK(nbits)) != 0;
+ return __bitmap_and(dst, src1, src2, nbits);
+}
+
#endif /* _PERF_BITOPS_H */
diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
index 184d97b276a1..ed3229499b98 100644
--- a/tools/lib/bitmap.c
+++ b/tools/lib/bitmap.c
@@ -58,3 +58,18 @@ size_t bitmap_snprintf(unsigned long *bitmap, int nbits,
}
return ret;
}
+
+int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
+ const unsigned long *bitmap2, unsigned int bits)
+{
+ unsigned int k;
+ unsigned int lim = bits/BITS_PER_LONG;
+ unsigned long result = 0;
+
+ for (k = 0; k < lim; k++)
+ result |= (dst[k] = bitmap1[k] & bitmap2[k]);
+ if (bits % BITS_PER_LONG)
+ result |= (dst[k] = bitmap1[k] & bitmap2[k] &
+ BITMAP_LAST_WORD_MASK(bits));
+ return result != 0;
+}
--
2.4.11
next prev parent reply other threads:[~2016-08-01 18:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 18:02 [PATCH 0/7] perf tools: Several fixes Jiri Olsa
2016-08-01 18:02 ` [PATCH 1/7] tools lib: Add bitmap_alloc function Jiri Olsa
2016-08-01 18:45 ` David Ahern
2016-08-02 9:33 ` Jiri Olsa
2016-08-02 11:33 ` [PATCHv2 " Jiri Olsa
2016-08-02 12:56 ` Arnaldo Carvalho de Melo
2016-08-02 13:03 ` Jiri Olsa
2016-08-04 9:11 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 2/7] tools lib: Add bitmap_snprintf function Jiri Olsa
2016-08-02 15:25 ` Arnaldo Carvalho de Melo
2016-08-04 9:11 ` [tip:perf/urgent] tools lib: Add bitmap_scnprintf function tip-bot for Jiri Olsa
2016-08-01 18:02 ` Jiri Olsa [this message]
2016-08-04 9:11 ` [tip:perf/urgent] tools lib: Add bitmap_and function tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 4/7] perf tests: Add test for bitmap_snprintf function Jiri Olsa
2016-08-04 9:12 ` [tip:perf/urgent] perf tests: Add test for bitmap_scnprintf function tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 5/7] perf tools: Move config/Makefile into Makefile.config Jiri Olsa
2016-08-04 9:13 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 6/7] perf tools: Introduce hists__output_resort_cb function Jiri Olsa
2016-08-04 9:13 ` [tip:perf/urgent] perf hists: Introduce output_resort_cb method tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 7/7] perf tools: Add --sample-cpu option to record command Jiri Olsa
2016-08-04 9:14 ` [tip:perf/urgent] perf record: Add --sample-cpu option tip-bot for Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470074555-24889-4-git-send-email-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=dsahern@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.