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.h112
1 files changed, 63 insertions, 49 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 567a6f7bbeed..e8b1597b5cf2 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -56,6 +56,14 @@
56 56
57#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) 57#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
58#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) 58#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
59#define DIV_ROUND_UP_ULL(ll,d) \
60 ({ unsigned long long _tmp = (ll)+(d)-1; do_div(_tmp, d); _tmp; })
61
62#if BITS_PER_LONG == 32
63# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP_ULL(ll, d)
64#else
65# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP(ll,d)
66#endif
59 67
60/* The `const' in roundup() prevents gcc-3.3 from calling __divdi3 */ 68/* The `const' in roundup() prevents gcc-3.3 from calling __divdi3 */
61#define roundup(x, y) ( \ 69#define roundup(x, y) ( \
@@ -279,6 +287,8 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t
279 return kstrtoint_from_user(s, count, base, res); 287 return kstrtoint_from_user(s, count, base, res);
280} 288}
281 289
290/* Obsolete, do not use. Use kstrto<foo> instead */
291
282extern unsigned long simple_strtoul(const char *,char **,unsigned int); 292extern unsigned long simple_strtoul(const char *,char **,unsigned int);
283extern long simple_strtol(const char *,char **,unsigned int); 293extern long simple_strtol(const char *,char **,unsigned int);
284extern unsigned long long simple_strtoull(const char *,char **,unsigned int); 294extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
@@ -288,20 +298,20 @@ extern long long simple_strtoll(const char *,char **,unsigned int);
288#define strict_strtoull kstrtoull 298#define strict_strtoull kstrtoull
289#define strict_strtoll kstrtoll 299#define strict_strtoll kstrtoll
290 300
291extern int sprintf(char * buf, const char * fmt, ...) 301/* lib/printf utilities */
292 __attribute__ ((format (printf, 2, 3))); 302
293extern int vsprintf(char *buf, const char *, va_list) 303extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
294 __attribute__ ((format (printf, 2, 0))); 304extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list);
295extern int snprintf(char * buf, size_t size, const char * fmt, ...) 305extern __printf(3, 4)
296 __attribute__ ((format (printf, 3, 4))); 306int snprintf(char *buf, size_t size, const char *fmt, ...);
297extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) 307extern __printf(3, 0)
298 __attribute__ ((format (printf, 3, 0))); 308int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
299extern int scnprintf(char * buf, size_t size, const char * fmt, ...) 309extern __printf(3, 4)
300 __attribute__ ((format (printf, 3, 4))); 310int scnprintf(char *buf, size_t size, const char *fmt, ...);
301extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) 311extern __printf(3, 0)
302 __attribute__ ((format (printf, 3, 0))); 312int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
303extern char *kasprintf(gfp_t gfp, const char *fmt, ...) 313extern __printf(2, 3)
304 __attribute__ ((format (printf, 2, 3))); 314char *kasprintf(gfp_t gfp, const char *fmt, ...);
305extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); 315extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
306 316
307extern int sscanf(const char *, const char *, ...) 317extern int sscanf(const char *, const char *, ...)
@@ -361,20 +371,26 @@ extern enum system_states {
361#define TAINT_WARN 9 371#define TAINT_WARN 9
362#define TAINT_CRAP 10 372#define TAINT_CRAP 10
363#define TAINT_FIRMWARE_WORKAROUND 11 373#define TAINT_FIRMWARE_WORKAROUND 11
374#define TAINT_OOT_MODULE 12
364 375
365extern const char hex_asc[]; 376extern const char hex_asc[];
366#define hex_asc_lo(x) hex_asc[((x) & 0x0f)] 377#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
367#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] 378#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
368 379
369static inline char *pack_hex_byte(char *buf, u8 byte) 380static inline char *hex_byte_pack(char *buf, u8 byte)
370{ 381{
371 *buf++ = hex_asc_hi(byte); 382 *buf++ = hex_asc_hi(byte);
372 *buf++ = hex_asc_lo(byte); 383 *buf++ = hex_asc_lo(byte);
373 return buf; 384 return buf;
374} 385}
375 386
387static inline char * __deprecated pack_hex_byte(char *buf, u8 byte)
388{
389 return hex_byte_pack(buf, byte);
390}
391
376extern int hex_to_bin(char ch); 392extern int hex_to_bin(char ch);
377extern void hex2bin(u8 *dst, const char *src, size_t count); 393extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
378 394
379/* 395/*
380 * General tracing related utility functions - trace_printk(), 396 * General tracing related utility functions - trace_printk(),
@@ -419,8 +435,8 @@ extern void tracing_start(void);
419extern void tracing_stop(void); 435extern void tracing_stop(void);
420extern void ftrace_off_permanent(void); 436extern void ftrace_off_permanent(void);
421 437
422static inline void __attribute__ ((format (printf, 1, 2))) 438static inline __printf(1, 2)
423____trace_printk_check_format(const char *fmt, ...) 439void ____trace_printk_check_format(const char *fmt, ...)
424{ 440{
425} 441}
426#define __trace_printk_check_format(fmt, args...) \ 442#define __trace_printk_check_format(fmt, args...) \
@@ -459,13 +475,11 @@ do { \
459 __trace_printk(_THIS_IP_, fmt, ##args); \ 475 __trace_printk(_THIS_IP_, fmt, ##args); \
460} while (0) 476} while (0)
461 477
462extern int 478extern __printf(2, 3)
463__trace_bprintk(unsigned long ip, const char *fmt, ...) 479int __trace_bprintk(unsigned long ip, const char *fmt, ...);
464 __attribute__ ((format (printf, 2, 3)));
465 480
466extern int 481extern __printf(2, 3)
467__trace_printk(unsigned long ip, const char *fmt, ...) 482int __trace_printk(unsigned long ip, const char *fmt, ...);
468 __attribute__ ((format (printf, 2, 3)));
469 483
470extern void trace_dump_stack(void); 484extern void trace_dump_stack(void);
471 485
@@ -494,8 +508,8 @@ __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
494 508
495extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); 509extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
496#else 510#else
497static inline int 511static inline __printf(1, 2)
498trace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); 512int trace_printk(const char *fmt, ...);
499 513
500static inline void tracing_start(void) { } 514static inline void tracing_start(void) { }
501static inline void tracing_stop(void) { } 515static inline void tracing_stop(void) { }
@@ -646,29 +660,6 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
646 const typeof( ((type *)0)->member ) *__mptr = (ptr); \ 660 const typeof( ((type *)0)->member ) *__mptr = (ptr); \
647 (type *)( (char *)__mptr - offsetof(type,member) );}) 661 (type *)( (char *)__mptr - offsetof(type,member) );})
648 662
649struct sysinfo;
650extern int do_sysinfo(struct sysinfo *info);
651
652#endif /* __KERNEL__ */
653
654#define SI_LOAD_SHIFT 16
655struct sysinfo {
656 long uptime; /* Seconds since boot */
657 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
658 unsigned long totalram; /* Total usable main memory size */
659 unsigned long freeram; /* Available memory size */
660 unsigned long sharedram; /* Amount of shared memory */
661 unsigned long bufferram; /* Memory used by buffers */
662 unsigned long totalswap; /* Total swap space size */
663 unsigned long freeswap; /* swap space still available */
664 unsigned short procs; /* Number of current processes */
665 unsigned short pad; /* explicit padding for m68k */
666 unsigned long totalhigh; /* Total high memory size */
667 unsigned long freehigh; /* Available high memory size */
668 unsigned int mem_unit; /* Memory unit size in bytes */
669 char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
670};
671
672#ifdef __CHECKER__ 663#ifdef __CHECKER__
673#define BUILD_BUG_ON_NOT_POWER_OF_2(n) 664#define BUILD_BUG_ON_NOT_POWER_OF_2(n)
674#define BUILD_BUG_ON_ZERO(e) (0) 665#define BUILD_BUG_ON_ZERO(e) (0)
@@ -736,4 +727,27 @@ extern int __build_bug_on_failed;
736# define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD 727# define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
737#endif 728#endif
738 729
730struct sysinfo;
731extern int do_sysinfo(struct sysinfo *info);
732
733#endif /* __KERNEL__ */
734
735#define SI_LOAD_SHIFT 16
736struct sysinfo {
737 long uptime; /* Seconds since boot */
738 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
739 unsigned long totalram; /* Total usable main memory size */
740 unsigned long freeram; /* Available memory size */
741 unsigned long sharedram; /* Amount of shared memory */
742 unsigned long bufferram; /* Memory used by buffers */
743 unsigned long totalswap; /* Total swap space size */
744 unsigned long freeswap; /* swap space still available */
745 unsigned short procs; /* Number of current processes */
746 unsigned short pad; /* explicit padding for m68k */
747 unsigned long totalhigh; /* Total high memory size */
748 unsigned long freehigh; /* Available high memory size */
749 unsigned int mem_unit; /* Memory unit size in bytes */
750 char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
751};
752
739#endif 753#endif