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.h73
1 files changed, 44 insertions, 29 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 2451f1f7a1d9..c566927efcbd 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -1,15 +1,6 @@
1#ifndef _LINUX_KERNEL_H 1#ifndef _LINUX_KERNEL_H
2#define _LINUX_KERNEL_H 2#define _LINUX_KERNEL_H
3 3
4#include <linux/sysinfo.h>
5
6/*
7 * 'kernel.h' contains some often-used function prototypes etc
8 */
9#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
10#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
11
12#ifdef __KERNEL__
13 4
14#include <stdarg.h> 5#include <stdarg.h>
15#include <linux/linkage.h> 6#include <linux/linkage.h>
@@ -22,6 +13,7 @@
22#include <linux/printk.h> 13#include <linux/printk.h>
23#include <linux/dynamic_debug.h> 14#include <linux/dynamic_debug.h>
24#include <asm/byteorder.h> 15#include <asm/byteorder.h>
16#include <uapi/linux/kernel.h>
25 17
26#define USHRT_MAX ((u16)(~0U)) 18#define USHRT_MAX ((u16)(~0U))
27#define SHRT_MAX ((s16)(USHRT_MAX>>1)) 19#define SHRT_MAX ((s16)(USHRT_MAX>>1))
@@ -85,13 +77,15 @@
85 77
86/* 78/*
87 * Divide positive or negative dividend by positive divisor and round 79 * Divide positive or negative dividend by positive divisor and round
88 * 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.
89 */ 82 */
90#define DIV_ROUND_CLOSEST(x, divisor)( \ 83#define DIV_ROUND_CLOSEST(x, divisor)( \
91{ \ 84{ \
92 typeof(x) __x = x; \ 85 typeof(x) __x = x; \
93 typeof(divisor) __d = divisor; \ 86 typeof(divisor) __d = divisor; \
94 (((typeof(x))-1) > 0 || (__x) > 0) ? \ 87 (((typeof(x))-1) > 0 || \
88 ((typeof(divisor))-1) > 0 || (__x) > 0) ? \
95 (((__x) + ((__d) / 2)) / (__d)) : \ 89 (((__x) + ((__d) / 2)) / (__d)) : \
96 (((__x) - ((__d) / 2)) / (__d)); \ 90 (((__x) - ((__d) / 2)) / (__d)); \
97} \ 91} \
@@ -228,6 +222,23 @@ int __must_check _kstrtol(const char *s, unsigned int base, long *res);
228 222
229int __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);
230int __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*/
231static 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)
232{ 243{
233 /* 244 /*
@@ -241,6 +252,22 @@ static inline int __must_check kstrtoul(const char *s, unsigned int base, unsign
241 return _kstrtoul(s, base, res); 252 return _kstrtoul(s, base, res);
242} 253}
243 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 */
244static 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)
245{ 272{
246 /* 273 /*
@@ -535,9 +562,6 @@ __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
535 562
536extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); 563extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
537#else 564#else
538static inline __printf(1, 2)
539int trace_printk(const char *fmt, ...);
540
541static inline void tracing_start(void) { } 565static inline void tracing_start(void) { }
542static inline void tracing_stop(void) { } 566static inline void tracing_stop(void) { }
543static inline void ftrace_off_permanent(void) { } 567static inline void ftrace_off_permanent(void) { }
@@ -547,8 +571,8 @@ static inline void tracing_on(void) { }
547static inline void tracing_off(void) { } 571static inline void tracing_off(void) { }
548static inline int tracing_is_on(void) { return 0; } 572static inline int tracing_is_on(void) { return 0; }
549 573
550static inline int 574static inline __printf(1, 2)
551trace_printk(const char *fmt, ...) 575int trace_printk(const char *fmt, ...)
552{ 576{
553 return 0; 577 return 0;
554} 578}
@@ -695,18 +719,11 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
695/* Trap pasters of __FUNCTION__ at compile-time */ 719/* Trap pasters of __FUNCTION__ at compile-time */
696#define __FUNCTION__ (__func__) 720#define __FUNCTION__ (__func__)
697 721
698/* This helps us to avoid #ifdef CONFIG_NUMA */ 722/* This helps us to avoid #ifdef CONFIG_SYMBOL_PREFIX */
699#ifdef CONFIG_NUMA 723#ifdef CONFIG_SYMBOL_PREFIX
700#define NUMA_BUILD 1 724#define SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX
701#else 725#else
702#define NUMA_BUILD 0 726#define SYMBOL_PREFIX ""
703#endif
704
705/* This helps us avoid #ifdef CONFIG_COMPACTION */
706#ifdef CONFIG_COMPACTION
707#define COMPACTION_BUILD 1
708#else
709#define COMPACTION_BUILD 0
710#endif 727#endif
711 728
712/* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */ 729/* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */
@@ -716,6 +733,4 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
716 733
717extern int do_sysinfo(struct sysinfo *info); 734extern int do_sysinfo(struct sysinfo *info);
718 735
719#endif /* __KERNEL__ */
720
721#endif 736#endif