From: Muli Ben-Yehuda <mulix@mulix.org>
To: Jamie Lokier <jamie@shareable.org>
Cc: Andrew Morton <akpm@osdl.org>,
Linux-Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] document optimizing macro for translating PROT_ to VM_ bits
Date: Tue, 30 Sep 2003 10:10:05 +0300 [thread overview]
Message-ID: <20030930071005.GY729@actcom.co.il> (raw)
In-Reply-To: <20030929153437.GB21798@mail.jlokier.co.uk>
[-- Attachment #1: Type: text/plain, Size: 1700 bytes --]
On Mon, Sep 29, 2003 at 04:34:37PM +0100, Jamie Lokier wrote:
> I agree with the intent of that comment, but the code in it is
> unnecessarily complex. See if you like this, and if you do feel free
> to submit it as a patch:
Ah, much nicer, thank you. I'll submit it, but first, what do you
think about this version? it keeps the optimization and enforces the
"bit1 and bit2 must be single bits only" rule. It could probably be
improved to be done at build time, if bit1 and bit2 and compile time
constants. Against 2.6.0-t6-cvs, compiles and boots for me.
--- linux-2.5/include/linux/mman.h Sun Sep 7 10:05:18 2003
+++ calc-vm-bit-optimizing-macro-2.6.0-t6//include/linux/mman.h Tue Sep 30 10:02:01 2003
@@ -28,10 +28,28 @@
vm_acct_memory(-pages);
}
-/* Optimisation macro. */
-#define _calc_vm_trans(x,bit1,bit2) \
- ((bit1) <= (bit2) ? ((x) & (bit1)) * ((bit2) / (bit1)) \
- : ((x) & (bit1)) / ((bit1) / (bit2)))
+/*
+ * assert that only a single bit is on in 'bit'
+ */
+static inline void assert_single_bit(unsigned long bit)
+{
+ BUG_ON(bit & (bit - 1));
+}
+/*
+ * Optimisation function. It is equivalent to:
+ * (x & bit1) ? bit2 : 0
+ * but this version is faster.
+ * ("bit1" and "bit2" must be single bits).
+ */
+static inline unsigned long
+_calc_vm_trans(unsigned long x, unsigned long bit1, unsigned long bit2)
+{
+ assert_single_bit(bit1);
+ assert_single_bit(bit2);
+
+ return ((bit1) <= (bit2) ? ((x) & (bit1)) * ((bit2) / (bit1))
+ : ((x) & (bit1)) / ((bit1) / (bit2)));
+}
/*
* Combine the mmap "prot" argument into "vm_flags" used internally.
--
Muli Ben-Yehuda
http://www.mulix.org
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2003-09-30 7:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-29 9:06 [PATCH] document optimizing macro for translating PROT_ to VM_ bits Muli Ben-Yehuda
2003-09-29 15:34 ` Jamie Lokier
2003-09-29 15:51 ` Valdis.Kletnieks
2003-09-29 17:11 ` Jamie Lokier
2003-09-29 17:25 ` Maciej Zenczykowski
2003-09-30 2:15 ` Miles Bader
2003-09-30 7:10 ` Muli Ben-Yehuda [this message]
2003-09-30 7:34 ` Miles Bader
2003-09-30 7:41 ` Muli Ben-Yehuda
2003-09-30 7:59 ` Miles Bader
2003-09-30 9:24 ` Muli Ben-Yehuda
2003-09-30 10:00 ` Miles Bader
2003-09-30 10:06 ` Miles Bader
2003-10-02 11:37 ` Muli Ben-Yehuda
2003-09-30 10:35 ` Thomas Schlichter
2003-09-30 8:02 ` Frédéric St-Martin
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=20030930071005.GY729@actcom.co.il \
--to=mulix@mulix.org \
--cc=akpm@osdl.org \
--cc=jamie@shareable.org \
--cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox