aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/kernel.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/kernel.h')
-rw-r--r--include/linux/kernel.h60
1 files changed, 39 insertions, 21 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 7d8dfc7392f..c566927efcb 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -77,13 +77,15 @@
77 77
78/* 78/*
79 * Divide positive or negative dividend by positive divisor and round 79 * Divide positive or negative dividend by positive divisor and round
80 * to closest integer. Result is undefined for negative divisors. 80 * to closest integer. Result is undefined for negative divisors and
81 * for negative dividends if the divisor variable type is unsigned.
81 */ 82 */
82#define DIV_ROUND_CLOSEST(x, divisor)( \ 83#define DIV_ROUND_CLOSEST(x, divisor)( \
83{ \ 84{ \
84 typeof(x) __x = x; \ 85 typeof(x) __x = x; \
85 typeof(divisor) __d = divisor; \ 86 typeof(divisor) __d = divisor; \
86 (((typeof(x))-1) > 0 || (__x) > 0) ? \ 87 (((typeof(x))-1) > 0 || \
88 ((typeof(divisor))-1) > 0 || (__x) > 0) ? \
87 (((__x) + ((__d) / 2)) / (__d)) : \ 89 (((__x) + ((__d) / 2)) / (__d)) : \
88 (((__x) - ((__d) / 2)) / (__d)); \ 90 (((__x) - ((__d) / 2)) / (__d)); \
89} \ 91} \
@@ -220,6 +222,23 @@ int __must_check _kstrtol(const char *s, unsigned int base, long *res);
220 222
221int __must_check kstrtoull(const char *s, unsigned int base, unsigned long long *res); 223int __must_check kstrtoull(const char *s, unsigned int base, unsigned long long *res);
222int __must_check kstrtoll(const char *s, unsigned int base, long long *res); 224int __must_check kstrtoll(const char *s, unsigned int base, long long *res);
225
226/**
227 * kstrtoul - convert a string to an unsigned long
228 * @s: The start of the string. The string must be null-terminated, and may also
229 * include a single newline before its terminating null. The first character
230 * may also be a plus sign, but not a minus sign.
231 * @base: The number base to use. The maximum supported base is 16. If base is
232 * given as 0, then the base of the string is automatically detected with the
233 * conventional semantics - If it begins with 0x the number will be parsed as a
234 * hexadecimal (case insensitive), if it otherwise begins with 0, it will be
235 * parsed as an octal number. Otherwise it will be parsed as a decimal.
236 * @res: Where to write the result of the conversion on success.
237 *
238 * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
239 * Used as a replacement for the obsolete simple_strtoull. Return code must
240 * be checked.
241*/
223static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res) 242static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
224{ 243{
225 /* 244 /*
@@ -233,6 +252,22 @@ static inline int __must_check kstrtoul(const char *s, unsigned int base, unsign
233 return _kstrtoul(s, base, res); 252 return _kstrtoul(s, base, res);
234} 253}
235 254
255/**
256 * kstrtol - convert a string to a long
257 * @s: The start of the string. The string must be null-terminated, and may also
258 * include a single newline before its terminating null. The first character
259 * may also be a plus sign or a minus sign.
260 * @base: The number base to use. The maximum supported base is 16. If base is
261 * given as 0, then the base of the string is automatically detected with the
262 * conventional semantics - If it begins with 0x the number will be parsed as a
263 * hexadecimal (case insensitive), if it otherwise begins with 0, it will be
264 * parsed as an octal number. Otherwise it will be parsed as a decimal.
265 * @res: Where to write the result of the conversion on success.
266 *
267 * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
268 * Used as a replacement for the obsolete simple_strtoull. Return code must
269 * be checked.
270 */
236static inline int __must_check kstrtol(const char *s, unsigned int base, long *res) 271static inline int __must_check kstrtol(const char *s, unsigned int base, long *res)
237{ 272{
238 /* 273 /*
@@ -527,9 +562,6 @@ __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
527 562
528extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); 563extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
529#else 564#else
530static inline __printf(1, 2)
531int trace_printk(const char *fmt, ...);
532
533static inline void tracing_start(void) { } 565static inline void tracing_start(void) { }
534static inline void tracing_stop(void) { } 566static inline void tracing_stop(void) { }
535static inline void ftrace_off_permanent(void) { } 567static inline void ftrace_off_permanent(void) { }
@@ -539,8 +571,8 @@ static inline void tracing_on(void) { }
539static inline void tracing_off(void) { } 571static inline void tracing_off(void) { }
540static inline int tracing_is_on(void) { return 0; } 572static inline int tracing_is_on(void) { return 0; }
541 573
542static inline int 574static inline __printf(1, 2)
543trace_printk(const char *fmt, ...) 575int trace_printk(const char *fmt, ...)
544{ 576{
545 return 0; 577 return 0;
546} 578}
@@ -687,20 +719,6 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
687/* Trap pasters of __FUNCTION__ at compile-time */ 719/* Trap pasters of __FUNCTION__ at compile-time */
688#define __FUNCTION__ (__func__) 720#define __FUNCTION__ (__func__)
689 721
690/* This helps us to avoid #ifdef CONFIG_NUMA */
691#ifdef CONFIG_NUMA
692#define NUMA_BUILD 1
693#else
694#define NUMA_BUILD 0
695#endif
696
697/* This helps us avoid #ifdef CONFIG_COMPACTION */
698#ifdef CONFIG_COMPACTION
699#define COMPACTION_BUILD 1
700#else
701#define COMPACTION_BUILD 0
702#endif
703
704/* This helps us to avoid #ifdef CONFIG_SYMBOL_PREFIX */ 722/* This helps us to avoid #ifdef CONFIG_SYMBOL_PREFIX */
705#ifdef CONFIG_SYMBOL_PREFIX 723#ifdef CONFIG_SYMBOL_PREFIX
706#define SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX 724#define SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX