This source file includes following definitions.
- ___might_sleep
 
- __might_sleep
 
- reciprocal_scale
 
- might_fault
 
- __printf
 
- kstrtoul
 
- kstrtol
 
- kstrtou64
 
- kstrtos64
 
- kstrtou32
 
- kstrtos32
 
- kstrtou64_from_user
 
- kstrtos64_from_user
 
- kstrtou32_from_user
 
- kstrtos32_from_user
 
- __printf
 
- set_arch_panic_timeout
 
- hex_byte_pack
 
- hex_byte_pack_upper
 
- __printf
 
- __printf
 
- tracing_stop
 
- trace_dump_stack
 
- tracing_on
 
- tracing_off
 
- tracing_is_on
 
- tracing_snapshot
 
- tracing_snapshot_alloc
 
- __printf
 
- __printf
 
- ftrace_dump
 
   1 
   2 #ifndef _LINUX_KERNEL_H
   3 #define _LINUX_KERNEL_H
   4 
   5 
   6 #include <stdarg.h>
   7 #include <linux/limits.h>
   8 #include <linux/linkage.h>
   9 #include <linux/stddef.h>
  10 #include <linux/types.h>
  11 #include <linux/compiler.h>
  12 #include <linux/bitops.h>
  13 #include <linux/log2.h>
  14 #include <linux/typecheck.h>
  15 #include <linux/printk.h>
  16 #include <linux/build_bug.h>
  17 #include <asm/byteorder.h>
  18 #include <asm/div64.h>
  19 #include <uapi/linux/kernel.h>
  20 #include <asm/div64.h>
  21 
  22 #define STACK_MAGIC     0xdeadbeef
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 #define REPEAT_BYTE(x)  ((~0ul / 0xff) * (x))
  31 
  32 
  33 #define ALIGN(x, a)             __ALIGN_KERNEL((x), (a))
  34 #define ALIGN_DOWN(x, a)        __ALIGN_KERNEL((x) - ((a) - 1), (a))
  35 #define __ALIGN_MASK(x, mask)   __ALIGN_KERNEL_MASK((x), (mask))
  36 #define PTR_ALIGN(p, a)         ((typeof(p))ALIGN((unsigned long)(p), (a)))
  37 #define IS_ALIGNED(x, a)                (((x) & ((typeof(x))(a) - 1)) == 0)
  38 
  39 
  40 #define READ                    0
  41 #define WRITE                   1
  42 
  43 
  44 
  45 
  46 
  47 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
  48 
  49 #define u64_to_user_ptr(x) (            \
  50 {                                       \
  51         typecheck(u64, (x));            \
  52         (void __user *)(uintptr_t)(x);  \
  53 }                                       \
  54 )
  55 
  56 
  57 
  58 
  59 
  60 
  61 
  62 #define __round_mask(x, y) ((__typeof__(x))((y)-1))
  63 
  64 
  65 
  66 
  67 
  68 
  69 
  70 
  71 #define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
  72 
  73 
  74 
  75 
  76 
  77 
  78 
  79 
  80 #define round_down(x, y) ((x) & ~__round_mask(x, y))
  81 
  82 
  83 
  84 
  85 
  86 
  87 
  88 
  89 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
  90 
  91 #define typeof_member(T, m)     typeof(((T*)0)->m)
  92 
  93 #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
  94 
  95 #define DIV_ROUND_DOWN_ULL(ll, d) \
  96         ({ unsigned long long _tmp = (ll); do_div(_tmp, d); _tmp; })
  97 
  98 #define DIV_ROUND_UP_ULL(ll, d) \
  99         DIV_ROUND_DOWN_ULL((unsigned long long)(ll) + (d) - 1, (d))
 100 
 101 #if BITS_PER_LONG == 32
 102 # define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP_ULL(ll, d)
 103 #else
 104 # define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP(ll,d)
 105 #endif
 106 
 107 
 108 
 109 
 110 
 111 
 112 
 113 
 114 
 115 #define roundup(x, y) (                                 \
 116 {                                                       \
 117         typeof(y) __y = y;                              \
 118         (((x) + (__y - 1)) / __y) * __y;                \
 119 }                                                       \
 120 )
 121 
 122 
 123 
 124 
 125 
 126 
 127 
 128 
 129 #define rounddown(x, y) (                               \
 130 {                                                       \
 131         typeof(x) __x = (x);                            \
 132         __x - (__x % (y));                              \
 133 }                                                       \
 134 )
 135 
 136 
 137 
 138 
 139 
 140 
 141 
 142 #define DIV_ROUND_CLOSEST(x, divisor)(                  \
 143 {                                                       \
 144         typeof(x) __x = x;                              \
 145         typeof(divisor) __d = divisor;                  \
 146         (((typeof(x))-1) > 0 ||                         \
 147          ((typeof(divisor))-1) > 0 ||                   \
 148          (((__x) > 0) == ((__d) > 0))) ?                \
 149                 (((__x) + ((__d) / 2)) / (__d)) :       \
 150                 (((__x) - ((__d) / 2)) / (__d));        \
 151 }                                                       \
 152 )
 153 
 154 
 155 
 156 
 157 #define DIV_ROUND_CLOSEST_ULL(x, divisor)(              \
 158 {                                                       \
 159         typeof(divisor) __d = divisor;                  \
 160         unsigned long long _tmp = (x) + (__d) / 2;      \
 161         do_div(_tmp, __d);                              \
 162         _tmp;                                           \
 163 }                                                       \
 164 )
 165 
 166 
 167 
 168 
 169 
 170 #define mult_frac(x, numer, denom)(                     \
 171 {                                                       \
 172         typeof(x) quot = (x) / (denom);                 \
 173         typeof(x) rem  = (x) % (denom);                 \
 174         (quot * (numer)) + ((rem * (numer)) / (denom)); \
 175 }                                                       \
 176 )
 177 
 178 
 179 #define _RET_IP_                (unsigned long)__builtin_return_address(0)
 180 #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
 181 
 182 #define sector_div(a, b) do_div(a, b)
 183 
 184 
 185 
 186 
 187 
 188 
 189 
 190 
 191 
 192 #define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
 193 
 194 
 195 
 196 
 197 
 198 #define lower_32_bits(n) ((u32)(n))
 199 
 200 struct completion;
 201 struct pt_regs;
 202 struct user;
 203 
 204 #ifdef CONFIG_PREEMPT_VOLUNTARY
 205 extern int _cond_resched(void);
 206 # define might_resched() _cond_resched()
 207 #else
 208 # define might_resched() do { } while (0)
 209 #endif
 210 
 211 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
 212 extern void ___might_sleep(const char *file, int line, int preempt_offset);
 213 extern void __might_sleep(const char *file, int line, int preempt_offset);
 214 extern void __cant_sleep(const char *file, int line, int preempt_offset);
 215 
 216 
 217 
 218 
 219 
 220 
 221 
 222 
 223 
 224 
 225 
 226 
 227 
 228 # define might_sleep() \
 229         do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
 230 
 231 
 232 
 233 
 234 
 235 # define cant_sleep() \
 236         do { __cant_sleep(__FILE__, __LINE__, 0); } while (0)
 237 # define sched_annotate_sleep() (current->task_state_change = 0)
 238 
 239 
 240 
 241 
 242 
 243 
 244 
 245 
 246 
 247 
 248 # define non_block_start() (current->non_block_count++)
 249 
 250 
 251 
 252 
 253 
 254 # define non_block_end() WARN_ON(current->non_block_count-- == 0)
 255 #else
 256   static inline void ___might_sleep(const char *file, int line,
 257                                    int preempt_offset) { }
 258   static inline void __might_sleep(const char *file, int line,
 259                                    int preempt_offset) { }
 260 # define might_sleep() do { might_resched(); } while (0)
 261 # define cant_sleep() do { } while (0)
 262 # define sched_annotate_sleep() do { } while (0)
 263 # define non_block_start() do { } while (0)
 264 # define non_block_end() do { } while (0)
 265 #endif
 266 
 267 #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
 268 
 269 
 270 
 271 
 272 
 273 
 274 
 275 
 276 
 277 #define abs(x)  __abs_choose_expr(x, long long,                         \
 278                 __abs_choose_expr(x, long,                              \
 279                 __abs_choose_expr(x, int,                               \
 280                 __abs_choose_expr(x, short,                             \
 281                 __abs_choose_expr(x, char,                              \
 282                 __builtin_choose_expr(                                  \
 283                         __builtin_types_compatible_p(typeof(x), char),  \
 284                         (char)({ signed char __x = (x); __x<0?-__x:__x; }), \
 285                         ((void)0)))))))
 286 
 287 #define __abs_choose_expr(x, type, other) __builtin_choose_expr(        \
 288         __builtin_types_compatible_p(typeof(x),   signed type) ||       \
 289         __builtin_types_compatible_p(typeof(x), unsigned type),         \
 290         ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
 291 
 292 
 293 
 294 
 295 
 296 
 297 
 298 
 299 
 300 
 301 
 302 
 303 
 304 
 305 
 306 static inline u32 reciprocal_scale(u32 val, u32 ep_ro)
 307 {
 308         return (u32)(((u64) val * ep_ro) >> 32);
 309 }
 310 
 311 #if defined(CONFIG_MMU) && \
 312         (defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_DEBUG_ATOMIC_SLEEP))
 313 #define might_fault() __might_fault(__FILE__, __LINE__)
 314 void __might_fault(const char *file, int line);
 315 #else
 316 static inline void might_fault(void) { }
 317 #endif
 318 
 319 extern struct atomic_notifier_head panic_notifier_list;
 320 extern long (*panic_blink)(int state);
 321 __printf(1, 2)
 322 void panic(const char *fmt, ...) __noreturn __cold;
 323 void nmi_panic(struct pt_regs *regs, const char *msg);
 324 extern void oops_enter(void);
 325 extern void oops_exit(void);
 326 void print_oops_end_marker(void);
 327 extern int oops_may_print(void);
 328 void do_exit(long error_code) __noreturn;
 329 void complete_and_exit(struct completion *, long) __noreturn;
 330 
 331 #ifdef CONFIG_ARCH_HAS_REFCOUNT
 332 void refcount_error_report(struct pt_regs *regs, const char *err);
 333 #else
 334 static inline void refcount_error_report(struct pt_regs *regs, const char *err)
 335 { }
 336 #endif
 337 
 338 
 339 int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res);
 340 int __must_check _kstrtol(const char *s, unsigned int base, long *res);
 341 
 342 int __must_check kstrtoull(const char *s, unsigned int base, unsigned long long *res);
 343 int __must_check kstrtoll(const char *s, unsigned int base, long long *res);
 344 
 345 
 346 
 347 
 348 
 349 
 350 
 351 
 352 
 353 
 354 
 355 
 356 
 357 
 358 
 359 
 360 
 361 static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
 362 {
 363         
 364 
 365 
 366 
 367         if (sizeof(unsigned long) == sizeof(unsigned long long) &&
 368             __alignof__(unsigned long) == __alignof__(unsigned long long))
 369                 return kstrtoull(s, base, (unsigned long long *)res);
 370         else
 371                 return _kstrtoul(s, base, res);
 372 }
 373 
 374 
 375 
 376 
 377 
 378 
 379 
 380 
 381 
 382 
 383 
 384 
 385 
 386 
 387 
 388 
 389 
 390 static inline int __must_check kstrtol(const char *s, unsigned int base, long *res)
 391 {
 392         
 393 
 394 
 395 
 396         if (sizeof(long) == sizeof(long long) &&
 397             __alignof__(long) == __alignof__(long long))
 398                 return kstrtoll(s, base, (long long *)res);
 399         else
 400                 return _kstrtol(s, base, res);
 401 }
 402 
 403 int __must_check kstrtouint(const char *s, unsigned int base, unsigned int *res);
 404 int __must_check kstrtoint(const char *s, unsigned int base, int *res);
 405 
 406 static inline int __must_check kstrtou64(const char *s, unsigned int base, u64 *res)
 407 {
 408         return kstrtoull(s, base, res);
 409 }
 410 
 411 static inline int __must_check kstrtos64(const char *s, unsigned int base, s64 *res)
 412 {
 413         return kstrtoll(s, base, res);
 414 }
 415 
 416 static inline int __must_check kstrtou32(const char *s, unsigned int base, u32 *res)
 417 {
 418         return kstrtouint(s, base, res);
 419 }
 420 
 421 static inline int __must_check kstrtos32(const char *s, unsigned int base, s32 *res)
 422 {
 423         return kstrtoint(s, base, res);
 424 }
 425 
 426 int __must_check kstrtou16(const char *s, unsigned int base, u16 *res);
 427 int __must_check kstrtos16(const char *s, unsigned int base, s16 *res);
 428 int __must_check kstrtou8(const char *s, unsigned int base, u8 *res);
 429 int __must_check kstrtos8(const char *s, unsigned int base, s8 *res);
 430 int __must_check kstrtobool(const char *s, bool *res);
 431 
 432 int __must_check kstrtoull_from_user(const char __user *s, size_t count, unsigned int base, unsigned long long *res);
 433 int __must_check kstrtoll_from_user(const char __user *s, size_t count, unsigned int base, long long *res);
 434 int __must_check kstrtoul_from_user(const char __user *s, size_t count, unsigned int base, unsigned long *res);
 435 int __must_check kstrtol_from_user(const char __user *s, size_t count, unsigned int base, long *res);
 436 int __must_check kstrtouint_from_user(const char __user *s, size_t count, unsigned int base, unsigned int *res);
 437 int __must_check kstrtoint_from_user(const char __user *s, size_t count, unsigned int base, int *res);
 438 int __must_check kstrtou16_from_user(const char __user *s, size_t count, unsigned int base, u16 *res);
 439 int __must_check kstrtos16_from_user(const char __user *s, size_t count, unsigned int base, s16 *res);
 440 int __must_check kstrtou8_from_user(const char __user *s, size_t count, unsigned int base, u8 *res);
 441 int __must_check kstrtos8_from_user(const char __user *s, size_t count, unsigned int base, s8 *res);
 442 int __must_check kstrtobool_from_user(const char __user *s, size_t count, bool *res);
 443 
 444 static inline int __must_check kstrtou64_from_user(const char __user *s, size_t count, unsigned int base, u64 *res)
 445 {
 446         return kstrtoull_from_user(s, count, base, res);
 447 }
 448 
 449 static inline int __must_check kstrtos64_from_user(const char __user *s, size_t count, unsigned int base, s64 *res)
 450 {
 451         return kstrtoll_from_user(s, count, base, res);
 452 }
 453 
 454 static inline int __must_check kstrtou32_from_user(const char __user *s, size_t count, unsigned int base, u32 *res)
 455 {
 456         return kstrtouint_from_user(s, count, base, res);
 457 }
 458 
 459 static inline int __must_check kstrtos32_from_user(const char __user *s, size_t count, unsigned int base, s32 *res)
 460 {
 461         return kstrtoint_from_user(s, count, base, res);
 462 }
 463 
 464 
 465 
 466 extern unsigned long simple_strtoul(const char *,char **,unsigned int);
 467 extern long simple_strtol(const char *,char **,unsigned int);
 468 extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
 469 extern long long simple_strtoll(const char *,char **,unsigned int);
 470 
 471 extern int num_to_str(char *buf, int size,
 472                       unsigned long long num, unsigned int width);
 473 
 474 
 475 
 476 extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
 477 extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list);
 478 extern __printf(3, 4)
 479 int snprintf(char *buf, size_t size, const char *fmt, ...);
 480 extern __printf(3, 0)
 481 int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
 482 extern __printf(3, 4)
 483 int scnprintf(char *buf, size_t size, const char *fmt, ...);
 484 extern __printf(3, 0)
 485 int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
 486 extern __printf(2, 3) __malloc
 487 char *kasprintf(gfp_t gfp, const char *fmt, ...);
 488 extern __printf(2, 0) __malloc
 489 char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
 490 extern __printf(2, 0)
 491 const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
 492 
 493 extern __scanf(2, 3)
 494 int sscanf(const char *, const char *, ...);
 495 extern __scanf(2, 0)
 496 int vsscanf(const char *, const char *, va_list);
 497 
 498 extern int get_option(char **str, int *pint);
 499 extern char *get_options(const char *str, int nints, int *ints);
 500 extern unsigned long long memparse(const char *ptr, char **retptr);
 501 extern bool parse_option_str(const char *str, const char *option);
 502 extern char *next_arg(char *args, char **param, char **val);
 503 
 504 extern int core_kernel_text(unsigned long addr);
 505 extern int init_kernel_text(unsigned long addr);
 506 extern int core_kernel_data(unsigned long addr);
 507 extern int __kernel_text_address(unsigned long addr);
 508 extern int kernel_text_address(unsigned long addr);
 509 extern int func_ptr_is_kernel_text(void *ptr);
 510 
 511 u64 int_pow(u64 base, unsigned int exp);
 512 unsigned long int_sqrt(unsigned long);
 513 
 514 #if BITS_PER_LONG < 64
 515 u32 int_sqrt64(u64 x);
 516 #else
 517 static inline u32 int_sqrt64(u64 x)
 518 {
 519         return (u32)int_sqrt(x);
 520 }
 521 #endif
 522 
 523 extern void bust_spinlocks(int yes);
 524 extern int oops_in_progress;            
 525 extern int panic_timeout;
 526 extern unsigned long panic_print;
 527 extern int panic_on_oops;
 528 extern int panic_on_unrecovered_nmi;
 529 extern int panic_on_io_nmi;
 530 extern int panic_on_warn;
 531 extern int sysctl_panic_on_rcu_stall;
 532 extern int sysctl_panic_on_stackoverflow;
 533 
 534 extern bool crash_kexec_post_notifiers;
 535 
 536 
 537 
 538 
 539 
 540 
 541 extern atomic_t panic_cpu;
 542 #define PANIC_CPU_INVALID       -1
 543 
 544 
 545 
 546 
 547 
 548 static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout)
 549 {
 550         if (panic_timeout == arch_default_timeout)
 551                 panic_timeout = timeout;
 552 }
 553 extern const char *print_tainted(void);
 554 enum lockdep_ok {
 555         LOCKDEP_STILL_OK,
 556         LOCKDEP_NOW_UNRELIABLE
 557 };
 558 extern void add_taint(unsigned flag, enum lockdep_ok);
 559 extern int test_taint(unsigned flag);
 560 extern unsigned long get_taint(void);
 561 extern int root_mountflags;
 562 
 563 extern bool early_boot_irqs_disabled;
 564 
 565 
 566 
 567 
 568 
 569 extern enum system_states {
 570         SYSTEM_BOOTING,
 571         SYSTEM_SCHEDULING,
 572         SYSTEM_RUNNING,
 573         SYSTEM_HALT,
 574         SYSTEM_POWER_OFF,
 575         SYSTEM_RESTART,
 576         SYSTEM_SUSPEND,
 577 } system_state;
 578 
 579 
 580 #define TAINT_PROPRIETARY_MODULE        0
 581 #define TAINT_FORCED_MODULE             1
 582 #define TAINT_CPU_OUT_OF_SPEC           2
 583 #define TAINT_FORCED_RMMOD              3
 584 #define TAINT_MACHINE_CHECK             4
 585 #define TAINT_BAD_PAGE                  5
 586 #define TAINT_USER                      6
 587 #define TAINT_DIE                       7
 588 #define TAINT_OVERRIDDEN_ACPI_TABLE     8
 589 #define TAINT_WARN                      9
 590 #define TAINT_CRAP                      10
 591 #define TAINT_FIRMWARE_WORKAROUND       11
 592 #define TAINT_OOT_MODULE                12
 593 #define TAINT_UNSIGNED_MODULE           13
 594 #define TAINT_SOFTLOCKUP                14
 595 #define TAINT_LIVEPATCH                 15
 596 #define TAINT_AUX                       16
 597 #define TAINT_RANDSTRUCT                17
 598 #define TAINT_FLAGS_COUNT               18
 599 
 600 struct taint_flag {
 601         char c_true;    
 602         char c_false;   
 603         bool module;    
 604 };
 605 
 606 extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT];
 607 
 608 extern const char hex_asc[];
 609 #define hex_asc_lo(x)   hex_asc[((x) & 0x0f)]
 610 #define hex_asc_hi(x)   hex_asc[((x) & 0xf0) >> 4]
 611 
 612 static inline char *hex_byte_pack(char *buf, u8 byte)
 613 {
 614         *buf++ = hex_asc_hi(byte);
 615         *buf++ = hex_asc_lo(byte);
 616         return buf;
 617 }
 618 
 619 extern const char hex_asc_upper[];
 620 #define hex_asc_upper_lo(x)     hex_asc_upper[((x) & 0x0f)]
 621 #define hex_asc_upper_hi(x)     hex_asc_upper[((x) & 0xf0) >> 4]
 622 
 623 static inline char *hex_byte_pack_upper(char *buf, u8 byte)
 624 {
 625         *buf++ = hex_asc_upper_hi(byte);
 626         *buf++ = hex_asc_upper_lo(byte);
 627         return buf;
 628 }
 629 
 630 extern int hex_to_bin(char ch);
 631 extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
 632 extern char *bin2hex(char *dst, const void *src, size_t count);
 633 
 634 bool mac_pton(const char *s, u8 *mac);
 635 
 636 
 637 
 638 
 639 
 640 
 641 
 642 
 643 
 644 
 645 
 646 
 647 
 648 
 649 
 650 
 651 
 652 
 653 
 654 
 655 
 656 enum ftrace_dump_mode {
 657         DUMP_NONE,
 658         DUMP_ALL,
 659         DUMP_ORIG,
 660 };
 661 
 662 #ifdef CONFIG_TRACING
 663 void tracing_on(void);
 664 void tracing_off(void);
 665 int tracing_is_on(void);
 666 void tracing_snapshot(void);
 667 void tracing_snapshot_alloc(void);
 668 
 669 extern void tracing_start(void);
 670 extern void tracing_stop(void);
 671 
 672 static inline __printf(1, 2)
 673 void ____trace_printk_check_format(const char *fmt, ...)
 674 {
 675 }
 676 #define __trace_printk_check_format(fmt, args...)                       \
 677 do {                                                                    \
 678         if (0)                                                          \
 679                 ____trace_printk_check_format(fmt, ##args);             \
 680 } while (0)
 681 
 682 
 683 
 684 
 685 
 686 
 687 
 688 
 689 
 690 
 691 
 692 
 693 
 694 
 695 
 696 
 697 
 698 
 699 
 700 
 701 
 702 
 703 
 704 
 705 
 706 
 707 
 708 
 709 
 710 
 711 
 712 #define trace_printk(fmt, ...)                          \
 713 do {                                                    \
 714         char _______STR[] = __stringify((__VA_ARGS__)); \
 715         if (sizeof(_______STR) > 3)                     \
 716                 do_trace_printk(fmt, ##__VA_ARGS__);    \
 717         else                                            \
 718                 trace_puts(fmt);                        \
 719 } while (0)
 720 
 721 #define do_trace_printk(fmt, args...)                                   \
 722 do {                                                                    \
 723         static const char *trace_printk_fmt __used                      \
 724                 __attribute__((section("__trace_printk_fmt"))) =        \
 725                 __builtin_constant_p(fmt) ? fmt : NULL;                 \
 726                                                                         \
 727         __trace_printk_check_format(fmt, ##args);                       \
 728                                                                         \
 729         if (__builtin_constant_p(fmt))                                  \
 730                 __trace_bprintk(_THIS_IP_, trace_printk_fmt, ##args);   \
 731         else                                                            \
 732                 __trace_printk(_THIS_IP_, fmt, ##args);                 \
 733 } while (0)
 734 
 735 extern __printf(2, 3)
 736 int __trace_bprintk(unsigned long ip, const char *fmt, ...);
 737 
 738 extern __printf(2, 3)
 739 int __trace_printk(unsigned long ip, const char *fmt, ...);
 740 
 741 
 742 
 743 
 744 
 745 
 746 
 747 
 748 
 749 
 750 
 751 
 752 
 753 
 754 
 755 
 756 
 757 
 758 
 759 
 760 
 761 
 762 
 763 
 764 
 765 
 766 #define trace_puts(str) ({                                              \
 767         static const char *trace_printk_fmt __used                      \
 768                 __attribute__((section("__trace_printk_fmt"))) =        \
 769                 __builtin_constant_p(str) ? str : NULL;                 \
 770                                                                         \
 771         if (__builtin_constant_p(str))                                  \
 772                 __trace_bputs(_THIS_IP_, trace_printk_fmt);             \
 773         else                                                            \
 774                 __trace_puts(_THIS_IP_, str, strlen(str));              \
 775 })
 776 extern int __trace_bputs(unsigned long ip, const char *str);
 777 extern int __trace_puts(unsigned long ip, const char *str, int size);
 778 
 779 extern void trace_dump_stack(int skip);
 780 
 781 
 782 
 783 
 784 
 785 
 786 #define ftrace_vprintk(fmt, vargs)                                      \
 787 do {                                                                    \
 788         if (__builtin_constant_p(fmt)) {                                \
 789                 static const char *trace_printk_fmt __used              \
 790                   __attribute__((section("__trace_printk_fmt"))) =      \
 791                         __builtin_constant_p(fmt) ? fmt : NULL;         \
 792                                                                         \
 793                 __ftrace_vbprintk(_THIS_IP_, trace_printk_fmt, vargs);  \
 794         } else                                                          \
 795                 __ftrace_vprintk(_THIS_IP_, fmt, vargs);                \
 796 } while (0)
 797 
 798 extern __printf(2, 0) int
 799 __ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap);
 800 
 801 extern __printf(2, 0) int
 802 __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
 803 
 804 extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
 805 #else
 806 static inline void tracing_start(void) { }
 807 static inline void tracing_stop(void) { }
 808 static inline void trace_dump_stack(int skip) { }
 809 
 810 static inline void tracing_on(void) { }
 811 static inline void tracing_off(void) { }
 812 static inline int tracing_is_on(void) { return 0; }
 813 static inline void tracing_snapshot(void) { }
 814 static inline void tracing_snapshot_alloc(void) { }
 815 
 816 static inline __printf(1, 2)
 817 int trace_printk(const char *fmt, ...)
 818 {
 819         return 0;
 820 }
 821 static __printf(1, 0) inline int
 822 ftrace_vprintk(const char *fmt, va_list ap)
 823 {
 824         return 0;
 825 }
 826 static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
 827 #endif 
 828 
 829 
 830 
 831 
 832 
 833 
 834 
 835 
 836 
 837 
 838 
 839 
 840 
 841 #define __typecheck(x, y) \
 842                 (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
 843 
 844 
 845 
 846 
 847 
 848 
 849 #define __is_constexpr(x) \
 850         (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
 851 
 852 #define __no_side_effects(x, y) \
 853                 (__is_constexpr(x) && __is_constexpr(y))
 854 
 855 #define __safe_cmp(x, y) \
 856                 (__typecheck(x, y) && __no_side_effects(x, y))
 857 
 858 #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
 859 
 860 #define __cmp_once(x, y, unique_x, unique_y, op) ({     \
 861                 typeof(x) unique_x = (x);               \
 862                 typeof(y) unique_y = (y);               \
 863                 __cmp(unique_x, unique_y, op); })
 864 
 865 #define __careful_cmp(x, y, op) \
 866         __builtin_choose_expr(__safe_cmp(x, y), \
 867                 __cmp(x, y, op), \
 868                 __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
 869 
 870 
 871 
 872 
 873 
 874 
 875 #define min(x, y)       __careful_cmp(x, y, <)
 876 
 877 
 878 
 879 
 880 
 881 
 882 #define max(x, y)       __careful_cmp(x, y, >)
 883 
 884 
 885 
 886 
 887 
 888 
 889 
 890 #define min3(x, y, z) min((typeof(x))min(x, y), z)
 891 
 892 
 893 
 894 
 895 
 896 
 897 
 898 #define max3(x, y, z) max((typeof(x))max(x, y), z)
 899 
 900 
 901 
 902 
 903 
 904 
 905 #define min_not_zero(x, y) ({                   \
 906         typeof(x) __x = (x);                    \
 907         typeof(y) __y = (y);                    \
 908         __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
 909 
 910 
 911 
 912 
 913 
 914 
 915 
 916 
 917 
 918 
 919 #define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
 920 
 921 
 922 
 923 
 924 
 925 
 926 
 927 
 928 
 929 
 930 
 931 
 932 
 933 
 934 #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
 935 
 936 
 937 
 938 
 939 
 940 
 941 
 942 #define max_t(type, x, y)       __careful_cmp((type)(x), (type)(y), >)
 943 
 944 
 945 
 946 
 947 
 948 
 949 
 950 
 951 
 952 
 953 
 954 #define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
 955 
 956 
 957 
 958 
 959 
 960 
 961 
 962 
 963 
 964 
 965 
 966 
 967 #define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
 968 
 969 
 970 
 971 
 972 
 973 
 974 
 975 #define swap(a, b) \
 976         do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
 977 
 978 
 979 #define __COUNT_ARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _n, X...) _n
 980 #define COUNT_ARGS(X...) __COUNT_ARGS(, ##X, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
 981 
 982 #define __CONCAT(a, b) a ## b
 983 #define CONCATENATE(a, b) __CONCAT(a, b)
 984 
 985 
 986 
 987 
 988 
 989 
 990 
 991 
 992 #define container_of(ptr, type, member) ({                              \
 993         void *__mptr = (void *)(ptr);                                   \
 994         BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
 995                          !__same_type(*(ptr), void),                    \
 996                          "pointer type mismatch in container_of()");    \
 997         ((type *)(__mptr - offsetof(type, member))); })
 998 
 999 
1000 
1001 
1002 
1003 
1004 
1005 
1006 
1007 #define container_of_safe(ptr, type, member) ({                         \
1008         void *__mptr = (void *)(ptr);                                   \
1009         BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
1010                          !__same_type(*(ptr), void),                    \
1011                          "pointer type mismatch in container_of()");    \
1012         IS_ERR_OR_NULL(__mptr) ? ERR_CAST(__mptr) :                     \
1013                 ((type *)(__mptr - offsetof(type, member))); })
1014 
1015 
1016 #ifdef CONFIG_FTRACE_MCOUNT_RECORD
1017 # define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
1018 #endif
1019 
1020 
1021 #define VERIFY_OCTAL_PERMISSIONS(perms)                                         \
1022         (BUILD_BUG_ON_ZERO((perms) < 0) +                                       \
1023          BUILD_BUG_ON_ZERO((perms) > 0777) +                                    \
1024                          \
1025          BUILD_BUG_ON_ZERO((((perms) >> 6) & 4) < (((perms) >> 3) & 4)) +       \
1026          BUILD_BUG_ON_ZERO((((perms) >> 3) & 4) < ((perms) & 4)) +              \
1027                                            \
1028          BUILD_BUG_ON_ZERO((((perms) >> 6) & 2) < (((perms) >> 3) & 2)) +       \
1029                          \
1030          BUILD_BUG_ON_ZERO((perms) & 2) +                                       \
1031          (perms))
1032 #endif