From: Thomas Gleixner <tglx@linutronix.de>
To: linux-kernel@vger.kernel.org
Cc: akpm@osdl.org, mingo@elte.hu, zippel@linux-m68k.org,
george@mvista.com, johnstul@us.ibm.com
Subject: [patch 01/43] Move div_long_long_rem out of jiffies.h
Date: Thu, 01 Dec 2005 01:00:54 +0100 [thread overview]
Message-ID: <1133395255.32542.444.camel@tglx.tec.linutronix.de> (raw)
In-Reply-To: <20051130231140.164337000@tglx.tec.linutronix.de>
plain text document attachment
(move-div-long-long-rem-out-of-jiffiesh.patch)
- move div_long_long_rem() from jiffies.h into a new calc64.h include file,
as it is a general math function useful for other things than the jiffy
code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/calc64.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++
include/linux/jiffies.h | 11 +----------
2 files changed, 47 insertions(+), 10 deletions(-)
Index: linux-2.6.15-rc2-rework/include/linux/calc64.h
===================================================================
--- /dev/null
+++ linux-2.6.15-rc2-rework/include/linux/calc64.h
@@ -0,0 +1,46 @@
+#ifndef _LINUX_CALC64_H
+#define _LINUX_CALC64_H
+
+#include <linux/types.h>
+#include <asm/div64.h>
+
+/*
+ * This is a generic macro which is used when the architecture
+ * specific div64.h does not provide a optimized one.
+ *
+ * The 64bit dividend is divided by the divisor (data type long), the
+ * result is returned and the remainder stored in the variable
+ * referenced by remainder (data type long *). In contrast to the
+ * do_div macro the dividend is kept intact.
+ */
+#ifndef div_long_long_rem
+#define div_long_long_rem(dividend,divisor,remainder) \
+({ \
+ u64 result = (dividend); \
+ \
+ *(remainder) = do_div(result, divisor); \
+ result; \
+})
+#endif
+
+/*
+ * Sign aware variation of the above. On some architectures a
+ * negative dividend leads to an divide overflow exception, which
+ * is avoided by the sign check.
+ */
+static inline long div_long_long_rem_signed(const long long dividend,
+ const long divisor,
+ long *remainder)
+{
+ long res;
+
+ if (unlikely(dividend < 0)) {
+ res = -div_long_long_rem(-dividend, divisor, remainder);
+ *remainder = -(*remainder);
+ } else
+ res = div_long_long_rem(dividend, divisor, remainder);
+
+ return res;
+}
+
+#endif
Index: linux-2.6.15-rc2-rework/include/linux/jiffies.h
===================================================================
--- linux-2.6.15-rc2-rework.orig/include/linux/jiffies.h
+++ linux-2.6.15-rc2-rework/include/linux/jiffies.h
@@ -1,21 +1,12 @@
#ifndef _LINUX_JIFFIES_H
#define _LINUX_JIFFIES_H
+#include <linux/calc64.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/time.h>
#include <linux/timex.h>
#include <asm/param.h> /* for HZ */
-#include <asm/div64.h>
-
-#ifndef div_long_long_rem
-#define div_long_long_rem(dividend,divisor,remainder) \
-({ \
- u64 result = dividend; \
- *remainder = do_div(result,divisor); \
- result; \
-})
-#endif
/*
* The following defines establish the engineering parameters of the PLL
--
next parent reply other threads:[~2005-11-30 23:55 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20051130231140.164337000@tglx.tec.linutronix.de>
2005-12-01 0:00 ` Thomas Gleixner [this message]
2005-12-01 2:06 ` Adrian Bunk
2005-12-01 11:38 ` Christoph Hellwig
2005-12-01 0:02 ` [patch 02/43] Remove duplicate div_long_long_rem implementation Thomas Gleixner
2005-12-01 0:02 ` [patch 03/43] Deinline mktime and set_normalized_timespec Thomas Gleixner
2005-12-01 0:02 ` [patch 04/43] Clean up mktime and add const modifiers Thomas Gleixner
2005-12-01 0:02 ` [patch 05/43] Export deinlined mktime Thomas Gleixner
2005-12-01 0:02 ` [patch 06/43] Remove unused clock constants Thomas Gleixner
2005-12-01 0:02 ` [patch 07/43] Cleanup clock constants coding style Thomas Gleixner
2005-12-01 0:03 ` [patch 08/43] Coding style and whitespace cleanup time.h Thomas Gleixner
2005-12-01 0:03 ` [patch 09/43] Make clock selectors in posix-timers const Thomas Gleixner
2005-12-01 0:03 ` [patch 10/43] Coding style and white space cleanup posix-timer.h Thomas Gleixner
2005-12-01 0:03 ` [patch 11/43] Create timespec_valid macro Thomas Gleixner
2005-12-01 0:03 ` [patch 12/43] Check user space timespec in do_sys_settimeofday Thomas Gleixner
2005-12-01 0:03 ` [patch 13/43] Introduce nsec_t type and conversion functions Thomas Gleixner
2005-12-01 0:03 ` [patch 14/43] Introduce ktime_t time format Thomas Gleixner
2005-12-01 0:03 ` [patch 15/43] ktimer core code Thomas Gleixner
2005-12-01 0:03 ` [patch 16/43] ktimer documentation Thomas Gleixner
2005-12-01 0:03 ` [patch 17/43] Switch itimers to ktimer Thomas Gleixner
2005-12-01 0:03 ` [patch 18/43] Remove now unnecessary includes Thomas Gleixner
2005-12-01 0:03 ` [patch 19/43] Introduce ktimer_nanosleep APIs Thomas Gleixner
2005-12-01 0:03 ` [patch 20/43] Convert sys_nanosleep to ktimer_nanosleep Thomas Gleixner
2005-12-01 0:03 ` [patch 21/43] Switch clock_nanosleep to ktimer nanosleep API Thomas Gleixner
2005-12-01 0:03 ` [patch 22/43] Convert posix interval timers to use ktimers Thomas Gleixner
2005-12-01 0:03 ` [patch 23/43] Simplify ktimers rearm code Thomas Gleixner
2005-12-01 0:03 ` [patch 24/43] Split timeout code into kernel/ktimeout.c Thomas Gleixner
2005-12-01 0:03 ` [patch 25/43] Create ktimeout.h and move timer.h code into it Thomas Gleixner
2005-12-01 2:36 ` Adrian Bunk
2005-12-01 2:51 ` Ingo Molnar
2005-12-01 0:03 ` [patch 26/43] Rename struct timer_list to struct ktimeout Thomas Gleixner
2005-12-01 0:03 ` [patch 27/43] Convert timer_list users to ktimeout Thomas Gleixner
2005-12-01 0:03 ` [patch 28/43] Convert ktimeout.h and create wrappers Thomas Gleixner
2005-12-01 0:03 ` [patch 29/43] Convert ktimeout.c to ktimeout struct and APIs Thomas Gleixner
2005-12-01 0:04 ` [patch 30/43] ktimeout documentation Thomas Gleixner
2005-12-01 0:04 ` [patch 31/43] rename init_ktimeout() to ktimeout_init() Thomas Gleixner
2005-12-01 0:04 ` [patch 32/43] rename setup_ktimeout() to ktimeout_setup() Thomas Gleixner
2005-12-01 0:04 ` [patch 33/43] rename add_ktimeout_on() to ktimeout_add_on() Thomas Gleixner
2005-12-01 0:04 ` [patch 34/43] rename del_ktimeout() to ktimeout_del() Thomas Gleixner
2005-12-01 0:04 ` [patch 35/43] rename __mod_ktimeout() to __mod_ktimeout() Thomas Gleixner
2005-12-01 0:04 ` [patch 36/43] rename mod_ktimeout() to ktimeout_mod() Thomas Gleixner
2005-12-01 0:04 ` [patch 37/43] rename next_ktimeout_interrupt() to ktimeout_next_interrupt() Thomas Gleixner
2005-12-01 0:04 ` [patch 38/43] rename add_ktimeout() to ktimeout_add() Thomas Gleixner
2005-12-01 0:04 ` [patch 39/43] rename try_to_del_ktimeout_sync() to ktimeout_try_to_del_sync() Thomas Gleixner
2005-12-01 0:04 ` [patch 40/43] rename del_ktimeout_sync() to del_ktimeout_sync() Thomas Gleixner
2005-12-01 0:04 ` [patch 41/43] rename del_singleshot_ktimeout_sync() to ktimeout_del_singleshot_sync() Thomas Gleixner
2005-12-01 0:04 ` [patch 42/43] rename TIMER_SOFTIRQ to TIMEOUT_SOFTIRQ Thomas Gleixner
2005-12-01 0:04 ` [patch 43/43] ktimeout code style cleanups Thomas Gleixner
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=1133395255.32542.444.camel@tglx.tec.linutronix.de \
--to=tglx@linutronix.de \
--cc=akpm@osdl.org \
--cc=george@mvista.com \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=zippel@linux-m68k.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
all inboxes | Powered by JetHome®