linux/kernel.h: split *_MAX and *_MIN macros into <linux/limits.h>
[sfrench/cifs-2.6.git] / include / linux / kernel.h
index 8f0e68e250a760abbc2dc134c7c3b76760a2c764..34a5036debd341935a100b6fe4a7083db6262d5e 100644 (file)
@@ -4,6 +4,7 @@
 
 
 #include <stdarg.h>
+#include <linux/limits.h>
 #include <linux/linkage.h>
 #include <linux/stddef.h>
 #include <linux/types.h>
 #include <linux/printk.h>
 #include <linux/build_bug.h>
 #include <asm/byteorder.h>
+#include <asm/div64.h>
 #include <uapi/linux/kernel.h>
 
-#define USHRT_MAX      ((u16)(~0U))
-#define SHRT_MAX       ((s16)(USHRT_MAX>>1))
-#define SHRT_MIN       ((s16)(-SHRT_MAX - 1))
-#define INT_MAX                ((int)(~0U>>1))
-#define INT_MIN                (-INT_MAX - 1)
-#define UINT_MAX       (~0U)
-#define LONG_MAX       ((long)(~0UL>>1))
-#define LONG_MIN       (-LONG_MAX - 1)
-#define ULONG_MAX      (~0UL)
-#define LLONG_MAX      ((long long)(~0ULL>>1))
-#define LLONG_MIN      (-LLONG_MAX - 1)
-#define ULLONG_MAX     (~0ULL)
-#define SIZE_MAX       (~(size_t)0)
-#define PHYS_ADDR_MAX  (~(phys_addr_t)0)
-
-#define U8_MAX         ((u8)~0U)
-#define S8_MAX         ((s8)(U8_MAX>>1))
-#define S8_MIN         ((s8)(-S8_MAX - 1))
-#define U16_MAX                ((u16)~0U)
-#define S16_MAX                ((s16)(U16_MAX>>1))
-#define S16_MIN                ((s16)(-S16_MAX - 1))
-#define U32_MAX                ((u32)~0U)
-#define S32_MAX                ((s32)(U32_MAX>>1))
-#define S32_MIN                ((s32)(-S32_MAX - 1))
-#define U64_MAX                ((u64)~0ULL)
-#define S64_MAX                ((s64)(U64_MAX>>1))
-#define S64_MIN                ((s64)(-S64_MAX - 1))
-
 #define STACK_MAGIC    0xdeadbeef
 
 /**
  *
  * Rounds @x up to next multiple of @y. If @y will always be a power
  * of 2, consider using the faster round_up().
- *
- * The `const' here prevents gcc-3.3 from calling __divdi3
  */
 #define roundup(x, y) (                                        \
 {                                                      \
-       const typeof(y) __y = y;                        \
+       typeof(y) __y = y;                              \
        (((x) + (__y - 1)) / __y) * __y;                \
 }                                                      \
 )
 #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
 
 #ifdef CONFIG_LBDAF
-# include <asm/div64.h>
 # define sector_div(a, b) do_div(a, b)
 #else
 # define sector_div(n, b)( \
@@ -245,8 +216,10 @@ extern int _cond_resched(void);
 #endif
 
 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
-  void ___might_sleep(const char *file, int line, int preempt_offset);
-  void __might_sleep(const char *file, int line, int preempt_offset);
+extern void ___might_sleep(const char *file, int line, int preempt_offset);
+extern void __might_sleep(const char *file, int line, int preempt_offset);
+extern void __cant_sleep(const char *file, int line, int preempt_offset);
+
 /**
  * might_sleep - annotation for functions that can sleep
  *
@@ -259,6 +232,13 @@ extern int _cond_resched(void);
  */
 # define might_sleep() \
        do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
+/**
+ * cant_sleep - annotation for functions that cannot sleep
+ *
+ * this macro will print a stack trace if it is executed with preemption enabled
+ */
+# define cant_sleep() \
+       do { __cant_sleep(__FILE__, __LINE__, 0); } while (0)
 # define sched_annotate_sleep()        (current->task_state_change = 0)
 #else
   static inline void ___might_sleep(const char *file, int line,
@@ -266,6 +246,7 @@ extern int _cond_resched(void);
   static inline void __might_sleep(const char *file, int line,
                                   int preempt_offset) { }
 # define might_sleep() do { might_resched(); } while (0)
+# define cant_sleep() do { } while (0)
 # define sched_annotate_sleep() do { } while (0)
 #endif