// /usr/libexec/gcc/armv7hl-redhat-linux-gnueabi/4.8.0/cc1 -quiet -nostdinc -I /builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include -I arch/arm/include/generated -I include -I /builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi -I arch/arm/include/generated/uapi -I /builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi -I include/generated/uapi -I arch/arm/mach-tegra/include -D __KERNEL__ -D __LINUX_ARM_ARCH__=7 -U arm -D CC_HAVE_ASM_GOTO -D MODULE -D KBUILD_STR(s)=#s -D KBUILD_BASENAME=KBUILD_STR(pata_optidma) -D KBUILD_MODNAME=KBUILD_STR(pata_optidma) -isystem /usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.8.0/include -include /builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/linux/kconfig.h -MD drivers/ata/.pata_optidma.o.d drivers/ata/pata_optidma.c -quiet -dumpbase pata_optidma.c -mlittle-endian -mabi=aapcs-linux -mno-thumb-interwork -marm -march=armv7-a -mfloat-abi=soft -mtune=cortex-a8 -mfpu=vfpv3-d16 -mtls-dialect=gnu -auxbase-strip drivers/ata/pata_optidma.o -g -Os -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror=implicit-function-declaration -Wno-format-security -Wframe-larger-than=1024 -Wno-unused-but-set-variable -Wdeclaration-after-statement -Wno-pointer-sign -p -fno-strict-aliasing -fno-common -fno-delete-null-pointer-checks -fno-dwarf2-cfi-asm -fstack-protector -funwind-tables -fno-strict-overflow -fconserve-stack -o - -frandom-seed=0 # 1 "drivers/ata/pata_optidma.c" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl//" # 1 "" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/linux/kconfig.h" 1 # 1 "include/generated/autoconf.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/linux/kconfig.h" 2 # 1 "" 2 # 1 "drivers/ata/pata_optidma.c" # 25 "drivers/ata/pata_optidma.c" # 1 "include/linux/kernel.h" 1 # 1 "/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.8.0/include/stdarg.h" 1 3 4 # 40 "/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.8.0/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 98 "/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.8.0/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 6 "include/linux/kernel.h" 2 # 1 "include/linux/linkage.h" 1 # 1 "include/linux/compiler.h" 1 # 54 "include/linux/compiler.h" # 1 "include/linux/compiler-gcc.h" 1 # 100 "include/linux/compiler-gcc.h" # 1 "include/linux/compiler-gcc4.h" 1 # 101 "include/linux/compiler-gcc.h" 2 # 55 "include/linux/compiler.h" 2 # 72 "include/linux/compiler.h" struct ftrace_branch_data { const char *func; const char *file; unsigned line; union { struct { unsigned long correct; unsigned long incorrect; }; struct { unsigned long miss; unsigned long hit; }; unsigned long miss_hit[2]; }; }; # 5 "include/linux/linkage.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/linkage.h" 1 # 6 "include/linux/linkage.h" 2 # 7 "include/linux/kernel.h" 2 # 1 "include/linux/stddef.h" 1 # 1 "include/uapi/linux/stddef.h" 1 # 5 "include/linux/stddef.h" 2 enum { false = 0, true = 1 }; # 8 "include/linux/kernel.h" 2 # 1 "include/linux/types.h" 1 # 1 "include/uapi/linux/types.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/types.h" 1 # 1 "include/asm-generic/int-ll64.h" 1 # 10 "include/asm-generic/int-ll64.h" # 1 "include/uapi/asm-generic/int-ll64.h" 1 # 11 "include/uapi/asm-generic/int-ll64.h" # 1 "arch/arm/include/generated/asm/bitsperlong.h" 1 # 1 "include/asm-generic/bitsperlong.h" 1 # 1 "include/uapi/asm-generic/bitsperlong.h" 1 # 5 "include/asm-generic/bitsperlong.h" 2 # 1 "arch/arm/include/generated/asm/bitsperlong.h" 2 # 12 "include/uapi/asm-generic/int-ll64.h" 2 typedef __signed__ char __s8; typedef unsigned char __u8; typedef __signed__ short __s16; typedef unsigned short __u16; typedef __signed__ int __s32; typedef unsigned int __u32; __extension__ typedef __signed__ long long __s64; __extension__ typedef unsigned long long __u64; # 11 "include/asm-generic/int-ll64.h" 2 typedef signed char s8; typedef unsigned char u8; typedef signed short s16; typedef unsigned short u16; typedef signed int s32; typedef unsigned int u32; typedef signed long long s64; typedef unsigned long long u64; # 8 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/types.h" 2 # 1 "arch/arm/include/generated/asm/types.h" 2 # 5 "include/uapi/linux/types.h" 2 # 13 "include/uapi/linux/types.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/posix_types.h" 1 # 24 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/posix_types.h" typedef struct { unsigned long fds_bits[1024 / (8 * sizeof(long))]; } __kernel_fd_set; typedef void (*__kernel_sighandler_t)(int); typedef int __kernel_key_t; typedef int __kernel_mqd_t; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/posix_types.h" 1 # 22 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/posix_types.h" typedef unsigned short __kernel_mode_t; typedef unsigned short __kernel_ipc_pid_t; typedef unsigned short __kernel_uid_t; typedef unsigned short __kernel_gid_t; typedef unsigned short __kernel_old_dev_t; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" 1 # 1 "arch/arm/include/generated/asm/bitsperlong.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" 2 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" typedef long __kernel_long_t; typedef unsigned long __kernel_ulong_t; typedef __kernel_ulong_t __kernel_ino_t; typedef int __kernel_pid_t; # 40 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" typedef __kernel_long_t __kernel_suseconds_t; typedef int __kernel_daddr_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef __kernel_uid_t __kernel_old_uid_t; typedef __kernel_gid_t __kernel_old_gid_t; # 67 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" typedef unsigned int __kernel_size_t; typedef int __kernel_ssize_t; typedef int __kernel_ptrdiff_t; # 78 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/posix_types.h" typedef struct { int val[2]; } __kernel_fsid_t; typedef __kernel_long_t __kernel_off_t; typedef long long __kernel_loff_t; typedef __kernel_long_t __kernel_time_t; typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; # 36 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/posix_types.h" 2 # 36 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/posix_types.h" 2 # 14 "include/uapi/linux/types.h" 2 # 32 "include/uapi/linux/types.h" typedef __u16 __le16; typedef __u16 __be16; typedef __u32 __le32; typedef __u32 __be32; typedef __u64 __le64; typedef __u64 __be64; typedef __u16 __sum16; typedef __u32 __wsum; # 6 "include/linux/types.h" 2 typedef __u32 __kernel_dev_t; typedef __kernel_fd_set fd_set; typedef __kernel_dev_t dev_t; typedef __kernel_ino_t ino_t; typedef __kernel_mode_t mode_t; typedef unsigned short umode_t; typedef __u32 nlink_t; typedef __kernel_off_t off_t; typedef __kernel_pid_t pid_t; typedef __kernel_daddr_t daddr_t; typedef __kernel_key_t key_t; typedef __kernel_suseconds_t suseconds_t; typedef __kernel_timer_t timer_t; typedef __kernel_clockid_t clockid_t; typedef __kernel_mqd_t mqd_t; typedef _Bool bool; typedef __kernel_uid32_t uid_t; typedef __kernel_gid32_t gid_t; typedef __kernel_uid16_t uid16_t; typedef __kernel_gid16_t gid16_t; typedef unsigned long uintptr_t; typedef __kernel_old_uid_t old_uid_t; typedef __kernel_old_gid_t old_gid_t; typedef __kernel_loff_t loff_t; # 54 "include/linux/types.h" typedef __kernel_size_t size_t; typedef __kernel_ssize_t ssize_t; typedef __kernel_ptrdiff_t ptrdiff_t; typedef __kernel_time_t time_t; typedef __kernel_clock_t clock_t; typedef __kernel_caddr_t caddr_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef __u8 u_int8_t; typedef __s8 int8_t; typedef __u16 u_int16_t; typedef __s16 int16_t; typedef __u32 u_int32_t; typedef __s32 int32_t; typedef __u8 uint8_t; typedef __u16 uint16_t; typedef __u32 uint32_t; typedef __u64 uint64_t; typedef __u64 u_int64_t; typedef __s64 int64_t; # 130 "include/linux/types.h" typedef u64 sector_t; typedef u64 blkcnt_t; # 148 "include/linux/types.h" typedef u32 dma_addr_t; # 157 "include/linux/types.h" typedef unsigned gfp_t; typedef unsigned fmode_t; typedef unsigned oom_flags_t; typedef u32 phys_addr_t; typedef phys_addr_t resource_size_t; typedef unsigned long irq_hw_number_t; typedef struct { int counter; } atomic_t; struct list_head { struct list_head *next, *prev; }; struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; struct callback_head { struct callback_head *next; void (*func)(struct callback_head *head); }; # 9 "include/linux/kernel.h" 2 # 1 "include/linux/bitops.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 4 "include/linux/bitops.h" 2 # 13 "include/linux/bitops.h" extern unsigned int __sw_hweight8(unsigned int w); extern unsigned int __sw_hweight16(unsigned int w); extern unsigned int __sw_hweight32(unsigned int w); extern unsigned long __sw_hweight64(__u64 w); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 1 # 27 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" # 1 "include/linux/irqflags.h" 1 # 14 "include/linux/irqflags.h" # 1 "include/linux/typecheck.h" 1 # 15 "include/linux/irqflags.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/irqflags.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" 1 # 13 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/ptrace.h" 1 # 13 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/ptrace.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hwcap.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/hwcap.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hwcap.h" 2 extern unsigned int elf_hwcap; # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/ptrace.h" 2 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" 2 struct pt_regs { unsigned long uregs[18]; }; # 46 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int valid_user_regs(struct pt_regs *regs) { unsigned long mode = regs->uregs[16] & 0x0000001f; regs->uregs[16] &= ~(0x00000040 | 0x00000100); if ((regs->uregs[16] & 0x00000080) == 0) { if (mode == 0x00000010) return 1; if (elf_hwcap & (1 << 3) && mode == 0x00000000) return 1; } regs->uregs[16] &= 0xff000000 | 0x00ff0000 | 0x0000ff00 | 0x00000020 | 0x00000010; if (!(elf_hwcap & (1 << 3))) regs->uregs[16] |= 0x00000010; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long regs_return_value(struct pt_regs *regs) { return regs->uregs[0]; } extern unsigned long profile_pc(struct pt_regs *regs); # 103 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" extern int regs_query_register_offset(const char *name); extern const char *regs_query_register_name(unsigned int offset); extern bool regs_within_kernel_stack(struct pt_regs *regs, unsigned long addr); extern unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n); # 118 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/ptrace.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset) { if (__builtin_expect(!!(offset > (__builtin_offsetof(struct pt_regs,uregs[17]))), 0)) return 0; return *(unsigned long *)((unsigned long)regs + offset); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long kernel_stack_pointer(struct pt_regs *regs) { return regs->uregs[13]; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long user_stack_pointer(struct pt_regs *regs) { return regs->uregs[13]; } # 7 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/irqflags.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long arch_local_irq_save(void) { unsigned long flags; asm volatile( " mrs %0, cpsr @ arch_local_irq_save\n" " cpsid i" : "=r" (flags) : : "memory", "cc"); return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_local_irq_enable(void) { asm volatile( " cpsie i @ arch_local_irq_enable" : : : "memory", "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_local_irq_disable(void) { asm volatile( " cpsid i @ arch_local_irq_disable" : : : "memory", "cc"); } # 128 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/irqflags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long arch_local_save_flags(void) { unsigned long flags; asm volatile( " mrs %0, cpsr @ local_save_flags" : "=r" (flags) : : "memory", "cc"); return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_local_irq_restore(unsigned long flags) { asm volatile( " msr cpsr_c, %0 @ local_irq_restore" : : "r" (flags) : "memory", "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_irqs_disabled_flags(unsigned long flags) { return flags & 0x00000080; } # 16 "include/linux/irqflags.h" 2 # 28 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 37 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ____atomic_set_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *p |= mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ____atomic_clear_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *p &= ~mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ____atomic_change_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *p ^= mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ____atomic_test_and_set_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned int res; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); res = *p; *p = res | mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); return (res & mask) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ____atomic_test_and_clear_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned int res; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); res = *p; *p = res & ~mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); return (res & mask) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ____atomic_test_and_change_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned int res; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); res = *p; *p = res ^ mask; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); return (res & mask) != 0; } # 1 "include/asm-generic/bitops/non-atomic.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 5 "include/asm-generic/bitops/non-atomic.h" 2 # 15 "include/asm-generic/bitops/non-atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __set_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); *p |= mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __clear_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); *p &= ~mask; } # 40 "include/asm-generic/bitops/non-atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __change_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); *p ^= mask; } # 57 "include/asm-generic/bitops/non-atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __test_and_set_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); unsigned long old = *p; *p = old | mask; return (old & mask) != 0; } # 76 "include/asm-generic/bitops/non-atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __test_and_clear_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); unsigned long old = *p; *p = old & ~mask; return (old & mask) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __test_and_change_bit(int nr, volatile unsigned long *addr) { unsigned long mask = (1UL << ((nr) % 32)); unsigned long *p = ((unsigned long *)addr) + ((nr) / 32); unsigned long old = *p; *p = old ^ mask; return (old & mask) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_bit(int nr, const volatile unsigned long *addr) { return 1UL & (addr[((nr) / 32)] >> (nr & (32 -1))); } # 125 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 154 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" extern void _set_bit(int nr, volatile unsigned long * p); extern void _clear_bit(int nr, volatile unsigned long * p); extern void _change_bit(int nr, volatile unsigned long * p); extern int _test_and_set_bit(int nr, volatile unsigned long * p); extern int _test_and_clear_bit(int nr, volatile unsigned long * p); extern int _test_and_change_bit(int nr, volatile unsigned long * p); extern int _find_first_zero_bit_le(const void * p, unsigned size); extern int _find_next_zero_bit_le(const void * p, int size, int offset); extern int _find_first_bit_le(const unsigned long *p, unsigned size); extern int _find_next_bit_le(const unsigned long *p, int size, int offset); extern int _find_first_zero_bit_be(const void * p, unsigned size); extern int _find_next_zero_bit_be(const void * p, int size, int offset); extern int _find_first_bit_be(const unsigned long *p, unsigned size); extern int _find_next_bit_be(const unsigned long *p, int size, int offset); # 227 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int constant_fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) { x <<= 8; r -= 8; } if (!(x & 0xf0000000u)) { x <<= 4; r -= 4; } if (!(x & 0xc0000000u)) { x <<= 2; r -= 2; } if (!(x & 0x80000000u)) { x <<= 1; r -= 1; } return r; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fls(int x) { int ret; if (__builtin_constant_p(x)) return constant_fls(x); asm("clz\t%0, %1" : "=r" (ret) : "r" (x)); ret = 32 - ret; return ret; } # 280 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" # 1 "include/asm-generic/bitops/fls64.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 5 "include/asm-generic/bitops/fls64.h" 2 # 18 "include/asm-generic/bitops/fls64.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) int fls64(__u64 x) { __u32 h = x >> 32; if (h) return fls(h) + 32; return fls(x); } # 281 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/sched.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 6 "include/asm-generic/bitops/sched.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sched_find_first_bit(const unsigned long *b) { if (b[0]) return (({ unsigned long __t = (b[0]); fls(__t & -__t); }) - 1); if (b[1]) return (({ unsigned long __t = (b[1]); fls(__t & -__t); }) - 1) + 32; if (b[2]) return (({ unsigned long __t = (b[2]); fls(__t & -__t); }) - 1) + 64; return (({ unsigned long __t = (b[3]); fls(__t & -__t); }) - 1) + 96; } # 283 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/hweight.h" 1 # 1 "include/asm-generic/bitops/arch_hweight.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 5 "include/asm-generic/bitops/arch_hweight.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int __arch_hweight32(unsigned int w) { return __sw_hweight32(w); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int __arch_hweight16(unsigned int w) { return __sw_hweight16(w); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int __arch_hweight8(unsigned int w) { return __sw_hweight8(w); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __arch_hweight64(__u64 w) { return __sw_hweight64(w); } # 5 "include/asm-generic/bitops/hweight.h" 2 # 1 "include/asm-generic/bitops/const_hweight.h" 1 # 6 "include/asm-generic/bitops/hweight.h" 2 # 284 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/lock.h" 1 # 285 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 308 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" # 1 "include/asm-generic/bitops/le.h" 1 # 1 "arch/arm/include/generated/asm/types.h" 1 # 5 "include/asm-generic/bitops/le.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/byteorder.h" 1 # 21 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/byteorder.h" # 1 "include/linux/byteorder/little_endian.h" 1 # 1 "include/uapi/linux/byteorder/little_endian.h" 1 # 12 "include/uapi/linux/byteorder/little_endian.h" # 1 "include/linux/swab.h" 1 # 1 "include/uapi/linux/swab.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/swab.h" 1 # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/swab.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/swab.h" 1 # 19 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/swab.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __arch_swahb32(__u32 x) { __asm__ ("rev16 %0, %1" : "=r" (x) : "r" (x)); return x; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __arch_swab32(__u32 x) { __asm__ ("rev %0, %1" : "=r" (x) : "r" (x)); return x; } # 7 "include/uapi/linux/swab.h" 2 # 46 "include/uapi/linux/swab.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u16 __fswab16(__u16 val) { return ((__u16)__arch_swahb32(val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswab32(__u32 val) { return __arch_swab32(val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u64 __fswab64(__u64 val) { __u32 h = val >> 32; __u32 l = val & ((1ULL << 32) - 1); return (((__u64)__fswab32(l)) << 32) | ((__u64)(__fswab32(h))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswahw32(__u32 val) { return ((__u32)( (((__u32)(val) & (__u32)0x0000ffffUL) << 16) | (((__u32)(val) & (__u32)0xffff0000UL) >> 16))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswahb32(__u32 val) { return __arch_swahb32(val); } # 154 "include/uapi/linux/swab.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u16 __swab16p(const __u16 *p) { return (__builtin_constant_p((__u16)(*p)) ? ((__u16)( (((__u16)(*p) & (__u16)0x00ffU) << 8) | (((__u16)(*p) & (__u16)0xff00U) >> 8))) : __fswab16(*p)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 __swab32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x000000ffUL) << 24) | (((__u32)(*p) & (__u32)0x0000ff00UL) << 8) | (((__u32)(*p) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(*p) & (__u32)0xff000000UL) >> 24))) : __fswab32(*p)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u64 __swab64p(const __u64 *p) { return (__builtin_constant_p((__u64)(*p)) ? ((__u64)( (((__u64)(*p) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(*p) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(*p) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(*p) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(*p) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(*p) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(*p) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(*p) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(*p)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 __swahw32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x0000ffffUL) << 16) | (((__u32)(*p) & (__u32)0xffff0000UL) >> 16))) : __fswahw32(*p)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 __swahb32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x00ff00ffUL) << 8) | (((__u32)(*p) & (__u32)0xff00ff00UL) >> 8))) : __fswahb32(*p)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __swab16s(__u16 *p) { *p = __swab16p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __swab32s(__u32 *p) { *p = __swab32p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __swab64s(__u64 *p) { *p = __swab64p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __swahw32s(__u32 *p) { *p = __swahw32p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __swahb32s(__u32 *p) { *p = __swahb32p(p); } # 5 "include/linux/swab.h" 2 # 13 "include/uapi/linux/byteorder/little_endian.h" 2 # 43 "include/uapi/linux/byteorder/little_endian.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __le64 __cpu_to_le64p(const __u64 *p) { return ( __le64)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u64 __le64_to_cpup(const __le64 *p) { return ( __u64)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __le32 __cpu_to_le32p(const __u32 *p) { return ( __le32)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 __le32_to_cpup(const __le32 *p) { return ( __u32)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __le16 __cpu_to_le16p(const __u16 *p) { return ( __le16)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u16 __le16_to_cpup(const __le16 *p) { return ( __u16)*p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __be64 __cpu_to_be64p(const __u64 *p) { return ( __be64)__swab64p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u64 __be64_to_cpup(const __be64 *p) { return __swab64p((__u64 *)p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __be32 __cpu_to_be32p(const __u32 *p) { return ( __be32)__swab32p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 __be32_to_cpup(const __be32 *p) { return __swab32p((__u32 *)p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __be16 __cpu_to_be16p(const __u16 *p) { return ( __be16)__swab16p(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 5 "include/linux/byteorder/little_endian.h" 2 # 1 "include/linux/byteorder/generic.h" 1 # 143 "include/linux/byteorder/generic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void le16_add_cpu(__le16 *var, u16 val) { *var = (( __le16)(__u16)((( __u16)(__le16)(*var)) + val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void le32_add_cpu(__le32 *var, u32 val) { *var = (( __le32)(__u32)((( __u32)(__le32)(*var)) + val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void le64_add_cpu(__le64 *var, u64 val) { *var = (( __le64)(__u64)((( __u64)(__le64)(*var)) + val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void be16_add_cpu(__be16 *var, u16 val) { *var = (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val))) ? ((__u16)( (((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)) & (__u16)0xff00U) >> 8))) : __fswab16(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void be32_add_cpu(__be32 *var, u32 val) { *var = (( __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val))) ? ((__u32)( (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x000000ffUL) << 24) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0xff000000UL) >> 24))) : __fswab32(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void be64_add_cpu(__be64 *var, u64 val) { *var = (( __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val))) ? ((__u64)( (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)))); } # 7 "include/linux/byteorder/little_endian.h" 2 # 22 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/byteorder.h" 2 # 6 "include/asm-generic/bitops/le.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long find_next_zero_bit_le(const void *addr, unsigned long size, unsigned long offset) { return _find_next_zero_bit_le(addr,size,offset); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long find_next_bit_le(const void *addr, unsigned long size, unsigned long offset) { return _find_next_bit_le(addr,size,offset); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long find_first_zero_bit_le(const void *addr, unsigned long size) { return _find_first_zero_bit_le(addr,size); } # 52 "include/asm-generic/bitops/le.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_bit_le(int nr, const void *addr) { return test_bit(nr ^ 0, addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_bit_le(int nr, void *addr) { _set_bit(nr ^ 0,addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_bit_le(int nr, void *addr) { _clear_bit(nr ^ 0,addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __set_bit_le(int nr, void *addr) { __set_bit(nr ^ 0, addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __clear_bit_le(int nr, void *addr) { __clear_bit(nr ^ 0, addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_set_bit_le(int nr, void *addr) { return _test_and_set_bit(nr ^ 0,addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_clear_bit_le(int nr, void *addr) { return _test_and_clear_bit(nr ^ 0,addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __test_and_set_bit_le(int nr, void *addr) { return __test_and_set_bit(nr ^ 0, addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __test_and_clear_bit_le(int nr, void *addr) { return __test_and_clear_bit(nr ^ 0, addr); } # 309 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/ext2-atomic-setbit.h" 1 # 314 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bitops.h" 2 # 23 "include/linux/bitops.h" 2 # 46 "include/linux/bitops.h" static __inline__ __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_bitmask_order(unsigned int count) { int order; order = fls(count); return order; } static __inline__ __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_count_order(unsigned int count) { int order; order = fls(count) - 1; if (count & (count - 1)) order++; return order; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long hweight_long(unsigned long w) { return sizeof(w) == 4 ? (__builtin_constant_p(w) ? ((( (!!((w) & (1ULL << 0))) + (!!((w) & (1ULL << 1))) + (!!((w) & (1ULL << 2))) + (!!((w) & (1ULL << 3))) + (!!((w) & (1ULL << 4))) + (!!((w) & (1ULL << 5))) + (!!((w) & (1ULL << 6))) + (!!((w) & (1ULL << 7))) ) + ( (!!(((w) >> 8) & (1ULL << 0))) + (!!(((w) >> 8) & (1ULL << 1))) + (!!(((w) >> 8) & (1ULL << 2))) + (!!(((w) >> 8) & (1ULL << 3))) + (!!(((w) >> 8) & (1ULL << 4))) + (!!(((w) >> 8) & (1ULL << 5))) + (!!(((w) >> 8) & (1ULL << 6))) + (!!(((w) >> 8) & (1ULL << 7))) )) + (( (!!(((w) >> 16) & (1ULL << 0))) + (!!(((w) >> 16) & (1ULL << 1))) + (!!(((w) >> 16) & (1ULL << 2))) + (!!(((w) >> 16) & (1ULL << 3))) + (!!(((w) >> 16) & (1ULL << 4))) + (!!(((w) >> 16) & (1ULL << 5))) + (!!(((w) >> 16) & (1ULL << 6))) + (!!(((w) >> 16) & (1ULL << 7))) ) + ( (!!((((w) >> 16) >> 8) & (1ULL << 0))) + (!!((((w) >> 16) >> 8) & (1ULL << 1))) + (!!((((w) >> 16) >> 8) & (1ULL << 2))) + (!!((((w) >> 16) >> 8) & (1ULL << 3))) + (!!((((w) >> 16) >> 8) & (1ULL << 4))) + (!!((((w) >> 16) >> 8) & (1ULL << 5))) + (!!((((w) >> 16) >> 8) & (1ULL << 6))) + (!!((((w) >> 16) >> 8) & (1ULL << 7))) ))) : __arch_hweight32(w)) : (__builtin_constant_p(w) ? (((( (!!((w) & (1ULL << 0))) + (!!((w) & (1ULL << 1))) + (!!((w) & (1ULL << 2))) + (!!((w) & (1ULL << 3))) + (!!((w) & (1ULL << 4))) + (!!((w) & (1ULL << 5))) + (!!((w) & (1ULL << 6))) + (!!((w) & (1ULL << 7))) ) + ( (!!(((w) >> 8) & (1ULL << 0))) + (!!(((w) >> 8) & (1ULL << 1))) + (!!(((w) >> 8) & (1ULL << 2))) + (!!(((w) >> 8) & (1ULL << 3))) + (!!(((w) >> 8) & (1ULL << 4))) + (!!(((w) >> 8) & (1ULL << 5))) + (!!(((w) >> 8) & (1ULL << 6))) + (!!(((w) >> 8) & (1ULL << 7))) )) + (( (!!(((w) >> 16) & (1ULL << 0))) + (!!(((w) >> 16) & (1ULL << 1))) + (!!(((w) >> 16) & (1ULL << 2))) + (!!(((w) >> 16) & (1ULL << 3))) + (!!(((w) >> 16) & (1ULL << 4))) + (!!(((w) >> 16) & (1ULL << 5))) + (!!(((w) >> 16) & (1ULL << 6))) + (!!(((w) >> 16) & (1ULL << 7))) ) + ( (!!((((w) >> 16) >> 8) & (1ULL << 0))) + (!!((((w) >> 16) >> 8) & (1ULL << 1))) + (!!((((w) >> 16) >> 8) & (1ULL << 2))) + (!!((((w) >> 16) >> 8) & (1ULL << 3))) + (!!((((w) >> 16) >> 8) & (1ULL << 4))) + (!!((((w) >> 16) >> 8) & (1ULL << 5))) + (!!((((w) >> 16) >> 8) & (1ULL << 6))) + (!!((((w) >> 16) >> 8) & (1ULL << 7))) ))) + ((( (!!(((w) >> 32) & (1ULL << 0))) + (!!(((w) >> 32) & (1ULL << 1))) + (!!(((w) >> 32) & (1ULL << 2))) + (!!(((w) >> 32) & (1ULL << 3))) + (!!(((w) >> 32) & (1ULL << 4))) + (!!(((w) >> 32) & (1ULL << 5))) + (!!(((w) >> 32) & (1ULL << 6))) + (!!(((w) >> 32) & (1ULL << 7))) ) + ( (!!((((w) >> 32) >> 8) & (1ULL << 0))) + (!!((((w) >> 32) >> 8) & (1ULL << 1))) + (!!((((w) >> 32) >> 8) & (1ULL << 2))) + (!!((((w) >> 32) >> 8) & (1ULL << 3))) + (!!((((w) >> 32) >> 8) & (1ULL << 4))) + (!!((((w) >> 32) >> 8) & (1ULL << 5))) + (!!((((w) >> 32) >> 8) & (1ULL << 6))) + (!!((((w) >> 32) >> 8) & (1ULL << 7))) )) + (( (!!((((w) >> 32) >> 16) & (1ULL << 0))) + (!!((((w) >> 32) >> 16) & (1ULL << 1))) + (!!((((w) >> 32) >> 16) & (1ULL << 2))) + (!!((((w) >> 32) >> 16) & (1ULL << 3))) + (!!((((w) >> 32) >> 16) & (1ULL << 4))) + (!!((((w) >> 32) >> 16) & (1ULL << 5))) + (!!((((w) >> 32) >> 16) & (1ULL << 6))) + (!!((((w) >> 32) >> 16) & (1ULL << 7))) ) + ( (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 0))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 1))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 2))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 3))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 4))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 5))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 6))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 7))) )))) : __arch_hweight64(w)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u64 rol64(__u64 word, unsigned int shift) { return (word << shift) | (word >> (64 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u64 ror64(__u64 word, unsigned int shift) { return (word >> shift) | (word << (64 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 rol32(__u32 word, unsigned int shift) { return (word << shift) | (word >> (32 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 ror32(__u32 word, unsigned int shift) { return (word >> shift) | (word << (32 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u16 rol16(__u16 word, unsigned int shift) { return (word << shift) | (word >> (16 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u16 ror16(__u16 word, unsigned int shift) { return (word >> shift) | (word << (16 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u8 rol8(__u8 word, unsigned int shift) { return (word << shift) | (word >> (8 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u8 ror8(__u8 word, unsigned int shift) { return (word >> shift) | (word << (8 - shift)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __s32 sign_extend32(__u32 value, int index) { __u8 shift = 31 - index; return (__s32)(value << shift) >> shift; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned fls_long(unsigned long l) { if (sizeof(l) == 4) return fls(l); return fls64(l); } # 175 "include/linux/bitops.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __ffs64(u64 word) { if (((u32)word) == 0UL) return (({ unsigned long __t = ((u32)(word >> 32)); fls(__t & -__t); }) - 1) + 32; return (({ unsigned long __t = ((unsigned long)word); fls(__t & -__t); }) - 1); } # 196 "include/linux/bitops.h" extern unsigned long find_last_bit(const unsigned long *addr, unsigned long size); # 11 "include/linux/kernel.h" 2 # 1 "include/linux/log2.h" 1 # 21 "include/linux/log2.h" extern __attribute__((const, noreturn)) int ____ilog2_NaN(void); # 31 "include/linux/log2.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((const)) int __ilog2_u32(u32 n) { return fls(n) - 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((const)) int __ilog2_u64(u64 n) { return fls64(n) - 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((const)) bool is_power_of_2(unsigned long n) { return (n != 0 && ((n & (n - 1)) == 0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((const)) unsigned long __roundup_pow_of_two(unsigned long n) { return 1UL << fls_long(n - 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((const)) unsigned long __rounddown_pow_of_two(unsigned long n) { return 1UL << (fls_long(n) - 1); } # 12 "include/linux/kernel.h" 2 # 1 "include/linux/printk.h" 1 # 1 "include/linux/init.h" 1 # 138 "include/linux/init.h" typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); extern initcall_t __con_initcall_start[], __con_initcall_end[]; extern initcall_t __security_initcall_start[], __security_initcall_end[]; typedef void (*ctor_fn_t)(void); extern int do_one_initcall(initcall_t fn); extern char __attribute__ ((__section__(".init.data"))) boot_command_line[]; extern char *saved_command_line; extern unsigned int reset_devices; void setup_arch(char **); void prepare_namespace(void); extern void (*late_time_init)(void); extern bool initcall_debug; # 5 "include/linux/printk.h" 2 # 1 "include/linux/kern_levels.h" 1 # 6 "include/linux/printk.h" 2 extern const char linux_banner[]; extern const char linux_proc_banner[]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int printk_get_level(const char *buffer) { if (buffer[0] == '\001' && buffer[1]) { switch (buffer[1]) { case '0' ... '7': case 'd': return buffer[1]; } } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *printk_skip_level(const char *buffer) { if (printk_get_level(buffer)) { switch (buffer[1]) { case '0' ... '7': case 'd': return buffer + 2; } } return buffer; } extern int console_printk[]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void console_silent(void) { (console_printk[0]) = 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void console_verbose(void) { if ((console_printk[0])) (console_printk[0]) = 15; } struct va_format { const char *fmt; va_list *va; }; # 92 "include/linux/printk.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((format(printf, 1, 2))) int no_printk(const char *fmt, ...) { return 0; } extern __attribute__((format(printf, 1, 2))) void early_printk(const char *fmt, ...); extern int printk_needs_cpu(int cpu); extern void printk_tick(void); __attribute__((format(printf, 5, 0))) int vprintk_emit(int facility, int level, const char *dict, size_t dictlen, const char *fmt, va_list args); __attribute__((format(printf, 1, 0))) int vprintk(const char *fmt, va_list args); __attribute__((format(printf, 5, 6))) __attribute__((__cold__)) int printk_emit(int facility, int level, const char *dict, size_t dictlen, const char *fmt, ...); __attribute__((format(printf, 1, 2))) __attribute__((__cold__)) int printk(const char *fmt, ...); __attribute__((format(printf, 1, 2))) __attribute__((__cold__)) int printk_sched(const char *fmt, ...); extern int __printk_ratelimit(const char *func); extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); extern int printk_delay_msec; extern int dmesg_restrict; extern int kptr_restrict; void log_buf_kexec_setup(void); void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) setup_log_buf(int early); # 177 "include/linux/printk.h" extern void dump_stack(void) __attribute__((__cold__)); # 310 "include/linux/printk.h" extern const struct file_operations kmsg_fops; enum { DUMP_PREFIX_NONE, DUMP_PREFIX_ADDRESS, DUMP_PREFIX_OFFSET }; extern void hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, char *linebuf, size_t linebuflen, bool ascii); extern void print_hex_dump(const char *level, const char *prefix_str, int prefix_type, int rowsize, int groupsize, const void *buf, size_t len, bool ascii); extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, const void *buf, size_t len); # 14 "include/linux/kernel.h" 2 # 1 "include/linux/dynamic_debug.h" 1 # 9 "include/linux/dynamic_debug.h" struct _ddebug { const char *modname; const char *function; const char *filename; const char *format; unsigned int lineno:18; # 35 "include/linux/dynamic_debug.h" unsigned int flags:8; } __attribute__((aligned(8))); int ddebug_add_module(struct _ddebug *tab, unsigned int n, const char *modname); extern int ddebug_remove_module(const char *mod_name); extern __attribute__((format(printf, 2, 3))) int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); extern int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *modname); struct device; extern __attribute__((format(printf, 3, 4))) int __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev, const char *fmt, ...); struct net_device; extern __attribute__((format(printf, 3, 4))) int __dynamic_netdev_dbg(struct _ddebug *descriptor, const struct net_device *dev, const char *fmt, ...); # 15 "include/linux/kernel.h" 2 # 1 "include/uapi/linux/kernel.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/sysinfo.h" 1 struct sysinfo { __kernel_long_t uptime; __kernel_ulong_t loads[3]; __kernel_ulong_t totalram; __kernel_ulong_t freeram; __kernel_ulong_t sharedram; __kernel_ulong_t bufferram; __kernel_ulong_t totalswap; __kernel_ulong_t freeswap; __u16 procs; __u16 pad; __kernel_ulong_t totalhigh; __kernel_ulong_t freehigh; __u32 mem_unit; char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)]; }; # 5 "include/uapi/linux/kernel.h" 2 # 17 "include/linux/kernel.h" 2 # 111 "include/linux/kernel.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/div64.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/compiler.h" 1 # 6 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/div64.h" 2 # 63 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/div64.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bug.h" 1 # 59 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bug.h" # 1 "include/asm-generic/bug.h" 1 # 13 "include/asm-generic/bug.h" # 1 "include/linux/kernel.h" 1 # 14 "include/asm-generic/bug.h" 2 struct bug_entry { unsigned long bug_addr; const char *file; unsigned short line; unsigned short flags; }; # 65 "include/asm-generic/bug.h" extern __attribute__((format(printf, 3, 4))) void warn_slowpath_fmt(const char *file, const int line, const char *fmt, ...); extern __attribute__((format(printf, 4, 5))) void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint, const char *fmt, ...); extern void warn_slowpath_null(const char *file, const int line); # 60 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bug.h" 2 struct pt_regs; void die(const char *msg, struct pt_regs *regs, int err); struct siginfo; void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, unsigned long err, unsigned long trap); # 76 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/bug.h" void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *), int sig, int code, const char *name); void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *), int sig, int code, const char *name); extern void c_backtrace(unsigned long fp, int pmode); struct mm_struct; extern void show_pte(struct mm_struct *mm, unsigned long addr); extern void __show_regs(struct pt_regs *); # 64 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/div64.h" 2 # 112 "include/linux/kernel.h" 2 # 140 "include/linux/kernel.h" struct completion; struct pt_regs; struct user; extern int _cond_resched(void); # 166 "include/linux/kernel.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __might_sleep(const char *file, int line, int preempt_offset) { } # 199 "include/linux/kernel.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void might_fault(void) { do { _cond_resched(); } while (0); } extern struct atomic_notifier_head panic_notifier_list; extern long (*panic_blink)(int state); __attribute__((format(printf, 1, 2))) void panic(const char *fmt, ...) __attribute__((noreturn)) __attribute__((__cold__)); extern void oops_enter(void); extern void oops_exit(void); void print_oops_end_marker(void); extern int oops_may_print(void); void do_exit(long error_code) __attribute__((noreturn)); void complete_and_exit(struct completion *, long) __attribute__((noreturn)); int __attribute__((warn_unused_result)) _kstrtoul(const char *s, unsigned int base, unsigned long *res); int __attribute__((warn_unused_result)) _kstrtol(const char *s, unsigned int base, long *res); int __attribute__((warn_unused_result)) kstrtoull(const char *s, unsigned int base, unsigned long long *res); int __attribute__((warn_unused_result)) kstrtoll(const char *s, unsigned int base, long long *res); # 242 "include/linux/kernel.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtoul(const char *s, unsigned int base, unsigned long *res) { if (sizeof(unsigned long) == sizeof(unsigned long long) && __alignof__(unsigned long) == __alignof__(unsigned long long)) return kstrtoull(s, base, (unsigned long long *)res); else return _kstrtoul(s, base, res); } # 271 "include/linux/kernel.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtol(const char *s, unsigned int base, long *res) { if (sizeof(long) == sizeof(long long) && __alignof__(long) == __alignof__(long long)) return kstrtoll(s, base, (long long *)res); else return _kstrtol(s, base, res); } int __attribute__((warn_unused_result)) kstrtouint(const char *s, unsigned int base, unsigned int *res); int __attribute__((warn_unused_result)) kstrtoint(const char *s, unsigned int base, int *res); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtou64(const char *s, unsigned int base, u64 *res) { return kstrtoull(s, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtos64(const char *s, unsigned int base, s64 *res) { return kstrtoll(s, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtou32(const char *s, unsigned int base, u32 *res) { return kstrtouint(s, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtos32(const char *s, unsigned int base, s32 *res) { return kstrtoint(s, base, res); } int __attribute__((warn_unused_result)) kstrtou16(const char *s, unsigned int base, u16 *res); int __attribute__((warn_unused_result)) kstrtos16(const char *s, unsigned int base, s16 *res); int __attribute__((warn_unused_result)) kstrtou8(const char *s, unsigned int base, u8 *res); int __attribute__((warn_unused_result)) kstrtos8(const char *s, unsigned int base, s8 *res); int __attribute__((warn_unused_result)) kstrtoull_from_user(const char *s, size_t count, unsigned int base, unsigned long long *res); int __attribute__((warn_unused_result)) kstrtoll_from_user(const char *s, size_t count, unsigned int base, long long *res); int __attribute__((warn_unused_result)) kstrtoul_from_user(const char *s, size_t count, unsigned int base, unsigned long *res); int __attribute__((warn_unused_result)) kstrtol_from_user(const char *s, size_t count, unsigned int base, long *res); int __attribute__((warn_unused_result)) kstrtouint_from_user(const char *s, size_t count, unsigned int base, unsigned int *res); int __attribute__((warn_unused_result)) kstrtoint_from_user(const char *s, size_t count, unsigned int base, int *res); int __attribute__((warn_unused_result)) kstrtou16_from_user(const char *s, size_t count, unsigned int base, u16 *res); int __attribute__((warn_unused_result)) kstrtos16_from_user(const char *s, size_t count, unsigned int base, s16 *res); int __attribute__((warn_unused_result)) kstrtou8_from_user(const char *s, size_t count, unsigned int base, u8 *res); int __attribute__((warn_unused_result)) kstrtos8_from_user(const char *s, size_t count, unsigned int base, s8 *res); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtou64_from_user(const char *s, size_t count, unsigned int base, u64 *res) { return kstrtoull_from_user(s, count, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtos64_from_user(const char *s, size_t count, unsigned int base, s64 *res) { return kstrtoll_from_user(s, count, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtou32_from_user(const char *s, size_t count, unsigned int base, u32 *res) { return kstrtouint_from_user(s, count, base, res); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kstrtos32_from_user(const char *s, size_t count, unsigned int base, s32 *res) { return kstrtoint_from_user(s, count, base, res); } extern unsigned long simple_strtoul(const char *,char **,unsigned int); extern long simple_strtol(const char *,char **,unsigned int); extern unsigned long long simple_strtoull(const char *,char **,unsigned int); extern long long simple_strtoll(const char *,char **,unsigned int); extern int num_to_str(char *buf, int size, unsigned long long num); extern __attribute__((format(printf, 2, 3))) int sprintf(char *buf, const char * fmt, ...); extern __attribute__((format(printf, 2, 0))) int vsprintf(char *buf, const char *, va_list); extern __attribute__((format(printf, 3, 4))) int snprintf(char *buf, size_t size, const char *fmt, ...); extern __attribute__((format(printf, 3, 0))) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); extern __attribute__((format(printf, 3, 4))) int scnprintf(char *buf, size_t size, const char *fmt, ...); extern __attribute__((format(printf, 3, 0))) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); extern __attribute__((format(printf, 2, 3))) char *kasprintf(gfp_t gfp, const char *fmt, ...); extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); extern __attribute__((format(scanf, 2, 3))) int sscanf(const char *, const char *, ...); extern __attribute__((format(scanf, 2, 0))) int vsscanf(const char *, const char *, va_list); extern int get_option(char **str, int *pint); extern char *get_options(const char *str, int nints, int *ints); extern unsigned long long memparse(const char *ptr, char **retptr); extern int core_kernel_text(unsigned long addr); extern int core_kernel_data(unsigned long addr); extern int __kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr); extern int func_ptr_is_kernel_text(void *ptr); struct pid; extern struct pid *session_of_pgrp(struct pid *pgrp); unsigned long int_sqrt(unsigned long); extern void bust_spinlocks(int yes); extern void wake_up_klogd(void); extern int oops_in_progress; extern int panic_timeout; extern int panic_on_oops; extern int panic_on_unrecovered_nmi; extern int panic_on_io_nmi; extern int sysctl_panic_on_stackoverflow; extern const char *print_tainted(void); extern void add_taint(unsigned flag); extern int test_taint(unsigned flag); extern unsigned long get_taint(void); extern int root_mountflags; extern bool early_boot_irqs_disabled; extern enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, } system_state; # 431 "include/linux/kernel.h" extern const char hex_asc[]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) char *hex_byte_pack(char *buf, u8 byte) { *buf++ = hex_asc[((byte) & 0xf0) >> 4]; *buf++ = hex_asc[((byte) & 0x0f)]; return buf; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) char * pack_hex_byte(char *buf, u8 byte) { return hex_byte_pack(buf, byte); } extern int hex_to_bin(char ch); extern int __attribute__((warn_unused_result)) hex2bin(u8 *dst, const char *src, size_t count); # 471 "include/linux/kernel.h" void tracing_off_permanent(void); enum ftrace_dump_mode { DUMP_NONE, DUMP_ALL, DUMP_ORIG, }; void tracing_on(void); void tracing_off(void); int tracing_is_on(void); extern void tracing_start(void); extern void tracing_stop(void); extern void ftrace_off_permanent(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((format(printf, 1, 2))) void ____trace_printk_check_format(const char *fmt, ...) { } # 532 "include/linux/kernel.h" extern __attribute__((format(printf, 2, 3))) int __trace_bprintk(unsigned long ip, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int __trace_printk(unsigned long ip, const char *fmt, ...); extern void trace_dump_stack(void); # 557 "include/linux/kernel.h" extern int __ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap); extern int __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap); extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); # 734 "include/linux/kernel.h" extern int do_sysinfo(struct sysinfo *info); # 26 "drivers/ata/pata_optidma.c" 2 # 1 "include/linux/module.h" 1 # 9 "include/linux/module.h" # 1 "include/linux/list.h" 1 # 1 "include/linux/poison.h" 1 # 7 "include/linux/list.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/const.h" 1 # 8 "include/linux/list.h" 2 # 24 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } # 47 "include/linux/list.h" extern void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next); # 60 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 74 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } # 86 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; } # 111 "include/linux/list.h" extern void __list_del_entry(struct list_head *entry); extern void list_del(struct list_head *entry); # 122 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_replace(struct list_head *old, struct list_head *new) { new->next = old->next; new->next->prev = new; new->prev = old->prev; new->prev->next = new; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_replace_init(struct list_head *old, struct list_head *new) { list_replace(old, new); INIT_LIST_HEAD(old); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_del_init(struct list_head *entry) { __list_del_entry(entry); INIT_LIST_HEAD(entry); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_move(struct list_head *list, struct list_head *head) { __list_del_entry(list); list_add(list, head); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_move_tail(struct list_head *list, struct list_head *head) { __list_del_entry(list); list_add_tail(list, head); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int list_is_last(const struct list_head *list, const struct list_head *head) { return list->next == head; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int list_empty(const struct list_head *head) { return head->next == head; } # 204 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int list_empty_careful(const struct list_head *head) { struct list_head *next = head->next; return (next == head) && (next == head->prev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_rotate_left(struct list_head *head) { struct list_head *first; if (!list_empty(head)) { first = head->next; list_move_tail(first, head); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int list_is_singular(const struct list_head *head) { return !list_empty(head) && (head->next == head->prev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry) { struct list_head *new_first = entry->next; list->next = head->next; list->next->prev = list; list->prev = entry; entry->next = list; head->next = new_first; new_first->prev = head; } # 259 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry) { if (list_empty(head)) return; if (list_is_singular(head) && (head->next != entry && head != entry)) return; if (entry == head) INIT_LIST_HEAD(list); else __list_cut_position(list, head, entry); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __list_splice(const struct list_head *list, struct list_head *prev, struct list_head *next) { struct list_head *first = list->next; struct list_head *last = list->prev; first->prev = prev; prev->next = first; last->next = next; next->prev = last; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_splice(const struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head, head->next); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_splice_tail(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head->prev, head); } # 318 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_splice_init(struct list_head *list, struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head, head->next); INIT_LIST_HEAD(list); } } # 335 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_splice_tail_init(struct list_head *list, struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head->prev, head); INIT_LIST_HEAD(list); } } # 570 "include/linux/list.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void INIT_HLIST_NODE(struct hlist_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hlist_unhashed(const struct hlist_node *h) { return !h->pprev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hlist_empty(const struct hlist_head *h) { return !h->first; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __hlist_del(struct hlist_node *n) { struct hlist_node *next = n->next; struct hlist_node **pprev = n->pprev; *pprev = next; if (next) next->pprev = pprev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_del(struct hlist_node *n) { __hlist_del(n); n->next = ((void *) 0x00100100 + 0); n->pprev = ((void *) 0x00200200 + 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_del_init(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); INIT_HLIST_NODE(n); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_head(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; if (first) first->pprev = &n->next; h->first = n; n->pprev = &h->first; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_before(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; next->pprev = &n->next; *(n->pprev) = n; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_after(struct hlist_node *n, struct hlist_node *next) { next->next = n->next; n->next = next; next->pprev = &n->next; if(next->next) next->next->pprev = &next->next; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_fake(struct hlist_node *n) { n->pprev = &n->next; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_move_list(struct hlist_head *old, struct hlist_head *new) { new->first = old->first; if (new->first) new->first->pprev = &new->first; old->first = ((void *)0); } # 10 "include/linux/module.h" 2 # 1 "include/linux/stat.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/stat.h" 1 struct __old_kernel_stat { unsigned short st_dev; unsigned short st_ino; unsigned short st_mode; unsigned short st_nlink; unsigned short st_uid; unsigned short st_gid; unsigned short st_rdev; unsigned long st_size; unsigned long st_atime; unsigned long st_mtime; unsigned long st_ctime; }; struct stat { unsigned long st_dev; unsigned long st_ino; unsigned short st_mode; unsigned short st_nlink; unsigned short st_uid; unsigned short st_gid; unsigned long st_rdev; unsigned long st_size; unsigned long st_blksize; unsigned long st_blocks; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long __unused4; unsigned long __unused5; }; struct stat64 { unsigned long long st_dev; unsigned char __pad0[4]; unsigned long __st_ino; unsigned int st_mode; unsigned int st_nlink; unsigned long st_uid; unsigned long st_gid; unsigned long long st_rdev; unsigned char __pad3[4]; long long st_size; unsigned long st_blksize; unsigned long long st_blocks; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long long st_ino; }; # 6 "include/linux/stat.h" 2 # 1 "include/uapi/linux/stat.h" 1 # 7 "include/linux/stat.h" 2 # 18 "include/linux/stat.h" # 1 "include/linux/time.h" 1 # 1 "include/linux/cache.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cache.h" 1 # 6 "include/linux/cache.h" 2 # 5 "include/linux/time.h" 2 # 1 "include/linux/seqlock.h" 1 # 29 "include/linux/seqlock.h" # 1 "include/linux/spinlock.h" 1 # 50 "include/linux/spinlock.h" # 1 "include/linux/preempt.h" 1 # 9 "include/linux/preempt.h" # 1 "include/linux/thread_info.h" 1 # 11 "include/linux/thread_info.h" # 1 "include/linux/bug.h" 1 enum bug_trap_type { BUG_TRAP_TYPE_NONE = 0, BUG_TRAP_TYPE_WARN = 1, BUG_TRAP_TYPE_BUG = 2, }; struct pt_regs; # 59 "include/linux/bug.h" extern int __build_bug_on_failed; # 86 "include/linux/bug.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_warning_bug(const struct bug_entry *bug) { return bug->flags & (1 << 0); } const struct bug_entry *find_bug(unsigned long bugaddr); enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs); int is_valid_bugaddr(unsigned long addr); # 12 "include/linux/thread_info.h" 2 struct timespec; struct compat_timespec; struct restart_block { long (*fn)(struct restart_block *); union { struct { u32 *uaddr; u32 val; u32 flags; u32 bitset; u64 time; u32 *uaddr2; } futex; struct { clockid_t clockid; struct timespec *rmtp; u64 expires; } nanosleep; struct { struct pollfd *ufds; int nfds; int has_timeout; unsigned long tv_sec; unsigned long tv_nsec; } poll; }; }; extern long do_no_restart_syscall(struct restart_block *parm); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/fpstate.h" 1 # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/fpstate.h" struct vfp_hard_struct { __u64 fpregs[32]; __u32 fpexc; __u32 fpscr; __u32 fpinst; __u32 fpinst2; __u32 cpu; }; union vfp_state { struct vfp_hard_struct hard; }; extern void vfp_flush_thread(union vfp_state *); extern void vfp_release_thread(union vfp_state *); struct fp_hard_struct { unsigned int save[35]; }; struct fp_soft_struct { unsigned int save[35]; }; struct iwmmxt_struct { unsigned int save[0x98 / sizeof(unsigned int)]; }; union fp_state { struct fp_hard_struct hard; struct fp_soft_struct soft; }; struct crunch_state { unsigned int mvdx[16][2]; unsigned int mvax[4][3]; unsigned int dspsc[2]; }; # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" 2 struct task_struct; struct exec_domain; # 1 "arch/arm/include/generated/asm/types.h" 1 # 28 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/domain.h" 1 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/domain.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/barrier.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/outercache.h" 1 # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/outercache.h" struct outer_cache_fns { void (*inv_range)(unsigned long, unsigned long); void (*clean_range)(unsigned long, unsigned long); void (*flush_range)(unsigned long, unsigned long); void (*flush_all)(void); void (*inv_all)(void); void (*disable)(void); void (*sync)(void); void (*set_debug)(unsigned long); void (*resume)(void); }; extern struct outer_cache_fns outer_cache; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_inv_range(phys_addr_t start, phys_addr_t end) { if (outer_cache.inv_range) outer_cache.inv_range(start, end); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_clean_range(phys_addr_t start, phys_addr_t end) { if (outer_cache.clean_range) outer_cache.clean_range(start, end); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_flush_range(phys_addr_t start, phys_addr_t end) { if (outer_cache.flush_range) outer_cache.flush_range(start, end); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_flush_all(void) { if (outer_cache.flush_all) outer_cache.flush_all(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_inv_all(void) { if (outer_cache.inv_all) outer_cache.inv_all(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_disable(void) { if (outer_cache.disable) outer_cache.disable(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_resume(void) { if (outer_cache.resume) outer_cache.resume(); } # 99 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/outercache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void outer_sync(void) { if (outer_cache.sync) outer_cache.sync(); } # 6 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/barrier.h" 2 # 15 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/domain.h" 2 # 81 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/domain.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_domain(unsigned val) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void modify_domain(unsigned dom, unsigned type) { } # 29 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" 2 typedef unsigned long mm_segment_t; struct cpu_context_save { __u32 r4; __u32 r5; __u32 r6; __u32 r7; __u32 r8; __u32 r9; __u32 sl; __u32 fp; __u32 sp; __u32 pc; __u32 extra[2]; }; struct thread_info { unsigned long flags; int preempt_count; mm_segment_t addr_limit; struct task_struct *task; struct exec_domain *exec_domain; __u32 cpu; __u32 cpu_domain; struct cpu_context_save cpu_context; __u32 syscall; __u8 used_cp[16]; unsigned long tp_value; union fp_state fpstate __attribute__((aligned(8))); union vfp_state vfpstate; unsigned long thumbee_state; struct restart_block restart_block; }; # 94 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct thread_info *current_thread_info(void) __attribute__((__const__)); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct thread_info *current_thread_info(void) { register unsigned long sp asm ("sp"); return (struct thread_info *)(sp & ~(8192 - 1)); } # 109 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/thread_info.h" extern void crunch_task_disable(struct thread_info *); extern void crunch_task_copy(struct thread_info *, void *); extern void crunch_task_restore(struct thread_info *, void *); extern void crunch_task_release(struct thread_info *); extern void iwmmxt_task_disable(struct thread_info *); extern void iwmmxt_task_copy(struct thread_info *, void *); extern void iwmmxt_task_restore(struct thread_info *, void *); extern void iwmmxt_task_release(struct thread_info *); extern void iwmmxt_task_switch(struct thread_info *); extern void vfp_sync_hwstate(struct thread_info *); extern void vfp_flush_hwstate(struct thread_info *); struct user_vfp; struct user_vfp_exc; extern int vfp_preserve_user_clear_hwstate(struct user_vfp *, struct user_vfp_exc *); extern int vfp_restore_user_hwstate(struct user_vfp *, struct user_vfp_exc *); # 55 "include/linux/thread_info.h" 2 # 71 "include/linux/thread_info.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_ti_thread_flag(struct thread_info *ti, int flag) { _set_bit(flag,(unsigned long *)&ti->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_ti_thread_flag(struct thread_info *ti, int flag) { _clear_bit(flag,(unsigned long *)&ti->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) { return _test_and_set_bit(flag,(unsigned long *)&ti->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) { return _test_and_clear_bit(flag,(unsigned long *)&ti->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_ti_thread_flag(struct thread_info *ti, int flag) { return test_bit(flag, (unsigned long *)&ti->flags); } # 128 "include/linux/thread_info.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_restore_sigmask(void) { set_ti_thread_flag(current_thread_info(), 20); ({ int __ret_warn_on = !!(!test_ti_thread_flag(current_thread_info(), 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/thread_info.h", 131); __builtin_expect(!!(__ret_warn_on), 0); }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_restore_sigmask(void) { clear_ti_thread_flag(current_thread_info(), 20); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool test_restore_sigmask(void) { return test_ti_thread_flag(current_thread_info(), 20); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool test_and_clear_restore_sigmask(void) { return test_and_clear_ti_thread_flag(current_thread_info(), 20); } # 10 "include/linux/preempt.h" 2 # 51 "include/linux/spinlock.h" 2 # 1 "include/linux/stringify.h" 1 # 57 "include/linux/spinlock.h" 2 # 1 "include/linux/bottom_half.h" 1 extern void local_bh_disable(void); extern void _local_bh_enable(void); extern void local_bh_enable(void); extern void local_bh_enable_ip(unsigned long ip); # 58 "include/linux/spinlock.h" 2 # 81 "include/linux/spinlock.h" # 1 "include/linux/spinlock_types.h" 1 # 13 "include/linux/spinlock_types.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock_types.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock_types.h" typedef struct { union { u32 slock; struct __raw_tickets { u16 owner; u16 next; } tickets; }; } arch_spinlock_t; typedef struct { volatile unsigned int lock; } arch_rwlock_t; # 14 "include/linux/spinlock_types.h" 2 # 1 "include/linux/lockdep.h" 1 # 12 "include/linux/lockdep.h" struct task_struct; struct lockdep_map; extern int prove_locking; extern int lock_stat; # 368 "include/linux/lockdep.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lockdep_off(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lockdep_on(void) { } # 409 "include/linux/lockdep.h" struct lock_class_key { }; # 463 "include/linux/lockdep.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void print_irqtrace_events(struct task_struct *curr) { } # 19 "include/linux/spinlock_types.h" 2 typedef struct raw_spinlock { arch_spinlock_t raw_lock; # 32 "include/linux/spinlock_types.h" } raw_spinlock_t; # 64 "include/linux/spinlock_types.h" typedef struct spinlock { union { struct raw_spinlock rlock; # 75 "include/linux/spinlock_types.h" }; } spinlock_t; # 86 "include/linux/spinlock_types.h" # 1 "include/linux/rwlock_types.h" 1 # 11 "include/linux/rwlock_types.h" typedef struct { arch_rwlock_t raw_lock; # 23 "include/linux/rwlock_types.h" } rwlock_t; # 87 "include/linux/spinlock_types.h" 2 # 82 "include/linux/spinlock.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" 1 # 22 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hw_breakpoint.h" 1 struct task_struct; struct arch_hw_breakpoint_ctrl { u32 __reserved : 9, mismatch : 1, : 9, len : 8, type : 2, privilege : 2, enabled : 1; }; struct arch_hw_breakpoint { u32 address; u32 trigger; struct arch_hw_breakpoint_ctrl step_ctrl; struct arch_hw_breakpoint_ctrl ctrl; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 encode_ctrl_reg(struct arch_hw_breakpoint_ctrl ctrl) { return (ctrl.mismatch << 22) | (ctrl.len << 5) | (ctrl.type << 3) | (ctrl.privilege << 1) | ctrl.enabled; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void decode_ctrl_reg(u32 reg, struct arch_hw_breakpoint_ctrl *ctrl) { ctrl->enabled = reg & 0x1; reg >>= 1; ctrl->privilege = reg & 0x3; reg >>= 2; ctrl->type = reg & 0x3; reg >>= 2; ctrl->len = reg & 0xff; reg >>= 17; ctrl->mismatch = reg & 0x1; } # 109 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hw_breakpoint.h" struct notifier_block; struct perf_event; struct pmu; extern struct pmu perf_ops_bp; extern int arch_bp_generic_fields(struct arch_hw_breakpoint_ctrl ctrl, int *gen_len, int *gen_type); extern int arch_check_bp_in_kernelspace(struct perf_event *bp); extern int arch_validate_hwbkpt_settings(struct perf_event *bp); extern int hw_breakpoint_exceptions_notify(struct notifier_block *unused, unsigned long val, void *data); extern u8 arch_get_debug_arch(void); extern u8 arch_get_max_wp_len(void); extern void clear_ptrace_hw_breakpoint(struct task_struct *tsk); int arch_install_hw_breakpoint(struct perf_event *bp); void arch_uninstall_hw_breakpoint(struct perf_event *bp); void hw_breakpoint_pmu_read(struct perf_event *bp); int hw_breakpoint_slots(int type); # 23 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" 2 # 1 "arch/arm/include/generated/asm/types.h" 1 # 25 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" 2 struct debug_info { struct perf_event *hbp[(16 + 16)]; }; struct thread_struct { unsigned long address; unsigned long trap_no; unsigned long error_code; struct debug_info debug; }; # 75 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" struct task_struct; extern void release_thread(struct task_struct *); unsigned long get_wchan(struct task_struct *p); # 100 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/processor.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void prefetch(const void *ptr) { __asm__ __volatile__( "pld\t%a0" : : "p" (ptr) : "cc"); } # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" 2 # 45 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dsb_sev(void) { __asm__ __volatile__ ( "dsb\n" "9998: " "sev" "\n" " .pushsection \".alt.smp.init\", \"a\"\n" " .long 9998b\n" " " "nop" "\n" " .popsection\n" ); } # 74 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_spin_lock(arch_spinlock_t *lock) { unsigned long tmp; u32 newval; arch_spinlock_t lockval; __asm__ __volatile__( "1: ldrex %0, [%3]\n" " add %1, %0, %4\n" " strex %2, %1, [%3]\n" " teq %2, #0\n" " bne 1b" : "=&r" (lockval), "=&r" (newval), "=&r" (tmp) : "r" (&lock->slock), "I" (1 << 16) : "cc"); while (lockval.tickets.next != lockval.tickets.owner) { __asm__ __volatile__ ("wfe" : : : "memory"); lockval.tickets.owner = (*(volatile typeof(lock->tickets.owner) *)&(lock->tickets.owner)); } __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_spin_trylock(arch_spinlock_t *lock) { unsigned long tmp; u32 slock; __asm__ __volatile__( " ldrex %0, [%2]\n" " subs %1, %0, %0, ror #16\n" " addeq %0, %0, %3\n" " strexeq %1, %0, [%2]" : "=&r" (slock), "=&r" (tmp) : "r" (&lock->slock), "I" (1 << 16) : "cc"); if (tmp == 0) { __asm__ __volatile__ ("dmb" : : : "memory"); return 1; } else { return 0; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_spin_unlock(arch_spinlock_t *lock) { unsigned long tmp; u32 slock; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__( " mov %1, #1\n" "1: ldrex %0, [%2]\n" " uadd16 %0, %0, %1\n" " strex %1, %0, [%2]\n" " teq %1, #0\n" " bne 1b" : "=&r" (slock), "=&r" (tmp) : "r" (&lock->slock) : "cc"); dsb_sev(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_spin_is_locked(arch_spinlock_t *lock) { struct __raw_tickets tickets = (*(volatile typeof(lock->tickets) *)&(lock->tickets)); return tickets.owner != tickets.next; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_spin_is_contended(arch_spinlock_t *lock) { struct __raw_tickets tickets = (*(volatile typeof(lock->tickets) *)&(lock->tickets)); return (tickets.next - tickets.owner) > 1; } # 162 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_write_lock(arch_rwlock_t *rw) { unsigned long tmp; __asm__ __volatile__( "1: ldrex %0, [%1]\n" " teq %0, #0\n" "9998: " "wfe" "ne" "\n" " .pushsection \".alt.smp.init\", \"a\"\n" " .long 9998b\n" " " "nop" "\n" " .popsection\n" " strexeq %0, %2, [%1]\n" " teq %0, #0\n" " bne 1b" : "=&r" (tmp) : "r" (&rw->lock), "r" (0x80000000) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_write_trylock(arch_rwlock_t *rw) { unsigned long tmp; __asm__ __volatile__( " ldrex %0, [%1]\n" " teq %0, #0\n" " strexeq %0, %2, [%1]" : "=&r" (tmp) : "r" (&rw->lock), "r" (0x80000000) : "cc"); if (tmp == 0) { __asm__ __volatile__ ("dmb" : : : "memory"); return 1; } else { return 0; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_write_unlock(arch_rwlock_t *rw) { __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__( "str %1, [%0]\n" : : "r" (&rw->lock), "r" (0) : "cc"); dsb_sev(); } # 228 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_read_lock(arch_rwlock_t *rw) { unsigned long tmp, tmp2; __asm__ __volatile__( "1: ldrex %0, [%2]\n" " adds %0, %0, #1\n" " strexpl %1, %0, [%2]\n" "9998: " "wfe" "mi" "\n" " .pushsection \".alt.smp.init\", \"a\"\n" " .long 9998b\n" " " "nop" "\n" " .popsection\n" " rsbpls %0, %1, #0\n" " bmi 1b" : "=&r" (tmp), "=&r" (tmp2) : "r" (&rw->lock) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_read_unlock(arch_rwlock_t *rw) { unsigned long tmp, tmp2; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__( "1: ldrex %0, [%2]\n" " sub %0, %0, #1\n" " strex %1, %0, [%2]\n" " teq %1, #0\n" " bne 1b" : "=&r" (tmp), "=&r" (tmp2) : "r" (&rw->lock) : "cc"); if (tmp == 0) dsb_sev(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int arch_read_trylock(arch_rwlock_t *rw) { unsigned long tmp, tmp2 = 1; __asm__ __volatile__( " ldrex %0, [%2]\n" " adds %0, %0, #1\n" " strexpl %1, %0, [%2]\n" : "=&r" (tmp), "+r" (tmp2) : "r" (&rw->lock) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return tmp2 == 0; } # 88 "include/linux/spinlock.h" 2 # 122 "include/linux/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void smp_mb__after_lock(void) { __asm__ __volatile__ ("dmb" : : : "memory"); } # 137 "include/linux/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void do_raw_spin_lock(raw_spinlock_t *lock) { (void)0; arch_spin_lock(&lock->raw_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void do_raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long *flags) { (void)0; arch_spin_lock(&lock->raw_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int do_raw_spin_trylock(raw_spinlock_t *lock) { return arch_spin_trylock(&(lock)->raw_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void do_raw_spin_unlock(raw_spinlock_t *lock) { arch_spin_unlock(&lock->raw_lock); (void)0; } # 257 "include/linux/spinlock.h" # 1 "include/linux/rwlock.h" 1 # 258 "include/linux/spinlock.h" 2 # 1 "include/linux/spinlock_api_smp.h" 1 # 18 "include/linux/spinlock_api_smp.h" int in_lock_functions(unsigned long addr); void __attribute__((section(".spinlock.text"))) _raw_spin_lock(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nest_lock(raw_spinlock_t *lock, struct lockdep_map *map) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_bh(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_irq(raw_spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave(raw_spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave_nested(raw_spinlock_t *lock, int subclass) ; int __attribute__((section(".spinlock.text"))) _raw_spin_trylock(raw_spinlock_t *lock); int __attribute__((section(".spinlock.text"))) _raw_spin_trylock_bh(raw_spinlock_t *lock); void __attribute__((section(".spinlock.text"))) _raw_spin_unlock(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_bh(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irq(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) ; # 86 "include/linux/spinlock_api_smp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __raw_spin_trylock(raw_spinlock_t *lock) { do { } while (0); if (do_raw_spin_trylock(lock)) { do { } while (0); return 1; } do { } while (0); return 0; } # 104 "include/linux/spinlock_api_smp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); do { } while (0); do { } while (0); # 119 "include/linux/spinlock_api_smp.h" do_raw_spin_lock_flags(lock, &flags); return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_lock_irq(raw_spinlock_t *lock) { do { arch_local_irq_disable(); do { } while (0); } while (0); do { } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_lock_bh(raw_spinlock_t *lock) { local_bh_disable(); do { } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_lock(raw_spinlock_t *lock) { do { } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_unlock(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) { do { } while (0); do_raw_spin_unlock(lock); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_unlock_irq(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { do { } while (0); arch_local_irq_enable(); } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_spin_unlock_bh(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __raw_spin_trylock_bh(raw_spinlock_t *lock) { local_bh_disable(); do { } while (0); if (do_raw_spin_trylock(lock)) { do { } while (0); return 1; } do { } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); return 0; } # 1 "include/linux/rwlock_api_smp.h" 1 # 18 "include/linux/rwlock_api_smp.h" void __attribute__((section(".spinlock.text"))) _raw_read_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_lock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock_irq(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_read_lock_irqsave(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_write_lock_irqsave(rwlock_t *lock) ; int __attribute__((section(".spinlock.text"))) _raw_read_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _raw_write_trylock(rwlock_t *lock); void __attribute__((section(".spinlock.text"))) _raw_read_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; # 117 "include/linux/rwlock_api_smp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __raw_read_trylock(rwlock_t *lock) { do { } while (0); if (arch_read_trylock(&(lock)->raw_lock)) { do { } while (0); return 1; } do { } while (0); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __raw_write_trylock(rwlock_t *lock) { do { } while (0); if (arch_write_trylock(&(lock)->raw_lock)) { do { } while (0); return 1; } do { } while (0); return 0; } # 146 "include/linux/rwlock_api_smp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_lock(rwlock_t *lock) { do { } while (0); do { } while (0); do {(void)0; arch_read_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __raw_read_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); do { } while (0); do { } while (0); do {(void)0; arch_read_lock(&((lock))->raw_lock); } while (0) ; return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_lock_irq(rwlock_t *lock) { do { arch_local_irq_disable(); do { } while (0); } while (0); do { } while (0); do { } while (0); do {(void)0; arch_read_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_lock_bh(rwlock_t *lock) { local_bh_disable(); do { } while (0); do { } while (0); do {(void)0; arch_read_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __raw_write_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); do { } while (0); do { } while (0); do {(void)0; arch_write_lock(&((lock))->raw_lock); } while (0) ; return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_lock_irq(rwlock_t *lock) { do { arch_local_irq_disable(); do { } while (0); } while (0); do { } while (0); do { } while (0); do {(void)0; arch_write_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_lock_bh(rwlock_t *lock) { local_bh_disable(); do { } while (0); do { } while (0); do {(void)0; arch_write_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_lock(rwlock_t *lock) { do { } while (0); do { } while (0); do {(void)0; arch_write_lock(&(lock)->raw_lock); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_unlock(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); (void)0; } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_unlock(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); (void)0; } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); (void)0; } while (0); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_unlock_irq(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); (void)0; } while (0); do { do { } while (0); arch_local_irq_enable(); } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_read_unlock_bh(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); (void)0; } while (0); do { } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); (void)0; } while (0); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_unlock_irq(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); (void)0; } while (0); do { do { } while (0); arch_local_irq_enable(); } while (0); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_write_unlock_bh(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); (void)0; } while (0); do { } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } # 195 "include/linux/spinlock_api_smp.h" 2 # 264 "include/linux/spinlock.h" 2 # 272 "include/linux/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) raw_spinlock_t *spinlock_check(spinlock_t *lock) { return &lock->rlock; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_lock(spinlock_t *lock) { _raw_spin_lock(&lock->rlock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_lock_bh(spinlock_t *lock) { _raw_spin_lock_bh(&lock->rlock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_trylock(spinlock_t *lock) { return (_raw_spin_trylock(&lock->rlock)); } # 308 "include/linux/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_lock_irq(spinlock_t *lock) { _raw_spin_lock_irq(&lock->rlock); } # 323 "include/linux/spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_unlock(spinlock_t *lock) { __raw_spin_unlock(&lock->rlock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_unlock_bh(spinlock_t *lock) { _raw_spin_unlock_bh(&lock->rlock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_unlock_irq(spinlock_t *lock) { __raw_spin_unlock_irq(&lock->rlock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _raw_spin_unlock_irqrestore(&lock->rlock, flags); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_trylock_bh(spinlock_t *lock) { return (_raw_spin_trylock_bh(&lock->rlock)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_trylock_irq(spinlock_t *lock) { return ({ do { arch_local_irq_disable(); do { } while (0); } while (0); (_raw_spin_trylock(&lock->rlock)) ? 1 : ({ do { do { } while (0); arch_local_irq_enable(); } while (0); 0; }); }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void spin_unlock_wait(spinlock_t *lock) { do { while (arch_spin_is_locked(&(&lock->rlock)->raw_lock)) __asm__ __volatile__ ("dmb" : : : "memory"); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_is_locked(spinlock_t *lock) { return arch_spin_is_locked(&(&lock->rlock)->raw_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_is_contended(spinlock_t *lock) { return arch_spin_is_contended(&(&lock->rlock)->raw_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_can_lock(spinlock_t *lock) { return (!arch_spin_is_locked(&(&lock->rlock)->raw_lock)); } # 1 "include/linux/atomic.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" 1 # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cmpxchg.h" 1 # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cmpxchg.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { extern void __bad_xchg(volatile void *, int); unsigned long ret; unsigned int tmp; __asm__ __volatile__ ("dmb" : : : "memory"); switch (size) { case 1: asm volatile("@ __xchg1\n" "1: ldrexb %0, [%3]\n" " strexb %1, %2, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (ret), "=&r" (tmp) : "r" (x), "r" (ptr) : "memory", "cc"); break; case 4: asm volatile("@ __xchg4\n" "1: ldrex %0, [%3]\n" " strex %1, %2, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (ret), "=&r" (tmp) : "r" (x), "r" (ptr) : "memory", "cc"); break; # 94 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cmpxchg.h" default: __bad_xchg(ptr, size), ret = 0; break; } __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } # 1 "include/asm-generic/cmpxchg-local.h" 1 extern unsigned long wrong_size_cmpxchg(volatile void *ptr); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __cmpxchg_local_generic(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long flags, prev; if (size == 8 && sizeof(unsigned long) != 8) wrong_size_cmpxchg(ptr); do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); switch (size) { case 1: prev = *(u8 *)ptr; if (prev == old) *(u8 *)ptr = (u8)new; break; case 2: prev = *(u16 *)ptr; if (prev == old) *(u16 *)ptr = (u16)new; break; case 4: prev = *(u32 *)ptr; if (prev == old) *(u32 *)ptr = (u32)new; break; case 8: prev = *(u64 *)ptr; if (prev == old) *(u64 *)ptr = (u64)new; break; default: wrong_size_cmpxchg(ptr); } do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); return prev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 __cmpxchg64_local_generic(volatile void *ptr, u64 old, u64 new) { u64 prev; unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); prev = *(u64 *)ptr; if (prev == old) *(u64 *)ptr = new; do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); return prev; } # 107 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cmpxchg.h" 2 # 130 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cmpxchg.h" extern void __bad_cmpxchg(volatile void *ptr, int size); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long oldval, res; switch (size) { case 1: do { asm volatile("@ __cmpxchg1\n" " ldrexb %1, [%2]\n" " mov %0, #0\n" " teq %1, %3\n" " strexbeq %0, %4, [%2]\n" : "=&r" (res), "=&r" (oldval) : "r" (ptr), "Ir" (old), "r" (new) : "memory", "cc"); } while (res); break; case 2: do { asm volatile("@ __cmpxchg1\n" " ldrexh %1, [%2]\n" " mov %0, #0\n" " teq %1, %3\n" " strexheq %0, %4, [%2]\n" : "=&r" (res), "=&r" (oldval) : "r" (ptr), "Ir" (old), "r" (new) : "memory", "cc"); } while (res); break; case 4: do { asm volatile("@ __cmpxchg4\n" " ldrex %1, [%2]\n" " mov %0, #0\n" " teq %1, %3\n" " strexeq %0, %4, [%2]\n" : "=&r" (res), "=&r" (oldval) : "r" (ptr), "Ir" (old), "r" (new) : "memory", "cc"); } while (res); break; default: __bad_cmpxchg(ptr, size); oldval = 0; } return oldval; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long ret; __asm__ __volatile__ ("dmb" : : : "memory"); ret = __cmpxchg(ptr, old, new, size); __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __cmpxchg_local(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long ret; switch (size) { default: ret = __cmpxchg(ptr, old, new, size); } return ret; } # 19 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" 2 # 39 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_add(int i, atomic_t *v) { unsigned long tmp; int result; __asm__ __volatile__("@ atomic_add\n" "1: ldrex %0, [%3]\n" " add %0, %0, %4\n" " strex %1, %0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "Ir" (i) : "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_add_return(int i, atomic_t *v) { unsigned long tmp; int result; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic_add_return\n" "1: ldrex %0, [%3]\n" " add %0, %0, %4\n" " strex %1, %0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "Ir" (i) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_sub(int i, atomic_t *v) { unsigned long tmp; int result; __asm__ __volatile__("@ atomic_sub\n" "1: ldrex %0, [%3]\n" " sub %0, %0, %4\n" " strex %1, %0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "Ir" (i) : "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_sub_return(int i, atomic_t *v) { unsigned long tmp; int result; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic_sub_return\n" "1: ldrex %0, [%3]\n" " sub %0, %0, %4\n" " strex %1, %0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "Ir" (i) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_cmpxchg(atomic_t *ptr, int old, int new) { unsigned long oldval, res; __asm__ __volatile__ ("dmb" : : : "memory"); do { __asm__ __volatile__("@ atomic_cmpxchg\n" "ldrex %1, [%3]\n" "mov %0, #0\n" "teq %1, %4\n" "strexeq %0, %5, [%3]\n" : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter) : "r" (&ptr->counter), "Ir" (old), "r" (new) : "cc"); } while (res); __asm__ __volatile__ ("dmb" : : : "memory"); return oldval; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_clear_mask(unsigned long mask, unsigned long *addr) { unsigned long tmp, tmp2; __asm__ __volatile__("@ atomic_clear_mask\n" "1: ldrex %0, [%3]\n" " bic %0, %0, %4\n" " strex %1, %0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (tmp), "=&r" (tmp2), "+Qo" (*addr) : "r" (addr), "Ir" (mask) : "cc"); } # 213 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __atomic_add_unless(atomic_t *v, int a, int u) { int c, old; c = (*(volatile int *)&(v)->counter); while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c) c = old; return c; } # 240 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/atomic.h" typedef struct { u64 __attribute__((aligned(8))) counter; } atomic64_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_read(const atomic64_t *v) { u64 result; __asm__ __volatile__("@ atomic64_read\n" " ldrexd %0, %H0, [%1]" : "=&r" (result) : "r" (&v->counter), "Qo" (v->counter) ); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic64_set(atomic64_t *v, u64 i) { u64 tmp; __asm__ __volatile__("@ atomic64_set\n" "1: ldrexd %0, %H0, [%2]\n" " strexd %0, %3, %H3, [%2]\n" " teq %0, #0\n" " bne 1b" : "=&r" (tmp), "=Qo" (v->counter) : "r" (&v->counter), "r" (i) : "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic64_add(u64 i, atomic64_t *v) { u64 result; unsigned long tmp; __asm__ __volatile__("@ atomic64_add\n" "1: ldrexd %0, %H0, [%3]\n" " adds %0, %0, %4\n" " adc %H0, %H0, %H4\n" " strexd %1, %0, %H0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (i) : "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_add_return(u64 i, atomic64_t *v) { u64 result; unsigned long tmp; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic64_add_return\n" "1: ldrexd %0, %H0, [%3]\n" " adds %0, %0, %4\n" " adc %H0, %H0, %H4\n" " strexd %1, %0, %H0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (i) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic64_sub(u64 i, atomic64_t *v) { u64 result; unsigned long tmp; __asm__ __volatile__("@ atomic64_sub\n" "1: ldrexd %0, %H0, [%3]\n" " subs %0, %0, %4\n" " sbc %H0, %H0, %H4\n" " strexd %1, %0, %H0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (i) : "cc"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_sub_return(u64 i, atomic64_t *v) { u64 result; unsigned long tmp; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic64_sub_return\n" "1: ldrexd %0, %H0, [%3]\n" " subs %0, %0, %4\n" " sbc %H0, %H0, %H4\n" " strexd %1, %0, %H0, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (i) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new) { u64 oldval; unsigned long res; __asm__ __volatile__ ("dmb" : : : "memory"); do { __asm__ __volatile__("@ atomic64_cmpxchg\n" "ldrexd %1, %H1, [%3]\n" "mov %0, #0\n" "teq %1, %4\n" "teqeq %H1, %H4\n" "strexdeq %0, %5, %H5, [%3]" : "=&r" (res), "=&r" (oldval), "+Qo" (ptr->counter) : "r" (&ptr->counter), "r" (old), "r" (new) : "cc"); } while (res); __asm__ __volatile__ ("dmb" : : : "memory"); return oldval; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_xchg(atomic64_t *ptr, u64 new) { u64 result; unsigned long tmp; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic64_xchg\n" "1: ldrexd %0, %H0, [%3]\n" " strexd %1, %4, %H4, [%3]\n" " teq %1, #0\n" " bne 1b" : "=&r" (result), "=&r" (tmp), "+Qo" (ptr->counter) : "r" (&ptr->counter), "r" (new) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 atomic64_dec_if_positive(atomic64_t *v) { u64 result; unsigned long tmp; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic64_dec_if_positive\n" "1: ldrexd %0, %H0, [%3]\n" " subs %0, %0, #1\n" " sbc %H0, %H0, #0\n" " teq %H0, #0\n" " bmi 2f\n" " strexd %1, %0, %H0, [%3]\n" " teq %1, #0\n" " bne 1b\n" "2:" : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter) : "cc"); __asm__ __volatile__ ("dmb" : : : "memory"); return result; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic64_add_unless(atomic64_t *v, u64 a, u64 u) { u64 val; unsigned long tmp; int ret = 1; __asm__ __volatile__ ("dmb" : : : "memory"); __asm__ __volatile__("@ atomic64_add_unless\n" "1: ldrexd %0, %H0, [%4]\n" " teq %0, %5\n" " teqeq %H0, %H5\n" " moveq %1, #0\n" " beq 2f\n" " adds %0, %0, %6\n" " adc %H0, %H0, %H6\n" " strexd %2, %0, %H0, [%4]\n" " teq %2, #0\n" " bne 1b\n" "2:" : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter) : "r" (&v->counter), "r" (u), "r" (a) : "cc"); if (ret) __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } # 5 "include/linux/atomic.h" 2 # 15 "include/linux/atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_add_unless(atomic_t *v, int a, int u) { return __atomic_add_unless(v, a, u) != u; } # 44 "include/linux/atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_inc_not_zero_hint(atomic_t *v, int hint) { int val, c = hint; if (!hint) return atomic_add_unless((v), 1, 0); do { val = atomic_cmpxchg(v, c, c + 1); if (val == c) return 1; c = val; } while (c); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_inc_unless_negative(atomic_t *p) { int v, v1; for (v = 0; v >= 0; v = v1) { v1 = atomic_cmpxchg(p, v, v + 1); if (__builtin_expect(!!(v1 == v), 1)) return 1; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_dec_unless_positive(atomic_t *p) { int v, v1; for (v = 0; v <= 0; v = v1) { v1 = atomic_cmpxchg(p, v, v - 1); if (__builtin_expect(!!(v1 == v), 1)) return 1; } return 0; } # 97 "include/linux/atomic.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_dec_if_positive(atomic_t *v) { int c, old, dec; c = (*(volatile int *)&(v)->counter); for (;;) { dec = c - 1; if (__builtin_expect(!!(dec < 0), 0)) break; old = atomic_cmpxchg((v), c, dec); if (__builtin_expect(!!(old == c), 1)) break; c = old; } return dec; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_or(int i, atomic_t *v) { int old; int new; do { old = (*(volatile int *)&(v)->counter); new = old | i; } while (atomic_cmpxchg(v, old, new) != old); } # 1 "include/asm-generic/atomic-long.h" 1 # 11 "include/asm-generic/atomic-long.h" # 1 "arch/arm/include/generated/asm/types.h" 1 # 12 "include/asm-generic/atomic-long.h" 2 # 141 "include/asm-generic/atomic-long.h" typedef atomic_t atomic_long_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_read(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)(*(volatile int *)&(v)->counter); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_long_set(atomic_long_t *l, long i) { atomic_t *v = (atomic_t *)l; (((v)->counter) = (i)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_long_inc(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_add(1, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_long_dec(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_sub(1, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_long_add(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_add(i, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void atomic_long_sub(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_sub(i, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_long_sub_and_test(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_sub_return(i, v) == 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_long_dec_and_test(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_sub_return(1, v) == 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_long_inc_and_test(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_add_return(1, v) == 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atomic_long_add_negative(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_add_return(i, v) < 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_add_return(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_add_return(i, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_sub_return(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_sub_return(i, v); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_inc_return(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)(atomic_add_return(1, v)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_dec_return(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)(atomic_sub_return(1, v)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long atomic_long_add_unless(atomic_long_t *l, long a, long u) { atomic_t *v = (atomic_t *)l; return (long)atomic_add_unless(v, a, u); } # 128 "include/linux/atomic.h" 2 # 385 "include/linux/spinlock.h" 2 # 393 "include/linux/spinlock.h" extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); # 30 "include/linux/seqlock.h" 2 typedef struct { unsigned sequence; spinlock_t lock; } seqlock_t; # 58 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void write_seqlock(seqlock_t *sl) { spin_lock(&sl->lock); ++sl->sequence; __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void write_sequnlock(seqlock_t *sl) { __asm__ __volatile__ ("dmb" : : : "memory"); sl->sequence++; spin_unlock(&sl->lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int write_tryseqlock(seqlock_t *sl) { int ret = spin_trylock(&sl->lock); if (ret) { ++sl->sequence; __asm__ __volatile__ ("dmb" : : : "memory"); } return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl) { unsigned ret; repeat: ret = (*(volatile typeof(sl->sequence) *)&(sl->sequence)); if (__builtin_expect(!!(ret & 1), 0)) { __asm__ __volatile__ ("dmb" : : : "memory"); goto repeat; } __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned start) { __asm__ __volatile__ ("dmb" : : : "memory"); return __builtin_expect(!!(sl->sequence != start), 0); } # 119 "include/linux/seqlock.h" typedef struct seqcount { unsigned sequence; } seqcount_t; # 139 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned __read_seqcount_begin(const seqcount_t *s) { unsigned ret; repeat: ret = (*(volatile typeof(s->sequence) *)&(s->sequence)); if (__builtin_expect(!!(ret & 1), 0)) { __asm__ __volatile__ ("dmb" : : : "memory"); goto repeat; } return ret; } # 161 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned read_seqcount_begin(const seqcount_t *s) { unsigned ret = __read_seqcount_begin(s); __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } # 182 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned raw_seqcount_begin(const seqcount_t *s) { unsigned ret = (*(volatile typeof(s->sequence) *)&(s->sequence)); __asm__ __volatile__ ("dmb" : : : "memory"); return ret & ~1; } # 203 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __read_seqcount_retry(const seqcount_t *s, unsigned start) { return __builtin_expect(!!(s->sequence != start), 0); } # 218 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int read_seqcount_retry(const seqcount_t *s, unsigned start) { __asm__ __volatile__ ("dmb" : : : "memory"); return __read_seqcount_retry(s, start); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void write_seqcount_begin(seqcount_t *s) { s->sequence++; __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void write_seqcount_end(seqcount_t *s) { __asm__ __volatile__ ("dmb" : : : "memory"); s->sequence++; } # 249 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void write_seqcount_barrier(seqcount_t *s) { __asm__ __volatile__ ("dmb" : : : "memory"); s->sequence+=2; } # 6 "include/linux/time.h" 2 # 1 "include/linux/math64.h" 1 # 53 "include/linux/math64.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) { *remainder = ({ unsigned int __r, __b = (divisor); if (!__builtin_constant_p(__b) || __b == 0 || (7 < 4 && (__b & (__b - 1)) != 0)) { __r = ({ register unsigned int __base asm("r4") = __b; register unsigned long long __n asm("r0") = dividend; register unsigned long long __res asm("r2"); register unsigned int __rem asm("r1"); asm( ".ifnc " "%0" "," "r1" " ; .err ; .endif\n\t" ".ifnc " "%1" "," "r2" " ; .err ; .endif\n\t" ".ifnc " "%2" "," "r0" " ; .err ; .endif\n\t" ".ifnc " "%3" "," "r4" " ; .err ; .endif\n\t" "bl __do_div64" : "=r" (__rem), "=r" (__res) : "r" (__n), "r" (__base) : "ip", "lr", "cc"); dividend = __res; __rem; }); } else if ((__b & (__b - 1)) == 0) { __r = dividend; __r &= (__b - 1); dividend /= __b; } else { unsigned long long __res, __x, __t, __m, __n = dividend; unsigned int __c, __p, __z = 0; __r = __n; __p = 1 << ({ unsigned int __left = (__b), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); __m = (~0ULL / __b) * __p; __m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b; __x = ~0ULL / __b * __b - 1; __res = (__m & 0xffffffff) * (__x & 0xffffffff); __res >>= 32; __res += (__m & 0xffffffff) * (__x >> 32); __t = __res; __res += (__x & 0xffffffff) * (__m >> 32); __t = (__res < __t) ? (1ULL << 32) : 0; __res = (__res >> 32) + __t; __res += (__m >> 32) * (__x >> 32); __res /= __p; if (~0ULL % (__b / (__b & -__b)) == 0) { __n /= (__b & -__b); __m = ~0ULL / (__b / (__b & -__b)); __p = 1; __c = 1; } else if (__res != __x / __b) { __c = 1; __m = (~0ULL / __b) * __p; __m += ((~0ULL % __b + 1) * __p) / __b; } else { unsigned int __bits = -(__m & -__m); __bits |= __m >> 32; __bits = (~__bits) << 1; if (!__bits) { __p /= (__m & -__m); __m /= (__m & -__m); } else { __p >>= ({ unsigned int __left = (__bits), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); __m >>= ({ unsigned int __left = (__bits), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); } __c = 0; } if (!__c) { asm ( "umull %Q0, %R0, %1, %Q2\n\t" "mov %Q0, #0" : "=&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) { __res = __m; asm ( "umlal %Q0, %R0, %Q1, %Q2\n\t" "mov %Q0, #0" : "+&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else { asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" "cmn %Q0, %Q1\n\t" "adcs %R0, %R0, %R1\n\t" "adc %Q0, %3, #0" : "=&r" (__res) : "r" (__m), "r" (__n), "r" (__z) : "cc" ); } if (!(__m & ((1ULL << 63) | (1ULL << 31)))) { asm ( "umlal %R0, %Q0, %R1, %Q2\n\t" "umlal %R0, %Q0, %Q1, %R2\n\t" "mov %R0, #0\n\t" "umlal %Q0, %R0, %R1, %R2" : "+&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else { asm ( "umlal %R0, %Q0, %R2, %Q3\n\t" "umlal %R0, %1, %Q2, %R3\n\t" "mov %R0, #0\n\t" "adds %Q0, %1, %Q0\n\t" "adc %R0, %R0, #0\n\t" "umlal %Q0, %R0, %R2, %R3" : "+&r" (__res), "+&r" (__z) : "r" (__m), "r" (__n) : "cc" ); } __res /= __p; { unsigned int __res0 = __res; unsigned int __b0 = __b; __r -= __res0 * __b0; } dividend = __res; } __r; }); return dividend; } extern s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder); extern u64 div64_u64(u64 dividend, u64 divisor); extern s64 div64_s64(s64 dividend, s64 divisor); # 82 "include/linux/math64.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 div_u64(u64 dividend, u32 divisor) { u32 remainder; return div_u64_rem(dividend, divisor, &remainder); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 div_s64(s64 dividend, s32 divisor) { s32 remainder; return div_s64_rem(dividend, divisor, &remainder); } u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) u32 __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) { u32 ret = 0; while (dividend >= divisor) { asm("" : "+rm"(dividend)); dividend -= divisor; ret++; } *remainder = dividend; return ret; } # 7 "include/linux/time.h" 2 # 1 "include/uapi/linux/time.h" 1 # 9 "include/uapi/linux/time.h" struct timespec { __kernel_time_t tv_sec; long tv_nsec; }; struct timeval { __kernel_time_t tv_sec; __kernel_suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; # 34 "include/uapi/linux/time.h" struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 8 "include/linux/time.h" 2 extern struct timezone sys_tz; # 22 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int timespec_equal(const struct timespec *a, const struct timespec *b) { return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int timespec_compare(const struct timespec *lhs, const struct timespec *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_nsec - rhs->tv_nsec; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int timeval_compare(const struct timeval *lhs, const struct timeval *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_usec - rhs->tv_usec; } extern unsigned long mktime(const unsigned int year, const unsigned int mon, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec); extern void set_normalized_timespec(struct timespec *ts, time_t sec, s64 nsec); extern struct timespec timespec_add_safe(const struct timespec lhs, const struct timespec rhs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct timespec timespec_add(struct timespec lhs, struct timespec rhs) { struct timespec ts_delta; set_normalized_timespec(&ts_delta, lhs.tv_sec + rhs.tv_sec, lhs.tv_nsec + rhs.tv_nsec); return ts_delta; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct timespec timespec_sub(struct timespec lhs, struct timespec rhs) { struct timespec ts_delta; set_normalized_timespec(&ts_delta, lhs.tv_sec - rhs.tv_sec, lhs.tv_nsec - rhs.tv_nsec); return ts_delta; } # 97 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool timespec_valid(const struct timespec *ts) { if (ts->tv_sec < 0) return false; if ((unsigned long)ts->tv_nsec >= 1000000000L) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool timespec_valid_strict(const struct timespec *ts) { if (!timespec_valid(ts)) return false; if ((unsigned long long)ts->tv_sec >= ((long)(~0UL>>1))) return false; return true; } extern void read_persistent_clock(struct timespec *ts); extern void read_boot_clock(struct timespec *ts); extern int update_persistent_clock(struct timespec now); void timekeeping_init(void); extern int timekeeping_suspended; unsigned long get_seconds(void); struct timespec current_kernel_time(void); struct timespec __current_kernel_time(void); struct timespec get_monotonic_coarse(void); void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim, struct timespec *wtom, struct timespec *sleep); void timekeeping_inject_sleeptime(struct timespec *delta); # 147 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 arch_gettimeoffset(void) { return 0; } extern void do_gettimeofday(struct timeval *tv); extern int do_settimeofday(const struct timespec *tv); extern int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz); extern long do_utimes(int dfd, const char *filename, struct timespec *times, int flags); struct itimerval; extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); extern unsigned int alarm_setitimer(unsigned int seconds); extern int do_getitimer(int which, struct itimerval *value); extern void getnstimeofday(struct timespec *tv); extern void getrawmonotonic(struct timespec *ts); extern void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real); extern void getboottime(struct timespec *ts); extern void monotonic_to_bootbased(struct timespec *ts); extern void get_monotonic_boottime(struct timespec *ts); extern struct timespec timespec_trunc(struct timespec t, unsigned gran); extern int timekeeping_valid_for_hres(void); extern u64 timekeeping_max_deferment(void); extern int timekeeping_inject_offset(struct timespec *ts); struct tms; extern void do_sys_times(struct tms *); struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; long tm_year; int tm_wday; int tm_yday; }; void time_to_tm(time_t totalsecs, int offset, struct tm *result); # 212 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 timespec_to_ns(const struct timespec *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } # 224 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 timeval_to_ns(const struct timeval *tv) { return ((s64) tv->tv_sec * 1000000000L) + tv->tv_usec * 1000L; } extern struct timespec ns_to_timespec(const s64 nsec); extern struct timeval ns_to_timeval(const s64 nsec); # 254 "include/linux/time.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void timespec_add_ns(struct timespec *a, u64 ns) { a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns); a->tv_nsec = ns; } # 19 "include/linux/stat.h" 2 # 1 "include/linux/uidgid.h" 1 # 15 "include/linux/uidgid.h" # 1 "include/linux/highuid.h" 1 # 34 "include/linux/highuid.h" extern int overflowuid; extern int overflowgid; extern void __bad_uid(void); extern void __bad_gid(void); # 81 "include/linux/highuid.h" extern int fs_overflowuid; extern int fs_overflowgid; # 16 "include/linux/uidgid.h" 2 struct user_namespace; extern struct user_namespace init_user_ns; # 46 "include/linux/uidgid.h" typedef uid_t kuid_t; typedef gid_t kgid_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uid_t __kuid_val(kuid_t uid) { return uid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) gid_t __kgid_val(kgid_t gid) { return gid; } # 70 "include/linux/uidgid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_eq(kuid_t left, kuid_t right) { return __kuid_val(left) == __kuid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_eq(kgid_t left, kgid_t right) { return __kgid_val(left) == __kgid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_gt(kuid_t left, kuid_t right) { return __kuid_val(left) > __kuid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_gt(kgid_t left, kgid_t right) { return __kgid_val(left) > __kgid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_gte(kuid_t left, kuid_t right) { return __kuid_val(left) >= __kuid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_gte(kgid_t left, kgid_t right) { return __kgid_val(left) >= __kgid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_lt(kuid_t left, kuid_t right) { return __kuid_val(left) < __kuid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_lt(kgid_t left, kgid_t right) { return __kgid_val(left) < __kgid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_lte(kuid_t left, kuid_t right) { return __kuid_val(left) <= __kuid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_lte(kgid_t left, kgid_t right) { return __kgid_val(left) <= __kgid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uid_valid(kuid_t uid) { return !uid_eq(uid, ((kuid_t) -1 )); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool gid_valid(kgid_t gid) { return !gid_eq(gid, ((kgid_t) -1 )); } # 152 "include/linux/uidgid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kuid_t make_kuid(struct user_namespace *from, uid_t uid) { return ((kuid_t) uid ); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kgid_t make_kgid(struct user_namespace *from, gid_t gid) { return ((kgid_t) gid ); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uid_t from_kuid(struct user_namespace *to, kuid_t kuid) { return __kuid_val(kuid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) gid_t from_kgid(struct user_namespace *to, kgid_t kgid) { return __kgid_val(kgid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uid_t from_kuid_munged(struct user_namespace *to, kuid_t kuid) { uid_t uid = from_kuid(to, kuid); if (uid == (uid_t)-1) uid = overflowuid; return uid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) gid_t from_kgid_munged(struct user_namespace *to, kgid_t kgid) { gid_t gid = from_kgid(to, kgid); if (gid == (gid_t)-1) gid = overflowgid; return gid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool kuid_has_mapping(struct user_namespace *ns, kuid_t uid) { return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) { return true; } # 20 "include/linux/stat.h" 2 struct kstat { u64 ino; dev_t dev; umode_t mode; unsigned int nlink; kuid_t uid; kgid_t gid; dev_t rdev; loff_t size; struct timespec atime; struct timespec mtime; struct timespec ctime; unsigned long blksize; unsigned long long blocks; }; # 11 "include/linux/module.h" 2 # 1 "include/linux/kmod.h" 1 # 22 "include/linux/kmod.h" # 1 "include/linux/gfp.h" 1 # 1 "include/linux/mmzone.h" 1 # 9 "include/linux/mmzone.h" # 1 "include/linux/wait.h" 1 # 1 "arch/arm/include/generated/asm/current.h" 1 # 1 "include/asm-generic/current.h" 1 # 1 "arch/arm/include/generated/asm/current.h" 2 # 9 "include/linux/wait.h" 2 # 1 "include/uapi/linux/wait.h" 1 # 10 "include/linux/wait.h" 2 typedef struct __wait_queue wait_queue_t; typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key); int default_wake_function(wait_queue_t *wait, unsigned mode, int flags, void *key); struct __wait_queue { unsigned int flags; void *private; wait_queue_func_t func; struct list_head task_list; }; struct wait_bit_key { void *flags; int bit_nr; }; struct wait_bit_queue { struct wait_bit_key key; wait_queue_t wait; }; struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t; struct task_struct; # 63 "include/linux/wait.h" extern void __init_waitqueue_head(wait_queue_head_t *q, const char *name, struct lock_class_key *); # 81 "include/linux/wait.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) { q->flags = 0; q->private = p; q->func = default_wake_function; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_waitqueue_func_entry(wait_queue_t *q, wait_queue_func_t func) { q->flags = 0; q->private = ((void *)0); q->func = func; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int waitqueue_active(wait_queue_head_t *q) { return !list_empty(&q->task_list); } extern void add_wait_queue(wait_queue_head_t *q, wait_queue_t *wait); extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t *wait); extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t *wait); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new) { list_add(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t *wait) { wait->flags |= 0x01; __add_wait_queue(q, wait); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __add_wait_queue_tail(wait_queue_head_t *head, wait_queue_t *new) { list_add_tail(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __add_wait_queue_tail_exclusive(wait_queue_head_t *q, wait_queue_t *wait) { wait->flags |= 0x01; __add_wait_queue_tail(q, wait); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __remove_wait_queue(wait_queue_head_t *head, wait_queue_t *old) { list_del(&old->task_list); } void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key); void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key); void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr); void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); void __wake_up_bit(wait_queue_head_t *, void *, int); int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); void wake_up_bit(void *, int); int out_of_line_wait_on_bit(void *, int, int (*)(void *), unsigned); int out_of_line_wait_on_bit_lock(void *, int, int (*)(void *), unsigned); wait_queue_head_t *bit_waitqueue(void *, int); # 722 "include/linux/wait.h" extern void sleep_on(wait_queue_head_t *q); extern long sleep_on_timeout(wait_queue_head_t *q, signed long timeout); extern void interruptible_sleep_on(wait_queue_head_t *q); extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, signed long timeout); void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, unsigned int mode, void *key); int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); # 782 "include/linux/wait.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int wait_on_bit(void *word, int bit, int (*action)(void *), unsigned mode) { if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit(word, bit, action, mode); } # 806 "include/linux/wait.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int wait_on_bit_lock(void *word, int bit, int (*action)(void *), unsigned mode) { if (!_test_and_set_bit(bit,word)) return 0; return out_of_line_wait_on_bit_lock(word, bit, action, mode); } # 10 "include/linux/mmzone.h" 2 # 1 "include/linux/threads.h" 1 # 13 "include/linux/mmzone.h" 2 # 1 "include/linux/numa.h" 1 # 14 "include/linux/mmzone.h" 2 # 1 "include/linux/nodemask.h" 1 # 95 "include/linux/nodemask.h" # 1 "include/linux/bitmap.h" 1 # 1 "include/linux/string.h" 1 # 9 "include/linux/string.h" # 1 "include/uapi/linux/string.h" 1 # 10 "include/linux/string.h" 2 extern char *strndup_user(const char *, long); extern void *memdup_user(const void *, size_t); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/string.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/string.h" extern char * strrchr(const char * s, int c); extern char * strchr(const char * s, int c); extern void * memcpy(void *, const void *, __kernel_size_t); extern void * memmove(void *, const void *, __kernel_size_t); extern void * memchr(const void *, int, __kernel_size_t); extern void * memset(void *, int, __kernel_size_t); extern void __memzero(void *ptr, __kernel_size_t n); # 18 "include/linux/string.h" 2 extern char * strcpy(char *,const char *); extern char * strncpy(char *,const char *, __kernel_size_t); size_t strlcpy(char *, const char *, size_t); extern char * strcat(char *, const char *); extern char * strncat(char *, const char *, __kernel_size_t); extern size_t strlcat(char *, const char *, __kernel_size_t); extern int strcmp(const char *,const char *); extern int strncmp(const char *,const char *,__kernel_size_t); extern int strnicmp(const char *, const char *, __kernel_size_t); extern int strcasecmp(const char *s1, const char *s2); extern int strncasecmp(const char *s1, const char *s2, size_t n); extern char * strnchr(const char *, size_t, int); extern char * __attribute__((warn_unused_result)) skip_spaces(const char *); extern char *strim(char *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((warn_unused_result)) char *strstrip(char *str) { return strim(str); } extern char * strstr(const char *, const char *); extern char * strnstr(const char *, const char *, size_t); extern __kernel_size_t strlen(const char *); extern __kernel_size_t strnlen(const char *,__kernel_size_t); extern char * strpbrk(const char *,const char *); extern char * strsep(char **,const char *); extern __kernel_size_t strspn(const char *,const char *); extern __kernel_size_t strcspn(const char *,const char *); # 105 "include/linux/string.h" extern void * memscan(void *,int,__kernel_size_t); extern int memcmp(const void *,const void *,__kernel_size_t); void *memchr_inv(const void *s, int c, size_t n); extern char *kstrdup(const char *s, gfp_t gfp); extern char *kstrndup(const char *s, size_t len, gfp_t gfp); extern void *kmemdup(const void *src, size_t len, gfp_t gfp); extern char **argv_split(gfp_t gfp, const char *str, int *argcp); extern void argv_free(char **argv); extern bool sysfs_streq(const char *s1, const char *s2); extern int strtobool(const char *s, bool *res); int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args); int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf); int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __attribute__((format(printf, 3, 4))); extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, const void *from, size_t available); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool strstarts(const char *str, const char *prefix) { return strncmp(str, prefix, strlen(prefix)) == 0; } extern size_t memweight(const void *ptr, size_t bytes); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *kbasename(const char *path) { const char *tail = strrchr(path, '/'); return tail ? tail + 1 : path; } # 9 "include/linux/bitmap.h" 2 # 91 "include/linux/bitmap.h" extern int __bitmap_empty(const unsigned long *bitmap, int bits); extern int __bitmap_full(const unsigned long *bitmap, int bits); extern int __bitmap_equal(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_complement(unsigned long *dst, const unsigned long *src, int bits); extern void __bitmap_shift_right(unsigned long *dst, const unsigned long *src, int shift, int bits); extern void __bitmap_shift_left(unsigned long *dst, const unsigned long *src, int shift, int bits); extern int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_intersects(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_subset(const unsigned long *bitmap1, const unsigned long *bitmap2, int bits); extern int __bitmap_weight(const unsigned long *bitmap, int bits); extern void bitmap_set(unsigned long *map, int i, int len); extern void bitmap_clear(unsigned long *map, int start, int nr); extern unsigned long bitmap_find_next_zero_area(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr, unsigned long align_mask); extern int bitmap_scnprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user, unsigned long *dst, int nbits); extern int bitmap_parse_user(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern int bitmap_scnlistprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits); extern int bitmap_parselist_user(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern void bitmap_remap(unsigned long *dst, const unsigned long *src, const unsigned long *old, const unsigned long *new, int bits); extern int bitmap_bitremap(int oldbit, const unsigned long *old, const unsigned long *new, int bits); extern void bitmap_onto(unsigned long *dst, const unsigned long *orig, const unsigned long *relmap, int bits); extern void bitmap_fold(unsigned long *dst, const unsigned long *orig, int sz, int bits); extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order); extern void bitmap_release_region(unsigned long *bitmap, int pos, int order); extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order); extern void bitmap_copy_le(void *dst, const unsigned long *src, int nbits); extern int bitmap_ord_to_pos(const unsigned long *bitmap, int n, int bits); # 159 "include/linux/bitmap.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_zero(unsigned long *dst, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = 0UL; else { int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); ({ void *__p = (dst); size_t __n = len; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_fill(unsigned long *dst, int nbits) { size_t nlongs = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))); if (!(__builtin_constant_p(nbits) && (nbits) <= 32)) { int len = (nlongs - 1) * sizeof(unsigned long); ({ void *__p = (dst); size_t __n = len; if ((__n) != 0) { if (__builtin_constant_p((0xff)) && (0xff) == 0) __memzero((__p),(__n)); else memset((__p),(0xff),(__n)); } (__p); }); } dst[nlongs - 1] = ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_copy(unsigned long *dst, const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = *src; else { int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); memcpy(dst, src, len); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return (*dst = *src1 & *src2) != 0; return __bitmap_and(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_or(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = *src1 | *src2; else __bitmap_or(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return (*dst = *src1 & ~(*src2)) != 0; return __bitmap_andnot(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_complement(unsigned long *dst, const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = ~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); else __bitmap_complement(dst, src, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_equal(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return ! ((*src1 ^ *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_equal(src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_intersects(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return ((*src1 & *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )) != 0; else return __bitmap_intersects(src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_subset(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return ! ((*src1 & ~(*src2)) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_subset(src1, src2, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_empty(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_empty(src, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_full(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return ! (~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_full(src, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_weight(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) return hweight_long(*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); return __bitmap_weight(src, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_shift_right(unsigned long *dst, const unsigned long *src, int n, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = *src >> n; else __bitmap_shift_right(dst, src, n, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bitmap_shift_left(unsigned long *dst, const unsigned long *src, int n, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 32)) *dst = (*src << n) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); else __bitmap_shift_left(dst, src, n, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bitmap_parse(const char *buf, unsigned int buflen, unsigned long *maskp, int nmaskbits) { return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); } # 96 "include/linux/nodemask.h" 2 typedef struct { unsigned long bits[((((1 << 0)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } nodemask_t; extern nodemask_t _unused_nodemask_arg_; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __node_set(int node, volatile nodemask_t *dstp) { _set_bit(node,dstp->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __node_clear(int node, volatile nodemask_t *dstp) { _clear_bit(node,dstp->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_setall(nodemask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_clear(nodemask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __node_test_and_set(int node, nodemask_t *addr) { return _test_and_set_bit(node,addr->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_and(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_or(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_xor(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_andnot(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_complement(nodemask_t *dstp, const nodemask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_equal(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_intersects(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_subset(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_empty(const nodemask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_full(const nodemask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodes_weight(const nodemask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_shift_right(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_shift_left(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __first_node(const nodemask_t *srcp) { return ({ int __min1 = ((1 << 0)); int __min2 = (_find_first_bit_le(srcp->bits,(1 << 0))); __min1 < __min2 ? __min1: __min2; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __next_node(int n, const nodemask_t *srcp) { return ({ int __min1 = ((1 << 0)); int __min2 = (_find_next_bit_le(srcp->bits,(1 << 0),n+1)); __min1 < __min2 ? __min1: __min2; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_nodemask_of_node(nodemask_t *mask, int node) { __nodes_clear(&(*mask), (1 << 0)); __node_set((node), &(*mask)); } # 266 "include/linux/nodemask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __first_unset_node(const nodemask_t *maskp) { return ({ int __min1 = ((1 << 0)); int __min2 = (_find_first_zero_bit_le(maskp->bits,(1 << 0))); __min1 < __min2 ? __min1: __min2; }) ; } # 300 "include/linux/nodemask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodemask_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodemask_parse_user(const char *buf, int len, nodemask_t *dstp, int nbits) { return bitmap_parse_user(buf, len, dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodelist_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __node_remap(int oldbit, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_onto(nodemask_t *dstp, const nodemask_t *origp, const nodemask_t *relmapp, int nbits) { bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __nodes_fold(nodemask_t *dstp, const nodemask_t *origp, int sz, int nbits) { bitmap_fold(dstp->bits, origp->bits, sz, nbits); } # 374 "include/linux/nodemask.h" enum node_states { N_POSSIBLE, N_ONLINE, N_NORMAL_MEMORY, N_HIGH_MEMORY, N_MEMORY = N_HIGH_MEMORY, N_CPU, NR_NODE_STATES }; extern nodemask_t node_states[NR_NODE_STATES]; # 443 "include/linux/nodemask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int node_state(int node, enum node_states state) { return node == 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void node_set_state(int node, enum node_states state) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void node_clear_state(int node, enum node_states state) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int num_node_state(enum node_states state) { return 1; } # 477 "include/linux/nodemask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int node_random(const nodemask_t *mask) { return 0; } # 509 "include/linux/nodemask.h" struct nodemask_scratch { nodemask_t mask1; nodemask_t mask2; }; # 17 "include/linux/mmzone.h" 2 # 1 "include/linux/pageblock-flags.h" 1 # 29 "include/linux/pageblock-flags.h" enum pageblock_bits { PB_migrate, PB_migrate_end = PB_migrate + 3 - 1, PB_migrate_skip, NR_PAGEBLOCK_BITS }; # 63 "include/linux/pageblock-flags.h" struct page; unsigned long get_pageblock_flags_group(struct page *page, int start_bitidx, int end_bitidx); void set_pageblock_flags_group(struct page *page, unsigned long flags, int start_bitidx, int end_bitidx); # 18 "include/linux/mmzone.h" 2 # 1 "include/generated/bounds.h" 1 # 19 "include/linux/mmzone.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" 1 # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue.h" 1 # 27 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" 2 # 110 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" struct page; struct vm_area_struct; struct cpu_user_fns { void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr); void (*cpu_copy_user_highpage)(struct page *to, struct page *from, unsigned long vaddr, struct vm_area_struct *vma); }; extern struct cpu_user_fns cpu_user; # 143 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" extern void copy_page(void *to, const void *from); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level-types.h" 1 # 22 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level-types.h" # 1 "arch/arm/include/generated/asm/types.h" 1 # 23 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level-types.h" 2 typedef u32 pteval_t; typedef u32 pmdval_t; # 51 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level-types.h" typedef pteval_t pte_t; typedef pmdval_t pmd_t; typedef pmdval_t pgd_t[2]; typedef pteval_t pgprot_t; # 151 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" 2 typedef struct page *pgtable_t; extern int pfn_valid(unsigned long); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" 1 # 19 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" # 1 "include/linux/sizes.h" 1 # 20 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" 2 # 160 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" extern unsigned long __pv_phys_offset; # 172 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __virt_to_phys(unsigned long x) { unsigned long t; __asm__("@ __pv_stub\n" "1: " "add" " %0, %1, %2\n" " .pushsection .pv_table,\"a\"\n" " .long 1b\n" " .popsection\n" : "=r" (t) : "r" (x), "I" (0x81000000)); return t; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __phys_to_virt(unsigned long x) { unsigned long t; __asm__("@ __pv_stub\n" "1: " "sub" " %0, %1, %2\n" " .pushsection .pv_table,\"a\"\n" " .long 1b\n" " .popsection\n" : "=r" (t) : "r" (x), "I" (0x81000000)); return t; } # 218 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) phys_addr_t virt_to_phys(const volatile void *x) { return __virt_to_phys((unsigned long)(x)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *phys_to_virt(phys_addr_t x) { return (void *)(__phys_to_virt((unsigned long)(x))); } # 248 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long virt_to_bus(void *x) { return __virt_to_phys((unsigned long)x); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *bus_to_virt(unsigned long x) { return (void *)__phys_to_virt(x); } # 280 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" # 1 "include/asm-generic/memory_model.h" 1 # 281 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/memory.h" 2 # 162 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" 2 # 1 "include/asm-generic/getorder.h" 1 # 12 "include/asm-generic/getorder.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((__const__)) int __get_order(unsigned long size) { int order; size--; size >>= 12; order = fls(size); return order; } # 170 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/page.h" 2 # 21 "include/linux/mmzone.h" 2 # 38 "include/linux/mmzone.h" enum { MIGRATE_UNMOVABLE, MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE, MIGRATE_PCPTYPES, MIGRATE_RESERVE = MIGRATE_PCPTYPES, # 60 "include/linux/mmzone.h" MIGRATE_ISOLATE, MIGRATE_TYPES }; # 74 "include/linux/mmzone.h" extern int page_group_by_mobility_disabled; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_pageblock_migratetype(struct page *page) { return get_pageblock_flags_group(page, PB_migrate, PB_migrate_end); } struct free_area { struct list_head free_list[MIGRATE_TYPES]; unsigned long nr_free; }; struct pglist_data; # 95 "include/linux/mmzone.h" struct zone_padding { char x[0]; } __attribute__((__aligned__(1 << (6)))); enum zone_stat_item { NR_FREE_PAGES, NR_LRU_BASE, NR_INACTIVE_ANON = NR_LRU_BASE, NR_ACTIVE_ANON, NR_INACTIVE_FILE, NR_ACTIVE_FILE, NR_UNEVICTABLE, NR_MLOCK, NR_ANON_PAGES, NR_FILE_MAPPED, NR_FILE_PAGES, NR_FILE_DIRTY, NR_WRITEBACK, NR_SLAB_RECLAIMABLE, NR_SLAB_UNRECLAIMABLE, NR_PAGETABLE, NR_KERNEL_STACK, NR_UNSTABLE_NFS, NR_BOUNCE, NR_VMSCAN_WRITE, NR_VMSCAN_IMMEDIATE, NR_WRITEBACK_TEMP, NR_ISOLATED_ANON, NR_ISOLATED_FILE, NR_SHMEM, NR_DIRTIED, NR_WRITTEN, # 142 "include/linux/mmzone.h" NR_ANON_TRANSPARENT_HUGEPAGES, NR_FREE_CMA_PAGES, NR_VM_ZONE_STAT_ITEMS }; # 159 "include/linux/mmzone.h" enum lru_list { LRU_INACTIVE_ANON = 0, LRU_ACTIVE_ANON = 0 + 1, LRU_INACTIVE_FILE = 0 + 2, LRU_ACTIVE_FILE = 0 + 2 + 1, LRU_UNEVICTABLE, NR_LRU_LISTS }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_file_lru(enum lru_list lru) { return (lru == LRU_INACTIVE_FILE || lru == LRU_ACTIVE_FILE); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_active_lru(enum lru_list lru) { return (lru == LRU_ACTIVE_ANON || lru == LRU_ACTIVE_FILE); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_unevictable_lru(enum lru_list lru) { return (lru == LRU_UNEVICTABLE); } struct zone_reclaim_stat { # 196 "include/linux/mmzone.h" unsigned long recent_rotated[2]; unsigned long recent_scanned[2]; }; struct lruvec { struct list_head lists[NR_LRU_LISTS]; struct zone_reclaim_stat reclaim_stat; struct zone *zone; }; # 223 "include/linux/mmzone.h" typedef unsigned isolate_mode_t; enum zone_watermarks { WMARK_MIN, WMARK_LOW, WMARK_HIGH, NR_WMARK }; struct per_cpu_pages { int count; int high; int batch; struct list_head lists[MIGRATE_PCPTYPES]; }; struct per_cpu_pageset { struct per_cpu_pages pcp; s8 stat_threshold; s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS]; }; enum zone_type { # 293 "include/linux/mmzone.h" ZONE_NORMAL, # 303 "include/linux/mmzone.h" ZONE_HIGHMEM, ZONE_MOVABLE, __MAX_NR_ZONES }; # 329 "include/linux/mmzone.h" struct zone { unsigned long watermark[NR_WMARK]; unsigned long percpu_drift_mark; # 350 "include/linux/mmzone.h" unsigned long lowmem_reserve[3]; unsigned long dirty_balance_reserve; # 366 "include/linux/mmzone.h" struct per_cpu_pageset *pageset; spinlock_t lock; int all_unreclaimable; bool compact_blockskip_flush; unsigned long compact_cached_free_pfn; unsigned long compact_cached_migrate_pfn; struct free_area free_area[11]; unsigned long *pageblock_flags; # 400 "include/linux/mmzone.h" unsigned int compact_considered; unsigned int compact_defer_shift; int compact_order_failed; struct zone_padding _pad1_; spinlock_t lru_lock; struct lruvec lruvec; unsigned long pages_scanned; unsigned long flags; atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; unsigned int inactive_ratio; struct zone_padding _pad2_; # 451 "include/linux/mmzone.h" wait_queue_head_t * wait_table; unsigned long wait_table_hash_nr_entries; unsigned long wait_table_bits; struct pglist_data *zone_pgdat; unsigned long zone_start_pfn; # 498 "include/linux/mmzone.h" unsigned long spanned_pages; unsigned long present_pages; unsigned long managed_pages; const char *name; } __attribute__((__aligned__(1 << (6)))); typedef enum { ZONE_RECLAIM_LOCKED, ZONE_OOM_LOCKED, ZONE_CONGESTED, } zone_flags_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_set_flag(struct zone *zone, zone_flags_t flag) { _set_bit(flag,&zone->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_test_and_set_flag(struct zone *zone, zone_flags_t flag) { return _test_and_set_bit(flag,&zone->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_clear_flag(struct zone *zone, zone_flags_t flag) { _clear_bit(flag,&zone->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_is_reclaim_congested(const struct zone *zone) { return test_bit(ZONE_CONGESTED, &zone->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_is_reclaim_locked(const struct zone *zone) { return test_bit(ZONE_RECLAIM_LOCKED, &zone->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_is_oom_locked(const struct zone *zone) { return test_bit(ZONE_OOM_LOCKED, &zone->flags); } # 634 "include/linux/mmzone.h" struct zonelist_cache; struct zoneref { struct zone *zone; int zone_idx; }; # 663 "include/linux/mmzone.h" struct zonelist { struct zonelist_cache *zlcache_ptr; struct zoneref _zonerefs[((1 << 0) * 3) + 1]; }; # 681 "include/linux/mmzone.h" extern struct page *mem_map; # 695 "include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[3]; struct zonelist node_zonelists[1]; int nr_zones; struct page *node_mem_map; struct page_cgroup *node_page_cgroup; struct bootmem_data *bdata; # 719 "include/linux/mmzone.h" unsigned long node_start_pfn; unsigned long node_present_pages; unsigned long node_spanned_pages; int node_id; nodemask_t reclaim_nodes; wait_queue_head_t kswapd_wait; wait_queue_head_t pfmemalloc_wait; struct task_struct *kswapd; int kswapd_max_order; enum zone_type classzone_idx; # 743 "include/linux/mmzone.h" } pg_data_t; # 761 "include/linux/mmzone.h" # 1 "include/linux/memory_hotplug.h" 1 # 1 "include/linux/mmzone.h" 1 # 5 "include/linux/memory_hotplug.h" 2 # 1 "include/linux/notifier.h" 1 # 12 "include/linux/notifier.h" # 1 "include/linux/errno.h" 1 # 1 "include/uapi/linux/errno.h" 1 # 1 "arch/arm/include/generated/asm/errno.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/errno.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/errno-base.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/errno.h" 2 # 1 "arch/arm/include/generated/asm/errno.h" 2 # 1 "include/uapi/linux/errno.h" 2 # 5 "include/linux/errno.h" 2 # 13 "include/linux/notifier.h" 2 # 1 "include/linux/mutex.h" 1 # 48 "include/linux/mutex.h" struct mutex { atomic_t count; spinlock_t wait_lock; struct list_head wait_list; struct task_struct *owner; # 63 "include/linux/mutex.h" }; struct mutex_waiter { struct list_head list; struct task_struct *task; }; # 95 "include/linux/mutex.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mutex_destroy(struct mutex *lock) {} # 115 "include/linux/mutex.h" extern void __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mutex_is_locked(struct mutex *lock) { return (*(volatile int *)&(&lock->count)->counter) != 1; } # 152 "include/linux/mutex.h" extern void mutex_lock(struct mutex *lock); extern int __attribute__((warn_unused_result)) mutex_lock_interruptible(struct mutex *lock); extern int __attribute__((warn_unused_result)) mutex_lock_killable(struct mutex *lock); # 168 "include/linux/mutex.h" extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); # 14 "include/linux/notifier.h" 2 # 1 "include/linux/rwsem.h" 1 # 19 "include/linux/rwsem.h" struct rw_semaphore; # 1 "include/linux/rwsem-spinlock.h" 1 # 23 "include/linux/rwsem-spinlock.h" struct rw_semaphore { __s32 activity; raw_spinlock_t wait_lock; struct list_head wait_list; }; extern void __down_read(struct rw_semaphore *sem); extern int __down_read_trylock(struct rw_semaphore *sem); extern void __down_write(struct rw_semaphore *sem); extern void __down_write_nested(struct rw_semaphore *sem, int subclass); extern int __down_write_trylock(struct rw_semaphore *sem); extern void __up_read(struct rw_semaphore *sem); extern void __up_write(struct rw_semaphore *sem); extern void __downgrade_write(struct rw_semaphore *sem); extern int rwsem_is_locked(struct rw_semaphore *sem); # 23 "include/linux/rwsem.h" 2 # 67 "include/linux/rwsem.h" extern void __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key); # 80 "include/linux/rwsem.h" extern void down_read(struct rw_semaphore *sem); extern int down_read_trylock(struct rw_semaphore *sem); extern void down_write(struct rw_semaphore *sem); extern int down_write_trylock(struct rw_semaphore *sem); extern void up_read(struct rw_semaphore *sem); extern void up_write(struct rw_semaphore *sem); extern void downgrade_write(struct rw_semaphore *sem); # 15 "include/linux/notifier.h" 2 # 1 "include/linux/srcu.h" 1 # 33 "include/linux/srcu.h" # 1 "include/linux/rcupdate.h" 1 # 40 "include/linux/rcupdate.h" # 1 "include/linux/cpumask.h" 1 # 14 "include/linux/cpumask.h" typedef struct cpumask { unsigned long bits[(((4) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } cpumask_t; # 28 "include/linux/cpumask.h" extern int nr_cpu_ids; # 79 "include/linux/cpumask.h" extern const struct cpumask *const cpu_possible_mask; extern const struct cpumask *const cpu_online_mask; extern const struct cpumask *const cpu_present_mask; extern const struct cpumask *const cpu_active_mask; # 105 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int cpumask_check(unsigned int cpu) { return cpu; } # 158 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int cpumask_first(const struct cpumask *srcp) { return _find_first_bit_le(((srcp)->bits),4); } # 170 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int cpumask_next(int n, const struct cpumask *srcp) { if (n != -1) cpumask_check(n); return _find_next_bit_le(((srcp)->bits),4,n+1); } # 185 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) { if (n != -1) cpumask_check(n); return _find_next_zero_bit_le(((srcp)->bits),4,n+1); } int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); # 255 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) { _set_bit(cpumask_check(cpu),((dstp)->bits)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_clear_cpu(int cpu, struct cpumask *dstp) { _clear_bit(cpumask_check(cpu),((dstp)->bits)); } # 291 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) { return _test_and_set_bit(cpumask_check(cpu),((cpumask)->bits)); } # 305 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask) { return _test_and_clear_bit(cpumask_check(cpu),((cpumask)->bits)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_setall(struct cpumask *dstp) { bitmap_fill(((dstp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_clear(struct cpumask *dstp) { bitmap_zero(((dstp)->bits), 4); } # 336 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_and(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_and(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_or(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_or(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_xor(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_xor(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 4); } # 379 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_andnot(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_andnot(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_complement(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_complement(((dstp)->bits), ((srcp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool cpumask_equal(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_equal(((src1p)->bits), ((src2p)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool cpumask_intersects(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_intersects(((src1p)->bits), ((src2p)->bits), 4); } # 430 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_subset(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_subset(((src1p)->bits), ((src2p)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool cpumask_empty(const struct cpumask *srcp) { return bitmap_empty(((srcp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool cpumask_full(const struct cpumask *srcp) { return bitmap_full(((srcp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int cpumask_weight(const struct cpumask *srcp) { return bitmap_weight(((srcp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_shift_right(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_right(((dstp)->bits), ((srcp)->bits), n, 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_shift_left(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_left(((dstp)->bits), ((srcp)->bits), n, 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void cpumask_copy(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_copy(((dstp)->bits), ((srcp)->bits), 4); } # 542 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_scnprintf(char *buf, int len, const struct cpumask *srcp) { return bitmap_scnprintf(buf, len, ((srcp)->bits), 4); } # 556 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_parse_user(const char *buf, int len, struct cpumask *dstp) { return bitmap_parse_user(buf, len, ((dstp)->bits), 4); } # 570 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpumask_parselist_user(const char *buf, int len, struct cpumask *dstp) { return bitmap_parselist_user(buf, len, ((dstp)->bits), 4); } # 586 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpulist_scnprintf(char *buf, int len, const struct cpumask *srcp) { return bitmap_scnlistprintf(buf, len, ((srcp)->bits), 4); } # 600 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cpulist_parse(const char *buf, struct cpumask *dstp) { return bitmap_parselist(buf, ((dstp)->bits), 4); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) size_t cpumask_size(void) { return (((4) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(long); } # 659 "include/linux/cpumask.h" typedef struct cpumask cpumask_var_t[1]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) { return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) { return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) { cpumask_clear(*mask); return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) { cpumask_clear(*mask); return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void alloc_bootmem_cpumask_var(cpumask_var_t *mask) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void free_cpumask_var(cpumask_var_t mask) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void free_bootmem_cpumask_var(cpumask_var_t mask) { } extern const unsigned long cpu_all_bits[(((4) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; # 711 "include/linux/cpumask.h" void set_cpu_possible(unsigned int cpu, bool possible); void set_cpu_present(unsigned int cpu, bool present); void set_cpu_online(unsigned int cpu, bool online); void set_cpu_active(unsigned int cpu, bool active); void init_cpu_present(const struct cpumask *src); void init_cpu_possible(const struct cpumask *src); void init_cpu_online(const struct cpumask *src); # 733 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __check_is_bitmap(const unsigned long *bitmap) { return 1; } # 745 "include/linux/cpumask.h" extern const unsigned long cpu_bit_bitmap[32 +1][(((4) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const struct cpumask *get_cpu_mask(unsigned int cpu) { const unsigned long *p = cpu_bit_bitmap[1 + cpu % 32]; p -= cpu / 32; return ((struct cpumask *)(1 ? (p) : (void *)sizeof(__check_is_bitmap(p)))); } # 816 "include/linux/cpumask.h" int __first_cpu(const cpumask_t *srcp); int __next_cpu(int n, const cpumask_t *srcp); # 845 "include/linux/cpumask.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpu_set(int cpu, volatile cpumask_t *dstp) { _set_bit(cpu,dstp->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpu_clear(int cpu, volatile cpumask_t *dstp) { _clear_bit(cpu,dstp->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpus_setall(cpumask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpus_clear(cpumask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpu_test_and_set(int cpu, cpumask_t *addr) { return _test_and_set_bit(cpu,addr->bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpus_or(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_equal(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_intersects(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_subset(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_empty(const cpumask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __cpus_weight(const cpumask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __cpus_shift_left(cpumask_t *dstp, const cpumask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } # 41 "include/linux/rcupdate.h" 2 # 1 "include/linux/completion.h" 1 # 25 "include/linux/completion.h" struct completion { unsigned int done; wait_queue_head_t wait; }; # 73 "include/linux/completion.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_completion(struct completion *x) { x->done = 0; do { static struct lock_class_key __key; __init_waitqueue_head((&x->wait), "&x->wait", &__key); } while (0); } extern void wait_for_completion(struct completion *); extern int wait_for_completion_interruptible(struct completion *x); extern int wait_for_completion_killable(struct completion *x); extern unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout); extern long wait_for_completion_interruptible_timeout( struct completion *x, unsigned long timeout); extern long wait_for_completion_killable_timeout( struct completion *x, unsigned long timeout); extern bool try_wait_for_completion(struct completion *x); extern bool completion_done(struct completion *x); extern void complete(struct completion *); extern void complete_all(struct completion *); # 44 "include/linux/rcupdate.h" 2 # 1 "include/linux/debugobjects.h" 1 enum debug_obj_state { ODEBUG_STATE_NONE, ODEBUG_STATE_INIT, ODEBUG_STATE_INACTIVE, ODEBUG_STATE_ACTIVE, ODEBUG_STATE_DESTROYED, ODEBUG_STATE_NOTAVAILABLE, ODEBUG_STATE_MAX, }; struct debug_obj_descr; # 27 "include/linux/debugobjects.h" struct debug_obj { struct hlist_node node; enum debug_obj_state state; unsigned int astate; void *object; struct debug_obj_descr *descr; }; # 52 "include/linux/debugobjects.h" struct debug_obj_descr { const char *name; void *(*debug_hint) (void *addr); int (*fixup_init) (void *addr, enum debug_obj_state state); int (*fixup_activate) (void *addr, enum debug_obj_state state); int (*fixup_destroy) (void *addr, enum debug_obj_state state); int (*fixup_free) (void *addr, enum debug_obj_state state); int (*fixup_assert_init)(void *addr, enum debug_obj_state state); }; # 84 "include/linux/debugobjects.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_init (void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_activate (void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_destroy (void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_free (void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_object_assert_init(void *addr, struct debug_obj_descr *descr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_objects_early_init(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_objects_mem_init(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_check_no_obj_freed(const void *address, unsigned long size) { } # 45 "include/linux/rcupdate.h" 2 # 53 "include/linux/rcupdate.h" extern void rcutorture_record_test_transition(void); extern void rcutorture_record_progress(unsigned long vernum); extern void do_trace_rcu_torture_read(char *rcutorturename, struct callback_head *rhp); # 144 "include/linux/rcupdate.h" extern void call_rcu_bh(struct callback_head *head, void (*func)(struct callback_head *head)); # 166 "include/linux/rcupdate.h" extern void call_rcu_sched(struct callback_head *head, void (*func)(struct callback_head *rcu)); extern void synchronize_sched(void); # 188 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __rcu_read_lock(void) { do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __rcu_read_unlock(void) { do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void synchronize_rcu(void) { synchronize_sched(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rcu_preempt_depth(void) { return 0; } extern void rcu_sched_qs(int cpu); extern void rcu_bh_qs(int cpu); extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; extern void rcu_idle_enter(void); extern void rcu_idle_exit(void); extern void rcu_irq_enter(void); extern void rcu_irq_exit(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_user_enter(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_user_exit(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_user_enter_after_irq(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_user_exit_after_irq(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_user_hooks_switch(struct task_struct *prev, struct task_struct *next) { } extern void exit_rcu(void); # 266 "include/linux/rcupdate.h" typedef void call_rcu_func_t(struct callback_head *head, void (*func)(struct callback_head *head)); void wait_rcu_gp(call_rcu_func_t crf); # 1 "include/linux/rcutree.h" 1 # 33 "include/linux/rcutree.h" extern void rcu_init(void); extern void rcu_note_context_switch(int cpu); extern int rcu_needs_cpu(int cpu, unsigned long *delta_jiffies); extern void rcu_cpu_stall_reset(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_virt_note_context_switch(int cpu) { rcu_note_context_switch(cpu); } extern void synchronize_rcu_bh(void); extern void synchronize_sched_expedited(void); extern void synchronize_rcu_expedited(void); void kfree_call_rcu(struct callback_head *head, void (*func)(struct callback_head *rcu)); # 70 "include/linux/rcutree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void synchronize_rcu_bh_expedited(void) { synchronize_sched_expedited(); } extern void rcu_barrier(void); extern void rcu_barrier_bh(void); extern void rcu_barrier_sched(void); extern unsigned long rcutorture_testseq; extern unsigned long rcutorture_vernum; extern long rcu_batches_completed(void); extern long rcu_batches_completed_bh(void); extern long rcu_batches_completed_sched(void); extern void rcu_force_quiescent_state(void); extern void rcu_bh_force_quiescent_state(void); extern void rcu_sched_force_quiescent_state(void); extern void rcu_scheduler_starting(void); extern int rcu_scheduler_active __attribute__((__section__(".data..read_mostly"))); # 272 "include/linux/rcupdate.h" 2 # 288 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_rcu_head_on_stack(struct callback_head *head) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void destroy_rcu_head_on_stack(struct callback_head *head) { } extern int rcu_is_cpu_idle(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool rcu_lockdep_current_cpu_online(void) { return 1; } # 422 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rcu_read_lock_held(void) { return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rcu_read_lock_bh_held(void) { return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rcu_read_lock_sched_held(void) { return 1; } # 757 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_lock(void) { __rcu_read_lock(); (void)0; do { } while (0); do { } while (0) ; } # 781 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_unlock(void) { do { } while (0) ; do { } while (0); (void)0; __rcu_read_unlock(); } # 807 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_lock_bh(void) { local_bh_disable(); (void)0; do { } while (0); do { } while (0) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_unlock_bh(void) { do { } while (0) ; do { } while (0); (void)0; local_bh_enable(); } # 843 "include/linux/rcupdate.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_lock_sched(void) { do { } while (0); (void)0; do { } while (0); do { } while (0) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void rcu_read_lock_sched_notrace(void) { do { } while (0); (void)0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_read_unlock_sched(void) { do { } while (0) ; do { } while (0); (void)0; do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void rcu_read_unlock_sched_notrace(void) { (void)0; do { } while (0); } # 34 "include/linux/srcu.h" 2 # 1 "include/linux/workqueue.h" 1 # 1 "include/linux/timer.h" 1 # 1 "include/linux/ktime.h" 1 # 25 "include/linux/ktime.h" # 1 "include/linux/jiffies.h" 1 # 1 "include/linux/timex.h" 1 # 56 "include/linux/timex.h" # 1 "include/uapi/linux/timex.h" 1 # 64 "include/uapi/linux/timex.h" struct timex { unsigned int modes; long offset; long freq; long maxerror; long esterror; int status; long constant; long precision; long tolerance; struct timeval time; long tick; long ppsfreq; long jitter; int shift; long stabil; long jitcnt; long calcnt; long errcnt; long stbcnt; int tai; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; # 57 "include/linux/timex.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/param.h" 1 # 1 "arch/arm/include/generated/asm/param.h" 1 # 1 "include/asm-generic/param.h" 1 # 1 "include/uapi/asm-generic/param.h" 1 # 5 "include/asm-generic/param.h" 2 # 1 "arch/arm/include/generated/asm/param.h" 2 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/param.h" 2 # 64 "include/linux/timex.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/timex.h" 1 # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/timex.h" # 1 "arch/arm/mach-tegra/include/mach/timex.h" 1 # 19 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/timex.h" 2 typedef unsigned long cycles_t; # 66 "include/linux/timex.h" 2 # 125 "include/linux/timex.h" extern unsigned long tick_usec; extern unsigned long tick_nsec; extern void ntp_init(void); extern void ntp_clear(void); # 144 "include/linux/timex.h" extern u64 ntp_tick_length(void); extern int second_overflow(unsigned long secs); extern int do_adjtimex(struct timex *); extern void hardpps(const struct timespec *, const struct timespec *); int read_current_timer(unsigned long *timer_val); # 9 "include/linux/jiffies.h" 2 # 1 "arch/arm/include/generated/asm/param.h" 1 # 10 "include/linux/jiffies.h" 2 # 57 "include/linux/jiffies.h" extern int register_refined_jiffies(long clock_tick_rate); # 76 "include/linux/jiffies.h" extern u64 __attribute__((section(".data"))) jiffies_64; extern unsigned long volatile __attribute__((section(".data"))) jiffies; extern seqlock_t jiffies_lock; u64 get_jiffies_64(void); # 179 "include/linux/jiffies.h" extern unsigned long preset_lpj; # 292 "include/linux/jiffies.h" extern unsigned int jiffies_to_msecs(const unsigned long j); extern unsigned int jiffies_to_usecs(const unsigned long j); extern unsigned long msecs_to_jiffies(const unsigned int m); extern unsigned long usecs_to_jiffies(const unsigned int u); extern unsigned long timespec_to_jiffies(const struct timespec *value); extern void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value); extern unsigned long timeval_to_jiffies(const struct timeval *value); extern void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value); extern clock_t jiffies_to_clock_t(unsigned long x); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) clock_t jiffies_delta_to_clock_t(long delta) { return jiffies_to_clock_t(({ typeof(0L) _max1 = (0L); typeof(delta) _max2 = (delta); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; })); } extern unsigned long clock_t_to_jiffies(unsigned long x); extern u64 jiffies_64_to_clock_t(u64 x); extern u64 nsec_to_clock_t(u64 x); extern u64 nsecs_to_jiffies64(u64 n); extern unsigned long nsecs_to_jiffies(u64 n); # 26 "include/linux/ktime.h" 2 # 46 "include/linux/ktime.h" union ktime { s64 tv64; # 57 "include/linux/ktime.h" }; typedef union ktime ktime_t; # 74 "include/linux/ktime.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t ktime_set(const long secs, const unsigned long nsecs) { return (ktime_t) { .tv64 = (s64)secs * 1000000000L + (s64)nsecs }; } # 106 "include/linux/ktime.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t timespec_to_ktime(struct timespec ts) { return ktime_set(ts.tv_sec, ts.tv_nsec); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t timeval_to_ktime(struct timeval tv) { return ktime_set(tv.tv_sec, tv.tv_usec * 1000L); } # 280 "include/linux/ktime.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ktime_equal(const ktime_t cmp1, const ktime_t cmp2) { return cmp1.tv64 == cmp2.tv64; } # 295 "include/linux/ktime.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ktime_compare(const ktime_t cmp1, const ktime_t cmp2) { if (cmp1.tv64 < cmp2.tv64) return -1; if (cmp1.tv64 > cmp2.tv64) return 1; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 ktime_to_us(const ktime_t kt) { struct timeval tv = ns_to_timeval((kt).tv64); return (s64) tv.tv_sec * 1000000L + tv.tv_usec; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 ktime_to_ms(const ktime_t kt) { struct timeval tv = ns_to_timeval((kt).tv64); return (s64) tv.tv_sec * 1000L + tv.tv_usec / 1000L; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) { return ktime_to_us(({ (ktime_t){ .tv64 = (later).tv64 - (earlier).tv64 }; })); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t ktime_add_us(const ktime_t kt, const u64 usec) { return ({ (ktime_t){ .tv64 = (kt).tv64 + (usec * 1000) }; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t ktime_sub_us(const ktime_t kt, const u64 usec) { return ({ (ktime_t){ .tv64 = (kt).tv64 - (usec * 1000) }; }); } extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); # 343 "include/linux/ktime.h" extern void ktime_get_ts(struct timespec *ts); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t ns_to_ktime(u64 ns) { static const ktime_t ktime_zero = { .tv64 = 0 }; return ({ (ktime_t){ .tv64 = (ktime_zero).tv64 + (ns) }; }); } # 6 "include/linux/timer.h" 2 struct tvec_base; struct timer_list { struct list_head entry; unsigned long expires; struct tvec_base *base; void (*function)(unsigned long); unsigned long data; int slack; int start_pid; void *start_site; char start_comm[16]; }; extern struct tvec_base boot_tvec_bases; # 94 "include/linux/timer.h" void init_timer_key(struct timer_list *timer, unsigned int flags, const char *name, struct lock_class_key *key); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void destroy_timer_on_stack(struct timer_list *timer) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_timer_on_stack_key(struct timer_list *timer, unsigned int flags, const char *name, struct lock_class_key *key) { init_timer_key(timer, flags, name, key); } # 169 "include/linux/timer.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int timer_pending(const struct timer_list * timer) { return timer->entry.next != ((void *)0); } extern void add_timer_on(struct timer_list *timer, int cpu); extern int del_timer(struct timer_list * timer); extern int mod_timer(struct timer_list *timer, unsigned long expires); extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); extern int mod_timer_pinned(struct timer_list *timer, unsigned long expires); extern void set_timer_slack(struct timer_list *time, int slack_hz); # 195 "include/linux/timer.h" extern unsigned long get_next_timer_interrupt(unsigned long now); extern int timer_stats_active; extern void init_timer_stats(void); extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, void *timerf, char *comm, unsigned int timer_flag); extern void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void timer_stats_timer_set_start_info(struct timer_list *timer) { if (__builtin_expect(!!(!timer_stats_active), 1)) return; __timer_stats_timer_set_start_info(timer, __builtin_return_address(0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void timer_stats_timer_clear_start_info(struct timer_list *timer) { timer->start_site = ((void *)0); } # 240 "include/linux/timer.h" extern void add_timer(struct timer_list *timer); extern int try_to_del_timer_sync(struct timer_list *timer); extern int del_timer_sync(struct timer_list *timer); extern void init_timers(void); extern void run_local_timers(void); struct hrtimer; extern enum hrtimer_restart it_real_fn(struct hrtimer *); unsigned long __round_jiffies(unsigned long j, int cpu); unsigned long __round_jiffies_relative(unsigned long j, int cpu); unsigned long round_jiffies(unsigned long j); unsigned long round_jiffies_relative(unsigned long j); unsigned long __round_jiffies_up(unsigned long j, int cpu); unsigned long __round_jiffies_up_relative(unsigned long j, int cpu); unsigned long round_jiffies_up(unsigned long j); unsigned long round_jiffies_up_relative(unsigned long j); # 9 "include/linux/workqueue.h" 2 struct workqueue_struct; struct work_struct; typedef void (*work_func_t)(struct work_struct *work); void delayed_work_timer_fn(unsigned long __data); enum { WORK_STRUCT_PENDING_BIT = 0, WORK_STRUCT_DELAYED_BIT = 1, WORK_STRUCT_CWQ_BIT = 2, WORK_STRUCT_LINKED_BIT = 3, WORK_STRUCT_COLOR_SHIFT = 4, WORK_STRUCT_COLOR_BITS = 4, WORK_STRUCT_PENDING = 1 << WORK_STRUCT_PENDING_BIT, WORK_STRUCT_DELAYED = 1 << WORK_STRUCT_DELAYED_BIT, WORK_STRUCT_CWQ = 1 << WORK_STRUCT_CWQ_BIT, WORK_STRUCT_LINKED = 1 << WORK_STRUCT_LINKED_BIT, WORK_STRUCT_STATIC = 0, WORK_NR_COLORS = (1 << WORK_STRUCT_COLOR_BITS) - 1, WORK_NO_COLOR = WORK_NR_COLORS, WORK_CPU_UNBOUND = 4, WORK_CPU_NONE = 4 + 1, WORK_CPU_LAST = WORK_CPU_NONE, WORK_STRUCT_FLAG_BITS = WORK_STRUCT_COLOR_SHIFT + WORK_STRUCT_COLOR_BITS, WORK_OFFQ_FLAG_BASE = WORK_STRUCT_FLAG_BITS, WORK_OFFQ_CANCELING = (1 << WORK_OFFQ_FLAG_BASE), WORK_OFFQ_FLAG_BITS = 1, WORK_OFFQ_CPU_SHIFT = WORK_OFFQ_FLAG_BASE + WORK_OFFQ_FLAG_BITS, WORK_STRUCT_FLAG_MASK = (1UL << WORK_STRUCT_FLAG_BITS) - 1, WORK_STRUCT_WQ_DATA_MASK = ~WORK_STRUCT_FLAG_MASK, WORK_STRUCT_NO_CPU = (unsigned long)WORK_CPU_NONE << WORK_OFFQ_CPU_SHIFT, WORK_BUSY_PENDING = 1 << 0, WORK_BUSY_RUNNING = 1 << 1, }; struct work_struct { atomic_long_t data; struct list_head entry; work_func_t func; }; struct delayed_work { struct work_struct work; struct timer_list timer; int cpu; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct delayed_work *to_delayed_work(struct work_struct *work) { return ({ const typeof( ((struct delayed_work *)0)->work ) *__mptr = (work); (struct delayed_work *)( (char *)__mptr - __builtin_offsetof(struct delayed_work,work) );}); } struct execute_work { struct work_struct work; }; # 171 "include/linux/workqueue.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __init_work(struct work_struct *work, int onstack) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void destroy_work_on_stack(struct work_struct *work) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int work_static(struct work_struct *work) { return 0; } # 269 "include/linux/workqueue.h" enum { WQ_NON_REENTRANT = 1 << 0, WQ_UNBOUND = 1 << 1, WQ_FREEZABLE = 1 << 2, WQ_MEM_RECLAIM = 1 << 3, WQ_HIGHPRI = 1 << 4, WQ_CPU_INTENSIVE = 1 << 5, WQ_DRAINING = 1 << 6, WQ_RESCUER = 1 << 7, WQ_MAX_ACTIVE = 512, WQ_MAX_UNBOUND_PER_CPU = 4, WQ_DFL_ACTIVE = WQ_MAX_ACTIVE / 2, }; # 308 "include/linux/workqueue.h" extern struct workqueue_struct *system_wq; extern struct workqueue_struct *system_long_wq; extern struct workqueue_struct *system_unbound_wq; extern struct workqueue_struct *system_freezable_wq; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct workqueue_struct * __system_nrt_wq(void) { return system_wq; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct workqueue_struct * __system_nrt_freezable_wq(void) { return system_freezable_wq; } extern struct workqueue_struct * __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, struct lock_class_key *key, const char *lock_name, ...) __attribute__((format(printf, 1, 6))); # 390 "include/linux/workqueue.h" extern void destroy_workqueue(struct workqueue_struct *wq); extern bool queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work); extern bool queue_work(struct workqueue_struct *wq, struct work_struct *work); extern bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay); extern bool queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay); extern bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay); extern bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay); extern void flush_workqueue(struct workqueue_struct *wq); extern void drain_workqueue(struct workqueue_struct *wq); extern void flush_scheduled_work(void); extern bool schedule_work_on(int cpu, struct work_struct *work); extern bool schedule_work(struct work_struct *work); extern bool schedule_delayed_work_on(int cpu, struct delayed_work *work, unsigned long delay); extern bool schedule_delayed_work(struct delayed_work *work, unsigned long delay); extern int schedule_on_each_cpu(work_func_t func); extern int keventd_up(void); int execute_in_process_context(work_func_t fn, struct execute_work *); extern bool flush_work(struct work_struct *work); extern bool cancel_work_sync(struct work_struct *work); extern bool flush_delayed_work(struct delayed_work *dwork); extern bool cancel_delayed_work(struct delayed_work *dwork); extern bool cancel_delayed_work_sync(struct delayed_work *dwork); extern void workqueue_set_max_active(struct workqueue_struct *wq, int max_active); extern bool workqueue_congested(unsigned int cpu, struct workqueue_struct *wq); extern unsigned int work_cpu(struct work_struct *work); extern unsigned int work_busy(struct work_struct *work); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool __cancel_delayed_work(struct delayed_work *work) { bool ret; ret = del_timer(&work->timer); if (ret) _clear_bit(WORK_STRUCT_PENDING_BIT,((unsigned long *)(&(&work->work)->data))); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool flush_work_sync(struct work_struct *work) { return flush_work(work); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool flush_delayed_work_sync(struct delayed_work *dwork) { return flush_delayed_work(dwork); } long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg); extern void freeze_workqueues_begin(void); extern bool freeze_workqueues_busy(void); extern void thaw_workqueues(void); # 35 "include/linux/srcu.h" 2 struct srcu_struct_array { unsigned long c[2]; unsigned long seq[2]; }; struct rcu_batch { struct callback_head *head, **tail; }; struct srcu_struct { unsigned completed; struct srcu_struct_array *per_cpu_ref; spinlock_t queue_lock; bool running; struct rcu_batch batch_queue; struct rcu_batch batch_check0; struct rcu_batch batch_check1; struct rcu_batch batch_done; struct delayed_work work; }; # 80 "include/linux/srcu.h" int init_srcu_struct(struct srcu_struct *sp); void process_srcu(struct work_struct *work); # 130 "include/linux/srcu.h" void call_srcu(struct srcu_struct *sp, struct callback_head *head, void (*func)(struct callback_head *head)); void cleanup_srcu_struct(struct srcu_struct *sp); int __srcu_read_lock(struct srcu_struct *sp) ; void __srcu_read_unlock(struct srcu_struct *sp, int idx) ; void synchronize_srcu(struct srcu_struct *sp); void synchronize_srcu_expedited(struct srcu_struct *sp); long srcu_batches_completed(struct srcu_struct *sp); void srcu_barrier(struct srcu_struct *sp); # 183 "include/linux/srcu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int srcu_read_lock_held(struct srcu_struct *sp) { return 1; } # 234 "include/linux/srcu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int srcu_read_lock(struct srcu_struct *sp) { int retval = __srcu_read_lock(sp); do { } while (0); do { } while (0) ; return retval; } # 251 "include/linux/srcu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void srcu_read_unlock(struct srcu_struct *sp, int idx) { do { } while (0) ; do { } while (0); __srcu_read_unlock(sp, idx); } # 275 "include/linux/srcu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int srcu_read_lock_raw(struct srcu_struct *sp) { unsigned long flags; int ret; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); ret = __srcu_read_lock(sp); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); return ret; } # 294 "include/linux/srcu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void srcu_read_unlock_raw(struct srcu_struct *sp, int idx) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __srcu_read_unlock(sp, idx); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } # 16 "include/linux/notifier.h" 2 # 50 "include/linux/notifier.h" struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); struct notifier_block *next; int priority; }; struct atomic_notifier_head { spinlock_t lock; struct notifier_block *head; }; struct blocking_notifier_head { struct rw_semaphore rwsem; struct notifier_block *head; }; struct raw_notifier_head { struct notifier_block *head; }; struct srcu_notifier_head { struct mutex mutex; struct srcu_struct srcu; struct notifier_block *head; }; # 89 "include/linux/notifier.h" extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); # 115 "include/linux/notifier.h" extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_register(struct blocking_notifier_head *nh, struct notifier_block *nb); extern int raw_notifier_chain_register(struct raw_notifier_head *nh, struct notifier_block *nb); extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_cond_register( struct blocking_notifier_head *nh, struct notifier_block *nb); extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, struct notifier_block *nb); extern int raw_notifier_chain_unregister(struct raw_notifier_head *nh, struct notifier_block *nb); extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh, struct notifier_block *nb); extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v); extern int __atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh, unsigned long val, void *v); extern int __blocking_notifier_call_chain(struct blocking_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int raw_notifier_call_chain(struct raw_notifier_head *nh, unsigned long val, void *v); extern int __raw_notifier_call_chain(struct raw_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh, unsigned long val, void *v); extern int __srcu_notifier_call_chain(struct srcu_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); # 165 "include/linux/notifier.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int notifier_from_errno(int err) { if (err) return 0x8000 | (0x0001 - err); return 0x0001; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int notifier_to_errno(int ret) { ret &= ~0x8000; return ret > 0x0001 ? 0x0001 - ret : 0; } # 209 "include/linux/notifier.h" extern struct blocking_notifier_head reboot_notifier_list; # 7 "include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; struct mem_section; struct memory_block; # 201 "include/linux/memory_hotplug.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgdat_resize_init(struct pglist_data *pgdat) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned zone_span_seqbegin(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_span_seqretry(struct zone *zone, unsigned iv) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_span_writelock(struct zone *zone) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_span_writeunlock(struct zone *zone) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_seqlock_init(struct zone *zone) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mhp_notimplemented(const char *func) { printk("\001" "4" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func); dump_stack(); return -38; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void register_page_bootmem_info_node(struct pglist_data *pgdat) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lock_memory_hotplug(void) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void unlock_memory_hotplug(void) {} # 238 "include/linux/memory_hotplug.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_mem_section_removable(unsigned long pfn, unsigned long nr_pages) { return 0; } extern int mem_online_node(int nid); extern int add_memory(int nid, u64 start, u64 size); extern int arch_add_memory(int nid, u64 start, u64 size); extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages); extern int offline_memory_block(struct memory_block *mem); extern int remove_memory(u64 start, u64 size); extern int sparse_add_one_section(struct zone *zone, unsigned long start_pfn, int nr_pages); extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms); extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, unsigned long pnum); # 762 "include/linux/mmzone.h" 2 extern struct mutex zonelists_mutex; void build_all_zonelists(pg_data_t *pgdat, struct zone *zone); void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx); bool zone_watermark_ok(struct zone *z, int order, unsigned long mark, int classzone_idx, int alloc_flags); bool zone_watermark_ok_safe(struct zone *z, int order, unsigned long mark, int classzone_idx, int alloc_flags); enum memmap_context { MEMMAP_EARLY, MEMMAP_HOTPLUG, }; extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, unsigned long size, enum memmap_context context); extern void lruvec_init(struct lruvec *lruvec); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct zone *lruvec_zone(struct lruvec *lruvec) { return lruvec->zone; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void memory_present(int nid, unsigned long start, unsigned long end) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int local_memory_node(int node_id) { return node_id; }; # 810 "include/linux/mmzone.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int populated_zone(struct zone *zone) { return (!!zone->present_pages); } extern int movable_zone; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_movable_is_highmem(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_highmem_idx(enum zone_type idx) { return (idx == ZONE_HIGHMEM || (idx == ZONE_MOVABLE && zone_movable_is_highmem())); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_normal_idx(enum zone_type idx) { return (idx == ZONE_NORMAL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_highmem(struct zone *zone) { int zone_off = (char *)zone - (char *)zone->zone_pgdat->node_zones; return zone_off == ZONE_HIGHMEM * sizeof(*zone) || (zone_off == ZONE_MOVABLE * sizeof(*zone) && zone_movable_is_highmem()); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_normal(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_dma32(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_dma(struct zone *zone) { return 0; } struct ctl_table; int min_free_kbytes_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern int sysctl_lowmem_reserve_ratio[3 -1]; int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern int numa_zonelist_order_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern char numa_zonelist_order[]; extern struct pglist_data contig_page_data; # 913 "include/linux/mmzone.h" extern struct pglist_data *first_online_pgdat(void); extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); extern struct zone *next_zone(struct zone *zone); # 945 "include/linux/mmzone.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct zone *zonelist_zone(struct zoneref *zoneref) { return zoneref->zone; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zonelist_zone_idx(struct zoneref *zoneref) { return zoneref->zone_idx; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zonelist_node_idx(struct zoneref *zoneref) { return 0; } # 978 "include/linux/mmzone.h" struct zoneref *next_zones_zonelist(struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes, struct zone **zone); # 995 "include/linux/mmzone.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct zoneref *first_zones_zonelist(struct zonelist *zonelist, enum zone_type highest_zoneidx, nodemask_t *nodes, struct zone **zone) { return next_zones_zonelist(zonelist->_zonerefs, highest_zoneidx, nodes, zone); } # 1038 "include/linux/mmzone.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long early_pfn_to_nid(unsigned long pfn) { return 0; } # 1224 "include/linux/mmzone.h" void memory_present(int nid, unsigned long start, unsigned long end); unsigned long __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) node_memmap_size_bytes(int, unsigned long, unsigned long); # 1258 "include/linux/mmzone.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int memmap_valid_within(unsigned long pfn, struct page *page, struct zone *zone) { return 1; } # 5 "include/linux/gfp.h" 2 # 1 "include/linux/topology.h" 1 # 33 "include/linux/topology.h" # 1 "include/linux/smp.h" 1 # 15 "include/linux/smp.h" extern void cpu_idle(void); typedef void (*smp_call_func_t)(void *info); struct call_single_data { struct list_head list; smp_call_func_t func; void *info; u16 flags; u16 priv; }; extern unsigned int total_cpus; int smp_call_function_single(int cpuid, smp_call_func_t func, void *info, int wait); # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/smp.h" 1 # 23 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/smp.h" struct seq_file; extern void show_ipi_list(struct seq_file *, int); void do_IPI(int ipinr, struct pt_regs *regs); void handle_IPI(int ipinr, struct pt_regs *regs); extern void smp_init_cpus(void); extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int)); extern int boot_secondary(unsigned int cpu, struct task_struct *); void secondary_start_kernel(void); struct secondary_data { unsigned long pgdir; unsigned long swapper_pg_dir; void *stack; }; extern struct secondary_data secondary_data; extern volatile int pen_release; extern int __cpu_disable(void); extern void __cpu_die(unsigned int cpu); extern void cpu_die(void); extern void arch_send_call_function_single_ipi(int cpu); extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); extern void arch_send_wakeup_ipi_mask(const struct cpumask *mask); struct smp_operations { void (*smp_init_cpus)(void); void (*smp_prepare_cpus)(unsigned int max_cpus); void (*smp_secondary_init)(unsigned int cpu); int (*smp_boot_secondary)(unsigned int cpu, struct task_struct *idle); int (*cpu_kill)(unsigned int cpu); void (*cpu_die)(unsigned int cpu); int (*cpu_disable)(unsigned int cpu); }; extern void smp_set_ops(struct smp_operations *); # 39 "include/linux/smp.h" 2 # 48 "include/linux/smp.h" extern void smp_send_stop(void); extern void smp_send_reschedule(int cpu); extern void smp_prepare_cpus(unsigned int max_cpus); extern int __cpu_up(unsigned int cpunum, struct task_struct *tidle); extern void smp_cpus_done(unsigned int max_cpus); int smp_call_function(smp_call_func_t func, void *info, int wait); void smp_call_function_many(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait); void __smp_call_function_single(int cpuid, struct call_single_data *data, int wait); int smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, void *info, int wait); void kick_all_cpus_sync(void); void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) call_function_init(void); void generic_smp_call_function_single_interrupt(void); void generic_smp_call_function_interrupt(void); int on_each_cpu(smp_call_func_t func, void *info, int wait); void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait); void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info), smp_call_func_t func, void *info, bool wait, gfp_t gfp_flags); void smp_prepare_boot_cpu(void); extern unsigned int setup_max_cpus; extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) setup_nr_cpu_ids(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) smp_init(void); # 225 "include/linux/smp.h" extern void arch_disable_smp_support(void); void smp_setup_processor_id(void); # 34 "include/linux/topology.h" 2 # 1 "include/linux/percpu.h" 1 # 1 "include/linux/pfn.h" 1 # 8 "include/linux/percpu.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/percpu.h" 1 # 24 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/percpu.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_my_cpu_offset(unsigned long off) { asm volatile("mcr p15, 0, %0, c13, c0, 4" : : "r" (off) : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __my_cpu_offset(void) { unsigned long off; asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (off) : : "memory"); return off; } # 1 "include/asm-generic/percpu.h" 1 # 1 "include/linux/percpu-defs.h" 1 # 7 "include/asm-generic/percpu.h" 2 # 18 "include/asm-generic/percpu.h" extern unsigned long __per_cpu_offset[4]; # 44 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/percpu.h" 2 # 11 "include/linux/percpu.h" 2 # 81 "include/linux/percpu.h" extern void *pcpu_base_addr; extern const unsigned long *pcpu_unit_offsets; struct pcpu_group_info { int nr_units; unsigned long base_offset; unsigned int *cpu_map; }; struct pcpu_alloc_info { size_t static_size; size_t reserved_size; size_t dyn_size; size_t unit_size; size_t atom_size; size_t alloc_size; size_t __ai_size; int nr_groups; struct pcpu_group_info groups[]; }; enum pcpu_fc { PCPU_FC_AUTO, PCPU_FC_EMBED, PCPU_FC_PAGE, PCPU_FC_NR, }; extern const char * const pcpu_fc_names[PCPU_FC_NR]; extern enum pcpu_fc pcpu_chosen_fc; typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int cpu, size_t size, size_t align); typedef void (*pcpu_fc_free_fn_t)(void *ptr, size_t size); typedef void (*pcpu_fc_populate_pte_fn_t)(unsigned long addr); typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to); extern struct pcpu_alloc_info * __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_alloc_alloc_info(int nr_groups, int nr_units); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_free_alloc_info(struct pcpu_alloc_info *ai); extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, void *base_addr); # 153 "include/linux/percpu.h" extern void *__alloc_reserved_percpu(size_t size, size_t align); extern bool is_kernel_percpu_address(unsigned long addr); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) setup_per_cpu_areas(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) percpu_init_late(void); extern void *__alloc_percpu(size_t size, size_t align); extern void free_percpu(void *__pdata); extern phys_addr_t per_cpu_ptr_to_phys(void *addr); # 173 "include/linux/percpu.h" extern void __bad_size_call_parameter(void); # 35 "include/linux/topology.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/topology.h" 1 struct cputopo_arm { int thread_id; int core_id; int socket_id; cpumask_t thread_sibling; cpumask_t core_sibling; }; extern struct cputopo_arm cpu_topology[4]; # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/topology.h" void init_cpu_topology(void); void store_cpu_topology(unsigned int cpuid); const struct cpumask *cpu_coregroup_mask(int cpu); # 37 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/topology.h" # 1 "include/asm-generic/topology.h" 1 # 38 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/topology.h" 2 # 36 "include/linux/topology.h" 2 # 49 "include/linux/topology.h" int arch_update_cpu_topology(void); # 214 "include/linux/topology.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int numa_node_id(void) { return ((void)((current_thread_info()->cpu)),0); } # 264 "include/linux/topology.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int numa_mem_id(void) { return numa_node_id(); } # 8 "include/linux/gfp.h" 2 # 1 "include/linux/mmdebug.h" 1 # 9 "include/linux/gfp.h" 2 struct vm_area_struct; # 157 "include/linux/gfp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int allocflags_to_migratetype(gfp_t gfp_flags) { ({ int __ret_warn_on = !!((gfp_flags & ((( gfp_t)0x80000u)|(( gfp_t)0x08u))) == ((( gfp_t)0x80000u)|(( gfp_t)0x08u))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/gfp.h", 159); __builtin_expect(!!(__ret_warn_on), 0); }); if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) return MIGRATE_UNMOVABLE; return (((gfp_flags & (( gfp_t)0x08u)) != 0) << 1) | ((gfp_flags & (( gfp_t)0x80000u)) != 0); } # 252 "include/linux/gfp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) enum zone_type gfp_zone(gfp_t flags) { enum zone_type z; int bit = ( int) (flags & ((( gfp_t)0x01u)|(( gfp_t)0x02u)|(( gfp_t)0x04u)|(( gfp_t)0x08u))); z = (( (ZONE_NORMAL << 0 * 2) | (ZONE_NORMAL << 0x01u * 2) | (ZONE_HIGHMEM << 0x02u * 2) | (ZONE_NORMAL << 0x04u * 2) | (ZONE_NORMAL << 0x08u * 2) | (ZONE_NORMAL << (0x08u | 0x01u) * 2) | (ZONE_MOVABLE << (0x08u | 0x02u) * 2) | (ZONE_NORMAL << (0x08u | 0x04u) * 2) ) >> (bit * 2)) & ((1 << 2) - 1); ({ int __ret_warn_on = !!((( 1 << (0x01u | 0x02u) | 1 << (0x01u | 0x04u) | 1 << (0x04u | 0x02u) | 1 << (0x01u | 0x04u | 0x02u) | 1 << (0x08u | 0x02u | 0x01u) | 1 << (0x08u | 0x04u | 0x01u) | 1 << (0x08u | 0x04u | 0x02u) | 1 << (0x08u | 0x04u | 0x01u | 0x02u) ) >> bit) & 1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/gfp.h", 259); __builtin_expect(!!(__ret_warn_on), 0); }); return z; } # 270 "include/linux/gfp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int gfp_zonelist(gfp_t flags) { if ((0 || 0) && __builtin_expect(!!(flags & (( gfp_t)0x40000u)), 0)) return 1; return 0; } # 287 "include/linux/gfp.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct zonelist *node_zonelist(int nid, gfp_t flags) { return (&contig_page_data)->node_zonelists + gfp_zonelist(flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_free_page(struct page *page, int order) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void arch_alloc_page(struct page *page, int order) { } struct page * __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, nodemask_t *nodemask); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page * __alloc_pages(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist) { return __alloc_pages_nodemask(gfp_mask, order, zonelist, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (nid < 0) nid = numa_node_id(); return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *alloc_pages_exact_node(int nid, gfp_t gfp_mask, unsigned int order) { ({ int __ret_warn_on = !!(nid < 0 || nid >= (1 << 0) || !node_state((nid), N_ONLINE)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/gfp.h", 323); __builtin_expect(!!(__ret_warn_on), 0); }); return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); } # 351 "include/linux/gfp.h" extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); extern unsigned long get_zeroed_page(gfp_t gfp_mask); void *alloc_pages_exact(size_t size, gfp_t gfp_mask); void free_pages_exact(void *virt, size_t size); void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask); extern void __free_pages(struct page *page, unsigned int order); extern void free_pages(unsigned long addr, unsigned int order); extern void free_hot_cold_page(struct page *page, int cold); extern void free_hot_cold_page_list(struct list_head *list, int cold); extern void __free_memcg_kmem_pages(struct page *page, unsigned int order); extern void free_memcg_kmem_pages(unsigned long addr, unsigned int order); void page_alloc_init(void); void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); void drain_all_pages(void); void drain_local_pages(void *dummy); # 388 "include/linux/gfp.h" extern gfp_t gfp_allowed_mask; bool gfp_pfmemalloc_allowed(gfp_t gfp_mask); extern void pm_restrict_gfp_mask(void); extern void pm_restore_gfp_mask(void); extern bool pm_suspended_storage(void); # 23 "include/linux/kmod.h" 2 # 1 "include/linux/sysctl.h" 1 # 27 "include/linux/sysctl.h" # 1 "include/linux/rbtree.h" 1 # 35 "include/linux/rbtree.h" struct rb_node { unsigned long __rb_parent_color; struct rb_node *rb_right; struct rb_node *rb_left; } __attribute__((aligned(sizeof(long)))); struct rb_root { struct rb_node *rb_node; }; # 61 "include/linux/rbtree.h" extern void rb_insert_color(struct rb_node *, struct rb_root *); extern void rb_erase(struct rb_node *, struct rb_root *); extern struct rb_node *rb_next(const struct rb_node *); extern struct rb_node *rb_prev(const struct rb_node *); extern struct rb_node *rb_first(const struct rb_root *); extern struct rb_node *rb_last(const struct rb_root *); extern void rb_replace_node(struct rb_node *victim, struct rb_node *new, struct rb_root *root); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rb_link_node(struct rb_node * node, struct rb_node * parent, struct rb_node ** rb_link) { node->__rb_parent_color = (unsigned long)parent; node->rb_left = node->rb_right = ((void *)0); *rb_link = node; } # 28 "include/linux/sysctl.h" 2 # 1 "include/uapi/linux/sysctl.h" 1 # 29 "include/uapi/linux/sysctl.h" struct completion; struct __sysctl_args { int *name; int nlen; void *oldval; size_t *oldlenp; void *newval; size_t newlen; unsigned long __unused[4]; }; enum { CTL_KERN=1, CTL_VM=2, CTL_NET=3, CTL_PROC=4, CTL_FS=5, CTL_DEBUG=6, CTL_DEV=7, CTL_BUS=8, CTL_ABI=9, CTL_CPU=10, CTL_ARLAN=254, CTL_S390DBF=5677, CTL_SUNRPC=7249, CTL_PM=9899, CTL_FRV=9898, }; enum { CTL_BUS_ISA=1 }; enum { INOTIFY_MAX_USER_INSTANCES=1, INOTIFY_MAX_USER_WATCHES=2, INOTIFY_MAX_QUEUED_EVENTS=3 }; enum { KERN_OSTYPE=1, KERN_OSRELEASE=2, KERN_OSREV=3, KERN_VERSION=4, KERN_SECUREMASK=5, KERN_PROF=6, KERN_NODENAME=7, KERN_DOMAINNAME=8, KERN_PANIC=15, KERN_REALROOTDEV=16, KERN_SPARC_REBOOT=21, KERN_CTLALTDEL=22, KERN_PRINTK=23, KERN_NAMETRANS=24, KERN_PPC_HTABRECLAIM=25, KERN_PPC_ZEROPAGED=26, KERN_PPC_POWERSAVE_NAP=27, KERN_MODPROBE=28, KERN_SG_BIG_BUFF=29, KERN_ACCT=30, KERN_PPC_L2CR=31, KERN_RTSIGNR=32, KERN_RTSIGMAX=33, KERN_SHMMAX=34, KERN_MSGMAX=35, KERN_MSGMNB=36, KERN_MSGPOOL=37, KERN_SYSRQ=38, KERN_MAX_THREADS=39, KERN_RANDOM=40, KERN_SHMALL=41, KERN_MSGMNI=42, KERN_SEM=43, KERN_SPARC_STOP_A=44, KERN_SHMMNI=45, KERN_OVERFLOWUID=46, KERN_OVERFLOWGID=47, KERN_SHMPATH=48, KERN_HOTPLUG=49, KERN_IEEE_EMULATION_WARNINGS=50, KERN_S390_USER_DEBUG_LOGGING=51, KERN_CORE_USES_PID=52, KERN_TAINTED=53, KERN_CADPID=54, KERN_PIDMAX=55, KERN_CORE_PATTERN=56, KERN_PANIC_ON_OOPS=57, KERN_HPPA_PWRSW=58, KERN_HPPA_UNALIGNED=59, KERN_PRINTK_RATELIMIT=60, KERN_PRINTK_RATELIMIT_BURST=61, KERN_PTY=62, KERN_NGROUPS_MAX=63, KERN_SPARC_SCONS_PWROFF=64, KERN_HZ_TIMER=65, KERN_UNKNOWN_NMI_PANIC=66, KERN_BOOTLOADER_TYPE=67, KERN_RANDOMIZE=68, KERN_SETUID_DUMPABLE=69, KERN_SPIN_RETRY=70, KERN_ACPI_VIDEO_FLAGS=71, KERN_IA64_UNALIGNED=72, KERN_COMPAT_LOG=73, KERN_MAX_LOCK_DEPTH=74, KERN_NMI_WATCHDOG=75, KERN_PANIC_ON_NMI=76, }; enum { VM_UNUSED1=1, VM_UNUSED2=2, VM_UNUSED3=3, VM_UNUSED4=4, VM_OVERCOMMIT_MEMORY=5, VM_UNUSED5=6, VM_UNUSED7=7, VM_UNUSED8=8, VM_UNUSED9=9, VM_PAGE_CLUSTER=10, VM_DIRTY_BACKGROUND=11, VM_DIRTY_RATIO=12, VM_DIRTY_WB_CS=13, VM_DIRTY_EXPIRE_CS=14, VM_NR_PDFLUSH_THREADS=15, VM_OVERCOMMIT_RATIO=16, VM_PAGEBUF=17, VM_HUGETLB_PAGES=18, VM_SWAPPINESS=19, VM_LOWMEM_RESERVE_RATIO=20, VM_MIN_FREE_KBYTES=21, VM_MAX_MAP_COUNT=22, VM_LAPTOP_MODE=23, VM_BLOCK_DUMP=24, VM_HUGETLB_GROUP=25, VM_VFS_CACHE_PRESSURE=26, VM_LEGACY_VA_LAYOUT=27, VM_SWAP_TOKEN_TIMEOUT=28, VM_DROP_PAGECACHE=29, VM_PERCPU_PAGELIST_FRACTION=30, VM_ZONE_RECLAIM_MODE=31, VM_MIN_UNMAPPED=32, VM_PANIC_ON_OOM=33, VM_VDSO_ENABLED=34, VM_MIN_SLAB=35, }; enum { NET_CORE=1, NET_ETHER=2, NET_802=3, NET_UNIX=4, NET_IPV4=5, NET_IPX=6, NET_ATALK=7, NET_NETROM=8, NET_AX25=9, NET_BRIDGE=10, NET_ROSE=11, NET_IPV6=12, NET_X25=13, NET_TR=14, NET_DECNET=15, NET_ECONET=16, NET_SCTP=17, NET_LLC=18, NET_NETFILTER=19, NET_DCCP=20, NET_IRDA=412, }; enum { RANDOM_POOLSIZE=1, RANDOM_ENTROPY_COUNT=2, RANDOM_READ_THRESH=3, RANDOM_WRITE_THRESH=4, RANDOM_BOOT_ID=5, RANDOM_UUID=6 }; enum { PTY_MAX=1, PTY_NR=2 }; enum { BUS_ISA_MEM_BASE=1, BUS_ISA_PORT_BASE=2, BUS_ISA_PORT_SHIFT=3 }; enum { NET_CORE_WMEM_MAX=1, NET_CORE_RMEM_MAX=2, NET_CORE_WMEM_DEFAULT=3, NET_CORE_RMEM_DEFAULT=4, NET_CORE_MAX_BACKLOG=6, NET_CORE_FASTROUTE=7, NET_CORE_MSG_COST=8, NET_CORE_MSG_BURST=9, NET_CORE_OPTMEM_MAX=10, NET_CORE_HOT_LIST_LENGTH=11, NET_CORE_DIVERT_VERSION=12, NET_CORE_NO_CONG_THRESH=13, NET_CORE_NO_CONG=14, NET_CORE_LO_CONG=15, NET_CORE_MOD_CONG=16, NET_CORE_DEV_WEIGHT=17, NET_CORE_SOMAXCONN=18, NET_CORE_BUDGET=19, NET_CORE_AEVENT_ETIME=20, NET_CORE_AEVENT_RSEQTH=21, NET_CORE_WARNINGS=22, }; enum { NET_UNIX_DESTROY_DELAY=1, NET_UNIX_DELETE_DELAY=2, NET_UNIX_MAX_DGRAM_QLEN=3, }; enum { NET_NF_CONNTRACK_MAX=1, NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, NET_NF_CONNTRACK_UDP_TIMEOUT=10, NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, NET_NF_CONNTRACK_ICMP_TIMEOUT=12, NET_NF_CONNTRACK_GENERIC_TIMEOUT=13, NET_NF_CONNTRACK_BUCKETS=14, NET_NF_CONNTRACK_LOG_INVALID=15, NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, NET_NF_CONNTRACK_TCP_LOOSE=17, NET_NF_CONNTRACK_TCP_BE_LIBERAL=18, NET_NF_CONNTRACK_TCP_MAX_RETRANS=19, NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, NET_NF_CONNTRACK_COUNT=27, NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28, NET_NF_CONNTRACK_FRAG6_TIMEOUT=29, NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30, NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31, NET_NF_CONNTRACK_CHECKSUM=32, }; enum { NET_IPV4_FORWARD=8, NET_IPV4_DYNADDR=9, NET_IPV4_CONF=16, NET_IPV4_NEIGH=17, NET_IPV4_ROUTE=18, NET_IPV4_FIB_HASH=19, NET_IPV4_NETFILTER=20, NET_IPV4_TCP_TIMESTAMPS=33, NET_IPV4_TCP_WINDOW_SCALING=34, NET_IPV4_TCP_SACK=35, NET_IPV4_TCP_RETRANS_COLLAPSE=36, NET_IPV4_DEFAULT_TTL=37, NET_IPV4_AUTOCONFIG=38, NET_IPV4_NO_PMTU_DISC=39, NET_IPV4_TCP_SYN_RETRIES=40, NET_IPV4_IPFRAG_HIGH_THRESH=41, NET_IPV4_IPFRAG_LOW_THRESH=42, NET_IPV4_IPFRAG_TIME=43, NET_IPV4_TCP_MAX_KA_PROBES=44, NET_IPV4_TCP_KEEPALIVE_TIME=45, NET_IPV4_TCP_KEEPALIVE_PROBES=46, NET_IPV4_TCP_RETRIES1=47, NET_IPV4_TCP_RETRIES2=48, NET_IPV4_TCP_FIN_TIMEOUT=49, NET_IPV4_IP_MASQ_DEBUG=50, NET_TCP_SYNCOOKIES=51, NET_TCP_STDURG=52, NET_TCP_RFC1337=53, NET_TCP_SYN_TAILDROP=54, NET_TCP_MAX_SYN_BACKLOG=55, NET_IPV4_LOCAL_PORT_RANGE=56, NET_IPV4_ICMP_ECHO_IGNORE_ALL=57, NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58, NET_IPV4_ICMP_SOURCEQUENCH_RATE=59, NET_IPV4_ICMP_DESTUNREACH_RATE=60, NET_IPV4_ICMP_TIMEEXCEED_RATE=61, NET_IPV4_ICMP_PARAMPROB_RATE=62, NET_IPV4_ICMP_ECHOREPLY_RATE=63, NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64, NET_IPV4_IGMP_MAX_MEMBERSHIPS=65, NET_TCP_TW_RECYCLE=66, NET_IPV4_ALWAYS_DEFRAG=67, NET_IPV4_TCP_KEEPALIVE_INTVL=68, NET_IPV4_INET_PEER_THRESHOLD=69, NET_IPV4_INET_PEER_MINTTL=70, NET_IPV4_INET_PEER_MAXTTL=71, NET_IPV4_INET_PEER_GC_MINTIME=72, NET_IPV4_INET_PEER_GC_MAXTIME=73, NET_TCP_ORPHAN_RETRIES=74, NET_TCP_ABORT_ON_OVERFLOW=75, NET_TCP_SYNACK_RETRIES=76, NET_TCP_MAX_ORPHANS=77, NET_TCP_MAX_TW_BUCKETS=78, NET_TCP_FACK=79, NET_TCP_REORDERING=80, NET_TCP_ECN=81, NET_TCP_DSACK=82, NET_TCP_MEM=83, NET_TCP_WMEM=84, NET_TCP_RMEM=85, NET_TCP_APP_WIN=86, NET_TCP_ADV_WIN_SCALE=87, NET_IPV4_NONLOCAL_BIND=88, NET_IPV4_ICMP_RATELIMIT=89, NET_IPV4_ICMP_RATEMASK=90, NET_TCP_TW_REUSE=91, NET_TCP_FRTO=92, NET_TCP_LOW_LATENCY=93, NET_IPV4_IPFRAG_SECRET_INTERVAL=94, NET_IPV4_IGMP_MAX_MSF=96, NET_TCP_NO_METRICS_SAVE=97, NET_TCP_DEFAULT_WIN_SCALE=105, NET_TCP_MODERATE_RCVBUF=106, NET_TCP_TSO_WIN_DIVISOR=107, NET_TCP_BIC_BETA=108, NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, NET_TCP_CONG_CONTROL=110, NET_TCP_ABC=111, NET_IPV4_IPFRAG_MAX_DIST=112, NET_TCP_MTU_PROBING=113, NET_TCP_BASE_MSS=114, NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115, NET_TCP_DMA_COPYBREAK=116, NET_TCP_SLOW_START_AFTER_IDLE=117, NET_CIPSOV4_CACHE_ENABLE=118, NET_CIPSOV4_CACHE_BUCKET_SIZE=119, NET_CIPSOV4_RBM_OPTFMT=120, NET_CIPSOV4_RBM_STRICTVALID=121, NET_TCP_AVAIL_CONG_CONTROL=122, NET_TCP_ALLOWED_CONG_CONTROL=123, NET_TCP_MAX_SSTHRESH=124, NET_TCP_FRTO_RESPONSE=125, }; enum { NET_IPV4_ROUTE_FLUSH=1, NET_IPV4_ROUTE_MIN_DELAY=2, NET_IPV4_ROUTE_MAX_DELAY=3, NET_IPV4_ROUTE_GC_THRESH=4, NET_IPV4_ROUTE_MAX_SIZE=5, NET_IPV4_ROUTE_GC_MIN_INTERVAL=6, NET_IPV4_ROUTE_GC_TIMEOUT=7, NET_IPV4_ROUTE_GC_INTERVAL=8, NET_IPV4_ROUTE_REDIRECT_LOAD=9, NET_IPV4_ROUTE_REDIRECT_NUMBER=10, NET_IPV4_ROUTE_REDIRECT_SILENCE=11, NET_IPV4_ROUTE_ERROR_COST=12, NET_IPV4_ROUTE_ERROR_BURST=13, NET_IPV4_ROUTE_GC_ELASTICITY=14, NET_IPV4_ROUTE_MTU_EXPIRES=15, NET_IPV4_ROUTE_MIN_PMTU=16, NET_IPV4_ROUTE_MIN_ADVMSS=17, NET_IPV4_ROUTE_SECRET_INTERVAL=18, NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19, }; enum { NET_PROTO_CONF_ALL=-2, NET_PROTO_CONF_DEFAULT=-3 }; enum { NET_IPV4_CONF_FORWARDING=1, NET_IPV4_CONF_MC_FORWARDING=2, NET_IPV4_CONF_PROXY_ARP=3, NET_IPV4_CONF_ACCEPT_REDIRECTS=4, NET_IPV4_CONF_SECURE_REDIRECTS=5, NET_IPV4_CONF_SEND_REDIRECTS=6, NET_IPV4_CONF_SHARED_MEDIA=7, NET_IPV4_CONF_RP_FILTER=8, NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9, NET_IPV4_CONF_BOOTP_RELAY=10, NET_IPV4_CONF_LOG_MARTIANS=11, NET_IPV4_CONF_TAG=12, NET_IPV4_CONF_ARPFILTER=13, NET_IPV4_CONF_MEDIUM_ID=14, NET_IPV4_CONF_NOXFRM=15, NET_IPV4_CONF_NOPOLICY=16, NET_IPV4_CONF_FORCE_IGMP_VERSION=17, NET_IPV4_CONF_ARP_ANNOUNCE=18, NET_IPV4_CONF_ARP_IGNORE=19, NET_IPV4_CONF_PROMOTE_SECONDARIES=20, NET_IPV4_CONF_ARP_ACCEPT=21, NET_IPV4_CONF_ARP_NOTIFY=22, }; enum { NET_IPV4_NF_CONNTRACK_MAX=1, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10, NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12, NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13, NET_IPV4_NF_CONNTRACK_BUCKETS=14, NET_IPV4_NF_CONNTRACK_LOG_INVALID=15, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17, NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18, NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, NET_IPV4_NF_CONNTRACK_COUNT=27, NET_IPV4_NF_CONNTRACK_CHECKSUM=28, }; enum { NET_IPV6_CONF=16, NET_IPV6_NEIGH=17, NET_IPV6_ROUTE=18, NET_IPV6_ICMP=19, NET_IPV6_BINDV6ONLY=20, NET_IPV6_IP6FRAG_HIGH_THRESH=21, NET_IPV6_IP6FRAG_LOW_THRESH=22, NET_IPV6_IP6FRAG_TIME=23, NET_IPV6_IP6FRAG_SECRET_INTERVAL=24, NET_IPV6_MLD_MAX_MSF=25, }; enum { NET_IPV6_ROUTE_FLUSH=1, NET_IPV6_ROUTE_GC_THRESH=2, NET_IPV6_ROUTE_MAX_SIZE=3, NET_IPV6_ROUTE_GC_MIN_INTERVAL=4, NET_IPV6_ROUTE_GC_TIMEOUT=5, NET_IPV6_ROUTE_GC_INTERVAL=6, NET_IPV6_ROUTE_GC_ELASTICITY=7, NET_IPV6_ROUTE_MTU_EXPIRES=8, NET_IPV6_ROUTE_MIN_ADVMSS=9, NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10 }; enum { NET_IPV6_FORWARDING=1, NET_IPV6_HOP_LIMIT=2, NET_IPV6_MTU=3, NET_IPV6_ACCEPT_RA=4, NET_IPV6_ACCEPT_REDIRECTS=5, NET_IPV6_AUTOCONF=6, NET_IPV6_DAD_TRANSMITS=7, NET_IPV6_RTR_SOLICITS=8, NET_IPV6_RTR_SOLICIT_INTERVAL=9, NET_IPV6_RTR_SOLICIT_DELAY=10, NET_IPV6_USE_TEMPADDR=11, NET_IPV6_TEMP_VALID_LFT=12, NET_IPV6_TEMP_PREFERED_LFT=13, NET_IPV6_REGEN_MAX_RETRY=14, NET_IPV6_MAX_DESYNC_FACTOR=15, NET_IPV6_MAX_ADDRESSES=16, NET_IPV6_FORCE_MLD_VERSION=17, NET_IPV6_ACCEPT_RA_DEFRTR=18, NET_IPV6_ACCEPT_RA_PINFO=19, NET_IPV6_ACCEPT_RA_RTR_PREF=20, NET_IPV6_RTR_PROBE_INTERVAL=21, NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22, NET_IPV6_PROXY_NDP=23, NET_IPV6_ACCEPT_SOURCE_ROUTE=25, __NET_IPV6_MAX }; enum { NET_IPV6_ICMP_RATELIMIT=1 }; enum { NET_NEIGH_MCAST_SOLICIT=1, NET_NEIGH_UCAST_SOLICIT=2, NET_NEIGH_APP_SOLICIT=3, NET_NEIGH_RETRANS_TIME=4, NET_NEIGH_REACHABLE_TIME=5, NET_NEIGH_DELAY_PROBE_TIME=6, NET_NEIGH_GC_STALE_TIME=7, NET_NEIGH_UNRES_QLEN=8, NET_NEIGH_PROXY_QLEN=9, NET_NEIGH_ANYCAST_DELAY=10, NET_NEIGH_PROXY_DELAY=11, NET_NEIGH_LOCKTIME=12, NET_NEIGH_GC_INTERVAL=13, NET_NEIGH_GC_THRESH1=14, NET_NEIGH_GC_THRESH2=15, NET_NEIGH_GC_THRESH3=16, NET_NEIGH_RETRANS_TIME_MS=17, NET_NEIGH_REACHABLE_TIME_MS=18, }; enum { NET_DCCP_DEFAULT=1, }; enum { NET_IPX_PPROP_BROADCASTING=1, NET_IPX_FORWARDING=2 }; enum { NET_LLC2=1, NET_LLC_STATION=2, }; enum { NET_LLC2_TIMEOUT=1, }; enum { NET_LLC_STATION_ACK_TIMEOUT=1, }; enum { NET_LLC2_ACK_TIMEOUT=1, NET_LLC2_P_TIMEOUT=2, NET_LLC2_REJ_TIMEOUT=3, NET_LLC2_BUSY_TIMEOUT=4, }; enum { NET_ATALK_AARP_EXPIRY_TIME=1, NET_ATALK_AARP_TICK_TIME=2, NET_ATALK_AARP_RETRANSMIT_LIMIT=3, NET_ATALK_AARP_RESOLVE_TIME=4 }; enum { NET_NETROM_DEFAULT_PATH_QUALITY=1, NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2, NET_NETROM_NETWORK_TTL_INITIALISER=3, NET_NETROM_TRANSPORT_TIMEOUT=4, NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5, NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6, NET_NETROM_TRANSPORT_BUSY_DELAY=7, NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8, NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9, NET_NETROM_ROUTING_CONTROL=10, NET_NETROM_LINK_FAILS_COUNT=11, NET_NETROM_RESET=12 }; enum { NET_AX25_IP_DEFAULT_MODE=1, NET_AX25_DEFAULT_MODE=2, NET_AX25_BACKOFF_TYPE=3, NET_AX25_CONNECT_MODE=4, NET_AX25_STANDARD_WINDOW=5, NET_AX25_EXTENDED_WINDOW=6, NET_AX25_T1_TIMEOUT=7, NET_AX25_T2_TIMEOUT=8, NET_AX25_T3_TIMEOUT=9, NET_AX25_IDLE_TIMEOUT=10, NET_AX25_N2=11, NET_AX25_PACLEN=12, NET_AX25_PROTOCOL=13, NET_AX25_DAMA_SLAVE_TIMEOUT=14 }; enum { NET_ROSE_RESTART_REQUEST_TIMEOUT=1, NET_ROSE_CALL_REQUEST_TIMEOUT=2, NET_ROSE_RESET_REQUEST_TIMEOUT=3, NET_ROSE_CLEAR_REQUEST_TIMEOUT=4, NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5, NET_ROSE_ROUTING_CONTROL=6, NET_ROSE_LINK_FAIL_TIMEOUT=7, NET_ROSE_MAX_VCS=8, NET_ROSE_WINDOW_SIZE=9, NET_ROSE_NO_ACTIVITY_TIMEOUT=10 }; enum { NET_X25_RESTART_REQUEST_TIMEOUT=1, NET_X25_CALL_REQUEST_TIMEOUT=2, NET_X25_RESET_REQUEST_TIMEOUT=3, NET_X25_CLEAR_REQUEST_TIMEOUT=4, NET_X25_ACK_HOLD_BACK_TIMEOUT=5, NET_X25_FORWARD=6 }; enum { NET_TR_RIF_TIMEOUT=1 }; enum { NET_DECNET_NODE_TYPE = 1, NET_DECNET_NODE_ADDRESS = 2, NET_DECNET_NODE_NAME = 3, NET_DECNET_DEFAULT_DEVICE = 4, NET_DECNET_TIME_WAIT = 5, NET_DECNET_DN_COUNT = 6, NET_DECNET_DI_COUNT = 7, NET_DECNET_DR_COUNT = 8, NET_DECNET_DST_GC_INTERVAL = 9, NET_DECNET_CONF = 10, NET_DECNET_NO_FC_MAX_CWND = 11, NET_DECNET_MEM = 12, NET_DECNET_RMEM = 13, NET_DECNET_WMEM = 14, NET_DECNET_DEBUG_LEVEL = 255 }; enum { NET_DECNET_CONF_LOOPBACK = -2, NET_DECNET_CONF_DDCMP = -3, NET_DECNET_CONF_PPP = -4, NET_DECNET_CONF_X25 = -5, NET_DECNET_CONF_GRE = -6, NET_DECNET_CONF_ETHER = -7 }; enum { NET_DECNET_CONF_DEV_PRIORITY = 1, NET_DECNET_CONF_DEV_T1 = 2, NET_DECNET_CONF_DEV_T2 = 3, NET_DECNET_CONF_DEV_T3 = 4, NET_DECNET_CONF_DEV_FORWARDING = 5, NET_DECNET_CONF_DEV_BLKSIZE = 6, NET_DECNET_CONF_DEV_STATE = 7 }; enum { NET_SCTP_RTO_INITIAL = 1, NET_SCTP_RTO_MIN = 2, NET_SCTP_RTO_MAX = 3, NET_SCTP_RTO_ALPHA = 4, NET_SCTP_RTO_BETA = 5, NET_SCTP_VALID_COOKIE_LIFE = 6, NET_SCTP_ASSOCIATION_MAX_RETRANS = 7, NET_SCTP_PATH_MAX_RETRANS = 8, NET_SCTP_MAX_INIT_RETRANSMITS = 9, NET_SCTP_HB_INTERVAL = 10, NET_SCTP_PRESERVE_ENABLE = 11, NET_SCTP_MAX_BURST = 12, NET_SCTP_ADDIP_ENABLE = 13, NET_SCTP_PRSCTP_ENABLE = 14, NET_SCTP_SNDBUF_POLICY = 15, NET_SCTP_SACK_TIMEOUT = 16, NET_SCTP_RCVBUF_POLICY = 17, }; enum { NET_BRIDGE_NF_CALL_ARPTABLES = 1, NET_BRIDGE_NF_CALL_IPTABLES = 2, NET_BRIDGE_NF_CALL_IP6TABLES = 3, NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4, NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5, }; enum { NET_IRDA_DISCOVERY=1, NET_IRDA_DEVNAME=2, NET_IRDA_DEBUG=3, NET_IRDA_FAST_POLL=4, NET_IRDA_DISCOVERY_SLOTS=5, NET_IRDA_DISCOVERY_TIMEOUT=6, NET_IRDA_SLOT_TIMEOUT=7, NET_IRDA_MAX_BAUD_RATE=8, NET_IRDA_MIN_TX_TURN_TIME=9, NET_IRDA_MAX_TX_DATA_SIZE=10, NET_IRDA_MAX_TX_WINDOW=11, NET_IRDA_MAX_NOREPLY_TIME=12, NET_IRDA_WARN_NOREPLY_TIME=13, NET_IRDA_LAP_KEEPALIVE_TIME=14, }; enum { FS_NRINODE=1, FS_STATINODE=2, FS_MAXINODE=3, FS_NRDQUOT=4, FS_MAXDQUOT=5, FS_NRFILE=6, FS_MAXFILE=7, FS_DENTRY=8, FS_NRSUPER=9, FS_MAXSUPER=10, FS_OVERFLOWUID=11, FS_OVERFLOWGID=12, FS_LEASES=13, FS_DIR_NOTIFY=14, FS_LEASE_TIME=15, FS_DQSTATS=16, FS_XFS=17, FS_AIO_NR=18, FS_AIO_MAX_NR=19, FS_INOTIFY=20, FS_OCFS2=988, }; enum { FS_DQ_LOOKUPS = 1, FS_DQ_DROPS = 2, FS_DQ_READS = 3, FS_DQ_WRITES = 4, FS_DQ_CACHE_HITS = 5, FS_DQ_ALLOCATED = 6, FS_DQ_FREE = 7, FS_DQ_SYNCS = 8, FS_DQ_WARNINGS = 9, }; enum { DEV_CDROM=1, DEV_HWMON=2, DEV_PARPORT=3, DEV_RAID=4, DEV_MAC_HID=5, DEV_SCSI=6, DEV_IPMI=7, }; enum { DEV_CDROM_INFO=1, DEV_CDROM_AUTOCLOSE=2, DEV_CDROM_AUTOEJECT=3, DEV_CDROM_DEBUG=4, DEV_CDROM_LOCK=5, DEV_CDROM_CHECK_MEDIA=6 }; enum { DEV_PARPORT_DEFAULT=-3 }; enum { DEV_RAID_SPEED_LIMIT_MIN=1, DEV_RAID_SPEED_LIMIT_MAX=2 }; enum { DEV_PARPORT_DEFAULT_TIMESLICE=1, DEV_PARPORT_DEFAULT_SPINTIME=2 }; enum { DEV_PARPORT_SPINTIME=1, DEV_PARPORT_BASE_ADDR=2, DEV_PARPORT_IRQ=3, DEV_PARPORT_DMA=4, DEV_PARPORT_MODES=5, DEV_PARPORT_DEVICES=6, DEV_PARPORT_AUTOPROBE=16 }; enum { DEV_PARPORT_DEVICES_ACTIVE=-3, }; enum { DEV_PARPORT_DEVICE_TIMESLICE=1, }; enum { DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1, DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2, DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3, DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4, DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5, DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6 }; enum { DEV_SCSI_LOGGING_LEVEL=1, }; enum { DEV_IPMI_POWEROFF_POWERCYCLE=1, }; enum { ABI_DEFHANDLER_COFF=1, ABI_DEFHANDLER_ELF=2, ABI_DEFHANDLER_LCALL7=3, ABI_DEFHANDLER_LIBCSO=4, ABI_TRACE=5, ABI_FAKE_UTSNAME=6, }; # 29 "include/linux/sysctl.h" 2 struct ctl_table; struct nsproxy; struct ctl_table_root; struct ctl_table_header; struct ctl_dir; typedef struct ctl_table ctl_table; typedef int proc_handler (struct ctl_table *ctl, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int proc_dostring(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_ms_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_doulongvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, void *, size_t *, loff_t *); extern int proc_do_large_bitmap(struct ctl_table *, int, void *, size_t *, loff_t *); # 89 "include/linux/sysctl.h" struct ctl_table_poll { atomic_t event; wait_queue_head_t wait; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *proc_sys_poll_event(struct ctl_table_poll *poll) { return (void *)(unsigned long)(*(volatile int *)&(&poll->event)->counter); } # 107 "include/linux/sysctl.h" struct ctl_table { const char *procname; void *data; int maxlen; umode_t mode; struct ctl_table *child; proc_handler *proc_handler; struct ctl_table_poll *poll; void *extra1; void *extra2; }; struct ctl_node { struct rb_node node; struct ctl_table_header *header; }; struct ctl_table_header { union { struct { struct ctl_table *ctl_table; int used; int count; int nreg; }; struct callback_head rcu; }; struct completion *unregistering; struct ctl_table *ctl_table_arg; struct ctl_table_root *root; struct ctl_table_set *set; struct ctl_dir *parent; struct ctl_node *node; }; struct ctl_dir { struct ctl_table_header header; struct rb_root root; }; struct ctl_table_set { int (*is_seen)(struct ctl_table_set *); struct ctl_dir dir; }; struct ctl_table_root { struct ctl_table_set default_set; struct ctl_table_set *(*lookup)(struct ctl_table_root *root, struct nsproxy *namespaces); int (*permissions)(struct ctl_table_header *head, struct ctl_table *table); }; struct ctl_path { const char *procname; }; void proc_sys_poll_notify(struct ctl_table_poll *poll); extern void setup_sysctl_set(struct ctl_table_set *p, struct ctl_table_root *root, int (*is_seen)(struct ctl_table_set *)); extern void retire_sysctl_set(struct ctl_table_set *set); void register_sysctl_root(struct ctl_table_root *root); struct ctl_table_header *__register_sysctl_table( struct ctl_table_set *set, const char *path, struct ctl_table *table); struct ctl_table_header *__register_sysctl_paths( struct ctl_table_set *set, const struct ctl_path *path, struct ctl_table *table); struct ctl_table_header *register_sysctl(const char *path, struct ctl_table *table); struct ctl_table_header *register_sysctl_table(struct ctl_table * table); struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, struct ctl_table *table); void unregister_sysctl_table(struct ctl_table_header * table); extern int sysctl_init(void); # 28 "include/linux/kmod.h" 2 extern char modprobe_path[]; extern __attribute__((format(printf, 2, 3))) int __request_module(bool wait, const char *name, ...); # 48 "include/linux/kmod.h" struct cred; struct file; struct subprocess_info { struct work_struct work; struct completion *complete; char *path; char **argv; char **envp; int wait; int retval; int (*init)(struct subprocess_info *info, struct cred *new); void (*cleanup)(struct subprocess_info *info); void *data; }; extern int call_usermodehelper_fns(char *path, char **argv, char **envp, int wait, int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int call_usermodehelper(char *path, char **argv, char **envp, int wait) { return call_usermodehelper_fns(path, argv, envp, wait, ((void *)0), ((void *)0), ((void *)0)); } extern struct ctl_table usermodehelper_table[]; enum umh_disable_depth { UMH_ENABLED = 0, UMH_FREEZING, UMH_DISABLED, }; extern void usermodehelper_init(void); extern int __usermodehelper_disable(enum umh_disable_depth depth); extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int usermodehelper_disable(void) { return __usermodehelper_disable(UMH_DISABLED); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void usermodehelper_enable(void) { __usermodehelper_set_disable_depth(UMH_ENABLED); } extern int usermodehelper_read_trylock(void); extern long usermodehelper_read_lock_wait(long timeout); extern void usermodehelper_read_unlock(void); # 14 "include/linux/module.h" 2 # 1 "include/linux/elf.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/elf.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/elf.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/user.h" 1 # 33 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/user.h" struct user_fp { struct fp_reg { unsigned int sign1:1; unsigned int unused:15; unsigned int sign2:1; unsigned int exponent:14; unsigned int j:1; unsigned int mantissa1:31; unsigned int mantissa0:32; } fpregs[8]; unsigned int fpsr:32; unsigned int fpcr:32; unsigned char ftype[8]; unsigned int init_flag; }; struct user{ struct pt_regs regs; int u_fpvalid; unsigned long int u_tsize; unsigned long int u_dsize; unsigned long int u_ssize; unsigned long start_code; unsigned long start_stack; long int signal; int reserved; unsigned long u_ar0; unsigned long magic; char u_comm[32]; int u_debugreg[8]; struct user_fp u_fp; struct user_fp_struct * u_fp0; }; # 88 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/user.h" struct user_vfp { unsigned long long fpregs[32]; unsigned long fpscr; }; struct user_vfp_exc { unsigned long fpexc; unsigned long fpinst; unsigned long fpinst2; }; # 11 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/elf.h" 2 struct task_struct; typedef unsigned long elf_greg_t; typedef unsigned long elf_freg_t[3]; typedef elf_greg_t elf_gregset_t[(sizeof (struct pt_regs) / sizeof(elf_greg_t))]; typedef struct user_fp elf_fpregset_t; # 92 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/elf.h" extern char elf_platform[]; struct elf32_hdr; extern int elf_check_arch(const struct elf32_hdr *); extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); struct task_struct; int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); # 126 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/elf.h" extern void elf_set_personality(const struct elf32_hdr *); struct mm_struct; extern unsigned long arch_randomize_brk(struct mm_struct *mm); # 5 "include/linux/elf.h" 2 # 1 "include/uapi/linux/elf.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/elf-em.h" 1 # 6 "include/uapi/linux/elf.h" 2 typedef __u32 Elf32_Addr; typedef __u16 Elf32_Half; typedef __u32 Elf32_Off; typedef __s32 Elf32_Sword; typedef __u32 Elf32_Word; typedef __u64 Elf64_Addr; typedef __u16 Elf64_Half; typedef __s16 Elf64_SHalf; typedef __u64 Elf64_Off; typedef __s32 Elf64_Sword; typedef __u32 Elf64_Word; typedef __u64 Elf64_Xword; typedef __s64 Elf64_Sxword; # 137 "include/uapi/linux/elf.h" typedef struct dynamic{ Elf32_Sword d_tag; union{ Elf32_Sword d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; # 160 "include/uapi/linux/elf.h" typedef struct elf32_rel { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct elf64_rel { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct elf32_rela{ Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct elf64_rela { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; typedef struct elf32_sym{ Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Half st_shndx; } Elf32_Sym; typedef struct elf64_sym { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct elf32_hdr{ unsigned char e_ident[16]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct elf64_hdr { unsigned char e_ident[16]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; typedef struct elf32_phdr{ Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct elf64_phdr { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; # 299 "include/uapi/linux/elf.h" typedef struct elf32_shdr { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct elf64_shdr { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; # 401 "include/uapi/linux/elf.h" typedef struct elf32_note { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct elf64_note { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; # 6 "include/linux/elf.h" 2 # 16 "include/linux/elf.h" extern Elf32_Dyn _DYNAMIC []; # 37 "include/linux/elf.h" struct file; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int elf_coredump_extra_notes_size(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int elf_coredump_extra_notes_write(struct file *file, loff_t *foffset) { return 0; } # 15 "include/linux/module.h" 2 # 1 "include/linux/kobject.h" 1 # 21 "include/linux/kobject.h" # 1 "include/linux/sysfs.h" 1 # 19 "include/linux/sysfs.h" # 1 "include/linux/kobject_ns.h" 1 # 20 "include/linux/kobject_ns.h" struct sock; struct kobject; enum kobj_ns_type { KOBJ_NS_TYPE_NONE = 0, KOBJ_NS_TYPE_NET, KOBJ_NS_TYPES }; # 40 "include/linux/kobject_ns.h" struct kobj_ns_type_operations { enum kobj_ns_type type; void *(*grab_current_ns)(void); const void *(*netlink_ns)(struct sock *sk); const void *(*initial_ns)(void); void (*drop_ns)(void *); }; int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); int kobj_ns_type_registered(enum kobj_ns_type type); const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent); const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj); void *kobj_ns_grab_current(enum kobj_ns_type type); const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk); const void *kobj_ns_initial(enum kobj_ns_type type); void kobj_ns_drop(enum kobj_ns_type type, void *ns); # 20 "include/linux/sysfs.h" 2 struct kobject; struct module; enum kobj_ns_type; struct attribute { const char *name; umode_t mode; }; # 57 "include/linux/sysfs.h" struct attribute_group { const char *name; umode_t (*is_visible)(struct kobject *, struct attribute *, int); struct attribute **attrs; }; # 97 "include/linux/sysfs.h" struct file; struct vm_area_struct; struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t); ssize_t (*write)(struct file *,struct kobject *, struct bin_attribute *, char *, loff_t, size_t); int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr, struct vm_area_struct *vma); }; # 124 "include/linux/sysfs.h" struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *,char *); ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); const void *(*namespace)(struct kobject *, const struct attribute *); }; struct sysfs_dirent; int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *), void *data, struct module *owner); int __attribute__((warn_unused_result)) sysfs_create_dir(struct kobject *kobj); void sysfs_remove_dir(struct kobject *kobj); int __attribute__((warn_unused_result)) sysfs_rename_dir(struct kobject *kobj, const char *new_name); int __attribute__((warn_unused_result)) sysfs_move_dir(struct kobject *kobj, struct kobject *new_parent_kobj); int __attribute__((warn_unused_result)) sysfs_create_file(struct kobject *kobj, const struct attribute *attr); int __attribute__((warn_unused_result)) sysfs_create_files(struct kobject *kobj, const struct attribute **attr); int __attribute__((warn_unused_result)) sysfs_chmod_file(struct kobject *kobj, const struct attribute *attr, umode_t mode); void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr); void sysfs_remove_files(struct kobject *kobj, const struct attribute **attr); int __attribute__((warn_unused_result)) sysfs_create_bin_file(struct kobject *kobj, const struct bin_attribute *attr); void sysfs_remove_bin_file(struct kobject *kobj, const struct bin_attribute *attr); int __attribute__((warn_unused_result)) sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name); int __attribute__((warn_unused_result)) sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target, const char *name); void sysfs_remove_link(struct kobject *kobj, const char *name); int sysfs_rename_link(struct kobject *kobj, struct kobject *target, const char *old_name, const char *new_name); void sysfs_delete_link(struct kobject *dir, struct kobject *targ, const char *name); int __attribute__((warn_unused_result)) sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp); int sysfs_update_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_remove_group(struct kobject *kobj, const struct attribute_group *grp); int sysfs_add_file_to_group(struct kobject *kobj, const struct attribute *attr, const char *group); void sysfs_remove_file_from_group(struct kobject *kobj, const struct attribute *attr, const char *group); int sysfs_merge_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_unmerge_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr); void sysfs_notify_dirent(struct sysfs_dirent *sd); struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, const void *ns, const unsigned char *name); struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd); void sysfs_put(struct sysfs_dirent *sd); int __attribute__((warn_unused_result)) sysfs_init(void); # 22 "include/linux/kobject.h" 2 # 1 "include/linux/kref.h" 1 # 23 "include/linux/kref.h" struct kref { atomic_t refcount; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kref_init(struct kref *kref) { (((&kref->refcount)->counter) = (1)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kref_get(struct kref *kref) { ({ int __ret_warn_on = !!(!(*(volatile int *)&(&kref->refcount)->counter)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/kref.h", 42); __builtin_expect(!!(__ret_warn_on), 0); }); atomic_add(1, &kref->refcount); } # 64 "include/linux/kref.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kref_sub(struct kref *kref, unsigned int count, void (*release)(struct kref *kref)) { ({ int __ret_warn_on = !!(release == ((void *)0)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/kref.h", 67); __builtin_expect(!!(__ret_warn_on), 0); }); if ((atomic_sub_return((int) count, &kref->refcount) == 0)) { release(kref); return 1; } return 0; } # 93 "include/linux/kref.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kref_put(struct kref *kref, void (*release)(struct kref *kref)) { return kref_sub(kref, 1, release); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kref_put_mutex(struct kref *kref, void (*release)(struct kref *kref), struct mutex *lock) { ({ int __ret_warn_on = !!(release == ((void *)0)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/kref.h", 102); __builtin_expect(!!(__ret_warn_on), 0); }); if (__builtin_expect(!!(!atomic_add_unless(&kref->refcount, -1, 1)), 0)) { mutex_lock(lock); if (__builtin_expect(!!(!(atomic_sub_return(1, &kref->refcount) == 0)), 0)) { mutex_unlock(lock); return 0; } release(kref); return 1; } return 0; } # 131 "include/linux/kref.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) kref_get_unless_zero(struct kref *kref) { return atomic_add_unless(&kref->refcount, 1, 0); } # 25 "include/linux/kobject.h" 2 # 35 "include/linux/kobject.h" extern char uevent_helper[]; extern u64 uevent_seqnum; # 50 "include/linux/kobject.h" enum kobject_action { KOBJ_ADD, KOBJ_REMOVE, KOBJ_CHANGE, KOBJ_MOVE, KOBJ_ONLINE, KOBJ_OFFLINE, KOBJ_MAX }; struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct sysfs_dirent *sd; struct kref kref; unsigned int state_initialized:1; unsigned int state_in_sysfs:1; unsigned int state_add_uevent_sent:1; unsigned int state_remove_uevent_sent:1; unsigned int uevent_suppress:1; }; extern __attribute__((format(printf, 2, 3))) int kobject_set_name(struct kobject *kobj, const char *name, ...); extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, va_list vargs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *kobject_name(const struct kobject *kobj) { return kobj->name; } extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); extern __attribute__((format(printf, 3, 4))) __attribute__((warn_unused_result)) int kobject_add(struct kobject *kobj, struct kobject *parent, const char *fmt, ...); extern __attribute__((format(printf, 4, 5))) __attribute__((warn_unused_result)) int kobject_init_and_add(struct kobject *kobj, struct kobj_type *ktype, struct kobject *parent, const char *fmt, ...); extern void kobject_del(struct kobject *kobj); extern struct kobject * __attribute__((warn_unused_result)) kobject_create(void); extern struct kobject * __attribute__((warn_unused_result)) kobject_create_and_add(const char *name, struct kobject *parent); extern int __attribute__((warn_unused_result)) kobject_rename(struct kobject *, const char *new_name); extern int __attribute__((warn_unused_result)) kobject_move(struct kobject *, struct kobject *); extern struct kobject *kobject_get(struct kobject *kobj); extern void kobject_put(struct kobject *kobj); extern char *kobject_get_path(struct kobject *kobj, gfp_t flag); struct kobj_type { void (*release)(struct kobject *kobj); const struct sysfs_ops *sysfs_ops; struct attribute **default_attrs; const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); const void *(*namespace)(struct kobject *kobj); }; struct kobj_uevent_env { char *envp[32]; int envp_idx; char buf[2048]; int buflen; }; struct kset_uevent_ops { int (* const filter)(struct kset *kset, struct kobject *kobj); const char *(* const name)(struct kset *kset, struct kobject *kobj); int (* const uevent)(struct kset *kset, struct kobject *kobj, struct kobj_uevent_env *env); }; struct kobj_attribute { struct attribute attr; ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr, char *buf); ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count); }; extern const struct sysfs_ops kobj_sysfs_ops; struct sock; # 159 "include/linux/kobject.h" struct kset { struct list_head list; spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops; }; extern void kset_init(struct kset *kset); extern int __attribute__((warn_unused_result)) kset_register(struct kset *kset); extern void kset_unregister(struct kset *kset); extern struct kset * __attribute__((warn_unused_result)) kset_create_and_add(const char *name, const struct kset_uevent_ops *u, struct kobject *parent_kobj); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kset *to_kset(struct kobject *kobj) { return kobj ? ({ const typeof( ((struct kset *)0)->kobj ) *__mptr = (kobj); (struct kset *)( (char *)__mptr - __builtin_offsetof(struct kset,kobj) );}) : ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kset *kset_get(struct kset *k) { return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kset_put(struct kset *k) { kobject_put(&k->kobj); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kobj_type *get_ktype(struct kobject *kobj) { return kobj->ktype; } extern struct kobject *kset_find_obj(struct kset *, const char *); extern struct kobject *kernel_kobj; extern struct kobject *mm_kobj; extern struct kobject *hypervisor_kobj; extern struct kobject *power_kobj; extern struct kobject *firmware_kobj; int kobject_uevent(struct kobject *kobj, enum kobject_action action); int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, char *envp[]); __attribute__((format(printf, 2, 3))) int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...); int kobject_action_type(const char *buf, size_t count, enum kobject_action *type); # 17 "include/linux/module.h" 2 # 1 "include/linux/moduleparam.h" 1 # 37 "include/linux/moduleparam.h" struct kernel_param; struct kernel_param_ops { int (*set)(const char *val, const struct kernel_param *kp); int (*get)(char *buffer, const struct kernel_param *kp); void (*free)(void *arg); }; struct kernel_param { const char *name; const struct kernel_param_ops *ops; u16 perm; s16 level; union { void *arg; const struct kparam_string *str; const struct kparam_array *arr; }; }; struct kparam_string { unsigned int maxlen; char *string; }; struct kparam_array { unsigned int max; unsigned int elemsize; unsigned int *num; const struct kernel_param_ops *ops; void *elem; }; # 196 "include/linux/moduleparam.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __check_old_set_param(int (*oldset)(const char *, struct kernel_param *)) { return 0; } # 247 "include/linux/moduleparam.h" extern void __kernel_param_lock(void); extern void __kernel_param_unlock(void); # 302 "include/linux/moduleparam.h" extern bool parameq(const char *name1, const char *name2); # 312 "include/linux/moduleparam.h" extern bool parameqn(const char *name1, const char *name2, size_t n); extern int parse_args(const char *name, char *args, const struct kernel_param *params, unsigned num, s16 level_min, s16 level_max, int (*unknown)(char *param, char *val, const char *doing)); extern void destroy_params(const struct kernel_param *params, unsigned num); # 340 "include/linux/moduleparam.h" extern struct kernel_param_ops param_ops_byte; extern int param_set_byte(const char *val, const struct kernel_param *kp); extern int param_get_byte(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_short; extern int param_set_short(const char *val, const struct kernel_param *kp); extern int param_get_short(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_ushort; extern int param_set_ushort(const char *val, const struct kernel_param *kp); extern int param_get_ushort(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_int; extern int param_set_int(const char *val, const struct kernel_param *kp); extern int param_get_int(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_uint; extern int param_set_uint(const char *val, const struct kernel_param *kp); extern int param_get_uint(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_long; extern int param_set_long(const char *val, const struct kernel_param *kp); extern int param_get_long(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_ulong; extern int param_set_ulong(const char *val, const struct kernel_param *kp); extern int param_get_ulong(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_charp; extern int param_set_charp(const char *val, const struct kernel_param *kp); extern int param_get_charp(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_bool; extern int param_set_bool(const char *val, const struct kernel_param *kp); extern int param_get_bool(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_invbool; extern int param_set_invbool(const char *val, const struct kernel_param *kp); extern int param_get_invbool(char *buffer, const struct kernel_param *kp); extern struct kernel_param_ops param_ops_bint; extern int param_set_bint(const char *val, const struct kernel_param *kp); # 436 "include/linux/moduleparam.h" extern struct kernel_param_ops param_array_ops; extern struct kernel_param_ops param_ops_string; extern int param_set_copystring(const char *val, const struct kernel_param *); extern int param_get_string(char *buffer, const struct kernel_param *kp); struct module; extern int module_param_sysfs_setup(struct module *mod, const struct kernel_param *kparam, unsigned int num_params); extern void module_param_sysfs_remove(struct module *mod); # 18 "include/linux/module.h" 2 # 1 "include/linux/tracepoint.h" 1 # 20 "include/linux/tracepoint.h" # 1 "include/linux/static_key.h" 1 # 1 "include/linux/jump_label.h" 1 # 55 "include/linux/jump_label.h" struct static_key { atomic_t enabled; struct jump_entry *entries; struct static_key_mod *next; }; struct static_key_deferred { struct static_key key; unsigned long timeout; struct delayed_work work; }; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/jump_label.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/switch_to.h" 1 # 11 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/switch_to.h" extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *); # 6 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system_info.h" 1 # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system_info.h" extern unsigned int system_rev; extern unsigned int system_serial_low; extern unsigned int system_serial_high; extern unsigned int mem_fclk_21285; extern int __attribute__((pure)) cpu_architecture(void); # 7 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system_misc.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system_misc.h" extern void cpu_init(void); void soft_restart(unsigned long); extern void (*arm_pm_restart)(char str, const char *cmd); extern void (*arm_pm_idle)(void); extern unsigned int user_debug; extern void disable_hlt(void); extern void enable_hlt(void); # 7 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/system.h" 2 # 8 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/jump_label.h" 2 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/jump_label.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) bool arch_static_branch(struct static_key *key) { asm goto("1:\n\t" "nop" "\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".word 1b, %l[l_yes], %c0\n\t" ".popsection\n\t" : : "i" (key) : : l_yes); return false; l_yes: return true; } typedef u32 jump_label_t; struct jump_entry { jump_label_t code; jump_label_t target; jump_label_t key; }; # 71 "include/linux/jump_label.h" 2 enum jump_label_type { JUMP_LABEL_DISABLE = 0, JUMP_LABEL_ENABLE, }; struct module; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct jump_entry *jump_label_get_entries(struct static_key *key) { return (struct jump_entry *)((unsigned long)key->entries & ~1UL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool jump_label_get_branch_default(struct static_key *key) { if ((unsigned long)key->entries & 1UL) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) bool static_key_false(struct static_key *key) { return arch_static_branch(key); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) bool static_key_true(struct static_key *key) { return !static_key_false(key); } extern struct jump_entry __start___jump_table[]; extern struct jump_entry __stop___jump_table[]; extern void jump_label_init(void); extern void jump_label_lock(void); extern void jump_label_unlock(void); extern void arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type); extern void arch_jump_label_transform_static(struct jump_entry *entry, enum jump_label_type type); extern int jump_label_text_reserved(void *start, void *end); extern void static_key_slow_inc(struct static_key *key); extern void static_key_slow_dec(struct static_key *key); extern void static_key_slow_dec_deferred(struct static_key_deferred *key); extern void jump_label_apply_nops(struct module *mod); extern void jump_label_rate_limit(struct static_key_deferred *key, unsigned long rl); # 206 "include/linux/jump_label.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool static_key_enabled(struct static_key *key) { return ((*(volatile int *)&(&key->enabled)->counter) > 0); } # 1 "include/linux/static_key.h" 2 # 21 "include/linux/tracepoint.h" 2 struct module; struct tracepoint; struct tracepoint_func { void *func; void *data; }; struct tracepoint { const char *name; struct static_key key; void (*regfunc)(void); void (*unregfunc)(void); struct tracepoint_func *funcs; }; extern int tracepoint_probe_register(const char *name, void *probe, void *data); extern int tracepoint_probe_unregister(const char *name, void *probe, void *data); extern int tracepoint_probe_register_noupdate(const char *name, void *probe, void *data); extern int tracepoint_probe_unregister_noupdate(const char *name, void *probe, void *data); extern void tracepoint_probe_update_all(void); struct tp_module { struct list_head list; unsigned int num_tracepoints; struct tracepoint * const *tracepoints_ptrs; }; struct tracepoint_iter { struct tp_module *module; struct tracepoint * const *tracepoint; }; extern void tracepoint_iter_start(struct tracepoint_iter *iter); extern void tracepoint_iter_next(struct tracepoint_iter *iter); extern void tracepoint_iter_stop(struct tracepoint_iter *iter); extern void tracepoint_iter_reset(struct tracepoint_iter *iter); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tracepoint_synchronize_unregister(void) { synchronize_sched(); } # 19 "include/linux/module.h" 2 # 1 "include/linux/export.h" 1 # 19 "include/linux/export.h" struct kernel_symbol { unsigned long value; const char *name; }; extern struct module __this_module; # 20 "include/linux/module.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/module.h" 1 # 1 "include/asm-generic/module.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/module.h" 2 struct unwind_table; enum { ARM_SEC_INIT, ARM_SEC_DEVINIT, ARM_SEC_CORE, ARM_SEC_EXIT, ARM_SEC_DEVEXIT, ARM_SEC_MAX, }; struct mod_arch_specific { struct unwind_table *unwind[ARM_SEC_MAX]; }; # 23 "include/linux/module.h" 2 # 32 "include/linux/module.h" struct modversion_info { unsigned long crc; char name[(64 - sizeof(unsigned long))]; }; struct module; struct module_kobject { struct kobject kobj; struct module *mod; struct kobject *drivers_dir; struct module_param_attrs *mp; }; struct module_attribute { struct attribute attr; ssize_t (*show)(struct module_attribute *, struct module_kobject *, char *); ssize_t (*store)(struct module_attribute *, struct module_kobject *, const char *, size_t count); void (*setup)(struct module *, const char *); int (*test)(struct module *); void (*free)(struct module *); }; struct module_version_attribute { struct module_attribute mattr; const char *module_name; const char *version; } __attribute__ ((__aligned__(sizeof(void *)))); extern ssize_t __modver_version_show(struct module_attribute *, struct module_kobject *, char *); extern struct module_attribute module_uevent; extern int init_module(void); extern void cleanup_module(void); struct exception_table_entry; const struct exception_table_entry * search_extable(const struct exception_table_entry *first, const struct exception_table_entry *last, unsigned long value); void sort_extable(struct exception_table_entry *start, struct exception_table_entry *finish); void sort_main_extable(void); void trim_init_extable(struct module *m); # 183 "include/linux/module.h" const struct exception_table_entry *search_exception_tables(unsigned long add); struct notifier_block; extern int modules_disabled; void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); struct module_use { struct list_head source_list; struct list_head target_list; struct module *source, *target; }; enum module_state { MODULE_STATE_LIVE, MODULE_STATE_COMING, MODULE_STATE_GOING, MODULE_STATE_UNFORMED, }; # 218 "include/linux/module.h" struct module_ref { unsigned long incs; unsigned long decs; } __attribute((aligned(2 * sizeof(unsigned long)))); struct module { enum module_state state; struct list_head list; char name[(64 - sizeof(unsigned long))]; struct module_kobject mkobj; struct module_attribute *modinfo_attrs; const char *version; const char *srcversion; struct kobject *holders_dir; const struct kernel_symbol *syms; const unsigned long *crcs; unsigned int num_syms; struct kernel_param *kp; unsigned int num_kp; unsigned int num_gpl_syms; const struct kernel_symbol *gpl_syms; const unsigned long *gpl_crcs; const struct kernel_symbol *unused_syms; const unsigned long *unused_crcs; unsigned int num_unused_syms; unsigned int num_unused_gpl_syms; const struct kernel_symbol *unused_gpl_syms; const unsigned long *unused_gpl_crcs; # 272 "include/linux/module.h" const struct kernel_symbol *gpl_future_syms; const unsigned long *gpl_future_crcs; unsigned int num_gpl_future_syms; unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(void); void *module_init; void *module_core; unsigned int init_size, core_size; unsigned int init_text_size, core_text_size; unsigned int init_ro_size, core_ro_size; struct mod_arch_specific arch; unsigned int taints; unsigned num_bugs; struct list_head bug_list; struct bug_entry *bug_table; # 316 "include/linux/module.h" Elf32_Sym *symtab, *core_symtab; unsigned int num_symtab, core_num_syms; char *strtab, *core_strtab; struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; void *percpu; unsigned int percpu_size; unsigned int num_tracepoints; struct tracepoint * const *tracepoints_ptrs; struct jump_entry *jump_entries; unsigned int num_jump_entries; unsigned int num_trace_bprintk_fmt; const char **trace_bprintk_fmt_start; struct ftrace_event_call **trace_events; unsigned int num_trace_events; unsigned int num_ftrace_callsites; unsigned long *ftrace_callsites; struct list_head source_list; struct list_head target_list; struct task_struct *waiter; void (*exit)(void); struct module_ref *refptr; }; extern struct mutex module_mutex; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int module_is_live(struct module *mod) { return mod->state != MODULE_STATE_GOING; } struct module *__module_text_address(unsigned long addr); struct module *__module_address(unsigned long addr); bool is_module_address(unsigned long addr); bool is_module_percpu_address(unsigned long addr); bool is_module_text_address(unsigned long addr); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int within_module_core(unsigned long addr, struct module *mod) { return (unsigned long)mod->module_core <= addr && addr < (unsigned long)mod->module_core + mod->core_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int within_module_init(unsigned long addr, struct module *mod) { return (unsigned long)mod->module_init <= addr && addr < (unsigned long)mod->module_init + mod->init_size; } struct module *find_module(const char *name); struct symsearch { const struct kernel_symbol *start, *stop; const unsigned long *crcs; enum { NOT_GPL_ONLY, GPL_ONLY, WILL_BE_GPL_ONLY, } licence; bool unused; }; const struct kernel_symbol *find_symbol(const char *name, struct module **owner, const unsigned long **crc, bool gplok, bool warn); bool each_symbol_section(bool (*fn)(const struct symsearch *arr, struct module *owner, void *data), void *data); int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *name, char *module_name, int *exported); unsigned long module_kallsyms_lookup_name(const char *name); int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *, unsigned long), void *data); extern void __module_put_and_exit(struct module *mod, long code) __attribute__((noreturn)); unsigned long module_refcount(struct module *mod); void __symbol_put(const char *symbol); void symbol_put_addr(void *addr); extern void __module_get(struct module *module); extern bool try_module_get(struct module *module); extern void module_put(struct module *module); # 484 "include/linux/module.h" int ref_module(struct module *a, struct module *b); # 496 "include/linux/module.h" const char *module_address_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char **modname, char *namebuf); int lookup_module_symbol_name(unsigned long addr, char *symname); int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); const struct exception_table_entry *search_module_extables(unsigned long addr); int register_module_notifier(struct notifier_block * nb); int unregister_module_notifier(struct notifier_block * nb); extern void print_modules(void); # 625 "include/linux/module.h" extern struct kset *module_kset; extern struct kobj_type module_ktype; extern int module_sysfs_initialized; # 640 "include/linux/module.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_all_modules_text_rw(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_all_modules_text_ro(void) { } void module_bug_finalize(const Elf32_Ehdr *, const Elf32_Shdr *, struct module *); void module_bug_cleanup(struct module *); # 27 "drivers/ata/pata_optidma.c" 2 # 1 "include/linux/pci.h" 1 # 20 "include/linux/pci.h" # 1 "include/linux/mod_devicetable.h" 1 # 12 "include/linux/mod_devicetable.h" typedef unsigned long kernel_ulong_t; struct pci_device_id { __u32 vendor, device; __u32 subvendor, subdevice; __u32 class, class_mask; kernel_ulong_t driver_data; }; struct ieee1394_device_id { __u32 match_flags; __u32 vendor_id; __u32 model_id; __u32 specifier_id; __u32 version; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; # 101 "include/linux/mod_devicetable.h" struct usb_device_id { __u16 match_flags; __u16 idVendor; __u16 idProduct; __u16 bcdDevice_lo; __u16 bcdDevice_hi; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; __u8 bInterfaceNumber; kernel_ulong_t driver_info __attribute__((aligned(sizeof(kernel_ulong_t)))); }; # 146 "include/linux/mod_devicetable.h" struct hid_device_id { __u16 bus; __u16 group; __u32 vendor; __u32 product; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; struct ccw_device_id { __u16 match_flags; __u16 cu_type; __u16 dev_type; __u8 cu_model; __u8 dev_model; kernel_ulong_t driver_info; }; struct ap_device_id { __u16 match_flags; __u8 dev_type; __u8 pad1; __u32 pad2; kernel_ulong_t driver_info; }; struct css_device_id { __u8 match_flags; __u8 type; __u16 pad2; __u32 pad3; kernel_ulong_t driver_data; }; struct acpi_device_id { __u8 id[16]; kernel_ulong_t driver_data; }; struct pnp_device_id { __u8 id[8]; kernel_ulong_t driver_data; }; struct pnp_card_device_id { __u8 id[8]; kernel_ulong_t driver_data; struct { __u8 id[8]; } devs[8]; }; struct serio_device_id { __u8 type; __u8 extra; __u8 id; __u8 proto; }; struct of_device_id { char name[32]; char type[32]; char compatible[128]; const void *data; }; struct vio_device_id { char type[32]; char compat[32]; }; struct pcmcia_device_id { __u16 match_flags; __u16 manf_id; __u16 card_id; __u8 func_id; __u8 function; __u8 device_no; __u32 prod_id_hash[4] __attribute__((aligned(sizeof(__u32)))); const char * prod_id[4]; kernel_ulong_t driver_info; char * cisfile; }; # 322 "include/linux/mod_devicetable.h" struct input_device_id { kernel_ulong_t flags; __u16 bustype; __u16 vendor; __u16 product; __u16 version; kernel_ulong_t evbit[0x1f / 32 + 1]; kernel_ulong_t keybit[0x2ff / 32 + 1]; kernel_ulong_t relbit[0x0f / 32 + 1]; kernel_ulong_t absbit[0x3f / 32 + 1]; kernel_ulong_t mscbit[0x07 / 32 + 1]; kernel_ulong_t ledbit[0x0f / 32 + 1]; kernel_ulong_t sndbit[0x07 / 32 + 1]; kernel_ulong_t ffbit[0x7f / 32 + 1]; kernel_ulong_t swbit[0x0f / 32 + 1]; kernel_ulong_t driver_info; }; struct eisa_device_id { char sig[8]; kernel_ulong_t driver_data; }; struct parisc_device_id { __u8 hw_type; __u8 hversion_rev; __u16 hversion; __u32 sversion; }; # 372 "include/linux/mod_devicetable.h" struct sdio_device_id { __u8 class; __u16 vendor; __u16 device; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; struct ssb_device_id { __u16 vendor; __u16 coreid; __u8 revision; }; # 396 "include/linux/mod_devicetable.h" struct bcma_device_id { __u16 manuf; __u16 id; __u8 rev; __u8 class; }; # 412 "include/linux/mod_devicetable.h" struct virtio_device_id { __u32 device; __u32 vendor; }; struct hv_vmbus_device_id { __u8 guid[16]; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; struct rpmsg_device_id { char name[32]; }; struct i2c_device_id { char name[20]; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; struct spi_device_id { char name[32]; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; enum dmi_field { DMI_NONE, DMI_BIOS_VENDOR, DMI_BIOS_VERSION, DMI_BIOS_DATE, DMI_SYS_VENDOR, DMI_PRODUCT_NAME, DMI_PRODUCT_VERSION, DMI_PRODUCT_SERIAL, DMI_PRODUCT_UUID, DMI_BOARD_VENDOR, DMI_BOARD_NAME, DMI_BOARD_VERSION, DMI_BOARD_SERIAL, DMI_BOARD_ASSET_TAG, DMI_CHASSIS_VENDOR, DMI_CHASSIS_TYPE, DMI_CHASSIS_VERSION, DMI_CHASSIS_SERIAL, DMI_CHASSIS_ASSET_TAG, DMI_STRING_MAX, }; struct dmi_strmatch { unsigned char slot; char substr[79]; }; # 496 "include/linux/mod_devicetable.h" struct dmi_system_id { int (*callback)(const struct dmi_system_id *); const char *ident; struct dmi_strmatch matches[4]; void *driver_data; }; # 516 "include/linux/mod_devicetable.h" struct platform_device_id { char name[20]; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; # 543 "include/linux/mod_devicetable.h" struct mdio_device_id { __u32 phy_id; __u32 phy_id_mask; }; struct zorro_device_id { __u32 id; kernel_ulong_t driver_data; }; struct isapnp_device_id { unsigned short card_vendor, card_device; unsigned short vendor, function; kernel_ulong_t driver_data; }; # 572 "include/linux/mod_devicetable.h" struct amba_id { unsigned int id; unsigned int mask; void *data; }; struct x86_cpu_id { __u16 vendor; __u16 family; __u16 model; __u16 feature; kernel_ulong_t driver_data; }; # 605 "include/linux/mod_devicetable.h" struct ipack_device_id { __u8 format; __u32 vendor; __u32 device; }; # 21 "include/linux/pci.h" 2 # 1 "include/linux/ioport.h" 1 # 18 "include/linux/ioport.h" struct resource { resource_size_t start; resource_size_t end; const char *name; unsigned long flags; struct resource *parent, *sibling, *child; }; # 138 "include/linux/ioport.h" extern struct resource ioport_resource; extern struct resource iomem_resource; extern struct resource *request_resource_conflict(struct resource *root, struct resource *new); extern int request_resource(struct resource *root, struct resource *new); extern int release_resource(struct resource *new); void release_child_resources(struct resource *new); extern void reserve_region_with_split(struct resource *root, resource_size_t start, resource_size_t end, const char *name); extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new); extern int insert_resource(struct resource *parent, struct resource *new); extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); extern void arch_remove_reservations(struct resource *avail); extern int allocate_resource(struct resource *root, struct resource *new, resource_size_t size, resource_size_t min, resource_size_t max, resource_size_t align, resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t), void *alignf_data); struct resource *lookup_resource(struct resource *root, resource_size_t start); int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size); resource_size_t resource_alignment(struct resource *res); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) resource_size_t resource_size(const struct resource *res) { return res->end - res->start + 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long resource_type(const struct resource *res) { return res->flags & 0x00001f00; } # 182 "include/linux/ioport.h" extern struct resource * __request_region(struct resource *, resource_size_t start, resource_size_t n, const char *name, int flags); extern int __check_region(struct resource *, resource_size_t, resource_size_t); extern void __release_region(struct resource *, resource_size_t, resource_size_t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int check_region(resource_size_t s, resource_size_t n) { return __check_region(&ioport_resource, s, n); } struct device; extern struct resource * __devm_request_region(struct device *dev, struct resource *parent, resource_size_t start, resource_size_t n, const char *name); extern void __devm_release_region(struct device *dev, struct resource *parent, resource_size_t start, resource_size_t n); extern int iomem_map_sanity_check(resource_size_t addr, unsigned long size); extern int iomem_is_exclusive(u64 addr); extern int walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, void *arg, int (*func)(unsigned long, unsigned long, void *)); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool resource_overlaps(struct resource *r1, struct resource *r2) { return (r1->start <= r2->end && r1->end >= r2->start); } # 25 "include/linux/pci.h" 2 # 1 "include/linux/device.h" 1 # 18 "include/linux/device.h" # 1 "include/linux/klist.h" 1 # 19 "include/linux/klist.h" struct klist_node; struct klist { spinlock_t k_lock; struct list_head k_list; void (*get)(struct klist_node *); void (*put)(struct klist_node *); } __attribute__ ((aligned (sizeof(void *)))); # 36 "include/linux/klist.h" extern void klist_init(struct klist *k, void (*get)(struct klist_node *), void (*put)(struct klist_node *)); struct klist_node { void *n_klist; struct list_head n_node; struct kref n_ref; }; extern void klist_add_tail(struct klist_node *n, struct klist *k); extern void klist_add_head(struct klist_node *n, struct klist *k); extern void klist_add_after(struct klist_node *n, struct klist_node *pos); extern void klist_add_before(struct klist_node *n, struct klist_node *pos); extern void klist_del(struct klist_node *n); extern void klist_remove(struct klist_node *n); extern int klist_node_attached(struct klist_node *n); struct klist_iter { struct klist *i_klist; struct klist_node *i_cur; }; extern void klist_iter_init(struct klist *k, struct klist_iter *i); extern void klist_iter_init_node(struct klist *k, struct klist_iter *i, struct klist_node *n); extern void klist_iter_exit(struct klist_iter *i); extern struct klist_node *klist_next(struct klist_iter *i); # 19 "include/linux/device.h" 2 # 1 "include/linux/pm.h" 1 # 34 "include/linux/pm.h" extern void (*pm_idle)(void); extern void (*pm_power_off)(void); extern void (*pm_power_off_prepare)(void); struct device; extern const char power_group_name[]; typedef struct pm_message { int event; } pm_message_t; # 264 "include/linux/pm.h" struct dev_pm_ops { int (*prepare)(struct device *dev); void (*complete)(struct device *dev); int (*suspend)(struct device *dev); int (*resume)(struct device *dev); int (*freeze)(struct device *dev); int (*thaw)(struct device *dev); int (*poweroff)(struct device *dev); int (*restore)(struct device *dev); int (*suspend_late)(struct device *dev); int (*resume_early)(struct device *dev); int (*freeze_late)(struct device *dev); int (*thaw_early)(struct device *dev); int (*poweroff_late)(struct device *dev); int (*restore_early)(struct device *dev); int (*suspend_noirq)(struct device *dev); int (*resume_noirq)(struct device *dev); int (*freeze_noirq)(struct device *dev); int (*thaw_noirq)(struct device *dev); int (*poweroff_noirq)(struct device *dev); int (*restore_noirq)(struct device *dev); int (*runtime_suspend)(struct device *dev); int (*runtime_resume)(struct device *dev); int (*runtime_idle)(struct device *dev); }; # 458 "include/linux/pm.h" enum rpm_status { RPM_ACTIVE = 0, RPM_RESUMING, RPM_SUSPENDED, RPM_SUSPENDING, }; # 480 "include/linux/pm.h" enum rpm_request { RPM_REQ_NONE = 0, RPM_REQ_IDLE, RPM_REQ_SUSPEND, RPM_REQ_AUTOSUSPEND, RPM_REQ_RESUME, }; struct wakeup_source; struct pm_domain_data { struct list_head list_node; struct device *dev; }; struct pm_subsys_data { spinlock_t lock; unsigned int refcount; struct list_head clock_list; }; struct dev_pm_info { pm_message_t power_state; unsigned int can_wakeup:1; unsigned int async_suspend:1; bool is_prepared:1; bool is_suspended:1; bool ignore_children:1; bool early_init:1; spinlock_t lock; struct list_head entry; struct completion completion; struct wakeup_source *wakeup; bool wakeup_path:1; bool syscore:1; struct timer_list suspend_timer; unsigned long timer_expires; struct work_struct work; wait_queue_head_t wait_queue; atomic_t usage_count; atomic_t child_count; unsigned int disable_depth:3; unsigned int idle_notification:1; unsigned int request_pending:1; unsigned int deferred_resume:1; unsigned int run_wake:1; unsigned int runtime_auto:1; unsigned int no_callbacks:1; unsigned int irq_safe:1; unsigned int use_autosuspend:1; unsigned int timer_autosuspends:1; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; unsigned long last_busy; unsigned long active_jiffies; unsigned long suspended_jiffies; unsigned long accounting_timestamp; struct pm_subsys_data *subsys_data; struct dev_pm_qos *qos; }; extern void update_pm_runtime_accounting(struct device *dev); extern int dev_pm_get_subsys_data(struct device *dev); extern int dev_pm_put_subsys_data(struct device *dev); struct dev_pm_domain { struct dev_pm_ops ops; }; # 622 "include/linux/pm.h" extern void device_pm_lock(void); extern void dpm_resume_start(pm_message_t state); extern void dpm_resume_end(pm_message_t state); extern void dpm_resume(pm_message_t state); extern void dpm_complete(pm_message_t state); extern void device_pm_unlock(void); extern int dpm_suspend_end(pm_message_t state); extern int dpm_suspend_start(pm_message_t state); extern int dpm_suspend(pm_message_t state); extern int dpm_prepare(pm_message_t state); extern void __suspend_report_result(const char *function, void *fn, int ret); extern int device_pm_wait_for_dev(struct device *sub, struct device *dev); extern void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *)); extern int pm_generic_prepare(struct device *dev); extern int pm_generic_suspend_late(struct device *dev); extern int pm_generic_suspend_noirq(struct device *dev); extern int pm_generic_suspend(struct device *dev); extern int pm_generic_resume_early(struct device *dev); extern int pm_generic_resume_noirq(struct device *dev); extern int pm_generic_resume(struct device *dev); extern int pm_generic_freeze_noirq(struct device *dev); extern int pm_generic_freeze_late(struct device *dev); extern int pm_generic_freeze(struct device *dev); extern int pm_generic_thaw_noirq(struct device *dev); extern int pm_generic_thaw_early(struct device *dev); extern int pm_generic_thaw(struct device *dev); extern int pm_generic_restore_noirq(struct device *dev); extern int pm_generic_restore_early(struct device *dev); extern int pm_generic_restore(struct device *dev); extern int pm_generic_poweroff_noirq(struct device *dev); extern int pm_generic_poweroff_late(struct device *dev); extern int pm_generic_poweroff(struct device *dev); extern void pm_generic_complete(struct device *dev); # 697 "include/linux/pm.h" enum dpm_order { DPM_ORDER_NONE, DPM_ORDER_DEV_AFTER_PARENT, DPM_ORDER_PARENT_BEFORE_DEV, DPM_ORDER_DEV_LAST, }; # 25 "include/linux/device.h" 2 # 1 "include/linux/ratelimit.h" 1 # 10 "include/linux/ratelimit.h" struct ratelimit_state { raw_spinlock_t lock; int interval; int burst; int printed; int missed; unsigned long begin; }; # 28 "include/linux/ratelimit.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ratelimit_state_init(struct ratelimit_state *rs, int interval, int burst) { do { *(&rs->lock) = (raw_spinlock_t) { .raw_lock = { { 0 } }, }; } while (0); rs->interval = interval; rs->burst = burst; rs->printed = 0; rs->missed = 0; rs->begin = 0; } extern struct ratelimit_state printk_ratelimit_state; extern int ___ratelimit(struct ratelimit_state *rs, const char *func); # 27 "include/linux/device.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/device.h" 1 # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/device.h" struct dev_archdata { struct dma_map_ops *dma_ops; void *iommu; }; struct omap_device; struct pdev_archdata { }; # 28 "include/linux/device.h" 2 struct device; struct device_private; struct device_driver; struct driver_private; struct module; struct class; struct subsys_private; struct bus_type; struct device_node; struct iommu_ops; struct iommu_group; struct bus_attribute { struct attribute attr; ssize_t (*show)(struct bus_type *bus, char *buf); ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count); }; extern int __attribute__((warn_unused_result)) bus_create_file(struct bus_type *, struct bus_attribute *); extern void bus_remove_file(struct bus_type *, struct bus_attribute *); # 91 "include/linux/device.h" struct bus_type { const char *name; const char *dev_name; struct device *dev_root; struct bus_attribute *bus_attrs; struct device_attribute *dev_attrs; struct driver_attribute *drv_attrs; int (*match)(struct device *dev, struct device_driver *drv); int (*uevent)(struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); int (*remove)(struct device *dev); void (*shutdown)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); const struct dev_pm_ops *pm; struct iommu_ops *iommu_ops; struct subsys_private *p; }; # 122 "include/linux/device.h" extern int __attribute__((warn_unused_result)) __bus_register(struct bus_type *bus, struct lock_class_key *key); extern void bus_unregister(struct bus_type *bus); extern int __attribute__((warn_unused_result)) bus_rescan_devices(struct bus_type *bus); struct subsys_dev_iter { struct klist_iter ki; const struct device_type *type; }; void subsys_dev_iter_init(struct subsys_dev_iter *iter, struct bus_type *subsys, struct device *start, const struct device_type *type); struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter); void subsys_dev_iter_exit(struct subsys_dev_iter *iter); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); struct device *bus_find_device(struct bus_type *bus, struct device *start, void *data, int (*match)(struct device *dev, void *data)); struct device *bus_find_device_by_name(struct bus_type *bus, struct device *start, const char *name); struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int id, struct device *hint); int bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver *, void *)); void bus_sort_breadthfirst(struct bus_type *bus, int (*compare)(const struct device *a, const struct device *b)); struct notifier_block; extern int bus_register_notifier(struct bus_type *bus, struct notifier_block *nb); extern int bus_unregister_notifier(struct bus_type *bus, struct notifier_block *nb); # 182 "include/linux/device.h" extern struct kset *bus_get_kset(struct bus_type *bus); extern struct klist *bus_get_device_klist(struct bus_type *bus); # 217 "include/linux/device.h" struct device_driver { const char *name; struct bus_type *bus; struct module *owner; const char *mod_name; bool suppress_bind_attrs; const struct of_device_id *of_match_table; const struct acpi_device_id *acpi_match_table; int (*probe) (struct device *dev); int (*remove) (struct device *dev); void (*shutdown) (struct device *dev); int (*suspend) (struct device *dev, pm_message_t state); int (*resume) (struct device *dev); const struct attribute_group **groups; const struct dev_pm_ops *pm; struct driver_private *p; }; extern int __attribute__((warn_unused_result)) driver_register(struct device_driver *drv); extern void driver_unregister(struct device_driver *drv); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); extern void wait_for_device_probe(void); struct driver_attribute { struct attribute attr; ssize_t (*show)(struct device_driver *driver, char *buf); ssize_t (*store)(struct device_driver *driver, const char *buf, size_t count); }; extern int __attribute__((warn_unused_result)) driver_create_file(struct device_driver *driver, const struct driver_attribute *attr); extern void driver_remove_file(struct device_driver *driver, const struct driver_attribute *attr); extern int __attribute__((warn_unused_result)) driver_for_each_device(struct device_driver *drv, struct device *start, void *data, int (*fn)(struct device *dev, void *)); struct device *driver_find_device(struct device_driver *drv, struct device *start, void *data, int (*match)(struct device *dev, void *data)); # 291 "include/linux/device.h" struct subsys_interface { const char *name; struct bus_type *subsys; struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); int (*remove_dev)(struct device *dev, struct subsys_interface *sif); }; int subsys_interface_register(struct subsys_interface *sif); void subsys_interface_unregister(struct subsys_interface *sif); int subsys_system_register(struct bus_type *subsys, const struct attribute_group **groups); # 334 "include/linux/device.h" struct class { const char *name; struct module *owner; struct class_attribute *class_attrs; struct device_attribute *dev_attrs; struct bin_attribute *dev_bin_attrs; struct kobject *dev_kobj; int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(struct device *dev, umode_t *mode); void (*class_release)(struct class *class); void (*dev_release)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); const struct kobj_ns_type_operations *ns_type; const void *(*namespace)(struct device *dev); const struct dev_pm_ops *pm; struct subsys_private *p; }; struct class_dev_iter { struct klist_iter ki; const struct device_type *type; }; extern struct kobject *sysfs_dev_block_kobj; extern struct kobject *sysfs_dev_char_kobj; extern int __attribute__((warn_unused_result)) __class_register(struct class *class, struct lock_class_key *key); extern void class_unregister(struct class *class); # 379 "include/linux/device.h" struct class_compat; struct class_compat *class_compat_register(const char *name); void class_compat_unregister(struct class_compat *cls); int class_compat_create_link(struct class_compat *cls, struct device *dev, struct device *device_link); void class_compat_remove_link(struct class_compat *cls, struct device *dev, struct device *device_link); extern void class_dev_iter_init(struct class_dev_iter *iter, struct class *class, struct device *start, const struct device_type *type); extern struct device *class_dev_iter_next(struct class_dev_iter *iter); extern void class_dev_iter_exit(struct class_dev_iter *iter); extern int class_for_each_device(struct class *class, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *class_find_device(struct class *class, struct device *start, void *data, int (*match)(struct device *, void *)); struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *class, struct class_attribute *attr, char *buf); ssize_t (*store)(struct class *class, struct class_attribute *attr, const char *buf, size_t count); const void *(*namespace)(struct class *class, const struct class_attribute *attr); }; extern int __attribute__((warn_unused_result)) class_create_file(struct class *class, const struct class_attribute *attr); extern void class_remove_file(struct class *class, const struct class_attribute *attr); struct class_attribute_string { struct class_attribute attr; char *str; }; # 433 "include/linux/device.h" extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr, char *buf); struct class_interface { struct list_head node; struct class *class; int (*add_dev) (struct device *, struct class_interface *); void (*remove_dev) (struct device *, struct class_interface *); }; extern int __attribute__((warn_unused_result)) class_interface_register(struct class_interface *); extern void class_interface_unregister(struct class_interface *); extern struct class * __attribute__((warn_unused_result)) __class_create(struct module *owner, const char *name, struct lock_class_key *key); extern void class_destroy(struct class *cls); # 469 "include/linux/device.h" struct device_type { const char *name; const struct attribute_group **groups; int (*uevent)(struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(struct device *dev, umode_t *mode); void (*release)(struct device *dev); const struct dev_pm_ops *pm; }; struct device_attribute { struct attribute attr; ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf); ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); }; struct dev_ext_attribute { struct device_attribute attr; void *var; }; ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t device_show_int(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_int(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t device_show_bool(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_bool(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); # 521 "include/linux/device.h" extern int device_create_file(struct device *device, const struct device_attribute *entry); extern void device_remove_file(struct device *dev, const struct device_attribute *attr); extern int __attribute__((warn_unused_result)) device_create_bin_file(struct device *dev, const struct bin_attribute *attr); extern void device_remove_bin_file(struct device *dev, const struct bin_attribute *attr); extern int device_schedule_callback_owner(struct device *dev, void (*func)(struct device *dev), struct module *owner); typedef void (*dr_release_t)(struct device *dev, void *res); typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data); extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp, const char *name); extern void devres_for_each_res(struct device *dev, dr_release_t release, dr_match_t match, void *match_data, void (*fn)(struct device *, void *, void *), void *data); extern void devres_free(void *res); extern void devres_add(struct device *dev, void *res); extern void *devres_find(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern void *devres_get(struct device *dev, void *new_res, dr_match_t match, void *match_data); extern void *devres_remove(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern int devres_destroy(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern int devres_release(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern void * __attribute__((warn_unused_result)) devres_open_group(struct device *dev, void *id, gfp_t gfp); extern void devres_close_group(struct device *dev, void *id); extern void devres_remove_group(struct device *dev, void *id); extern int devres_release_group(struct device *dev, void *id); extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp); extern void devm_kfree(struct device *dev, void *p); void *devm_request_and_ioremap(struct device *dev, struct resource *res); struct device_dma_parameters { unsigned int max_segment_size; unsigned long segment_boundary_mask; }; struct acpi_dev_node { }; # 654 "include/linux/device.h" struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; const struct device_type *type; struct mutex mutex; struct bus_type *bus; struct device_driver *driver; void *platform_data; struct dev_pm_info power; struct dev_pm_domain *pm_domain; u64 *dma_mask; u64 coherent_dma_mask; struct device_dma_parameters *dma_parms; struct list_head dma_pools; struct dma_coherent_mem *dma_mem; struct dev_archdata archdata; struct device_node *of_node; struct acpi_dev_node acpi_node; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; struct klist_node knode_class; struct class *class; const struct attribute_group **groups; void (*release)(struct device *dev); struct iommu_group *iommu_group; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct device *kobj_to_dev(struct kobject *kobj) { return ({ const typeof( ((struct device *)0)->kobj ) *__mptr = (kobj); (struct device *)( (char *)__mptr - __builtin_offsetof(struct device,kobj) );}); } # 729 "include/linux/device.h" # 1 "include/linux/pm_wakeup.h" 1 # 46 "include/linux/pm_wakeup.h" struct wakeup_source { const char *name; struct list_head entry; spinlock_t lock; struct timer_list timer; unsigned long timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; unsigned long event_count; unsigned long active_count; unsigned long relax_count; unsigned long expire_count; unsigned long wakeup_count; bool active:1; bool autosleep_enabled:1; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool device_can_wakeup(struct device *dev) { return dev->power.can_wakeup; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool device_may_wakeup(struct device *dev) { return dev->power.can_wakeup && !!dev->power.wakeup; } extern void wakeup_source_prepare(struct wakeup_source *ws, const char *name); extern struct wakeup_source *wakeup_source_create(const char *name); extern void wakeup_source_drop(struct wakeup_source *ws); extern void wakeup_source_destroy(struct wakeup_source *ws); extern void wakeup_source_add(struct wakeup_source *ws); extern void wakeup_source_remove(struct wakeup_source *ws); extern struct wakeup_source *wakeup_source_register(const char *name); extern void wakeup_source_unregister(struct wakeup_source *ws); extern int device_wakeup_enable(struct device *dev); extern int device_wakeup_disable(struct device *dev); extern void device_set_wakeup_capable(struct device *dev, bool capable); extern int device_init_wakeup(struct device *dev, bool val); extern int device_set_wakeup_enable(struct device *dev, bool enable); extern void __pm_stay_awake(struct wakeup_source *ws); extern void pm_stay_awake(struct device *dev); extern void __pm_relax(struct wakeup_source *ws); extern void pm_relax(struct device *dev); extern void __pm_wakeup_event(struct wakeup_source *ws, unsigned int msec); extern void pm_wakeup_event(struct device *dev, unsigned int msec); # 182 "include/linux/pm_wakeup.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void wakeup_source_init(struct wakeup_source *ws, const char *name) { wakeup_source_prepare(ws, name); wakeup_source_add(ws); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void wakeup_source_trash(struct wakeup_source *ws) { wakeup_source_remove(ws); wakeup_source_drop(ws); } # 730 "include/linux/device.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *dev_name(const struct device *dev) { if (dev->init_name) return dev->init_name; return kobject_name(&dev->kobj); } extern __attribute__((format(printf, 2, 3))) int dev_set_name(struct device *dev, const char *name, ...); # 753 "include/linux/device.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dev_to_node(struct device *dev) { return -1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_dev_node(struct device *dev, int node) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pm_subsys_data *dev_to_psd(struct device *dev) { return dev ? dev->power.subsys_data : ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int dev_get_uevent_suppress(const struct device *dev) { return dev->kobj.uevent_suppress; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dev_set_uevent_suppress(struct device *dev, int val) { dev->kobj.uevent_suppress = val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int device_is_registered(struct device *dev) { return dev->kobj.state_in_sysfs; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void device_enable_async_suspend(struct device *dev) { if (!dev->power.is_prepared) dev->power.async_suspend = true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void device_disable_async_suspend(struct device *dev) { if (!dev->power.is_prepared) dev->power.async_suspend = false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool device_async_suspend_enabled(struct device *dev) { return !!dev->power.async_suspend; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pm_suspend_ignore_children(struct device *dev, bool enable) { dev->power.ignore_children = enable; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dev_pm_syscore_device(struct device *dev, bool val) { dev->power.syscore = val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void device_lock(struct device *dev) { mutex_lock(&dev->mutex); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int device_trylock(struct device *dev) { return mutex_trylock(&dev->mutex); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void device_unlock(struct device *dev) { mutex_unlock(&dev->mutex); } void driver_init(void); extern int __attribute__((warn_unused_result)) device_register(struct device *dev); extern void device_unregister(struct device *dev); extern void device_initialize(struct device *dev); extern int __attribute__((warn_unused_result)) device_add(struct device *dev); extern void device_del(struct device *dev); extern int device_for_each_child(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); extern int device_rename(struct device *dev, const char *new_name); extern int device_move(struct device *dev, struct device *new_parent, enum dpm_order dpm_order); extern const char *device_get_devnode(struct device *dev, umode_t *mode, const char **tmp); extern void *dev_get_drvdata(const struct device *dev); extern int dev_set_drvdata(struct device *dev, void *data); extern struct device *__root_device_register(const char *name, struct module *owner); # 861 "include/linux/device.h" extern void root_device_unregister(struct device *root); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dev_get_platdata(const struct device *dev) { return dev->platform_data; } extern int __attribute__((warn_unused_result)) device_bind_driver(struct device *dev); extern void device_release_driver(struct device *dev); extern int __attribute__((warn_unused_result)) device_attach(struct device *dev); extern int __attribute__((warn_unused_result)) driver_attach(struct device_driver *drv); extern int __attribute__((warn_unused_result)) device_reprobe(struct device *dev); extern struct device *device_create_vargs(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, va_list vargs); extern __attribute__((format(printf, 5, 6))) struct device *device_create(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...); extern void device_destroy(struct class *cls, dev_t devt); extern int (*platform_notify)(struct device *dev); extern int (*platform_notify_remove)(struct device *dev); extern struct device *get_device(struct device *dev); extern void put_device(struct device *dev); extern int devtmpfs_create_node(struct device *dev); extern int devtmpfs_delete_node(struct device *dev); extern int devtmpfs_mount(const char *mntdir); extern void device_shutdown(void); extern const char *dev_driver_string(const struct device *dev); extern __attribute__((format(printf, 3, 0))) int dev_vprintk_emit(int level, const struct device *dev, const char *fmt, va_list args); extern __attribute__((format(printf, 3, 4))) int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 3, 4))) int dev_printk(const char *level, const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_emerg(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_alert(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_crit(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_err(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_warn(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int dev_notice(const struct device *dev, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) int _dev_info(const struct device *dev, const char *fmt, ...); # 31 "include/linux/pci.h" 2 # 1 "include/linux/io.h" 1 # 22 "include/linux/io.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" 1 # 29 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" # 1 "include/asm-generic/pci_iomap.h" 1 # 14 "include/asm-generic/pci_iomap.h" struct pci_dev; extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); # 30 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" 2 # 42 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern void __raw_writesb(void *addr, const void *data, int bytelen); extern void __raw_writesw(void *addr, const void *data, int wordlen); extern void __raw_writesl(void *addr, const void *data, int longlen); extern void __raw_readsb(const void *addr, void *data, int bytelen); extern void __raw_readsw(const void *addr, void *data, int wordlen); extern void __raw_readsl(const void *addr, void *data, int longlen); # 64 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_writew(u16 val, volatile void *addr) { asm volatile("strh %1, %0" : "+Q" (*(volatile u16 *)addr) : "r" (val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u16 __raw_readw(const volatile void *addr) { u16 val; asm volatile("ldrh %1, %0" : "+Q" (*(volatile u16 *)addr), "=r" (val)); return val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_writeb(u8 val, volatile void *addr) { asm volatile("strb %1, %0" : "+Qo" (*(volatile u8 *)addr) : "r" (val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __raw_writel(u32 val, volatile void *addr) { asm volatile("str %1, %0" : "+Qo" (*(volatile u32 *)addr) : "r" (val)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 __raw_readb(const volatile void *addr) { u8 val; asm volatile("ldrb %1, %0" : "+Qo" (*(volatile u8 *)addr), "=r" (val)); return val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 __raw_readl(const volatile void *addr) { u32 val; asm volatile("ldr %1, %0" : "+Qo" (*(volatile u32 *)addr), "=r" (val)); return val; } # 131 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern void *__arm_ioremap_pfn_caller(unsigned long, unsigned long, size_t, unsigned int, void *); extern void *__arm_ioremap_caller(unsigned long, size_t, unsigned int, void *); extern void *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, unsigned int); extern void *__arm_ioremap(unsigned long, size_t, unsigned int); extern void *__arm_ioremap_exec(unsigned long, size_t, bool cached); extern void __iounmap(volatile void *addr); extern void __arm_iounmap(volatile void *addr); extern void * (*arch_ioremap_caller)(unsigned long, size_t, unsigned int, void *); extern void (*arch_iounmap)(volatile void *); extern void __readwrite_bug(const char *fn); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *__typesafe_io(unsigned long addr) { return (void *)addr; } # 174 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr); # 272 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern void _memcpy_fromio(void *, const volatile void *, size_t); extern void _memcpy_toio(volatile void *, const void *, size_t); extern void _memset_io(volatile void *, int, size_t); # 360 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern void *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void *addr); struct pci_dev; extern void pci_iounmap(struct pci_dev *dev, void *addr); # 377 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern int valid_phys_addr_range(phys_addr_t addr, size_t size); extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size); extern int devmem_is_allowed(unsigned long pfn); # 397 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/io.h" extern void register_isa_ports(unsigned int mmio, unsigned int io, unsigned int io_shift); # 23 "include/linux/io.h" 2 struct device; void __iowrite32_copy(void *to, const void *from, size_t count); void __iowrite64_copy(void *to, const void *from, size_t count); int ioremap_page_range(unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot); # 45 "include/linux/io.h" void * devm_ioport_map(struct device *dev, unsigned long port, unsigned int nr); void devm_ioport_unmap(struct device *dev, void *addr); # 61 "include/linux/io.h" void *devm_ioremap(struct device *dev, resource_size_t offset, unsigned long size); void *devm_ioremap_nocache(struct device *dev, resource_size_t offset, unsigned long size); void devm_iounmap(struct device *dev, void *addr); int check_signature(const volatile void *io_addr, const unsigned char *signature, int length); void devm_ioremap_release(struct device *dev, void *res); # 32 "include/linux/pci.h" 2 # 1 "include/linux/irqreturn.h" 1 # 10 "include/linux/irqreturn.h" enum irqreturn { IRQ_NONE = (0 << 0), IRQ_HANDLED = (1 << 0), IRQ_WAKE_THREAD = (1 << 1), }; typedef enum irqreturn irqreturn_t; # 33 "include/linux/pci.h" 2 # 1 "include/uapi/linux/pci.h" 1 # 20 "include/uapi/linux/pci.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/pci_regs.h" 1 # 21 "include/uapi/linux/pci.h" 2 # 34 "include/linux/pci.h" 2 # 1 "include/linux/pci_ids.h" 1 # 37 "include/linux/pci.h" 2 struct pci_slot { struct pci_bus *bus; struct list_head list; struct hotplug_slot *hotplug; unsigned char number; struct kobject kobj; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *pci_slot_name(const struct pci_slot *slot) { return kobject_name(&slot->kobj); } enum pci_mmap_state { pci_mmap_io, pci_mmap_mem }; # 67 "include/linux/pci.h" enum { PCI_STD_RESOURCES, PCI_STD_RESOURCE_END = 5, PCI_ROM_RESOURCE, PCI_IOV_RESOURCES, PCI_IOV_RESOURCE_END = PCI_IOV_RESOURCES + 6 - 1, PCI_BRIDGE_RESOURCES, PCI_BRIDGE_RESOURCE_END = PCI_BRIDGE_RESOURCES + 4 - 1, PCI_NUM_RESOURCES, DEVICE_COUNT_RESOURCE = PCI_NUM_RESOURCES, }; typedef int pci_power_t; # 106 "include/linux/pci.h" extern const char *pci_power_names[]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *pci_power_name(pci_power_t state) { return pci_power_names[1 + (int) state]; } # 122 "include/linux/pci.h" typedef unsigned int pci_channel_state_t; enum pci_channel_state { pci_channel_io_normal = ( pci_channel_state_t) 1, pci_channel_io_frozen = ( pci_channel_state_t) 2, pci_channel_io_perm_failure = ( pci_channel_state_t) 3, }; typedef unsigned int pcie_reset_state_t; enum pcie_reset_state { pcie_deassert_reset = ( pcie_reset_state_t) 1, pcie_warm_reset = ( pcie_reset_state_t) 2, pcie_hot_reset = ( pcie_reset_state_t) 3 }; typedef unsigned short pci_dev_flags_t; enum pci_dev_flags { PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = ( pci_dev_flags_t) 1, PCI_DEV_FLAGS_NO_D3 = ( pci_dev_flags_t) 2, PCI_DEV_FLAGS_ASSIGNED = ( pci_dev_flags_t) 4, }; enum pci_irq_reroute_variant { INTEL_IRQ_REROUTE_VARIANT = 1, MAX_IRQ_REROUTE_VARIANTS = 3 }; typedef unsigned short pci_bus_flags_t; enum pci_bus_flags { PCI_BUS_FLAGS_NO_MSI = ( pci_bus_flags_t) 1, PCI_BUS_FLAGS_NO_MMRBC = ( pci_bus_flags_t) 2, }; enum pci_bus_speed { PCI_SPEED_33MHz = 0x00, PCI_SPEED_66MHz = 0x01, PCI_SPEED_66MHz_PCIX = 0x02, PCI_SPEED_100MHz_PCIX = 0x03, PCI_SPEED_133MHz_PCIX = 0x04, PCI_SPEED_66MHz_PCIX_ECC = 0x05, PCI_SPEED_100MHz_PCIX_ECC = 0x06, PCI_SPEED_133MHz_PCIX_ECC = 0x07, PCI_SPEED_66MHz_PCIX_266 = 0x09, PCI_SPEED_100MHz_PCIX_266 = 0x0a, PCI_SPEED_133MHz_PCIX_266 = 0x0b, AGP_UNKNOWN = 0x0c, AGP_1X = 0x0d, AGP_2X = 0x0e, AGP_4X = 0x0f, AGP_8X = 0x10, PCI_SPEED_66MHz_PCIX_533 = 0x11, PCI_SPEED_100MHz_PCIX_533 = 0x12, PCI_SPEED_133MHz_PCIX_533 = 0x13, PCIE_SPEED_2_5GT = 0x14, PCIE_SPEED_5_0GT = 0x15, PCIE_SPEED_8_0GT = 0x16, PCI_SPEED_UNKNOWN = 0xff, }; struct pci_cap_saved_data { char cap_nr; unsigned int size; u32 data[0]; }; struct pci_cap_saved_state { struct hlist_node next; struct pci_cap_saved_data cap; }; struct pcie_link_state; struct pci_vpd; struct pci_sriov; struct pci_ats; struct pci_dev { struct list_head bus_list; struct pci_bus *bus; struct pci_bus *subordinate; void *sysdata; struct proc_dir_entry *procent; struct pci_slot *slot; unsigned int devfn; unsigned short vendor; unsigned short device; unsigned short subsystem_vendor; unsigned short subsystem_device; unsigned int class; u8 revision; u8 hdr_type; u8 pcie_cap; u8 pcie_mpss:3; u8 rom_base_reg; u8 pin; u16 pcie_flags_reg; struct pci_driver *driver; u64 dma_mask; struct device_dma_parameters dma_parms; pci_power_t current_state; int pm_cap; unsigned int pme_support:5; unsigned int pme_interrupt:1; unsigned int pme_poll:1; unsigned int d1_support:1; unsigned int d2_support:1; unsigned int no_d1d2:1; unsigned int no_d3cold:1; unsigned int d3cold_allowed:1; unsigned int mmio_always_on:1; unsigned int wakeup_prepared:1; unsigned int runtime_d3cold:1; unsigned int d3_delay; unsigned int d3cold_delay; pci_channel_state_t error_state; struct device dev; int cfg_size; unsigned int irq; struct resource resource[DEVICE_COUNT_RESOURCE]; unsigned int transparent:1; unsigned int multifunction:1; unsigned int is_added:1; unsigned int is_busmaster:1; unsigned int no_msi:1; unsigned int block_cfg_access:1; unsigned int broken_parity_status:1; unsigned int irq_reroute_variant:2; unsigned int msi_enabled:1; unsigned int msix_enabled:1; unsigned int ari_enabled:1; unsigned int is_managed:1; unsigned int is_pcie:1; unsigned int needs_freset:1; unsigned int state_saved:1; unsigned int is_physfn:1; unsigned int is_virtfn:1; unsigned int reset_fn:1; unsigned int is_hotplug_bridge:1; unsigned int __aer_firmware_first_valid:1; unsigned int __aer_firmware_first:1; unsigned int broken_intx_masking:1; unsigned int io_window_1k:1; pci_dev_flags_t dev_flags; atomic_t enable_cnt; u32 saved_config_space[16]; struct hlist_head saved_cap_space; struct bin_attribute *rom_attr; int rom_attr_enabled; struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE]; struct pci_vpd *vpd; union { struct pci_sriov *sriov; struct pci_dev *physfn; }; struct pci_ats *ats; phys_addr_t rom; size_t romlen; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pci_dev *pci_physfn(struct pci_dev *dev) { if (dev->is_virtfn) dev = dev->physfn; return dev; } extern struct pci_dev *alloc_pci_dev(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_channel_offline(struct pci_dev *pdev) { return (pdev->error_state != pci_channel_io_normal); } extern struct resource busn_resource; struct pci_host_bridge_window { struct list_head list; struct resource *res; resource_size_t offset; }; struct pci_host_bridge { struct device dev; struct pci_bus *bus; struct list_head windows; void (*release_fn)(struct pci_host_bridge *); void *release_data; }; void pci_set_host_bridge_release(struct pci_host_bridge *bridge, void (*release_fn)(struct pci_host_bridge *), void *release_data); # 396 "include/linux/pci.h" struct pci_bus_resource { struct list_head list; struct resource *res; unsigned int flags; }; struct pci_bus { struct list_head node; struct pci_bus *parent; struct list_head children; struct list_head devices; struct pci_dev *self; struct list_head slots; struct resource *resource[4]; struct list_head resources; struct resource busn_res; struct pci_ops *ops; void *sysdata; struct proc_dir_entry *procdir; unsigned char number; unsigned char primary; unsigned char max_bus_speed; unsigned char cur_bus_speed; char name[48]; unsigned short bridge_ctl; pci_bus_flags_t bus_flags; struct device *bridge; struct device dev; struct bin_attribute *legacy_io; struct bin_attribute *legacy_mem; unsigned int is_added:1; }; # 442 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool pci_is_root_bus(struct pci_bus *pbus) { return !(pbus->parent); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return false; } # 470 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcibios_err_to_errno(int err) { if (err <= 0x00) return err; switch (err) { case 0x81: return -2; case 0x83: return -22; case 0x86: return -19; case 0x87: return -14; case 0x88: return -5; case 0x89: return -28; } return -25; } struct pci_ops { int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); }; extern int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn, int reg, int len, u32 *val); extern int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn, int reg, int len, u32 val); struct pci_bus_region { resource_size_t start; resource_size_t end; }; struct pci_dynids { spinlock_t lock; struct list_head list; }; # 526 "include/linux/pci.h" typedef unsigned int pci_ers_result_t; enum pci_ers_result { PCI_ERS_RESULT_NONE = ( pci_ers_result_t) 1, PCI_ERS_RESULT_CAN_RECOVER = ( pci_ers_result_t) 2, PCI_ERS_RESULT_NEED_RESET = ( pci_ers_result_t) 3, PCI_ERS_RESULT_DISCONNECT = ( pci_ers_result_t) 4, PCI_ERS_RESULT_RECOVERED = ( pci_ers_result_t) 5, PCI_ERS_RESULT_NO_AER_DRIVER = ( pci_ers_result_t) 6, }; struct pci_error_handlers { pci_ers_result_t (*error_detected)(struct pci_dev *dev, enum pci_channel_state error); pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev); pci_ers_result_t (*link_reset)(struct pci_dev *dev); pci_ers_result_t (*slot_reset)(struct pci_dev *dev); void (*resume)(struct pci_dev *dev); }; struct module; struct pci_driver { struct list_head node; const char *name; const struct pci_device_id *id_table; int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); void (*remove) (struct pci_dev *dev); int (*suspend) (struct pci_dev *dev, pm_message_t state); int (*suspend_late) (struct pci_dev *dev, pm_message_t state); int (*resume_early) (struct pci_dev *dev); int (*resume) (struct pci_dev *dev); void (*shutdown) (struct pci_dev *dev); int (*sriov_configure) (struct pci_dev *dev, int num_vfs); const struct pci_error_handlers *err_handler; struct device_driver driver; struct pci_dynids dynids; }; # 658 "include/linux/pci.h" extern void pcie_bus_configure_settings(struct pci_bus *bus, u8 smpss); enum pcie_bus_config_types { PCIE_BUS_TUNE_OFF, PCIE_BUS_SAFE, PCIE_BUS_PERFORMANCE, PCIE_BUS_PEER2PEER, }; extern enum pcie_bus_config_types pcie_bus_config; extern struct bus_type pci_bus_type; extern struct list_head pci_root_buses; extern int no_pci_devices(void); void pcibios_fixup_bus(struct pci_bus *); int __attribute__((warn_unused_result)) pcibios_enable_device(struct pci_dev *, int mask); char *pcibios_setup(char *str); resource_size_t pcibios_align_resource(void *, const struct resource *, resource_size_t, resource_size_t); void pcibios_update_irq(struct pci_dev *, int irq); void pci_fixup_cardbus(struct pci_bus *); void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, struct resource *res); void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, struct pci_bus_region *region); void pcibios_scan_specific_bus(int busn); extern struct pci_bus *pci_find_bus(int domain, int busnr); void pci_bus_add_devices(const struct pci_bus *bus); struct pci_bus *pci_scan_bus_parented(struct device *parent, int bus, struct pci_ops *ops, void *sysdata); struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata); struct pci_bus *pci_create_root_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata, struct list_head *resources); int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax); int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax); void pci_bus_release_busn_res(struct pci_bus *b); struct pci_bus *pci_scan_root_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata, struct list_head *resources); struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr); void pcie_update_link_speed(struct pci_bus *bus, u16 link_status); struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug); void pci_destroy_slot(struct pci_slot *slot); void pci_renumber_slot(struct pci_slot *slot, int slot_nr); int pci_scan_slot(struct pci_bus *bus, int devfn); struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); unsigned int pci_scan_child_bus(struct pci_bus *bus); int __attribute__((warn_unused_result)) pci_bus_add_device(struct pci_dev *dev); void pci_read_bridge_bases(struct pci_bus *child); struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res); u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin); int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge); u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp); extern struct pci_dev *pci_dev_get(struct pci_dev *dev); extern void pci_dev_put(struct pci_dev *dev); extern void pci_remove_bus(struct pci_bus *b); extern void pci_stop_and_remove_bus_device(struct pci_dev *dev); void pci_stop_root_bus(struct pci_bus *bus); void pci_remove_root_bus(struct pci_bus *bus); void pci_setup_cardbus(struct pci_bus *bus); extern void pci_sort_breadthfirst(void); enum pci_lost_interrupt_reason { PCI_LOST_IRQ_NO_INFORMATION = 0, PCI_LOST_IRQ_DISABLE_MSI, PCI_LOST_IRQ_DISABLE_MSIX, PCI_LOST_IRQ_DISABLE_ACPI, }; enum pci_lost_interrupt_reason pci_lost_interrupt(struct pci_dev *dev); int pci_find_capability(struct pci_dev *dev, int cap); int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap); int pci_find_ext_capability(struct pci_dev *dev, int cap); int pci_find_next_ext_capability(struct pci_dev *dev, int pos, int cap); int pci_find_ht_capability(struct pci_dev *dev, int ht_cap); int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap); struct pci_bus *pci_find_next_bus(const struct pci_bus *from); struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from); struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from); struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn); struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, unsigned int devfn); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn) { return pci_get_domain_bus_and_slot(0, bus, devfn); } struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from); int pci_dev_present(const struct pci_device_id *ids); int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 *val); int pci_bus_read_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 *val); int pci_bus_read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 *val); int pci_bus_write_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 val); int pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 val); int pci_bus_write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 val); struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val) { return pci_bus_read_config_byte(dev->bus, dev->devfn, where, val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_read_config_word(const struct pci_dev *dev, int where, u16 *val) { return pci_bus_read_config_word(dev->bus, dev->devfn, where, val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_read_config_dword(const struct pci_dev *dev, int where, u32 *val) { return pci_bus_read_config_dword(dev->bus, dev->devfn, where, val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_write_config_byte(const struct pci_dev *dev, int where, u8 val) { return pci_bus_write_config_byte(dev->bus, dev->devfn, where, val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_write_config_word(const struct pci_dev *dev, int where, u16 val) { return pci_bus_write_config_word(dev->bus, dev->devfn, where, val); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_write_config_dword(const struct pci_dev *dev, int where, u32 val) { return pci_bus_write_config_dword(dev->bus, dev->devfn, where, val); } int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val); int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val); int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val); int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val); int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos, u16 clear, u16 set); int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos, u32 clear, u32 set); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcie_capability_set_word(struct pci_dev *dev, int pos, u16 set) { return pcie_capability_clear_and_set_word(dev, pos, 0, set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcie_capability_set_dword(struct pci_dev *dev, int pos, u32 set) { return pcie_capability_clear_and_set_dword(dev, pos, 0, set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcie_capability_clear_word(struct pci_dev *dev, int pos, u16 clear) { return pcie_capability_clear_and_set_word(dev, pos, clear, 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcie_capability_clear_dword(struct pci_dev *dev, int pos, u32 clear) { return pcie_capability_clear_and_set_dword(dev, pos, clear, 0); } int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); int pci_user_read_config_dword(struct pci_dev *dev, int where, u32 *val); int pci_user_write_config_byte(struct pci_dev *dev, int where, u8 val); int pci_user_write_config_word(struct pci_dev *dev, int where, u16 val); int pci_user_write_config_dword(struct pci_dev *dev, int where, u32 val); int __attribute__((warn_unused_result)) pci_enable_device(struct pci_dev *dev); int __attribute__((warn_unused_result)) pci_enable_device_io(struct pci_dev *dev); int __attribute__((warn_unused_result)) pci_enable_device_mem(struct pci_dev *dev); int __attribute__((warn_unused_result)) pci_reenable_device(struct pci_dev *); int __attribute__((warn_unused_result)) pcim_enable_device(struct pci_dev *pdev); void pcim_pin_device(struct pci_dev *pdev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_is_enabled(struct pci_dev *pdev) { return ((*(volatile int *)&(&pdev->enable_cnt)->counter) > 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_is_managed(struct pci_dev *pdev) { return pdev->is_managed; } void pci_disable_device(struct pci_dev *dev); extern unsigned int pcibios_max_latency; void pci_set_master(struct pci_dev *dev); void pci_clear_master(struct pci_dev *dev); int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); int pci_set_cacheline_size(struct pci_dev *dev); int __attribute__((warn_unused_result)) pci_set_mwi(struct pci_dev *dev); int pci_try_set_mwi(struct pci_dev *dev); void pci_clear_mwi(struct pci_dev *dev); void pci_intx(struct pci_dev *dev, int enable); bool pci_intx_mask_supported(struct pci_dev *dev); bool pci_check_and_mask_intx(struct pci_dev *dev); bool pci_check_and_unmask_intx(struct pci_dev *dev); void pci_msi_off(struct pci_dev *dev); int pci_set_dma_max_seg_size(struct pci_dev *dev, unsigned int size); int pci_set_dma_seg_boundary(struct pci_dev *dev, unsigned long mask); int pcix_get_max_mmrbc(struct pci_dev *dev); int pcix_get_mmrbc(struct pci_dev *dev); int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc); int pcie_get_readrq(struct pci_dev *dev); int pcie_set_readrq(struct pci_dev *dev, int rq); int pcie_get_mps(struct pci_dev *dev); int pcie_set_mps(struct pci_dev *dev, int mps); int __pci_reset_function(struct pci_dev *dev); int __pci_reset_function_locked(struct pci_dev *dev); int pci_reset_function(struct pci_dev *dev); void pci_update_resource(struct pci_dev *dev, int resno); int __attribute__((warn_unused_result)) pci_assign_resource(struct pci_dev *dev, int i); int __attribute__((warn_unused_result)) pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align); int pci_select_bars(struct pci_dev *dev, unsigned long flags); int pci_enable_rom(struct pci_dev *pdev); void pci_disable_rom(struct pci_dev *pdev); void __attribute__((warn_unused_result)) *pci_map_rom(struct pci_dev *pdev, size_t *size); void pci_unmap_rom(struct pci_dev *pdev, void *rom); size_t pci_get_rom_size(struct pci_dev *pdev, void *rom, size_t size); int pci_save_state(struct pci_dev *dev); void pci_restore_state(struct pci_dev *dev); struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev); int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state); int pci_load_and_free_saved_state(struct pci_dev *dev, struct pci_saved_state **state); int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state); int pci_set_power_state(struct pci_dev *dev, pci_power_t state); pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); bool pci_pme_capable(struct pci_dev *dev, pci_power_t state); void pci_pme_active(struct pci_dev *dev, bool enable); int __pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool runtime, bool enable); int pci_wake_from_d3(struct pci_dev *dev, bool enable); pci_power_t pci_target_state(struct pci_dev *dev); int pci_prepare_to_sleep(struct pci_dev *dev); int pci_back_from_sleep(struct pci_dev *dev); bool pci_dev_run_wake(struct pci_dev *dev); bool pci_check_pme_status(struct pci_dev *dev); void pci_pme_wakeup_bus(struct pci_bus *bus); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enable) { return __pci_enable_wake(dev, state, false, enable); } void pci_enable_ido(struct pci_dev *dev, unsigned long type); void pci_disable_ido(struct pci_dev *dev, unsigned long type); enum pci_obff_signal_type { PCI_EXP_OBFF_SIGNAL_L0 = 0, PCI_EXP_OBFF_SIGNAL_ALWAYS = 1, }; int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type); void pci_disable_obff(struct pci_dev *dev); int pci_enable_ltr(struct pci_dev *dev); void pci_disable_ltr(struct pci_dev *dev); int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns); void set_pcie_port_type(struct pci_dev *pdev); void set_pcie_hotplug_bridge(struct pci_dev *pdev); int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap); unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge); unsigned int pci_rescan_bus(struct pci_bus *bus); ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf); ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf); int pci_vpd_truncate(struct pci_dev *dev, size_t size); resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx); void pci_bus_assign_resources(const struct pci_bus *bus); void pci_bus_size_bridges(struct pci_bus *bus); int pci_claim_resource(struct pci_dev *, int); void pci_assign_unassigned_resources(void); void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge); void pci_assign_unassigned_bus_resources(struct pci_bus *bus); void pdev_enable_device(struct pci_dev *); int pci_enable_resources(struct pci_dev *, int mask); void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *), int (*)(const struct pci_dev *, u8, u8)); int __attribute__((warn_unused_result)) pci_request_regions(struct pci_dev *, const char *); int __attribute__((warn_unused_result)) pci_request_regions_exclusive(struct pci_dev *, const char *); void pci_release_regions(struct pci_dev *); int __attribute__((warn_unused_result)) pci_request_region(struct pci_dev *, int, const char *); int __attribute__((warn_unused_result)) pci_request_region_exclusive(struct pci_dev *, int, const char *); void pci_release_region(struct pci_dev *, int); int pci_request_selected_regions(struct pci_dev *, int, const char *); int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *); void pci_release_selected_regions(struct pci_dev *, int); void pci_add_resource(struct list_head *resources, struct resource *res); void pci_add_resource_offset(struct list_head *resources, struct resource *res, resource_size_t offset); void pci_free_resource_list(struct list_head *resources); void pci_bus_add_resource(struct pci_bus *bus, struct resource *res, unsigned int flags); struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n); void pci_bus_remove_resources(struct pci_bus *bus); int __attribute__((warn_unused_result)) pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, resource_size_t size, resource_size_t align, resource_size_t min, unsigned int type_mask, resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t), void *alignf_data); void pci_enable_bridges(struct pci_bus *bus); int __attribute__((warn_unused_result)) __pci_register_driver(struct pci_driver *, struct module *, const char *mod_name); void pci_unregister_driver(struct pci_driver *dev); # 1046 "include/linux/pci.h" struct pci_driver *pci_dev_driver(const struct pci_dev *dev); int pci_add_dynid(struct pci_driver *drv, unsigned int vendor, unsigned int device, unsigned int subvendor, unsigned int subdevice, unsigned int class, unsigned int class_mask, unsigned long driver_data); const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, struct pci_dev *dev); int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass); void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata); int pci_cfg_space_size_ext(struct pci_dev *dev); int pci_cfg_space_size(struct pci_dev *dev); unsigned char pci_bus_max_busnr(struct pci_bus *bus); void pci_setup_bridge(struct pci_bus *bus); resource_size_t pcibios_window_alignment(struct pci_bus *bus, unsigned long type); int pci_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); # 1 "include/linux/pci-dma.h" 1 # 1074 "include/linux/pci.h" 2 # 1 "include/linux/dmapool.h" 1 # 15 "include/linux/dmapool.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/scatterlist.h" 1 # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/scatterlist.h" # 1 "arch/arm/include/generated/asm/types.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/scatterlist.h" 2 # 1 "include/asm-generic/scatterlist.h" 1 struct scatterlist { unsigned long page_link; unsigned int offset; unsigned int length; dma_addr_t dma_address; }; # 11 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/scatterlist.h" 2 # 16 "include/linux/dmapool.h" 2 struct dma_pool *dma_pool_create(const char *name, struct device *dev, size_t size, size_t align, size_t allocation); void dma_pool_destroy(struct dma_pool *pool); void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle); void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); struct dma_pool *dmam_pool_create(const char *name, struct device *dev, size_t size, size_t align, size_t allocation); void dmam_pool_destroy(struct dma_pool *pool); # 1075 "include/linux/pci.h" 2 # 1083 "include/linux/pci.h" enum pci_dma_burst_strategy { PCI_DMA_BURST_INFINITY, PCI_DMA_BURST_BOUNDARY, PCI_DMA_BURST_MULTIPLE, }; struct msix_entry { u32 vector; u16 entry; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec) { return -1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_msi_shutdown(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_disable_msi(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_msix_table_size(struct pci_dev *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) { return -1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_msix_shutdown(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_disable_msix(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void msi_remove_pci_irq_vectors(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_restore_msi_state(struct pci_dev *dev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_msi_enabled(void) { return 0; } # 1156 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcie_aspm_enabled(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool pcie_aspm_support_enabled(void) { return false; } # 1167 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_no_aer(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool pci_aer_available(void) { return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pcie_set_ecrc_checking(struct pci_dev *dev) { return; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pcie_ecrc_get_policy(char *str) {}; # 1190 "include/linux/pci.h" extern void pci_cfg_access_lock(struct pci_dev *dev); extern bool pci_cfg_access_trylock(struct pci_dev *dev); extern void pci_cfg_access_unlock(struct pci_dev *dev); # 1202 "include/linux/pci.h" enum { pci_domains_supported = 0 }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_domain_nr(struct pci_bus *bus) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_proc_domain(struct pci_bus *bus) { return 0; } typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); extern void pci_register_set_vga_state(arch_set_vga_state_t func); # 1422 "include/linux/pci.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" 1 # 1 "include/asm-generic/pci-dma-compat.h" 1 # 1 "include/linux/dma-mapping.h" 1 # 1 "include/linux/err.h" 1 # 1 "arch/arm/include/generated/asm/errno.h" 1 # 7 "include/linux/err.h" 2 # 22 "include/linux/err.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void * __attribute__((warn_unused_result)) ERR_PTR(long error) { return (void *) error; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long __attribute__((warn_unused_result)) PTR_ERR(const void *ptr) { return (long) ptr; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long __attribute__((warn_unused_result)) IS_ERR(const void *ptr) { return __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) long __attribute__((warn_unused_result)) IS_ERR_OR_NULL(const void *ptr) { return !ptr || __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); } # 49 "include/linux/err.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void * __attribute__((warn_unused_result)) ERR_CAST(const void *ptr) { return (void *) ptr; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) PTR_RET(const void *ptr) { if (IS_ERR(ptr)) return PTR_ERR(ptr); else return 0; } # 7 "include/linux/dma-mapping.h" 2 # 1 "include/linux/dma-attrs.h" 1 # 13 "include/linux/dma-attrs.h" enum dma_attr { DMA_ATTR_WRITE_BARRIER, DMA_ATTR_WEAK_ORDERING, DMA_ATTR_WRITE_COMBINE, DMA_ATTR_NON_CONSISTENT, DMA_ATTR_NO_KERNEL_MAPPING, DMA_ATTR_SKIP_CPU_SYNC, DMA_ATTR_FORCE_CONTIGUOUS, DMA_ATTR_MAX, }; struct dma_attrs { unsigned long flags[(((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_dma_attrs(struct dma_attrs *attrs) { bitmap_zero(attrs->flags, (((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_set_attr(enum dma_attr attr, struct dma_attrs *attrs) { if (attrs == ((void *)0)) return; do { if (__builtin_expect(!!(attr >= DMA_ATTR_MAX), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/dma-attrs.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "54" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); __set_bit(attr, attrs->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_get_attr(enum dma_attr attr, struct dma_attrs *attrs) { if (attrs == ((void *)0)) return 0; do { if (__builtin_expect(!!(attr >= DMA_ATTR_MAX), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/dma-attrs.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "67" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); return test_bit(attr, attrs->flags); } # 8 "include/linux/dma-mapping.h" 2 # 1 "include/linux/dma-direction.h" 1 enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3, }; # 9 "include/linux/dma-mapping.h" 2 # 1 "include/linux/scatterlist.h" 1 # 1 "include/linux/mm.h" 1 # 14 "include/linux/mm.h" # 1 "include/linux/debug_locks.h" 1 struct task_struct; extern int debug_locks; extern int debug_locks_silent; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __debug_locks_off(void) { return ((__typeof__(*(&debug_locks)))__xchg((unsigned long)(0),(&debug_locks),sizeof(*(&debug_locks)))); } extern int debug_locks_off(void); # 48 "include/linux/debug_locks.h" struct task_struct; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_show_all_locks(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_show_held_locks(struct task_struct *task) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_check_no_locks_freed(const void *from, unsigned long len) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_check_no_locks_held(struct task_struct *task) { } # 15 "include/linux/mm.h" 2 # 1 "include/linux/mm_types.h" 1 # 1 "include/linux/auxvec.h" 1 # 1 "include/uapi/linux/auxvec.h" 1 # 1 "arch/arm/include/generated/asm/auxvec.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/auxvec.h" 1 # 1 "arch/arm/include/generated/asm/auxvec.h" 2 # 5 "include/uapi/linux/auxvec.h" 2 # 5 "include/linux/auxvec.h" 2 # 5 "include/linux/mm_types.h" 2 # 13 "include/linux/mm_types.h" # 1 "include/linux/page-debug-flags.h" 1 # 14 "include/linux/page-debug-flags.h" enum page_debug_flags { PAGE_DEBUG_FLAG_POISON, PAGE_DEBUG_FLAG_GUARD, }; # 14 "include/linux/mm_types.h" 2 # 1 "include/linux/uprobes.h" 1 # 30 "include/linux/uprobes.h" struct vm_area_struct; struct mm_struct; struct inode; struct uprobe_consumer { int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs); bool (*filter)(struct uprobe_consumer *self, struct task_struct *task); struct uprobe_consumer *next; }; # 113 "include/linux/uprobes.h" struct uprobes_state { }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *uc) { return -38; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_unregister(struct inode *inode, loff_t offset, struct uprobe_consumer *uc) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int uprobe_mmap(struct vm_area_struct *vma) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned long end) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_start_dup_mmap(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_end_dup_mmap(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_dup_mmap(struct mm_struct *oldmm, struct mm_struct *newmm) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_notify_resume(struct pt_regs *regs) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool uprobe_deny_signal(void) { return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long uprobe_get_swbp_addr(struct pt_regs *regs) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_free_utask(struct task_struct *t) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_copy_process(struct task_struct *t) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void uprobe_clear_state(struct mm_struct *mm) { } # 15 "include/linux/mm_types.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/mmu.h" 1 typedef struct { u64 id; unsigned int vmalloc_seq; } mm_context_t; # 17 "include/linux/mm_types.h" 2 struct address_space; # 40 "include/linux/mm_types.h" struct page { unsigned long flags; struct address_space *mapping; struct { union { unsigned long index; void *freelist; bool pfmemalloc; # 65 "include/linux/mm_types.h" }; union { # 78 "include/linux/mm_types.h" unsigned counters; struct { union { # 100 "include/linux/mm_types.h" atomic_t _mapcount; struct { unsigned inuse:16; unsigned objects:15; unsigned frozen:1; }; int units; }; atomic_t _count; }; }; }; union { struct list_head lru; struct { struct page *next; short int pages; short int pobjects; }; struct list_head list; struct slab *slab_page; }; union { unsigned long private; spinlock_t ptl; struct kmem_cache *slab_cache; struct page *first_page; }; # 179 "include/linux/mm_types.h" } ; struct page_frag { struct page *page; __u16 offset; __u16 size; }; typedef unsigned long vm_flags_t; struct vm_region { struct rb_node vm_rb; vm_flags_t vm_flags; unsigned long vm_start; unsigned long vm_end; unsigned long vm_top; unsigned long vm_pgoff; struct file *vm_file; int vm_usage; bool vm_icache_flushed : 1; }; struct vm_area_struct { unsigned long vm_start; unsigned long vm_end; struct vm_area_struct *vm_next, *vm_prev; struct rb_node vm_rb; unsigned long rb_subtree_gap; struct mm_struct *vm_mm; pgprot_t vm_page_prot; unsigned long vm_flags; union { struct { struct rb_node rb; unsigned long rb_subtree_last; } linear; struct list_head nonlinear; } shared; struct list_head anon_vma_chain; struct anon_vma *anon_vma; const struct vm_operations_struct *vm_ops; unsigned long vm_pgoff; struct file * vm_file; void * vm_private_data; }; struct core_thread { struct task_struct *task; struct core_thread *next; }; struct core_state { atomic_t nr_threads; struct core_thread dumper; struct completion startup; }; enum { MM_FILEPAGES, MM_ANONPAGES, MM_SWAPENTS, NR_MM_COUNTERS }; struct task_rss_stat { int events; int count[NR_MM_COUNTERS]; }; struct mm_rss_stat { atomic_long_t count[NR_MM_COUNTERS]; }; struct mm_struct { struct vm_area_struct * mmap; struct rb_root mm_rb; struct vm_area_struct * mmap_cache; unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); void (*unmap_area) (struct mm_struct *mm, unsigned long addr); unsigned long mmap_base; unsigned long task_size; unsigned long cached_hole_size; unsigned long free_area_cache; unsigned long highest_vm_end; pgd_t * pgd; atomic_t mm_users; atomic_t mm_count; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_sem; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; unsigned long pinned_vm; unsigned long shared_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; unsigned long nr_ptes; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long saved_auxv[(2*(0 + 19 + 1))]; struct mm_rss_stat rss_stat; struct linux_binfmt *binfmt; cpumask_var_t cpu_vm_mask_var; mm_context_t context; unsigned long flags; struct core_state *core_state; spinlock_t ioctx_lock; struct hlist_head ioctx_list; # 401 "include/linux/mm_types.h" struct task_struct *owner; struct file *exe_file; # 438 "include/linux/mm_types.h" struct uprobes_state uprobes_state; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mm_init_cpumask(struct mm_struct *mm) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) cpumask_t *mm_cpumask(struct mm_struct *mm) { return mm->cpu_vm_mask_var; } # 16 "include/linux/mm.h" 2 # 1 "include/linux/range.h" 1 struct range { u64 start; u64 end; }; int add_range(struct range *range, int az, int nr_range, u64 start, u64 end); int add_range_with_merge(struct range *range, int az, int nr_range, u64 start, u64 end); void subtract_range(struct range *range, int az, u64 start, u64 end); int clean_sort_range(struct range *range, int az); void sort_range(struct range *range, int nr_range); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) resource_size_t cap_resource(u64 val) { if (val > ((resource_size_t)~0)) return ((resource_size_t)~0); return val; } # 17 "include/linux/mm.h" 2 # 1 "include/linux/bit_spinlock.h" 1 # 15 "include/linux/bit_spinlock.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bit_spin_lock(int bitnum, unsigned long *addr) { do { } while (0); while (__builtin_expect(!!(_test_and_set_bit(bitnum,addr)), 0)) { do { } while (0); do { __asm__ __volatile__ ("dmb" : : : "memory"); } while (test_bit(bitnum, addr)); do { } while (0); } (void)0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bit_spin_trylock(int bitnum, unsigned long *addr) { do { } while (0); if (__builtin_expect(!!(_test_and_set_bit(bitnum,addr)), 0)) { do { } while (0); return 0; } (void)0; return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bit_spin_unlock(int bitnum, unsigned long *addr) { do { __asm__ __volatile__ ("dmb" : : : "memory"); _clear_bit(bitnum,addr); } while (0); do { } while (0); (void)0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __bit_spin_unlock(int bitnum, unsigned long *addr) { do { __asm__ __volatile__ ("dmb" : : : "memory"); __clear_bit(bitnum, addr); } while (0); do { } while (0); (void)0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bit_spin_is_locked(int bitnum, unsigned long *addr) { return test_bit(bitnum, addr); } # 19 "include/linux/mm.h" 2 # 1 "include/linux/shrinker.h" 1 struct shrink_control { gfp_t gfp_mask; unsigned long nr_to_scan; }; # 30 "include/linux/shrinker.h" struct shrinker { int (*shrink)(struct shrinker *, struct shrink_control *sc); int seeks; long batch; struct list_head list; atomic_long_t nr_in_batch; }; extern void register_shrinker(struct shrinker *); extern void unregister_shrinker(struct shrinker *); # 20 "include/linux/mm.h" 2 struct mempolicy; struct anon_vma; struct anon_vma_chain; struct file_ra_state; struct user_struct; struct writeback_control; extern unsigned long max_mapnr; extern unsigned long num_physpages; extern unsigned long totalram_pages; extern void * high_memory; extern int page_cluster; extern int sysctl_legacy_va_layout; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 1 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/proc-fns.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/proc-fns.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-proc.h" 1 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-proc.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue.h" 1 # 15 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-proc.h" 2 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/proc-fns.h" 2 struct mm_struct; extern struct processor { void (*_data_abort)(unsigned long pc); unsigned long (*_prefetch_abort)(unsigned long lr); void (*_proc_init)(void); void (*_proc_fin)(void); void (*reset)(unsigned long addr) __attribute__((noreturn)); int (*_do_idle)(void); void (*dcache_clean_area)(void *addr, int size); void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext); unsigned int suspend_size; void (*do_suspend)(void *); void (*do_resume)(void *); } processor; extern void cpu_v7_proc_init(void); extern void cpu_v7_proc_fin(void); extern int cpu_v7_do_idle(void); extern void cpu_v7_dcache_clean_area(void *, int); extern void cpu_v7_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); extern void cpu_v7_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext); extern void cpu_v7_reset(unsigned long addr) __attribute__((noreturn)); extern void cpu_v7_do_suspend(void *); extern void cpu_v7_do_resume(void *); # 110 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/proc-fns.h" extern void cpu_resume(void); # 15 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 2 # 23 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" # 1 "include/asm-generic/pgtable-nopud.h" 1 # 13 "include/asm-generic/pgtable-nopud.h" typedef struct { pgd_t pgd; } pud_t; # 25 "include/asm-generic/pgtable-nopud.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pgd_none(pgd_t pgd) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pgd_bad(pgd_t pgd) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pgd_present(pgd_t pgd) { return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgd_clear(pgd_t *pgd) { } # 38 "include/asm-generic/pgtable-nopud.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pud_t * pud_offset(pgd_t * pgd, unsigned long address) { return (pud_t *)pgd; } # 24 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-hwdef.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-hwdef.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level-hwdef.h" 1 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-hwdef.h" 2 # 26 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level.h" 1 # 158 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable-2level.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pmd_t *pmd_offset(pud_t *pud, unsigned long addr) { return (pmd_t *)pud; } # 31 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 2 # 48 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" extern void __pte_error(const char *file, int line, pte_t); extern void __pmd_error(const char *file, int line, pmd_t); extern void __pgd_error(const char *file, int line, pgd_t); # 71 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" extern pgprot_t pgprot_user; extern pgprot_t pgprot_kernel; # 110 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" struct file; extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, unsigned long size, pgprot_t vma_prot); # 151 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" extern struct page *empty_zero_page; extern pgd_t swapper_pg_dir[2048]; # 168 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t *pmd_page_vaddr(pmd_t pmd) { return ((void *)__phys_to_virt((unsigned long)((pmd) & (~0UL) & (s32)(~(((1UL) << 12)-1))))); } # 213 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" extern void __sync_icache_dcache(pte_t pteval); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval) { unsigned long ext = 0; if (addr < ((0xC0000000UL) - (0x01000000UL)) && (((pteval) & (((pteval_t)(1)) << 0)) && ((pteval) & (((pteval_t)(1)) << 8)))) { __sync_icache_dcache(pteval); ext |= (((pteval_t)(1)) << 11); } cpu_v7_set_pte_ext(ptep,pteval,ext); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_wrprotect(pte_t pte) { (pte) |= (((pteval_t)(1)) << 7); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkwrite(pte_t pte) { (pte) &= ~(((pteval_t)(1)) << 7); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkclean(pte_t pte) { (pte) &= ~(((pteval_t)(1)) << 6); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkdirty(pte_t pte) { (pte) |= (((pteval_t)(1)) << 6); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkold(pte_t pte) { (pte) &= ~(((pteval_t)(1)) << 1); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkyoung(pte_t pte) { (pte) |= (((pteval_t)(1)) << 1); return pte; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mkspecial(pte_t pte) { return pte; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_modify(pte_t pte, pgprot_t newprot) { const pteval_t mask = (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 8) | (((pteval_t)(1)) << 11); (pte) = ((pte) & ~mask) | ((newprot) & mask); return pte; } # 296 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" # 1 "include/asm-generic/pgtable.h" 1 # 11 "include/asm-generic/pgtable.h" extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty); extern int pmdp_set_access_flags(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t entry, int dirty); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) { pte_t pte = *ptep; int r = 1; if (!((pte) & (((pteval_t)(1)) << 1))) r = 0; else set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte)); return r; } # 52 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmdp_test_and_clear_young(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/pgtable.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "56" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); return 0; } int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); int pmdp_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long address, pte_t *ptep) { pte_t pte = *ptep; cpu_v7_set_pte_ext(ptep,(0),0); return pte; } # 97 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long address, pte_t *ptep, int full) { pte_t pte; pte = ptep_get_and_clear(mm, address, ptep); return pte; } # 113 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pte_clear_not_present_full(struct mm_struct *mm, unsigned long address, pte_t *ptep, int full) { cpu_v7_set_pte_ext(ptep,(0),0); } extern pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); extern pmd_t pmdp_clear_flush(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); struct mm_struct; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ptep_set_wrprotect(struct mm_struct *mm, unsigned long address, pte_t *ptep) { pte_t old_pte = *ptep; set_pte_at(mm, address, ptep, pte_wrprotect(old_pte)); } # 152 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pmdp_set_wrprotect(struct mm_struct *mm, unsigned long address, pmd_t *pmdp) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/pgtable.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "155" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } extern void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable); extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm); extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pte_same(pte_t pte_a, pte_t pte_b) { return (pte_a) == (pte_b); } # 192 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_same(pmd_t pmd_a, pmd_t pmd_b) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/pgtable.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "194" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); return 0; } # 268 "include/asm-generic/pgtable.h" void pgd_clear_bad(pgd_t *); void pud_clear_bad(pud_t *); void pmd_clear_bad(pmd_t *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pgd_none_or_clear_bad(pgd_t *pgd) { if (pgd_none(*pgd)) return 1; if (__builtin_expect(!!(pgd_bad(*pgd)), 0)) { pgd_clear_bad(pgd); return 1; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pud_none_or_clear_bad(pud_t *pud) { if ((0)) return 1; if (__builtin_expect(!!((0)), 0)) { pud_clear_bad(pud); return 1; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_none_or_clear_bad(pmd_t *pmd) { if ((!(*pmd))) return 1; if (__builtin_expect(!!(((*pmd) & 2)), 0)) { pmd_clear_bad(pmd); return 1; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t __ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { return ptep_get_and_clear(mm, addr, ptep); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { set_pte_at(mm, addr, ptep, pte); } # 343 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { return __ptep_modify_prot_start(mm, addr, ptep); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { __ptep_modify_prot_commit(mm, addr, ptep, pte); } # 410 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot, unsigned long pfn, unsigned long addr, unsigned long size) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, unsigned long pfn) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int track_pfn_copy(struct vm_area_struct *vma) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn, unsigned long size) { } # 467 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_zero_pfn(unsigned long pfn) { extern unsigned long zero_pfn; return pfn == zero_pfn; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long my_zero_pfn(unsigned long addr) { extern unsigned long zero_pfn; return zero_pfn; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_trans_huge(pmd_t pmd) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_trans_splitting(pmd_t pmd) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_write(pmd_t pmd) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/pgtable.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "494" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pmd_t pmd_read_atomic(pmd_t *pmdp) { return *pmdp; } # 533 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd) { pmd_t pmdval = pmd_read_atomic(pmd); # 553 "include/asm-generic/pgtable.h" if ((!(pmdval))) return 1; if (__builtin_expect(!!(((pmdval) & 2)), 0)) { if (!pmd_trans_huge(pmdval)) pmd_clear_bad(pmd); return 1; } return 0; } # 576 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_trans_unstable(pmd_t *pmd) { return 0; } # 660 "include/asm-generic/pgtable.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_numa(pmd_t pmd) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pte_numa(pte_t pte) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mknonnuma(pte_t pte) { return pte; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pmd_t pmd_mknonnuma(pmd_t pmd) { return pmd; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t pte_mknuma(pte_t pte) { return pte; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pmd_t pmd_mknuma(pmd_t pmd) { return pmd; } # 297 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pgtable.h" 2 # 45 "include/linux/mm.h" 2 # 61 "include/linux/mm.h" extern struct kmem_cache *vm_area_cachep; # 156 "include/linux/mm.h" extern pgprot_t protection_map[16]; # 174 "include/linux/mm.h" struct vm_fault { unsigned int flags; unsigned long pgoff; void *virtual_address; struct page *page; }; struct vm_operations_struct { void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf); int (*page_mkwrite)(struct vm_area_struct *vma, struct vm_fault *vmf); int (*access)(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); # 231 "include/linux/mm.h" int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, unsigned long size, unsigned long pgoff); }; struct mmu_gather; struct inode; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_freepage_migratetype(struct page *page, int migratetype) { page->index = migratetype; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_freepage_migratetype(struct page *page) { return page->index; } # 1 "include/linux/page-flags.h" 1 # 74 "include/linux/page-flags.h" enum pageflags { PG_locked, PG_error, PG_referenced, PG_uptodate, PG_dirty, PG_lru, PG_active, PG_slab, PG_owner_priv_1, PG_arch_1, PG_reserved, PG_private, PG_private_2, PG_writeback, PG_head, PG_tail, PG_swapcache, PG_mappedtodisk, PG_reclaim, PG_swapbacked, PG_unevictable, PG_mlocked, # 112 "include/linux/page-flags.h" __NR_PAGEFLAGS, PG_checked = PG_owner_priv_1, PG_fscache = PG_private_2, PG_pinned = PG_owner_priv_1, PG_savepinned = PG_dirty, PG_slob_free = PG_private, }; # 196 "include/linux/page-flags.h" struct page; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageLocked(const struct page *page) { return test_bit(PG_locked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageError(const struct page *page) { return test_bit(PG_error, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageError(struct page *page) { _set_bit(PG_error,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageError(struct page *page) { _clear_bit(PG_error,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageError(struct page *page) { return _test_and_clear_bit(PG_error,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageReferenced(const struct page *page) { return test_bit(PG_referenced, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageReferenced(struct page *page) { _set_bit(PG_referenced,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageReferenced(struct page *page) { _clear_bit(PG_referenced,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageReferenced(struct page *page) { return _test_and_clear_bit(PG_referenced,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageDirty(const struct page *page) { return test_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageDirty(struct page *page) { _set_bit(PG_dirty,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageDirty(struct page *page) { _clear_bit(PG_dirty,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestSetPageDirty(struct page *page) { return _test_and_set_bit(PG_dirty,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageDirty(struct page *page) { return _test_and_clear_bit(PG_dirty,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageDirty(struct page *page) { __clear_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageLRU(const struct page *page) { return test_bit(PG_lru, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageLRU(struct page *page) { _set_bit(PG_lru,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageLRU(struct page *page) { _clear_bit(PG_lru,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageLRU(struct page *page) { __clear_bit(PG_lru, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageActive(const struct page *page) { return test_bit(PG_active, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageActive(struct page *page) { _set_bit(PG_active,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageActive(struct page *page) { _clear_bit(PG_active,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageActive(struct page *page) { __clear_bit(PG_active, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageActive(struct page *page) { return _test_and_clear_bit(PG_active,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSlab(const struct page *page) { return test_bit(PG_slab, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageSlab(struct page *page) { __set_bit(PG_slab, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageSlab(struct page *page) { __clear_bit(PG_slab, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageChecked(const struct page *page) { return test_bit(PG_checked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageChecked(struct page *page) { _set_bit(PG_checked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageChecked(struct page *page) { _clear_bit(PG_checked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PagePinned(const struct page *page) { return test_bit(PG_pinned, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPagePinned(struct page *page) { _set_bit(PG_pinned,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPagePinned(struct page *page) { _clear_bit(PG_pinned,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestSetPagePinned(struct page *page) { return _test_and_set_bit(PG_pinned,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPagePinned(struct page *page) { return _test_and_clear_bit(PG_pinned,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSavePinned(const struct page *page) { return test_bit(PG_savepinned, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageSavePinned(struct page *page) { _set_bit(PG_savepinned,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageSavePinned(struct page *page) { _clear_bit(PG_savepinned,&page->flags); }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageReserved(const struct page *page) { return test_bit(PG_reserved, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageReserved(struct page *page) { _set_bit(PG_reserved,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageReserved(struct page *page) { _clear_bit(PG_reserved,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageReserved(struct page *page) { __clear_bit(PG_reserved, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSwapBacked(const struct page *page) { return test_bit(PG_swapbacked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageSwapBacked(struct page *page) { _set_bit(PG_swapbacked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageSwapBacked(struct page *page) { _clear_bit(PG_swapbacked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageSwapBacked(struct page *page) { __clear_bit(PG_swapbacked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSlobFree(const struct page *page) { return test_bit(PG_slob_free, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageSlobFree(struct page *page) { __set_bit(PG_slob_free, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageSlobFree(struct page *page) { __clear_bit(PG_slob_free, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PagePrivate(const struct page *page) { return test_bit(PG_private, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPagePrivate(struct page *page) { _set_bit(PG_private,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPagePrivate(struct page *page) { _clear_bit(PG_private,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPagePrivate(struct page *page) { __set_bit(PG_private, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPagePrivate(struct page *page) { __clear_bit(PG_private, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PagePrivate2(const struct page *page) { return test_bit(PG_private_2, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPagePrivate2(struct page *page) { _set_bit(PG_private_2,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPagePrivate2(struct page *page) { _clear_bit(PG_private_2,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestSetPagePrivate2(struct page *page) { return _test_and_set_bit(PG_private_2,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPagePrivate2(struct page *page) { return _test_and_clear_bit(PG_private_2,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageOwnerPriv1(const struct page *page) { return test_bit(PG_owner_priv_1, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageOwnerPriv1(struct page *page) { _set_bit(PG_owner_priv_1,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageOwnerPriv1(struct page *page) { _clear_bit(PG_owner_priv_1,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageOwnerPriv1(struct page *page) { return _test_and_clear_bit(PG_owner_priv_1,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageWriteback(const struct page *page) { return test_bit(PG_writeback, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestSetPageWriteback(struct page *page) { return _test_and_set_bit(PG_writeback,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageWriteback(struct page *page) { return _test_and_clear_bit(PG_writeback,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageMappedToDisk(const struct page *page) { return test_bit(PG_mappedtodisk, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageMappedToDisk(struct page *page) { _set_bit(PG_mappedtodisk,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageMappedToDisk(struct page *page) { _clear_bit(PG_mappedtodisk,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageReclaim(const struct page *page) { return test_bit(PG_reclaim, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageReclaim(struct page *page) { _set_bit(PG_reclaim,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageReclaim(struct page *page) { _clear_bit(PG_reclaim,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageReclaim(struct page *page) { return _test_and_clear_bit(PG_reclaim,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageReadahead(const struct page *page) { return test_bit(PG_reclaim, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageReadahead(struct page *page) { _set_bit(PG_reclaim,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageReadahead(struct page *page) { _clear_bit(PG_reclaim,&page->flags); } # 246 "include/linux/page-flags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSwapCache(const struct page *page) { return test_bit(PG_swapcache, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageSwapCache(struct page *page) { _set_bit(PG_swapcache,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageSwapCache(struct page *page) { _clear_bit(PG_swapcache,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageUnevictable(const struct page *page) { return test_bit(PG_unevictable, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageUnevictable(struct page *page) { _set_bit(PG_unevictable,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageUnevictable(struct page *page) { _clear_bit(PG_unevictable,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageUnevictable(struct page *page) { __clear_bit(PG_unevictable, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageUnevictable(struct page *page) { return _test_and_clear_bit(PG_unevictable,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageMlocked(const struct page *page) { return test_bit(PG_mlocked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageMlocked(struct page *page) { _set_bit(PG_mlocked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageMlocked(struct page *page) { _clear_bit(PG_mlocked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageMlocked(struct page *page) { __clear_bit(PG_mlocked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestSetPageMlocked(struct page *page) { return _test_and_set_bit(PG_mlocked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int TestClearPageMlocked(struct page *page) { return _test_and_clear_bit(PG_mlocked,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __TestClearPageMlocked(struct page *page) { return __test_and_clear_bit(PG_mlocked, &page->flags); } # 266 "include/linux/page-flags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageUncached(const struct page *page) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageHWPoison(const struct page *page) { return 0; } u64 stable_page_flags(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageUptodate(struct page *page) { int ret = test_bit(PG_uptodate, &(page)->flags); # 292 "include/linux/page-flags.h" if (ret) __asm__ __volatile__ ("dmb" : : : "memory"); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageUptodate(struct page *page) { __asm__ __volatile__ ("dmb" : : : "memory"); __set_bit(PG_uptodate, &(page)->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageUptodate(struct page *page) { # 318 "include/linux/page-flags.h" __asm__ __volatile__ ("dmb" : : : "memory"); _set_bit(PG_uptodate,&(page)->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageUptodate(struct page *page) { _clear_bit(PG_uptodate,&page->flags); } extern void cancel_dirty_page(struct page *page, unsigned int account_size); int test_clear_page_writeback(struct page *page); int test_set_page_writeback(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_page_writeback(struct page *page) { test_set_page_writeback(page); } # 342 "include/linux/page-flags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageHead(const struct page *page) { return test_bit(PG_head, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageHead(struct page *page) { __set_bit(PG_head, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageHead(struct page *page) { __clear_bit(PG_head, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageHead(struct page *page) { _clear_bit(PG_head,&page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageTail(const struct page *page) { return test_bit(PG_tail, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageTail(struct page *page) { __set_bit(PG_tail, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageTail(struct page *page) { __clear_bit(PG_tail, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageCompound(struct page *page) { return page->flags & ((1L << PG_head) | (1L << PG_tail)); } # 447 "include/linux/page-flags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageTransHuge(struct page *page) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageTransCompound(struct page *page) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageTransTail(struct page *page) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageSlabPfmemalloc(struct page *page) { ({ int __ret_warn_on = !!(!PageSlab(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/page-flags.h", 469); __builtin_expect(!!(__ret_warn_on), 0); }); return PageActive(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void SetPageSlabPfmemalloc(struct page *page) { ({ int __ret_warn_on = !!(!PageSlab(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/page-flags.h", 475); __builtin_expect(!!(__ret_warn_on), 0); }); SetPageActive(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageSlabPfmemalloc(struct page *page) { ({ int __ret_warn_on = !!(!PageSlab(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/page-flags.h", 481); __builtin_expect(!!(__ret_warn_on), 0); }); __ClearPageActive(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ClearPageSlabPfmemalloc(struct page *page) { ({ int __ret_warn_on = !!(!PageSlab(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/page-flags.h", 487); __builtin_expect(!!(__ret_warn_on), 0); }); ClearPageActive(page); } # 531 "include/linux/page-flags.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_has_private(struct page *page) { return !!(page->flags & (1 << PG_private | 1 << PG_private_2)); } # 258 "include/linux/mm.h" 2 # 1 "include/linux/huge_mm.h" 1 extern int do_huge_pmd_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, unsigned int flags); extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, struct vm_area_struct *vma); extern void huge_pmd_set_accessed(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, pmd_t orig_pmd, int dirty); extern int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, pmd_t orig_pmd); extern struct page *follow_trans_huge_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd, unsigned int flags); extern int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr); extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, unsigned long end, unsigned char *vec); extern int move_huge_pmd(struct vm_area_struct *vma, struct vm_area_struct *new_vma, unsigned long old_addr, unsigned long new_addr, unsigned long old_end, pmd_t *old_pmd, pmd_t *new_pmd); extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, pgprot_t newprot, int prot_numa); enum transparent_hugepage_flag { TRANSPARENT_HUGEPAGE_FLAG, TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG, TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG, TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG, }; enum page_check_address_pmd_flag { PAGE_CHECK_ADDRESS_PMD_FLAG, PAGE_CHECK_ADDRESS_PMD_NOTSPLITTING_FLAG, PAGE_CHECK_ADDRESS_PMD_SPLITTING_FLAG, }; extern pmd_t *page_check_address_pmd(struct page *page, struct mm_struct *mm, unsigned long address, enum page_check_address_pmd_flag flag); # 189 "include/linux/huge_mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int split_huge_page(struct page *page) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hugepage_madvise(struct vm_area_struct *vma, unsigned long *vm_flags, int advice) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/huge_mm.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "203" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vma_adjust_trans_huge(struct vm_area_struct *vma, unsigned long start, unsigned long end, long adjust_next) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, pmd_t pmd, pmd_t *pmdp) { return 0; } # 259 "include/linux/mm.h" 2 # 276 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int put_page_testzero(struct page *page) { ({ int __ret_warn_on = !!((*(volatile int *)&(&page->_count)->counter) == 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 278); __builtin_expect(!!(__ret_warn_on), 0); }); return (atomic_sub_return(1, &page->_count) == 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_page_unless_zero(struct page *page) { return atomic_add_unless((&page->_count), 1, 0); } extern int page_is_ram(unsigned long pfn); struct page *vmalloc_to_page(const void *addr); unsigned long vmalloc_to_pfn(const void *addr); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_vmalloc_addr(const void *x) { unsigned long addr = (unsigned long)x; return addr >= (((unsigned long)high_memory + (8*1024*1024)) & ~((8*1024*1024)-1)) && addr < 0xff000000UL; } extern int is_vmalloc_or_module_addr(const void *x); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void compound_lock(struct page *page) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void compound_unlock(struct page *page) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long compound_lock_irqsave(struct page *page) { unsigned long flags = flags; return flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void compound_unlock_irqrestore(struct page *page, unsigned long flags) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *compound_head(struct page *page) { if (__builtin_expect(!!(PageTail(page)), 0)) return page->first_page; return page; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void reset_page_mapcount(struct page *page) { (((&(page)->_mapcount)->counter) = (-1)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_mapcount(struct page *page) { return (*(volatile int *)&(&(page)->_mapcount)->counter) + 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_count(struct page *page) { return (*(volatile int *)&(&compound_head(page)->_count)->counter); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void get_huge_page_tail(struct page *page) { ({ int __ret_warn_on = !!(page_mapcount(page) < 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 390); __builtin_expect(!!(__ret_warn_on), 0); }); ({ int __ret_warn_on = !!((*(volatile int *)&(&page->_count)->counter) != 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 391); __builtin_expect(!!(__ret_warn_on), 0); }); atomic_add(1, &page->_mapcount); } extern bool __get_page_tail(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void get_page(struct page *page) { if (__builtin_expect(!!(PageTail(page)), 0)) if (__builtin_expect(!!(__get_page_tail(page)), 1)) return; ({ int __ret_warn_on = !!((*(volatile int *)&(&page->_count)->counter) <= 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 406); __builtin_expect(!!(__ret_warn_on), 0); }); atomic_add(1, &page->_count); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *virt_to_head_page(const void *x) { struct page *page = (mem_map + ((__virt_to_phys((unsigned long)(x)) >> 12) - (__pv_phys_offset >> 12))); return compound_head(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_page_count(struct page *page) { (((&page->_count)->counter) = (1)); } # 436 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageBuddy(struct page *page) { return (*(volatile int *)&(&page->_mapcount)->counter) == (-128); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __SetPageBuddy(struct page *page) { ({ int __ret_warn_on = !!((*(volatile int *)&(&page->_mapcount)->counter) != -1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 443); __builtin_expect(!!(__ret_warn_on), 0); }); (((&page->_mapcount)->counter) = ((-128))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __ClearPageBuddy(struct page *page) { ({ int __ret_warn_on = !!(!PageBuddy(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 449); __builtin_expect(!!(__ret_warn_on), 0); }); (((&page->_mapcount)->counter) = (-1)); } void put_page(struct page *page); void put_pages_list(struct list_head *pages); void split_page(struct page *page, unsigned int order); int split_free_page(struct page *page); typedef void compound_page_dtor(struct page *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_compound_page_dtor(struct page *page, compound_page_dtor *dtor) { page[1].lru.next = (void *)dtor; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) compound_page_dtor *get_compound_page_dtor(struct page *page) { return (compound_page_dtor *)page[1].lru.next; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int compound_order(struct page *page) { if (!PageHead(page)) return 0; return (unsigned long)page[1].lru.prev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int compound_trans_order(struct page *page) { int order; unsigned long flags; if (!PageHead(page)) return 0; flags = compound_lock_irqsave(page); order = compound_order(page); compound_unlock_irqrestore(page, flags); return order; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_compound_order(struct page *page, unsigned long order) { page[1].lru.prev = (void *)order; } # 510 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma) { if (__builtin_expect(!!(vma->vm_flags & 0x00000002), 1)) pte = pte_mkwrite(pte); return pte; } # 659 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) enum zone_type page_zonenum(const struct page *page) { return (page->flags >> (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0))) & ((1UL << 2) - 1); } # 672 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_zone_id(struct page *page) { return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 0) < ((((sizeof(unsigned long)*8) - 0) - 0) - 2))? (((sizeof(unsigned long)*8) - 0) - 0) : ((((sizeof(unsigned long)*8) - 0) - 0) - 2)) * ((0 + 2) != 0))) & ((1UL << (0 + 2)) - 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int zone_to_nid(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_to_nid(const struct page *page) { return (page->flags >> ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0))) & ((1UL << 0) - 1); } # 710 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_xchg_last_nid(struct page *page, int nid) { return page_to_nid(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_last_nid(struct page *page) { return page_to_nid(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void reset_page_last_nid(struct page *page) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct zone *page_zone(const struct page *page) { return &(&contig_page_data)->node_zones[page_zonenum(page)]; } # 743 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_page_zone(struct page *page, enum zone_type zone) { page->flags &= ~(((1UL << 2) - 1) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0))); page->flags |= (zone & ((1UL << 2) - 1)) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_page_node(struct page *page, unsigned long node) { page->flags &= ~(((1UL << 0) - 1) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0))); page->flags |= (node & ((1UL << 0) - 1)) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_page_links(struct page *page, enum zone_type zone, unsigned long node, unsigned long pfn) { set_page_zone(page, zone); set_page_node(page, node); } # 1 "include/linux/vmstat.h" 1 # 1 "include/linux/mm.h" 1 # 7 "include/linux/vmstat.h" 2 # 1 "include/linux/vm_event_item.h" 1 # 24 "include/linux/vm_event_item.h" enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, PGALLOC_NORMAL , PGALLOC_HIGH , PGALLOC_MOVABLE, PGFREE, PGACTIVATE, PGDEACTIVATE, PGFAULT, PGMAJFAULT, PGREFILL_NORMAL , PGREFILL_HIGH , PGREFILL_MOVABLE, PGSTEAL_KSWAPD_NORMAL , PGSTEAL_KSWAPD_HIGH , PGSTEAL_KSWAPD_MOVABLE, PGSTEAL_DIRECT_NORMAL , PGSTEAL_DIRECT_HIGH , PGSTEAL_DIRECT_MOVABLE, PGSCAN_KSWAPD_NORMAL , PGSCAN_KSWAPD_HIGH , PGSCAN_KSWAPD_MOVABLE, PGSCAN_DIRECT_NORMAL , PGSCAN_DIRECT_HIGH , PGSCAN_DIRECT_MOVABLE, PGSCAN_DIRECT_THROTTLE, PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL, KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, KSWAPD_SKIP_CONGESTION_WAIT, PAGEOUTRUN, ALLOCSTALL, PGROTATED, PGMIGRATE_SUCCESS, PGMIGRATE_FAIL, COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED, COMPACTISOLATED, COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS, UNEVICTABLE_PGCULLED, UNEVICTABLE_PGSCANNED, UNEVICTABLE_PGRESCUED, UNEVICTABLE_PGMLOCKED, UNEVICTABLE_PGMUNLOCKED, UNEVICTABLE_PGCLEARED, UNEVICTABLE_PGSTRANDED, # 74 "include/linux/vm_event_item.h" NR_VM_EVENT_ITEMS }; # 9 "include/linux/vmstat.h" 2 extern int sysctl_stat_interval; # 24 "include/linux/vmstat.h" struct vm_event_state { unsigned long event[NR_VM_EVENT_ITEMS]; }; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct vm_event_state) vm_event_states; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __count_vm_event(enum vm_event_item item) { do { do { const void *__vpp_verify = (typeof(&(((vm_event_states.event[item])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(((vm_event_states.event[item])))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void count_vm_event(enum vm_event_item item) { do { do { const void *__vpp_verify = (typeof(&(((vm_event_states.event[item])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(((vm_event_states.event[item])))) { case 1: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 2: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 4: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 8: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&((((vm_event_states.event[item])))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))); (typeof((typeof(*(&((((vm_event_states.event[item])))))) *)(&((((vm_event_states.event[item]))))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __count_vm_events(enum vm_event_item item, long delta) { do { do { const void *__vpp_verify = (typeof(&((vm_event_states.event[item]))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((vm_event_states.event[item]))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void count_vm_events(enum vm_event_item item, long delta) { do { do { const void *__vpp_verify = (typeof(&((vm_event_states.event[item]))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((vm_event_states.event[item]))) { case 1: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 2: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 4: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; case 8: do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); *({ do { const void *__vpp_verify = (typeof((&(((vm_event_states.event[item]))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))); (typeof((typeof(*(&(((vm_event_states.event[item]))))) *)(&(((vm_event_states.event[item])))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((delta)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } extern void all_vm_events(unsigned long *); extern void vm_events_fold_cpu(int cpu); # 98 "include/linux/vmstat.h" extern atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zone_page_state_add(long x, struct zone *zone, enum zone_stat_item item) { atomic_long_add(x, &zone->vm_stat[item]); atomic_long_add(x, &vm_stat[item]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long global_page_state(enum zone_stat_item item) { long x = atomic_long_read(&vm_stat[item]); if (x < 0) x = 0; return x; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long zone_page_state(struct zone *zone, enum zone_stat_item item) { long x = atomic_long_read(&zone->vm_stat[item]); if (x < 0) x = 0; return x; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long zone_page_state_snapshot(struct zone *zone, enum zone_stat_item item) { long x = atomic_long_read(&zone->vm_stat[item]); int cpu; for (((cpu)) = -1; ((cpu)) = cpumask_next(((cpu)), (cpu_online_mask)), ((cpu)) < nr_cpu_ids;) x += ({ do { const void *__vpp_verify = (typeof(((zone->pageset))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*((zone->pageset))) *)((zone->pageset)))); (typeof((typeof(*((zone->pageset))) *)((zone->pageset)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })->vm_stat_diff[item]; if (x < 0) x = 0; return x; } extern unsigned long global_reclaimable_pages(void); extern unsigned long zone_reclaimable_pages(struct zone *zone); # 190 "include/linux/vmstat.h" extern void inc_zone_state(struct zone *, enum zone_stat_item); void __mod_zone_page_state(struct zone *, enum zone_stat_item item, int); void __inc_zone_page_state(struct page *, enum zone_stat_item); void __dec_zone_page_state(struct page *, enum zone_stat_item); void mod_zone_page_state(struct zone *, enum zone_stat_item, int); void inc_zone_page_state(struct page *, enum zone_stat_item); void dec_zone_page_state(struct page *, enum zone_stat_item); extern void inc_zone_state(struct zone *, enum zone_stat_item); extern void __inc_zone_state(struct zone *, enum zone_stat_item); extern void dec_zone_state(struct zone *, enum zone_stat_item); extern void __dec_zone_state(struct zone *, enum zone_stat_item); void refresh_cpu_vm_stats(int); void refresh_zone_stat_thresholds(void); void drain_zonestat(struct zone *zone, struct per_cpu_pageset *); int calculate_pressure_threshold(struct zone *zone); int calculate_normal_threshold(struct zone *zone); void set_pgdat_percpu_threshold(pg_data_t *pgdat, int (*calculate_pressure)(struct zone *)); # 268 "include/linux/vmstat.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __mod_zone_freepage_state(struct zone *zone, int nr_pages, int migratetype) { __mod_zone_page_state(zone, NR_FREE_PAGES, nr_pages); if (false) __mod_zone_page_state(zone, NR_FREE_CMA_PAGES, nr_pages); } extern const char * const vmstat_text[]; # 769 "include/linux/mm.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void *lowmem_page_address(const struct page *page) { return ((void *)__phys_to_virt((unsigned long)(((phys_addr_t)(((unsigned long)((page) - mem_map) + (__pv_phys_offset >> 12))) << 12)))); } # 789 "include/linux/mm.h" void *page_address(const struct page *page); void set_page_address(struct page *page, void *virtual); void page_address_init(void); # 820 "include/linux/mm.h" extern struct address_space swapper_space; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct address_space *page_mapping(struct page *page) { struct address_space *mapping = page->mapping; ({ int __ret_warn_on = !!(PageSlab(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/mm.h", 825); __builtin_expect(!!(__ret_warn_on), 0); }); if (__builtin_expect(!!(PageSwapCache(page)), 0)) mapping = &swapper_space; else if ((unsigned long)mapping & 1) mapping = ((void *)0); return mapping; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *page_rmapping(struct page *page) { return (void *)((unsigned long)page->mapping & ~(1 | 2)); } extern struct address_space *__page_file_mapping(struct page *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct address_space *page_file_mapping(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return __page_file_mapping(page); return page->mapping; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int PageAnon(struct page *page) { return ((unsigned long)page->mapping & 1) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long page_index(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return ((page)->private); return page->index; } extern unsigned long __page_file_index(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long page_file_index(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return __page_file_index(page); return page->index; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_mapped(struct page *page) { return (*(volatile int *)&(&(page)->_mapcount)->counter) >= 0; } # 919 "include/linux/mm.h" extern void pagefault_out_of_memory(void); # 929 "include/linux/mm.h" extern void show_free_areas(unsigned int flags); extern bool skip_free_areas_node(unsigned int flags, int nid); int shmem_zero_setup(struct vm_area_struct *); extern int can_do_mlock(void); extern int user_shm_lock(size_t, struct user_struct *); extern void user_shm_unlock(size_t, struct user_struct *); struct zap_details { struct vm_area_struct *nonlinear_vma; struct address_space *check_mapping; unsigned long first_index; unsigned long last_index; }; struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_t pte); int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address, unsigned long size); void zap_page_range(struct vm_area_struct *vma, unsigned long address, unsigned long size, struct zap_details *); void unmap_vmas(struct mmu_gather *tlb, struct vm_area_struct *start_vma, unsigned long start, unsigned long end); # 974 "include/linux/mm.h" struct mm_walk { int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *); int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *); int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *); int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *); int (*pte_hole)(unsigned long, unsigned long, struct mm_walk *); int (*hugetlb_entry)(pte_t *, unsigned long, unsigned long, unsigned long, struct mm_walk *); struct mm_struct *mm; void *private; }; int walk_page_range(unsigned long addr, unsigned long end, struct mm_walk *walk); void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, unsigned long end, unsigned long floor, unsigned long ceiling); int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma); void unmap_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen, int even_cows); int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn); int follow_phys(struct vm_area_struct *vma, unsigned long address, unsigned int flags, unsigned long *prot, resource_size_t *phys); int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void unmap_shared_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen) { unmap_mapping_range(mapping, holebegin, holelen, 0); } extern void truncate_pagecache(struct inode *inode, loff_t old, loff_t new); extern void truncate_setsize(struct inode *inode, loff_t newsize); void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end); int truncate_inode_page(struct address_space *mapping, struct page *page); int generic_error_remove_page(struct address_space *mapping, struct page *page); int invalidate_inode_page(struct page *page); extern int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, unsigned int flags); extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, unsigned long address, unsigned int fault_flags); # 1038 "include/linux/mm.h" extern int make_pages_present(unsigned long addr, unsigned long end); extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, int len, unsigned int foll_flags, struct page **pages, struct vm_area_struct **vmas, int *nonblocking); int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, int nr_pages, int write, int force, struct page **pages, struct vm_area_struct **vmas); int get_user_pages_fast(unsigned long start, int nr_pages, int write, struct page **pages); struct kvec; int get_kernel_pages(const struct kvec *iov, int nr_pages, int write, struct page **pages); int get_kernel_page(unsigned long start, int write, struct page **pages); struct page *get_dump_page(unsigned long addr); extern int try_to_release_page(struct page * page, gfp_t gfp_mask); extern void do_invalidatepage(struct page *page, unsigned long offset); int __set_page_dirty_nobuffers(struct page *page); int __set_page_dirty_no_writeback(struct page *page); int redirty_page_for_writepage(struct writeback_control *wbc, struct page *page); void account_page_dirtied(struct page *page, struct address_space *mapping); void account_page_writeback(struct page *page); int set_page_dirty(struct page *page); int set_page_dirty_lock(struct page *page); int clear_page_dirty_for_io(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int vma_growsdown(struct vm_area_struct *vma, unsigned long addr) { return vma && (vma->vm_end == addr) && (vma->vm_flags & 0x00000100); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int stack_guard_page_start(struct vm_area_struct *vma, unsigned long addr) { return (vma->vm_flags & 0x00000100) && (vma->vm_start == addr) && !vma_growsdown(vma->vm_prev, addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int vma_growsup(struct vm_area_struct *vma, unsigned long addr) { return vma && (vma->vm_start == addr) && (vma->vm_flags & 0x00000000); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int stack_guard_page_end(struct vm_area_struct *vma, unsigned long addr) { return (vma->vm_flags & 0x00000000) && (vma->vm_end == addr) && !vma_growsup(vma->vm_next, addr); } extern pid_t vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group); extern unsigned long move_page_tables(struct vm_area_struct *vma, unsigned long old_addr, struct vm_area_struct *new_vma, unsigned long new_addr, unsigned long len, bool need_rmap_locks); extern unsigned long do_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr); extern unsigned long change_protection(struct vm_area_struct *vma, unsigned long start, unsigned long end, pgprot_t newprot, int dirty_accountable, int prot_numa); extern int mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, unsigned long start, unsigned long end, unsigned long newflags); int __get_user_pages_fast(unsigned long start, int nr_pages, int write, struct page **pages); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long get_mm_counter(struct mm_struct *mm, int member) { long val = atomic_long_read(&mm->rss_stat.count[member]); if (val < 0) val = 0; return (unsigned long)val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void add_mm_counter(struct mm_struct *mm, int member, long value) { atomic_long_add(value, &mm->rss_stat.count[member]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inc_mm_counter(struct mm_struct *mm, int member) { atomic_long_inc(&mm->rss_stat.count[member]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dec_mm_counter(struct mm_struct *mm, int member) { atomic_long_dec(&mm->rss_stat.count[member]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long get_mm_rss(struct mm_struct *mm) { return get_mm_counter(mm, MM_FILEPAGES) + get_mm_counter(mm, MM_ANONPAGES); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long get_mm_hiwater_rss(struct mm_struct *mm) { return ({ typeof(mm->hiwater_rss) _max1 = (mm->hiwater_rss); typeof(get_mm_rss(mm)) _max2 = (get_mm_rss(mm)); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long get_mm_hiwater_vm(struct mm_struct *mm) { return ({ typeof(mm->hiwater_vm) _max1 = (mm->hiwater_vm); typeof(mm->total_vm) _max2 = (mm->total_vm); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void update_hiwater_rss(struct mm_struct *mm) { unsigned long _rss = get_mm_rss(mm); if ((mm)->hiwater_rss < _rss) (mm)->hiwater_rss = _rss; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void update_hiwater_vm(struct mm_struct *mm) { if (mm->hiwater_vm < mm->total_vm) mm->hiwater_vm = mm->total_vm; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void setmax_mm_hiwater_rss(unsigned long *maxrss, struct mm_struct *mm) { unsigned long hiwater_rss = get_mm_hiwater_rss(mm); if (*maxrss < hiwater_rss) *maxrss = hiwater_rss; } void sync_mm_rss(struct mm_struct *mm); int vma_wants_writenotify(struct vm_area_struct *vma); extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl) { pte_t *ptep; (ptep = __get_locked_pte(mm, addr, ptl)); return ptep; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) { return 0; } # 1230 "include/linux/mm.h" int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, pmd_t *pmd, unsigned long address); int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) { return (__builtin_expect(!!(pgd_none(*pgd)), 0) && __pud_alloc(mm, pgd, address))? ((void *)0): pud_offset(pgd, address); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) { return (__builtin_expect(!!((0)), 0) && __pmd_alloc(mm, pud, address))? ((void *)0): pmd_offset(pud, address); } # 1277 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgtable_page_ctor(struct page *page) { do { do { spinlock_check(&((page)->ptl)); do { *(&(&((page)->ptl))->rlock) = (raw_spinlock_t) { .raw_lock = { { 0 } }, }; } while (0); } while (0); } while (0); inc_zone_page_state(page, NR_PAGETABLE); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pgtable_page_dtor(struct page *page) { ((page)->mapping = ((void *)0)); dec_zone_page_state(page, NR_PAGETABLE); } # 1317 "include/linux/mm.h" extern void free_area_init(unsigned long * zones_size); extern void free_area_init_node(int nid, unsigned long * zones_size, unsigned long zone_start_pfn, unsigned long *zholes_size); extern void free_initmem(void); # 1366 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __early_pfn_to_nid(unsigned long pfn) { return 0; } # 1379 "include/linux/mm.h" extern void set_dma_reserve(unsigned long new_dma_reserve); extern void memmap_init_zone(unsigned long, int, unsigned long, unsigned long, enum memmap_context); extern void setup_per_zone_wmarks(void); extern int __attribute__ ((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_per_zone_wmark_min(void); extern void mem_init(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) mmap_init(void); extern void show_mem(unsigned int flags); extern void si_meminfo(struct sysinfo * val); extern void si_meminfo_node(struct sysinfo *val, int nid); extern int after_bootmem; extern __attribute__((format(printf, 3, 4))) void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); extern void setup_per_cpu_pageset(void); extern void zone_pcp_update(struct zone *zone); extern void zone_pcp_reset(struct zone *zone); extern atomic_long_t mmap_pages_allocated; extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t); void vma_interval_tree_insert(struct vm_area_struct *node, struct rb_root *root); void vma_interval_tree_insert_after(struct vm_area_struct *node, struct vm_area_struct *prev, struct rb_root *root); void vma_interval_tree_remove(struct vm_area_struct *node, struct rb_root *root); struct vm_area_struct *vma_interval_tree_iter_first(struct rb_root *root, unsigned long start, unsigned long last); struct vm_area_struct *vma_interval_tree_iter_next(struct vm_area_struct *node, unsigned long start, unsigned long last); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vma_nonlinear_insert(struct vm_area_struct *vma, struct list_head *list) { list_add_tail(&vma->shared.nonlinear, list); } void anon_vma_interval_tree_insert(struct anon_vma_chain *node, struct rb_root *root); void anon_vma_interval_tree_remove(struct anon_vma_chain *node, struct rb_root *root); struct anon_vma_chain *anon_vma_interval_tree_iter_first( struct rb_root *root, unsigned long start, unsigned long last); struct anon_vma_chain *anon_vma_interval_tree_iter_next( struct anon_vma_chain *node, unsigned long start, unsigned long last); # 1443 "include/linux/mm.h" extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin); extern int vma_adjust(struct vm_area_struct *vma, unsigned long start, unsigned long end, unsigned long pgoff, struct vm_area_struct *insert); extern struct vm_area_struct *vma_merge(struct mm_struct *, struct vm_area_struct *prev, unsigned long addr, unsigned long end, unsigned long vm_flags, struct anon_vma *, struct file *, unsigned long, struct mempolicy *); extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *); extern int split_vma(struct mm_struct *, struct vm_area_struct *, unsigned long addr, int new_below); extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *); extern void __vma_link_rb(struct mm_struct *, struct vm_area_struct *, struct rb_node **, struct rb_node *); extern void unlink_file_vma(struct vm_area_struct *); extern struct vm_area_struct *copy_vma(struct vm_area_struct **, unsigned long addr, unsigned long len, unsigned long pgoff, bool *need_rmap_locks); extern void exit_mmap(struct mm_struct *); extern int mm_take_all_locks(struct mm_struct *mm); extern void mm_drop_all_locks(struct mm_struct *mm); extern void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file); extern struct file *get_mm_exe_file(struct mm_struct *mm); extern int may_expand_vm(struct mm_struct *mm, unsigned long npages); extern int install_special_mapping(struct mm_struct *mm, unsigned long addr, unsigned long len, unsigned long flags, struct page **pages); extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); extern unsigned long mmap_region(struct file *file, unsigned long addr, unsigned long len, unsigned long flags, vm_flags_t vm_flags, unsigned long pgoff); extern unsigned long do_mmap_pgoff(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); extern int do_munmap(struct mm_struct *, unsigned long, size_t); extern unsigned long vm_brk(unsigned long, unsigned long); extern int vm_munmap(unsigned long, size_t); extern unsigned long vm_mmap(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); struct vm_unmapped_area_info { unsigned long flags; unsigned long length; unsigned long low_limit; unsigned long high_limit; unsigned long align_mask; unsigned long align_offset; }; extern unsigned long unmapped_area(struct vm_unmapped_area_info *info); extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); # 1512 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info) { if (!(info->flags & 1)) return unmapped_area(info); else return unmapped_area_topdown(info); } extern void truncate_inode_pages(struct address_space *, loff_t); extern void truncate_inode_pages_range(struct address_space *, loff_t lstart, loff_t lend); extern int filemap_fault(struct vm_area_struct *, struct vm_fault *); extern int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); int write_one_page(struct page *page, int wait); void task_dirty_inc(struct task_struct *tsk); int force_page_cache_readahead(struct address_space *mapping, struct file *filp, unsigned long offset, unsigned long nr_to_read); void page_cache_sync_readahead(struct address_space *mapping, struct file_ra_state *ra, struct file *filp, unsigned long offset, unsigned long size); void page_cache_async_readahead(struct address_space *mapping, struct file_ra_state *ra, struct file *filp, struct page *pg, unsigned long offset, unsigned long size); unsigned long max_sane_readahead(unsigned long nr); unsigned long ra_submit(struct file_ra_state *ra, struct address_space *mapping, struct file *filp); extern int expand_stack(struct vm_area_struct *vma, unsigned long address); extern int expand_downwards(struct vm_area_struct *vma, unsigned long address); extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, struct vm_area_struct **pprev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) { struct vm_area_struct * vma = find_vma(mm,start_addr); if (vma && end_addr <= vma->vm_start) vma = ((void *)0); return vma; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long vma_pages(struct vm_area_struct *vma) { return (vma->vm_end - vma->vm_start) >> 12; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct vm_area_struct *find_exact_vma(struct mm_struct *mm, unsigned long vm_start, unsigned long vm_end) { struct vm_area_struct *vma = find_vma(mm, vm_start); if (vma && (vma->vm_start != vm_start || vma->vm_end != vm_end)) vma = ((void *)0); return vma; } pgprot_t vm_get_page_prot(unsigned long vm_flags); # 1618 "include/linux/mm.h" struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr); int remap_pfn_range(struct vm_area_struct *, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t); int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *); int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); struct page *follow_page(struct vm_area_struct *, unsigned long address, unsigned int foll_flags); # 1641 "include/linux/mm.h" typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr, void *data); extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, pte_fn_t fn, void *data); void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); # 1662 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kernel_map_pages(struct page *page, int numpages, int enable) {} extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); int in_gate_area_no_mm(unsigned long addr); int in_gate_area(struct mm_struct *mm, unsigned long addr); int drop_caches_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); unsigned long shrink_slab(struct shrink_control *shrink, unsigned long nr_pages_scanned, unsigned long lru_pages); extern int randomize_va_space; const char * arch_vma_name(struct vm_area_struct *vma); void print_vma_addr(char *prefix, unsigned long rip); void sparse_mem_maps_populate_node(struct page **map_map, unsigned long pnum_begin, unsigned long pnum_end, unsigned long map_count, int nodeid); struct page *sparse_mem_map_populate(unsigned long pnum, int nid); pgd_t *vmemmap_pgd_populate(unsigned long addr, int node); pud_t *vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node); pmd_t *vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node); pte_t *vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node); void *vmemmap_alloc_block(unsigned long size, int node); void *vmemmap_alloc_block_buf(unsigned long size, int node); void vmemmap_verify(pte_t *, int, unsigned long, unsigned long); int vmemmap_populate_basepages(struct page *start_page, unsigned long pages, int node); int vmemmap_populate(struct page *start_page, unsigned long pages, int node); void vmemmap_populate_print_last(void); enum mf_flags { MF_COUNT_INCREASED = 1 << 0, MF_ACTION_REQUIRED = 1 << 1, MF_MUST_KILL = 1 << 2, }; extern int memory_failure(unsigned long pfn, int trapno, int flags); extern void memory_failure_queue(unsigned long pfn, int trapno, int flags); extern int unpoison_memory(unsigned long pfn); extern int sysctl_memory_failure_early_kill; extern int sysctl_memory_failure_recovery; extern void shake_page(struct page *p, int access); extern atomic_long_t mce_bad_pages; extern int soft_offline_page(struct page *page, int flags); extern void dump_page(struct page *page); # 1751 "include/linux/mm.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int debug_guardpage_minorder(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool page_is_guard(struct page *page) { return false; } # 7 "include/linux/scatterlist.h" 2 # 1 "arch/arm/include/generated/asm/types.h" 1 # 9 "include/linux/scatterlist.h" 2 struct sg_table { struct scatterlist *sgl; unsigned int nents; unsigned int orig_nents; }; # 57 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sg_assign_page(struct scatterlist *sg, struct page *page) { unsigned long page_link = sg->page_link & 0x3; do { if (__builtin_expect(!!((unsigned long) page & 0x03), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/scatterlist.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "65" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); sg->page_link = page_link | (unsigned long) page; } # 87 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sg_set_page(struct scatterlist *sg, struct page *page, unsigned int len, unsigned int offset) { sg_assign_page(sg, page); sg->offset = offset; sg->length = len; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *sg_page(struct scatterlist *sg) { return (struct page *)((sg)->page_link & ~0x3); } # 111 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sg_set_buf(struct scatterlist *sg, const void *buf, unsigned int buflen) { sg_set_page(sg, (mem_map + ((__virt_to_phys((unsigned long)(buf)) >> 12) - (__pv_phys_offset >> 12))), buflen, ((unsigned long)(buf) & ~(~(((1UL) << 12)-1)))); } # 133 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sg_chain(struct scatterlist *prv, unsigned int prv_nents, struct scatterlist *sgl) { do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/scatterlist.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "137" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); prv[prv_nents - 1].offset = 0; prv[prv_nents - 1].length = 0; prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01) & ~0x02; } # 162 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sg_mark_end(struct scatterlist *sg) { sg->page_link |= 0x02; sg->page_link &= ~0x01; } # 184 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t sg_phys(struct scatterlist *sg) { return (((phys_addr_t)(((unsigned long)((sg_page(sg)) - mem_map) + (__pv_phys_offset >> 12))) << 12)) + sg->offset; } # 199 "include/linux/scatterlist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *sg_virt(struct scatterlist *sg) { return page_address(sg_page(sg)) + sg->offset; } int sg_nents(struct scatterlist *sg); struct scatterlist *sg_next(struct scatterlist *); struct scatterlist *sg_last(struct scatterlist *s, unsigned int); void sg_init_table(struct scatterlist *, unsigned int); void sg_init_one(struct scatterlist *, const void *, unsigned int); typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t); typedef void (sg_free_fn)(struct scatterlist *, unsigned int); void __sg_free_table(struct sg_table *, unsigned int, sg_free_fn *); void sg_free_table(struct sg_table *); int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, gfp_t, sg_alloc_fn *); int sg_alloc_table(struct sg_table *, unsigned int, gfp_t); int sg_alloc_table_from_pages(struct sg_table *sgt, struct page **pages, unsigned int n_pages, unsigned long offset, unsigned long size, gfp_t gfp_mask); size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, size_t buflen); size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, size_t buflen); # 255 "include/linux/scatterlist.h" struct sg_mapping_iter { struct page *page; void *addr; size_t length; size_t consumed; struct scatterlist *__sg; unsigned int __nents; unsigned int __offset; unsigned int __flags; }; void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl, unsigned int nents, unsigned int flags); bool sg_miter_next(struct sg_mapping_iter *miter); void sg_miter_stop(struct sg_mapping_iter *miter); # 10 "include/linux/dma-mapping.h" 2 struct dma_map_ops { void* (*alloc)(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, struct dma_attrs *attrs); void (*free)(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle, struct dma_attrs *attrs); int (*mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t, size_t, struct dma_attrs *attrs); int (*get_sgtable)(struct device *dev, struct sg_table *sgt, void *, dma_addr_t, size_t, struct dma_attrs *attrs); dma_addr_t (*map_page)(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs); void (*unmap_page)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs); int (*map_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, struct dma_attrs *attrs); void (*unmap_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, struct dma_attrs *attrs); void (*sync_single_for_cpu)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); void (*sync_single_for_device)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); void (*sync_sg_for_cpu)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir); void (*sync_sg_for_device)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir); int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); int (*dma_supported)(struct device *dev, u64 mask); int (*set_dma_mask)(struct device *dev, u64 mask); int is_phys; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int valid_dma_direction(int dma_direction) { return ((dma_direction == DMA_BIDIRECTIONAL) || (dma_direction == DMA_TO_DEVICE) || (dma_direction == DMA_FROM_DEVICE)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_device_dma_capable(struct device *dev) { return dev->dma_mask != ((void *)0) && *dev->dma_mask != 0x0ULL; } # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" 1 # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" # 1 "include/linux/dma-debug.h" 1 # 25 "include/linux/dma-debug.h" struct device; struct scatterlist; struct bus_type; # 90 "include/linux/dma-debug.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_debug_add_bus(struct bus_type *bus) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_debug_init(u32 num_entries) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_debug_resize_entries(u32 num_entries) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_map_page(struct device *dev, struct page *page, size_t offset, size_t size, int direction, dma_addr_t dma_addr, bool map_single) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, size_t size, int direction, bool map_single) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, int mapped_ents, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, int nelems, int dir) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t dma_addr, void *virt) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_free_coherent(struct device *dev, size_t size, void *virt, dma_addr_t addr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, int direction) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void debug_dma_dump_mappings(struct device *dev) { } # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" 2 # 1 "include/asm-generic/dma-coherent.h" 1 # 9 "include/asm-generic/dma-coherent.h" int dma_alloc_from_coherent(struct device *dev, ssize_t size, dma_addr_t *dma_handle, void **ret); int dma_release_from_coherent(struct device *dev, int order, void *vaddr); int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, size_t size, int *ret); extern int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, int flags); extern void dma_release_declared_memory(struct device *dev); extern void * dma_mark_declared_memory_occupied(struct device *dev, dma_addr_t device_addr, size_t size); # 12 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" 2 extern struct dma_map_ops arm_dma_ops; extern struct dma_map_ops arm_coherent_dma_ops; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct dma_map_ops *get_dma_ops(struct device *dev) { if (dev && dev->archdata.dma_ops) return dev->archdata.dma_ops; return &arm_dma_ops; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_dma_ops(struct device *dev, struct dma_map_ops *ops) { do { if (__builtin_expect(!!(!dev), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "27" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); dev->archdata.dma_ops = ops; } # 1 "include/asm-generic/dma-mapping-common.h" 1 # 1 "include/linux/kmemcheck.h" 1 # 92 "include/linux/kmemcheck.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_free_shadow(struct page *page, int order) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object, size_t size) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_slab_free(struct kmem_cache *s, void *object, size_t size) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order, gfp_t gfpflags) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool kmemcheck_page_is_tracked(struct page *p) { return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_unallocated(void *address, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_uninitialized(void *address, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_initialized(void *address, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_freed(void *address, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_unallocated_pages(struct page *p, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_uninitialized_pages(struct page *p, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size) { return true; } # 5 "include/asm-generic/dma-mapping-common.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t dma_map_single_attrs(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); dma_addr_t addr; kmemcheck_mark_initialized(ptr, size); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "19" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); addr = ops->map_page(dev, (mem_map + ((__virt_to_phys((unsigned long)(ptr)) >> 12) - (__pv_phys_offset >> 12))), (unsigned long)ptr & ~(~(((1UL) << 12)-1)), size, dir, attrs); debug_dma_map_page(dev, (mem_map + ((__virt_to_phys((unsigned long)(ptr)) >> 12) - (__pv_phys_offset >> 12))), (unsigned long)ptr & ~(~(((1UL) << 12)-1)), size, dir, addr, true); return addr; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_unmap_single_attrs(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "36" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->unmap_page) ops->unmap_page(dev, addr, size, dir, attrs); debug_dma_unmap_page(dev, addr, size, dir, true); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); int i, ents; struct scatterlist *s; for (i = 0, s = (sg); i < (nents); i++, s = sg_next(s)) kmemcheck_mark_initialized(sg_virt(s), s->length); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "52" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); ents = ops->map_sg(dev, sg, nents, dir, attrs); debug_dma_map_sg(dev, sg, nents, ents, dir); return ents; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "65" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); debug_dma_unmap_sg(dev, sg, nents, dir); if (ops->unmap_sg) ops->unmap_sg(dev, sg, nents, dir, attrs); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t dma_map_page(struct device *dev, struct page *page, size_t offset, size_t size, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); dma_addr_t addr; kmemcheck_mark_initialized(page_address(page) + offset, size); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "79" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); addr = ops->map_page(dev, page, offset, size, dir, ((void *)0)); debug_dma_map_page(dev, page, offset, size, dir, addr, false); return addr; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_unmap_page(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "91" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->unmap_page) ops->unmap_page(dev, addr, size, dir, ((void *)0)); debug_dma_unmap_page(dev, addr, size, dir, false); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "103" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_single_for_cpu) ops->sync_single_for_cpu(dev, addr, size, dir); debug_dma_sync_single_for_cpu(dev, addr, size, dir); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "115" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_single_for_device) ops->sync_single_for_device(dev, addr, size, dir); debug_dma_sync_single_for_device(dev, addr, size, dir); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t addr, unsigned long offset, size_t size, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "129" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_single_for_cpu) ops->sync_single_for_cpu(dev, addr + offset, size, dir); debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_single_range_for_device(struct device *dev, dma_addr_t addr, unsigned long offset, size_t size, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "143" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_single_for_device) ops->sync_single_for_device(dev, addr + offset, size, dir); debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "155" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_sg_for_cpu) ops->sync_sg_for_cpu(dev, sg, nelems, dir); debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "167" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->sync_sg_for_device) ops->sync_sg_for_device(dev, sg, nelems, dir); debug_dma_sync_sg_for_device(dev, sg, nelems, dir); } extern int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size); # 195 "include/asm-generic/dma-mapping-common.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!ops), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "200" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->mmap) return ops->mmap(dev, vma, cpu_addr, dma_addr, size, attrs); return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_mmap_writecombine(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size) { struct dma_attrs attrs = { .flags = { [0 ... (((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))-1] = 0 }, }; dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs); } int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!ops), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/asm-generic/dma-mapping-common.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "225" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (ops->get_sgtable) return ops->get_sgtable(dev, sgt, cpu_addr, dma_addr, size, attrs); return dma_common_get_sgtable(dev, sgt, cpu_addr, dma_addr, size); } # 32 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_set_mask(struct device *dev, u64 mask) { return get_dma_ops(dev)->set_dma_mask(dev, mask); } # 48 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn) { return (dma_addr_t)((phys_addr_t)(pfn) << 12); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long dma_to_pfn(struct device *dev, dma_addr_t addr) { return ((unsigned long)((addr) >> 12)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dma_to_virt(struct device *dev, dma_addr_t addr) { return (void *)__phys_to_virt((unsigned long)addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t virt_to_dma(struct device *dev, void *addr) { return (dma_addr_t)__virt_to_phys((unsigned long)(addr)); } # 92 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { debug_dma_mapping_error(dev, dma_addr); return dma_addr == (~0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dma_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp) { return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_free_noncoherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle) { } extern int dma_supported(struct device *dev, u64 mask); extern int arm_dma_set_mask(struct device *dev, u64 dma_mask); # 128 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" extern void *arm_dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp, struct dma_attrs *attrs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); void *cpu_addr; do { if (__builtin_expect(!!(!ops), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "139" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); cpu_addr = ops->alloc(dev, size, dma_handle, flag, attrs); debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr); return cpu_addr; } # 160 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" extern void arm_dma_free(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle, struct dma_attrs *attrs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle, struct dma_attrs *attrs) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!ops), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "170" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); ops->free(dev, size, cpu_addr, dma_handle, attrs); } # 189 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" extern int arm_dma_mmap(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag) { struct dma_attrs attrs = { .flags = { [0 ... (((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))-1] = 0 }, }; dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); return dma_alloc_attrs(dev, size, dma_handle, flag, &attrs); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dma_free_writecombine(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle) { struct dma_attrs attrs = { .flags = { [0 ... (((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))-1] = 0 }, }; dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); return dma_free_attrs(dev, size, cpu_addr, dma_handle, &attrs); } extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_dma_coherent_pool_size(unsigned long size); # 240 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" extern int dmabounce_register_dev(struct device *, unsigned long, unsigned long, int (*)(struct device *, dma_addr_t, size_t)); # 253 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/dma-mapping.h" extern void dmabounce_unregister_dev(struct device *); extern int arm_dma_map_sg(struct device *, struct scatterlist *, int, enum dma_data_direction, struct dma_attrs *attrs); extern void arm_dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_data_direction, struct dma_attrs *attrs); extern void arm_dma_sync_sg_for_cpu(struct device *, struct scatterlist *, int, enum dma_data_direction); extern void arm_dma_sync_sg_for_device(struct device *, struct scatterlist *, int, enum dma_data_direction); extern int arm_dma_get_sgtable(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs); # 77 "include/linux/dma-mapping.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 dma_get_mask(struct device *dev) { if (dev && dev->dma_mask && *dev->dma_mask) return *dev->dma_mask; return (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_set_coherent_mask(struct device *dev, u64 mask) { if (!dma_supported(dev, mask)) return -5; dev->coherent_dma_mask = mask; return 0; } extern u64 dma_get_required_mask(struct device *dev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int dma_get_max_seg_size(struct device *dev) { return dev->dma_parms ? dev->dma_parms->max_segment_size : 65536; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int dma_set_max_seg_size(struct device *dev, unsigned int size) { if (dev->dma_parms) { dev->dma_parms->max_segment_size = size; return 0; } else return -5; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long dma_get_seg_boundary(struct device *dev) { return dev->dma_parms ? dev->dma_parms->segment_boundary_mask : 0xffffffff; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_set_seg_boundary(struct device *dev, unsigned long mask) { if (dev->dma_parms) { dev->dma_parms->segment_boundary_mask = mask; return 0; } else return -5; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *dma_zalloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag) { void *ret = dma_alloc_attrs(dev, size, dma_handle, flag, ((void *)0)); if (ret) ({ void *__p = (ret); size_t __n = size; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dma_get_cache_alignment(void) { return (1 << 6); return 1; } # 181 "include/linux/dma-mapping.h" extern void *dmam_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp); extern void dmam_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); extern void *dmam_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp); extern void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); extern int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, int flags); extern void dmam_release_declared_memory(struct device *dev); # 8 "include/asm-generic/pci-dma-compat.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_dma_supported(struct pci_dev *hwdev, u64 mask) { return dma_supported(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, mask); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void * pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle) { return dma_alloc_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, size, dma_handle, ((( gfp_t)0x20u)), ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_free_consistent(struct pci_dev *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) { dma_free_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, size, vaddr, dma_handle, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) { return dma_map_single_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, ptr, size, (enum dma_data_direction)direction, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int direction) { dma_unmap_single_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, dma_addr, size, (enum dma_data_direction)direction, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page, unsigned long offset, size_t size, int direction) { return dma_map_page(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, page, offset, size, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, size_t size, int direction) { dma_unmap_page(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, dma_address, size, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) { return dma_map_sg_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, sg, nents, (enum dma_data_direction)direction, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) { dma_unmap_sg_attrs(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, sg, nents, (enum dma_data_direction)direction, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, size_t size, int direction) { dma_sync_single_for_cpu(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, size_t size, int direction) { dma_sync_single_for_device(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int direction) { dma_sync_sg_for_cpu(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, sg, nelems, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int direction) { dma_sync_sg_for_device(hwdev == ((void *)0) ? ((void *)0) : &hwdev->dev, sg, nelems, (enum dma_data_direction)direction); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) { return dma_mapping_error(&pdev->dev, dma_addr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return dma_set_mask(&dev->dev, mask); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) { return dma_set_coherent_mask(&dev->dev, mask); } # 6 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" 2 # 1 "include/asm-generic/pci-bridge.h" 1 # 12 "include/asm-generic/pci-bridge.h" enum { PCI_REASSIGN_ALL_RSRC = 0x00000001, PCI_REASSIGN_ALL_BUS = 0x00000002, PCI_PROBE_ONLY = 0x00000004, PCI_CAN_SKIP_ISA_ALIGN = 0x00000008, PCI_ENABLE_PROC_DOMAINS = 0x00000010, PCI_COMPAT_DOMAIN_0 = 0x00000020, PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, }; extern unsigned int pci_flags; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_set_flags(int flags) { pci_flags = flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_add_flags(int flags) { pci_flags |= flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_clear_flags(int flags) { pci_flags &= ~flags; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_has_flag(int flag) { return pci_flags & flag; } # 7 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/mach/pci.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/mach/pci.h" struct pci_sys_data; struct pci_ops; struct pci_bus; struct hw_pci { struct pci_ops *ops; int nr_controllers; int (*setup)(int nr, struct pci_sys_data *); struct pci_bus *(*scan)(int nr, struct pci_sys_data *); void (*preinit)(void); void (*postinit)(void); u8 (*swizzle)(struct pci_dev *dev, u8 *pin); int (*map_irq)(const struct pci_dev *dev, u8 slot, u8 pin); }; struct pci_sys_data { struct list_head node; int busnr; u64 mem_offset; unsigned long io_offset; struct pci_bus *bus; struct list_head resources; struct resource io_res; char io_res_name[12]; u8 (*swizzle)(struct pci_dev *, u8 *); int (*map_irq)(const struct pci_dev *, u8, u8); void *private_data; }; void pci_common_init(struct hw_pci *); extern void pci_map_io_early(unsigned long pfn); extern struct pci_ops iop3xx_ops; extern int iop3xx_pci_setup(int nr, struct pci_sys_data *); extern void iop3xx_pci_preinit(void); extern void iop3xx_pci_preinit_cond(void); extern struct pci_ops dc21285_ops; extern int dc21285_setup(int nr, struct pci_sys_data *); extern void dc21285_preinit(void); extern void dc21285_postinit(void); extern struct pci_ops via82c505_ops; extern int via82c505_setup(int nr, struct pci_sys_data *); extern void via82c505_init(void *sysdata); extern struct pci_ops pci_v3_ops; extern int pci_v3_setup(int nr, struct pci_sys_data *); extern void pci_v3_preinit(void); extern void pci_v3_postinit(void); # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" 2 extern unsigned long pcibios_min_io; extern unsigned long pcibios_min_mem; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pcibios_assign_all_busses(void) { return pci_has_flag(PCI_REASSIGN_ALL_RSRC); } # 34 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pcibios_penalize_isa_irq(int irq, int active) { } # 47 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_dma_burst_advice(struct pci_dev *pdev, enum pci_dma_burst_strategy *strat, unsigned long *strategy_parameter) { *strat = PCI_DMA_BURST_INFINITY; *strategy_parameter = ~0UL; } extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) { return 0; } # 1423 "include/linux/pci.h" 2 # 1445 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *pci_get_drvdata(struct pci_dev *pdev) { return dev_get_drvdata(&pdev->dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_set_drvdata(struct pci_dev *pdev, void *data) { dev_set_drvdata(&pdev->dev, data); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const char *pci_name(const struct pci_dev *pdev) { return dev_name(&pdev->dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_resource_to_user(const struct pci_dev *dev, int bar, const struct resource *rsrc, resource_size_t *start, resource_size_t *end) { *start = rsrc->start; *end = rsrc->end; } # 1485 "include/linux/pci.h" struct pci_fixup { u16 vendor; u16 device; u32 class; unsigned int class_shift; void (*hook)(struct pci_dev *dev); }; enum pci_fixup_pass { pci_fixup_early, pci_fixup_header, pci_fixup_final, pci_fixup_enable, pci_fixup_resume, pci_fixup_suspend, pci_fixup_resume_early, }; # 1568 "include/linux/pci.h" void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); struct pci_dev *pci_get_dma_source(struct pci_dev *dev); int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags); # 1585 "include/linux/pci.h" void *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen); void pcim_iounmap(struct pci_dev *pdev, void *addr); void * const *pcim_iomap_table(struct pci_dev *pdev); int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name); int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask, const char *name); void pcim_iounmap_regions(struct pci_dev *pdev, int mask); extern int pci_pci_problems; # 1602 "include/linux/pci.h" extern unsigned long pci_cardbus_io_size; extern unsigned long pci_cardbus_mem_size; extern u8 pci_dfl_cache_line_size; extern u8 pci_cache_line_size; extern unsigned long pci_hotplug_io_size; extern unsigned long pci_hotplug_mem_size; int pcibios_add_platform_entries(struct pci_dev *dev); void pcibios_disable_device(struct pci_dev *dev); void pcibios_set_master(struct pci_dev *dev); int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); int pcibios_add_device(struct pci_dev *dev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_mmcfg_early_init(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pci_mmcfg_late_init(void) { } int pci_ext_cfg_avail(void); void *pci_ioremap_bar(struct pci_dev *pdev, int bar); extern int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn); extern void pci_disable_sriov(struct pci_dev *dev); extern irqreturn_t pci_sriov_migration(struct pci_dev *dev); extern int pci_num_vf(struct pci_dev *dev); extern int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs); extern int pci_sriov_get_totalvfs(struct pci_dev *dev); # 1679 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_pcie_cap(struct pci_dev *dev) { return dev->pcie_cap; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool pci_is_pcie(struct pci_dev *dev) { return !!pci_pcie_cap(dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pci_pcie_type(const struct pci_dev *dev) { return (dev->pcie_flags_reg & 0x00f0) >> 4; } void pci_request_acs(void); bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags); bool pci_acs_path_enabled(struct pci_dev *start, struct pci_dev *end, u16 acs_flags); # 1745 "include/linux/pci.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u16 pci_vpd_lrdt_size(const u8 *lrdt) { return (u16)lrdt[1] + ((u16)lrdt[2] << 8); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 pci_vpd_srdt_size(const u8 *srdt) { return (*srdt) & 0x07; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 pci_vpd_info_field_size(const u8 *info_field) { return info_field[2]; } # 1782 "include/linux/pci.h" int pci_vpd_find_tag(const u8 *buf, unsigned int off, unsigned int len, u8 rdt); # 1794 "include/linux/pci.h" int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off, unsigned int len, const char *kw); struct device_node; extern void pci_set_of_node(struct pci_dev *dev); extern void pci_release_of_node(struct pci_dev *dev); extern void pci_set_bus_of_node(struct pci_bus *bus); extern void pci_release_bus_of_node(struct pci_bus *bus); extern struct device_node * __attribute__((weak)) pcibios_get_phb_of_node(struct pci_bus *bus); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct device_node * pci_device_to_OF_node(const struct pci_dev *pdev) { return pdev ? pdev->dev.of_node : ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct device_node *pci_bus_to_OF_node(struct pci_bus *bus) { return bus ? bus->dev.of_node : ((void *)0); } # 1842 "include/linux/pci.h" struct pci_dev *pci_find_upstream_pcie_bridge(struct pci_dev *pdev); # 28 "drivers/ata/pata_optidma.c" 2 # 1 "include/linux/blkdev.h" 1 # 1 "include/linux/sched.h" 1 # 1 "include/uapi/linux/sched.h" 1 # 5 "include/linux/sched.h" 2 struct sched_param { int sched_priority; }; # 1 "arch/arm/include/generated/asm/param.h" 1 # 12 "include/linux/sched.h" 2 # 1 "include/linux/capability.h" 1 # 15 "include/linux/capability.h" # 1 "include/uapi/linux/capability.h" 1 # 18 "include/uapi/linux/capability.h" struct task_struct; # 40 "include/uapi/linux/capability.h" typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; # 69 "include/uapi/linux/capability.h" struct vfs_cap_data { __le32 magic_etc; struct { __le32 permitted; __le32 inheritable; } data[2]; }; # 16 "include/linux/capability.h" 2 extern int file_caps_enabled; typedef struct kernel_cap_struct { __u32 cap[2]; } kernel_cap_t; struct cpu_vfs_cap_data { __u32 magic_etc; kernel_cap_t permitted; kernel_cap_t inheritable; }; struct inode; struct dentry; struct user_namespace; struct user_namespace *current_user_ns(void); extern const kernel_cap_t __cap_empty_set; extern const kernel_cap_t __cap_init_eff_set; # 113 "include/linux/capability.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_combine(const kernel_cap_t a, const kernel_cap_t b) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] | b.cap[__capi]; } } while (0); return dest; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_intersect(const kernel_cap_t a, const kernel_cap_t b) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] & b.cap[__capi]; } } while (0); return dest; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop(const kernel_cap_t a, const kernel_cap_t drop) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] &~ drop.cap[__capi]; } } while (0); return dest; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_invert(const kernel_cap_t c) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = ~ c.cap[__capi]; } } while (0); return dest; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cap_isclear(const kernel_cap_t a) { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { if (a.cap[__capi] != 0) return 0; } return 1; } # 161 "include/linux/capability.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cap_issubset(const kernel_cap_t a, const kernel_cap_t set) { kernel_cap_t dest; dest = cap_drop(a, set); return cap_isclear(dest); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cap_is_fs_cap(int cap) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } }); return !!((1 << ((cap) & 31)) & __cap_fs_set.cap[((cap) >> 5)]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop_fs_set(const kernel_cap_t a) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } }); return cap_drop(a, __cap_fs_set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_raise_fs_set(const kernel_cap_t a, const kernel_cap_t permitted) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } }); return cap_combine(a, cap_intersect(permitted, __cap_fs_set)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop_nfsd_set(const kernel_cap_t a) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } }); return cap_drop(a, __cap_fs_set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kernel_cap_t cap_raise_nfsd_set(const kernel_cap_t a, const kernel_cap_t permitted) { const kernel_cap_t __cap_nfsd_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } }); return cap_combine(a, cap_intersect(permitted, __cap_nfsd_set)); } extern bool has_capability(struct task_struct *t, int cap); extern bool has_ns_capability(struct task_struct *t, struct user_namespace *ns, int cap); extern bool has_capability_noaudit(struct task_struct *t, int cap); extern bool has_ns_capability_noaudit(struct task_struct *t, struct user_namespace *ns, int cap); extern bool capable(int cap); extern bool ns_capable(struct user_namespace *ns, int cap); extern bool nsown_capable(int cap); extern bool inode_capable(const struct inode *inode, int cap); extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); # 14 "include/linux/sched.h" 2 # 28 "include/linux/sched.h" # 1 "arch/arm/include/generated/asm/cputime.h" 1 # 1 "include/asm-generic/cputime.h" 1 typedef unsigned long cputime_t; typedef u64 cputime64_t; # 1 "arch/arm/include/generated/asm/cputime.h" 2 # 29 "include/linux/sched.h" 2 # 1 "include/linux/sem.h" 1 # 1 "include/uapi/linux/sem.h" 1 # 1 "include/linux/ipc.h" 1 # 1 "include/uapi/linux/ipc.h" 1 # 9 "include/uapi/linux/ipc.h" struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }; # 1 "arch/arm/include/generated/asm/ipcbuf.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/ipcbuf.h" 1 # 19 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/ipcbuf.h" struct ipc64_perm { __kernel_key_t key; __kernel_uid32_t uid; __kernel_gid32_t gid; __kernel_uid32_t cuid; __kernel_gid32_t cgid; __kernel_mode_t mode; unsigned char __pad1[4 - sizeof(__kernel_mode_t)]; unsigned short seq; unsigned short __pad2; unsigned long __unused1; unsigned long __unused2; }; # 1 "arch/arm/include/generated/asm/ipcbuf.h" 2 # 22 "include/uapi/linux/ipc.h" 2 # 57 "include/uapi/linux/ipc.h" struct ipc_kludge { struct msgbuf *msgp; long msgtyp; }; # 7 "include/linux/ipc.h" 2 struct kern_ipc_perm { spinlock_t lock; int deleted; int id; key_t key; kuid_t uid; kgid_t gid; kuid_t cuid; kgid_t cgid; umode_t mode; unsigned long seq; void *security; }; # 5 "include/uapi/linux/sem.h" 2 # 23 "include/uapi/linux/sem.h" struct semid_ds { struct ipc_perm sem_perm; __kernel_time_t sem_otime; __kernel_time_t sem_ctime; struct sem *sem_base; struct sem_queue *sem_pending; struct sem_queue **sem_pending_last; struct sem_undo *undo; unsigned short sem_nsems; }; # 1 "arch/arm/include/generated/asm/sembuf.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/sembuf.h" 1 # 1 "arch/arm/include/generated/asm/bitsperlong.h" 1 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/sembuf.h" 2 # 23 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/sembuf.h" struct semid64_ds { struct ipc64_perm sem_perm; __kernel_time_t sem_otime; unsigned long __unused1; __kernel_time_t sem_ctime; unsigned long __unused2; unsigned long sem_nsems; unsigned long __unused3; unsigned long __unused4; }; # 1 "arch/arm/include/generated/asm/sembuf.h" 2 # 36 "include/uapi/linux/sem.h" 2 struct sembuf { unsigned short sem_num; short sem_op; short sem_flg; }; union semun { int val; struct semid_ds *buf; unsigned short *array; struct seminfo *__buf; void *__pad; }; struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; # 8 "include/linux/sem.h" 2 struct task_struct; struct sem_array { struct kern_ipc_perm __attribute__((__aligned__((1 << 6)))) sem_perm; time_t sem_otime; time_t sem_ctime; struct sem *sem_base; struct list_head sem_pending; struct list_head list_id; int sem_nsems; int complex_count; }; struct sysv_sem { struct sem_undo_list *undo_list; }; extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); extern void exit_sem(struct task_struct *tsk); # 32 "include/linux/sched.h" 2 # 1 "include/linux/signal.h" 1 # 1 "include/uapi/linux/signal.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/signal.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/signal.h" 1 struct siginfo; # 93 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/signal.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/signal-defs.h" 1 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/signal-defs.h" typedef void __signalfn_t(int); typedef __signalfn_t *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t *__sigrestore_t; # 94 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/signal.h" 2 # 113 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/signal.h" typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/signal.h" 2 # 13 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/signal.h" typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 32)]; } sigset_t; struct old_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; unsigned long sa_flags; __sigrestore_t sa_restorer; }; struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; __sigrestore_t sa_restorer; sigset_t sa_mask; }; struct k_sigaction { struct sigaction sa; }; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/sigcontext.h" 1 # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/sigcontext.h" struct sigcontext { unsigned long trap_no; unsigned long error_code; unsigned long oldmask; unsigned long arm_r0; unsigned long arm_r1; unsigned long arm_r2; unsigned long arm_r3; unsigned long arm_r4; unsigned long arm_r5; unsigned long arm_r6; unsigned long arm_r7; unsigned long arm_r8; unsigned long arm_r9; unsigned long arm_r10; unsigned long arm_fp; unsigned long arm_ip; unsigned long arm_sp; unsigned long arm_lr; unsigned long arm_pc; unsigned long arm_cpsr; unsigned long fault_address; }; # 38 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/signal.h" 2 # 5 "include/uapi/linux/signal.h" 2 # 1 "arch/arm/include/generated/asm/siginfo.h" 1 # 1 "include/asm-generic/siginfo.h" 1 # 1 "include/uapi/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 48 "include/uapi/asm-generic/siginfo.h" typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 - (3 * sizeof(int))) / sizeof(int))]; struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; } _kill; struct { __kernel_timer_t _tid; int _overrun; char _pad[sizeof( __kernel_uid32_t) - sizeof(int)]; sigval_t _sigval; int _sys_private; } _timer; struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; sigval_t _sigval; } _rt; struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; int _status; __kernel_clock_t _utime; __kernel_clock_t _stime; } _sigchld; struct { void *_addr; short _addr_lsb; } _sigfault; struct { long _band; int _fd; } _sigpoll; struct { void *_call_addr; int _syscall; unsigned int _arch; } _sigsys; } _sifields; } siginfo_t; # 278 "include/uapi/asm-generic/siginfo.h" typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))]; int _tid; struct { void (*_function)(sigval_t); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; # 5 "include/asm-generic/siginfo.h" 2 # 17 "include/asm-generic/siginfo.h" struct siginfo; void do_schedule_next_timer(struct siginfo *info); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void copy_siginfo(struct siginfo *to, struct siginfo *from) { if (from->si_code < 0) memcpy(to, from, sizeof(*to)); else memcpy(to, from, (3 * sizeof(int)) + sizeof(from->_sifields._sigchld)); } extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); # 1 "arch/arm/include/generated/asm/siginfo.h" 2 # 6 "include/uapi/linux/signal.h" 2 # 6 "include/linux/signal.h" 2 struct task_struct; extern int print_fatal_signals; struct sigqueue { struct list_head list; int flags; siginfo_t info; struct user_struct *user; }; struct sigpending { struct list_head list; sigset_t signal; }; # 39 "include/linux/signal.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigaddset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 32) == 1) set->sig[0] |= 1UL << sig; else set->sig[sig / 32] |= 1UL << (sig % 32); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigdelset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 32) == 1) set->sig[0] &= ~(1UL << sig); else set->sig[sig / 32] &= ~(1UL << (sig % 32)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sigismember(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 32) == 1) return 1 & (set->sig[0] >> sig); else return 1 & (set->sig[sig / 32] >> (sig % 32)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sigfindinword(unsigned long word) { return (({ unsigned long __t = (~(~word)); fls(__t & -__t); }) - 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sigisemptyset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 32)) { case 4: return (set->sig[3] | set->sig[2] | set->sig[1] | set->sig[0]) == 0; case 2: return (set->sig[1] | set->sig[0]) == 0; case 1: return set->sig[0] == 0; default: _NSIG_WORDS_is_unsupported_size(); return 0; } } # 120 "include/linux/signal.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigorsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) | (b3)); r->sig[2] = ((a2) | (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) | (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) | (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & (b3)); r->sig[2] = ((a2) & (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigandnsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & ~(b3)); r->sig[2] = ((a2) & ~(b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & ~(b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & ~(b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } # 150 "include/linux/signal.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void signotset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 32)) { case 4: set->sig[3] = (~(set->sig[3])); set->sig[2] = (~(set->sig[2])); case 2: set->sig[1] = (~(set->sig[1])); case 1: set->sig[0] = (~(set->sig[0])); break; default: _NSIG_WORDS_is_unsupported_size(); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigemptyset(sigset_t *set) { switch ((64 / 32)) { default: ({ void *__p = (set); size_t __n = sizeof(sigset_t); if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); break; case 2: set->sig[1] = 0; case 1: set->sig[0] = 0; break; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigfillset(sigset_t *set) { switch ((64 / 32)) { default: ({ void *__p = (set); size_t __n = sizeof(sigset_t); if ((__n) != 0) { if (__builtin_constant_p((-1)) && (-1) == 0) __memzero((__p),(__n)); else memset((__p),(-1),(__n)); } (__p); }); break; case 2: set->sig[1] = -1; case 1: set->sig[0] = -1; break; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigaddsetmask(sigset_t *set, unsigned long mask) { set->sig[0] |= mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sigdelsetmask(sigset_t *set, unsigned long mask) { set->sig[0] &= ~mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sigtestsetmask(sigset_t *set, unsigned long mask) { return (set->sig[0] & mask) != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void siginitset(sigset_t *set, unsigned long mask) { set->sig[0] = mask; switch ((64 / 32)) { default: ({ void *__p = (&set->sig[1]); size_t __n = sizeof(long)*((64 / 32)-1); if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); break; case 2: set->sig[1] = 0; case 1: ; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void siginitsetinv(sigset_t *set, unsigned long mask) { set->sig[0] = ~mask; switch ((64 / 32)) { default: ({ void *__p = (&set->sig[1]); size_t __n = sizeof(long)*((64 / 32)-1); if ((__n) != 0) { if (__builtin_constant_p((-1)) && (-1) == 0) __memzero((__p),(__n)); else memset((__p),(-1),(__n)); } (__p); }); break; case 2: set->sig[1] = -1; case 1: ; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_sigpending(struct sigpending *sig) { sigemptyset(&sig->signal); INIT_LIST_HEAD(&sig->list); } extern void flush_sigqueue(struct sigpending *queue); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int valid_signal(unsigned long sig) { return sig <= 64 ? 1 : 0; } struct timespec; struct pt_regs; extern int next_signal(struct sigpending *pending, sigset_t *mask); extern int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, bool group); extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); extern long do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info); extern long do_sigpending(void *, unsigned long); extern int do_sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *); extern int sigprocmask(int, sigset_t *, sigset_t *); extern void set_current_blocked(sigset_t *); extern void __set_current_blocked(const sigset_t *); extern int show_unhandled_signals; extern int sigsuspend(sigset_t *); extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); extern void exit_signals(struct task_struct *tsk); extern struct kmem_cache *sighand_cachep; int unhandled_signal(struct task_struct *tsk, int sig); # 386 "include/linux/signal.h" void signals_init(void); int restore_altstack(const stack_t *); int __save_altstack(stack_t *, unsigned long); # 33 "include/linux/sched.h" 2 # 1 "include/linux/pid.h" 1 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; # 50 "include/linux/pid.h" struct upid { int nr; struct pid_namespace *ns; struct hlist_node pid_chain; }; struct pid { atomic_t count; unsigned int level; struct hlist_head tasks[PIDTYPE_MAX]; struct callback_head rcu; struct upid numbers[1]; }; extern struct pid init_struct_pid; struct pid_link { struct hlist_node node; struct pid *pid; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid *get_pid(struct pid *pid) { if (pid) atomic_add(1, &pid->count); return pid; } extern void put_pid(struct pid *pid); extern struct task_struct *pid_task(struct pid *pid, enum pid_type); extern struct task_struct *get_pid_task(struct pid *pid, enum pid_type); extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type); extern void attach_pid(struct task_struct *task, enum pid_type type, struct pid *pid); extern void detach_pid(struct task_struct *task, enum pid_type); extern void change_pid(struct task_struct *task, enum pid_type, struct pid *pid); extern void transfer_pid(struct task_struct *old, struct task_struct *new, enum pid_type); struct pid_namespace; extern struct pid_namespace init_pid_ns; # 112 "include/linux/pid.h" extern struct pid *find_pid_ns(int nr, struct pid_namespace *ns); extern struct pid *find_vpid(int nr); extern struct pid *find_get_pid(int nr); extern struct pid *find_ge_pid(int nr, struct pid_namespace *); int next_pidmap(struct pid_namespace *pid_ns, unsigned int last); extern struct pid *alloc_pid(struct pid_namespace *ns); extern void free_pid(struct pid *pid); extern void disable_pid_allocation(struct pid_namespace *ns); # 136 "include/linux/pid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid_namespace *ns_of_pid(struct pid *pid) { struct pid_namespace *ns = ((void *)0); if (pid) ns = pid->numbers[pid->level].ns; return ns; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool is_child_reaper(struct pid *pid) { return pid->numbers[pid->level].nr == 1; } # 166 "include/linux/pid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t pid_nr(struct pid *pid) { pid_t nr = 0; if (pid) nr = pid->numbers[0].nr; return nr; } pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns); pid_t pid_vnr(struct pid *pid); # 36 "include/linux/sched.h" 2 # 1 "include/linux/proportions.h" 1 # 12 "include/linux/proportions.h" # 1 "include/linux/percpu_counter.h" 1 # 18 "include/linux/percpu_counter.h" struct percpu_counter { raw_spinlock_t lock; s64 count; struct list_head list; s32 *counters; }; extern int percpu_counter_batch; int __percpu_counter_init(struct percpu_counter *fbc, s64 amount, struct lock_class_key *key); # 39 "include/linux/percpu_counter.h" void percpu_counter_destroy(struct percpu_counter *fbc); void percpu_counter_set(struct percpu_counter *fbc, s64 amount); void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch); s64 __percpu_counter_sum(struct percpu_counter *fbc); int percpu_counter_compare(struct percpu_counter *fbc, s64 rhs); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void percpu_counter_add(struct percpu_counter *fbc, s64 amount) { __percpu_counter_add(fbc, amount, percpu_counter_batch); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 percpu_counter_sum_positive(struct percpu_counter *fbc) { s64 ret = __percpu_counter_sum(fbc); return ret < 0 ? 0 : ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 percpu_counter_sum(struct percpu_counter *fbc) { return __percpu_counter_sum(fbc); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 percpu_counter_read(struct percpu_counter *fbc) { return fbc->count; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 percpu_counter_read_positive(struct percpu_counter *fbc) { s64 ret = fbc->count; __asm__ __volatile__("": : :"memory"); if (ret >= 0) return ret; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int percpu_counter_initialized(struct percpu_counter *fbc) { return (fbc->counters != ((void *)0)); } # 162 "include/linux/percpu_counter.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void percpu_counter_inc(struct percpu_counter *fbc) { percpu_counter_add(fbc, 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void percpu_counter_dec(struct percpu_counter *fbc) { percpu_counter_add(fbc, -1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void percpu_counter_sub(struct percpu_counter *fbc, s64 amount) { percpu_counter_add(fbc, -amount); } # 13 "include/linux/proportions.h" 2 struct prop_global { int shift; struct percpu_counter events; }; struct prop_descriptor { int index; struct prop_global pg[2]; struct mutex mutex; }; int prop_descriptor_init(struct prop_descriptor *pd, int shift); void prop_change_shift(struct prop_descriptor *pd, int new_shift); struct prop_local_percpu { struct percpu_counter events; int shift; unsigned long period; raw_spinlock_t lock; }; int prop_local_init_percpu(struct prop_local_percpu *pl); void prop_local_destroy_percpu(struct prop_local_percpu *pl); void __prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl); void prop_fraction_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl, long *numerator, long *denominator); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __prop_inc_percpu(pd, pl); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } # 93 "include/linux/proportions.h" void __prop_inc_percpu_max(struct prop_descriptor *pd, struct prop_local_percpu *pl, long frac); struct prop_local_single { unsigned long events; unsigned long period; int shift; raw_spinlock_t lock; }; int prop_local_init_single(struct prop_local_single *pl); void prop_local_destroy_single(struct prop_local_single *pl); void __prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl); void prop_fraction_single(struct prop_descriptor *pd, struct prop_local_single *pl, long *numerator, long *denominator); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __prop_inc_single(pd, pl); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } # 39 "include/linux/sched.h" 2 # 1 "include/linux/seccomp.h" 1 # 1 "include/uapi/linux/seccomp.h" 1 # 40 "include/uapi/linux/seccomp.h" struct seccomp_data { int nr; __u32 arch; __u64 instruction_pointer; __u64 args[6]; }; # 5 "include/linux/seccomp.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/seccomp.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/unistd.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/unistd.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/unistd.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/unistd.h" 1 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/unistd.h" 2 # 8 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/unistd.h" 2 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/seccomp.h" 2 # 10 "include/linux/seccomp.h" 2 struct seccomp_filter; # 23 "include/linux/seccomp.h" struct seccomp { int mode; struct seccomp_filter *filter; }; extern int __secure_computing(int); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int secure_computing(int this_syscall) { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 11)), 0)) return __secure_computing(this_syscall); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void secure_computing_strict(int this_syscall) { do { if (__builtin_expect(!!(secure_computing(this_syscall) != 0), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/seccomp.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "39" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); } extern long prctl_get_seccomp(void); extern long prctl_set_seccomp(unsigned long, char *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int seccomp_mode(struct seccomp *s) { return s->mode; } # 77 "include/linux/seccomp.h" extern void put_seccomp_filter(struct task_struct *tsk); extern void get_seccomp_filter(struct task_struct *tsk); extern u32 seccomp_bpf_load(int off); # 40 "include/linux/sched.h" 2 # 1 "include/linux/rculist.h" 1 # 43 "include/linux/rculist.h" extern void __list_add_rcu(struct list_head *new, struct list_head *prev, struct list_head *next); # 63 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); } # 84 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_add_tail_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head->prev, head); } # 114 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_del_rcu(struct list_head *entry) { __list_del_entry(entry); entry->prev = ((void *) 0x00200200 + 0); } # 140 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_del_init_rcu(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); n->pprev = ((void *)0); } } # 156 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_replace_rcu(struct list_head *old, struct list_head *new) { new->next = old->next; new->prev = old->prev; do { __asm__ __volatile__ ("dmb" : : : "memory"); (((*((struct list_head **)(&(new->prev)->next))))) = (typeof(*(new)) *)((new)); } while (0); new->next->prev = new; old->prev = ((void *) 0x00200200 + 0); } # 183 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void list_splice_init_rcu(struct list_head *list, struct list_head *head, void (*sync)(void)) { struct list_head *first = list->next; struct list_head *last = list->prev; struct list_head *at = head->next; if (list_empty(list)) return; INIT_LIST_HEAD(list); # 205 "include/linux/rculist.h" sync(); # 215 "include/linux/rculist.h" last->next = at; do { __asm__ __volatile__ ("dmb" : : : "memory"); (((*((struct list_head **)(&(head)->next))))) = (typeof(*(first)) *)((first)); } while (0); first->prev = head; at->prev = last; } # 322 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x00200200 + 0); } # 335 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_replace_rcu(struct hlist_node *old, struct hlist_node *new) { struct hlist_node *next = old->next; new->next = next; new->pprev = old->pprev; do { __asm__ __volatile__ ("dmb" : : : "memory"); ((*(struct hlist_node **)new->pprev)) = (typeof(*(new)) *)((new)); } while (0); if (next) new->next->pprev = &new->next; old->pprev = ((void *) 0x00200200 + 0); } # 374 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_head_rcu(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; n->pprev = &h->first; do { __asm__ __volatile__ ("dmb" : : : "memory"); (((*((struct hlist_node **)(&(h)->first))))) = (typeof(*(n)) *)((n)); } while (0); if (first) first->pprev = &n->next; } # 404 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_before_rcu(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; do { __asm__ __volatile__ ("dmb" : : : "memory"); (((*((struct hlist_node **)((n)->pprev))))) = (typeof(*(n)) *)((n)); } while (0); next->pprev = &n->next; } # 431 "include/linux/rculist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_add_after_rcu(struct hlist_node *prev, struct hlist_node *n) { n->next = prev->next; n->pprev = &prev->next; do { __asm__ __volatile__ ("dmb" : : : "memory"); (((*((struct hlist_node **)(&(prev)->next))))) = (typeof(*(n)) *)((n)); } while (0); if (n->next) n->next->pprev = &n->next; } # 42 "include/linux/sched.h" 2 # 1 "include/linux/rtmutex.h" 1 # 16 "include/linux/rtmutex.h" # 1 "include/linux/plist.h" 1 # 81 "include/linux/plist.h" struct plist_head { struct list_head node_list; }; struct plist_node { int prio; struct list_head prio_list; struct list_head node_list; }; # 116 "include/linux/plist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void plist_head_init(struct plist_head *head) { INIT_LIST_HEAD(&head->node_list); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void plist_node_init(struct plist_node *node, int prio) { node->prio = prio; INIT_LIST_HEAD(&node->prio_list); INIT_LIST_HEAD(&node->node_list); } extern void plist_add(struct plist_node *node, struct plist_head *head); extern void plist_del(struct plist_node *node, struct plist_head *head); # 181 "include/linux/plist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int plist_head_empty(const struct plist_head *head) { return list_empty(&head->node_list); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int plist_node_empty(const struct plist_node *node) { return list_empty(&node->node_list); } # 237 "include/linux/plist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct plist_node *plist_first(const struct plist_head *head) { return ({ const typeof( ((struct plist_node *)0)->node_list ) *__mptr = (head->node_list.next); (struct plist_node *)( (char *)__mptr - __builtin_offsetof(struct plist_node,node_list) );}) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct plist_node *plist_last(const struct plist_head *head) { return ({ const typeof( ((struct plist_node *)0)->node_list ) *__mptr = (head->node_list.prev); (struct plist_node *)( (char *)__mptr - __builtin_offsetof(struct plist_node,node_list) );}) ; } # 17 "include/linux/rtmutex.h" 2 extern int max_lock_depth; # 28 "include/linux/rtmutex.h" struct rt_mutex { raw_spinlock_t wait_lock; struct plist_head wait_list; struct task_struct *owner; }; struct rt_mutex_waiter; struct hrtimer_sleeper; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rt_mutex_debug_check_no_locks_freed(const void *from, unsigned long len) { return 0; } # 82 "include/linux/rtmutex.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rt_mutex_is_locked(struct rt_mutex *lock) { return lock->owner != ((void *)0); } extern void __rt_mutex_init(struct rt_mutex *lock, const char *name); extern void rt_mutex_destroy(struct rt_mutex *lock); extern void rt_mutex_lock(struct rt_mutex *lock); extern int rt_mutex_lock_interruptible(struct rt_mutex *lock, int detect_deadlock); extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout, int detect_deadlock); extern int rt_mutex_trylock(struct rt_mutex *lock); extern void rt_mutex_unlock(struct rt_mutex *lock); # 43 "include/linux/sched.h" 2 # 1 "include/linux/resource.h" 1 # 1 "include/uapi/linux/resource.h" 1 # 23 "include/uapi/linux/resource.h" struct rusage { struct timeval ru_utime; struct timeval ru_stime; long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; }; struct rlimit { unsigned long rlim_cur; unsigned long rlim_max; }; struct rlimit64 { __u64 rlim_cur; __u64 rlim_max; }; # 77 "include/uapi/linux/resource.h" # 1 "arch/arm/include/generated/asm/resource.h" 1 # 1 "include/asm-generic/resource.h" 1 # 1 "include/uapi/asm-generic/resource.h" 1 # 5 "include/asm-generic/resource.h" 2 # 1 "arch/arm/include/generated/asm/resource.h" 2 # 78 "include/uapi/linux/resource.h" 2 # 5 "include/linux/resource.h" 2 struct task_struct; int getrusage(struct task_struct *p, int who, struct rusage *ru); int do_prlimit(struct task_struct *tsk, unsigned int resource, struct rlimit *new_rlim, struct rlimit *old_rlim); # 47 "include/linux/sched.h" 2 # 1 "include/linux/hrtimer.h" 1 # 25 "include/linux/hrtimer.h" # 1 "include/linux/timerqueue.h" 1 struct timerqueue_node { struct rb_node node; ktime_t expires; }; struct timerqueue_head { struct rb_root head; struct timerqueue_node *next; }; extern void timerqueue_add(struct timerqueue_head *head, struct timerqueue_node *node); extern void timerqueue_del(struct timerqueue_head *head, struct timerqueue_node *node); extern struct timerqueue_node *timerqueue_iterate_next( struct timerqueue_node *node); # 34 "include/linux/timerqueue.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head) { return head->next; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void timerqueue_init(struct timerqueue_node *node) { ((&node->node)->__rb_parent_color = (unsigned long)(&node->node)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void timerqueue_init_head(struct timerqueue_head *head) { head->head = (struct rb_root) { ((void *)0), }; head->next = ((void *)0); } # 26 "include/linux/hrtimer.h" 2 struct hrtimer_clock_base; struct hrtimer_cpu_base; enum hrtimer_mode { HRTIMER_MODE_ABS = 0x0, HRTIMER_MODE_REL = 0x1, HRTIMER_MODE_PINNED = 0x02, HRTIMER_MODE_ABS_PINNED = 0x02, HRTIMER_MODE_REL_PINNED = 0x03, }; enum hrtimer_restart { HRTIMER_NORESTART, HRTIMER_RESTART, }; # 108 "include/linux/hrtimer.h" struct hrtimer { struct timerqueue_node node; ktime_t _softexpires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; unsigned long state; int start_pid; void *start_site; char start_comm[16]; }; # 128 "include/linux/hrtimer.h" struct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; # 145 "include/linux/hrtimer.h" struct hrtimer_clock_base { struct hrtimer_cpu_base *cpu_base; int index; clockid_t clockid; struct timerqueue_head active; ktime_t resolution; ktime_t (*get_time)(void); ktime_t softirq_time; ktime_t offset; }; enum hrtimer_base_type { HRTIMER_BASE_MONOTONIC, HRTIMER_BASE_REALTIME, HRTIMER_BASE_BOOTTIME, HRTIMER_MAX_CLOCK_BASES, }; # 179 "include/linux/hrtimer.h" struct hrtimer_cpu_base { raw_spinlock_t lock; unsigned int active_bases; unsigned int clock_was_set; ktime_t expires_next; int hres_active; int hang_detected; unsigned long nr_events; unsigned long nr_retries; unsigned long nr_hangs; ktime_t max_hang_time; struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) { timer->node.expires = time; timer->_softexpires = time; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_set_expires_range(struct hrtimer *timer, ktime_t time, ktime_t delta) { timer->_softexpires = time; timer->node.expires = ktime_add_safe(time, delta); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, unsigned long delta) { timer->_softexpires = time; timer->node.expires = ktime_add_safe(time, ns_to_ktime(delta)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_set_expires_tv64(struct hrtimer *timer, s64 tv64) { timer->node.expires.tv64 = tv64; timer->_softexpires.tv64 = tv64; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_add_expires(struct hrtimer *timer, ktime_t time) { timer->node.expires = ktime_add_safe(timer->node.expires, time); timer->_softexpires = ktime_add_safe(timer->_softexpires, time); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_add_expires_ns(struct hrtimer *timer, u64 ns) { timer->node.expires = ({ (ktime_t){ .tv64 = (timer->node.expires).tv64 + (ns) }; }); timer->_softexpires = ({ (ktime_t){ .tv64 = (timer->_softexpires).tv64 + (ns) }; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t hrtimer_get_expires(const struct hrtimer *timer) { return timer->node.expires; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t hrtimer_get_softexpires(const struct hrtimer *timer) { return timer->_softexpires; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 hrtimer_get_expires_tv64(const struct hrtimer *timer) { return timer->node.expires.tv64; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 hrtimer_get_softexpires_tv64(const struct hrtimer *timer) { return timer->_softexpires.tv64; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 hrtimer_get_expires_ns(const struct hrtimer *timer) { return ((timer->node.expires).tv64); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t hrtimer_expires_remaining(const struct hrtimer *timer) { return ({ (ktime_t){ .tv64 = (timer->node.expires).tv64 - (timer->base->get_time()).tv64 }; }); } struct clock_event_device; extern void hrtimer_interrupt(struct clock_event_device *dev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ktime_t hrtimer_cb_get_time(struct hrtimer *timer) { return timer->base->get_time(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_is_hres_active(struct hrtimer *timer) { return timer->base->cpu_base->hres_active; } extern void hrtimer_peek_ahead_timers(void); # 291 "include/linux/hrtimer.h" extern void clock_was_set_delayed(void); # 318 "include/linux/hrtimer.h" extern void clock_was_set(void); extern void timerfd_clock_was_set(void); extern void hrtimers_resume(void); extern ktime_t ktime_get(void); extern ktime_t ktime_get_real(void); extern ktime_t ktime_get_boottime(void); extern ktime_t ktime_get_monotonic_offset(void); extern ktime_t ktime_get_update_offsets(ktime_t *offs_real, ktime_t *offs_boot); extern __attribute__((section(".data..percpu" ""))) __typeof__(struct tick_device) tick_cpu_device; extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hrtimer_init_on_stack(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode) { hrtimer_init(timer, which_clock, mode); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void destroy_hrtimer_on_stack(struct hrtimer *timer) { } extern int hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode); extern int hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, unsigned long range_ns, const enum hrtimer_mode mode); extern int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, unsigned long delta_ns, const enum hrtimer_mode mode, int wakeup); extern int hrtimer_cancel(struct hrtimer *timer); extern int hrtimer_try_to_cancel(struct hrtimer *timer); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_start_expires(struct hrtimer *timer, enum hrtimer_mode mode) { unsigned long delta; ktime_t soft, hard; soft = hrtimer_get_softexpires(timer); hard = hrtimer_get_expires(timer); delta = ((({ (ktime_t){ .tv64 = (hard).tv64 - (soft).tv64 }; })).tv64); return hrtimer_start_range_ns(timer, soft, delta, mode); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_restart(struct hrtimer *timer) { return hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); extern ktime_t hrtimer_get_next_event(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_active(const struct hrtimer *timer) { return timer->state != 0x00; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_is_queued(struct hrtimer *timer) { return timer->state & 0x01; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hrtimer_callback_running(struct hrtimer *timer) { return timer->state & 0x02; } extern u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 hrtimer_forward_now(struct hrtimer *timer, ktime_t interval) { return hrtimer_forward(timer, timer->base->get_time(), interval); } extern long hrtimer_nanosleep(struct timespec *rqtp, struct timespec *rmtp, const enum hrtimer_mode mode, const clockid_t clockid); extern long hrtimer_nanosleep_restart(struct restart_block *restart_block); extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *tsk); extern int schedule_hrtimeout_range(ktime_t *expires, unsigned long delta, const enum hrtimer_mode mode); extern int schedule_hrtimeout_range_clock(ktime_t *expires, unsigned long delta, const enum hrtimer_mode mode, int clock); extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode); extern void hrtimer_run_queues(void); extern void hrtimer_run_pending(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) hrtimers_init(void); extern u64 ktime_divns(const ktime_t kt, s64 div); extern void sysrq_timer_list_show(void); # 49 "include/linux/sched.h" 2 # 1 "include/linux/task_io_accounting.h" 1 # 11 "include/linux/task_io_accounting.h" struct task_io_accounting { u64 rchar; u64 wchar; u64 syscr; u64 syscw; u64 read_bytes; u64 write_bytes; # 43 "include/linux/task_io_accounting.h" u64 cancelled_write_bytes; }; # 50 "include/linux/sched.h" 2 # 1 "include/linux/latencytop.h" 1 # 13 "include/linux/latencytop.h" struct task_struct; # 42 "include/linux/latencytop.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void account_scheduler_latency(struct task_struct *task, int usecs, int inter) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_all_latency_tracing(struct task_struct *p) { } # 51 "include/linux/sched.h" 2 # 1 "include/linux/cred.h" 1 # 17 "include/linux/cred.h" # 1 "include/linux/key.h" 1 # 30 "include/linux/key.h" typedef int32_t key_serial_t; typedef uint32_t key_perm_t; struct key; # 75 "include/linux/key.h" struct seq_file; struct user_struct; struct signal_struct; struct cred; struct key_type; struct key_owner; struct keyring_list; struct keyring_name; # 99 "include/linux/key.h" typedef struct __key_reference_with_attributes *key_ref_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) key_ref_t make_key_ref(const struct key *key, unsigned long possession) { return (key_ref_t) ((unsigned long) key | possession); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct key *key_ref_to_ptr(const key_ref_t key_ref) { return (struct key *) ((unsigned long) key_ref & ~1UL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long is_key_possessed(const key_ref_t key_ref) { return (unsigned long) key_ref & 1UL; } # 125 "include/linux/key.h" struct key { atomic_t usage; key_serial_t serial; union { struct list_head graveyard_link; struct rb_node serial_node; }; struct key_type *type; struct rw_semaphore sem; struct key_user *user; void *security; union { time_t expiry; time_t revoked_at; }; time_t last_used_at; kuid_t uid; kgid_t gid; key_perm_t perm; unsigned short quotalen; unsigned short datalen; # 156 "include/linux/key.h" unsigned long flags; # 171 "include/linux/key.h" char *description; union { struct list_head link; unsigned long x[2]; void *p[2]; int reject_error; } type_data; union { unsigned long value; void *rcudata; void *data; struct keyring_list *subscriptions; } payload; }; extern struct key *key_alloc(struct key_type *type, const char *desc, kuid_t uid, kgid_t gid, const struct cred *cred, key_perm_t perm, unsigned long flags); extern void key_revoke(struct key *key); extern void key_invalidate(struct key *key); extern void key_put(struct key *key); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct key *key_get(struct key *key) { if (key) atomic_add(1, &key->usage); return key; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void key_ref_put(key_ref_t key_ref) { key_put(key_ref_to_ptr(key_ref)); } extern struct key *request_key(struct key_type *type, const char *description, const char *callout_info); extern struct key *request_key_with_auxdata(struct key_type *type, const char *description, const void *callout_info, size_t callout_len, void *aux); extern struct key *request_key_async(struct key_type *type, const char *description, const void *callout_info, size_t callout_len); extern struct key *request_key_async_with_auxdata(struct key_type *type, const char *description, const void *callout_info, size_t callout_len, void *aux); extern int wait_for_key_construction(struct key *key, bool intr); extern int key_validate(const struct key *key); extern key_ref_t key_create_or_update(key_ref_t keyring, const char *type, const char *description, const void *payload, size_t plen, key_perm_t perm, unsigned long flags); extern int key_update(key_ref_t key, const void *payload, size_t plen); extern int key_link(struct key *keyring, struct key *key); extern int key_unlink(struct key *keyring, struct key *key); extern struct key *keyring_alloc(const char *description, kuid_t uid, kgid_t gid, const struct cred *cred, key_perm_t perm, unsigned long flags, struct key *dest); extern int keyring_clear(struct key *keyring); extern key_ref_t keyring_search(key_ref_t keyring, struct key_type *type, const char *description); extern int keyring_add_key(struct key *keyring, struct key *key); extern struct key *key_lookup(key_serial_t id); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) key_serial_t key_serial(const struct key *key) { return key ? key->serial : 0; } extern void key_set_timeout(struct key *, unsigned); # 297 "include/linux/key.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool key_is_instantiated(const struct key *key) { return test_bit(0, &key->flags) && !test_bit(5, &key->flags); } # 313 "include/linux/key.h" extern ctl_table key_sysctls[]; extern int install_thread_keyring_to_cred(struct cred *cred); extern void key_fsuid_changed(struct task_struct *tsk); extern void key_fsgid_changed(struct task_struct *tsk); extern void key_init(void); # 18 "include/linux/cred.h" 2 # 1 "include/linux/selinux.h" 1 # 17 "include/linux/selinux.h" struct selinux_audit_rule; struct audit_context; struct kern_ipc_perm; bool selinux_is_enabled(void); # 19 "include/linux/cred.h" 2 struct user_struct; struct cred; struct inode; struct group_info { atomic_t usage; int ngroups; int nblocks; kgid_t small_block[32]; kgid_t *blocks[0]; }; # 49 "include/linux/cred.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct group_info *get_group_info(struct group_info *gi) { atomic_add(1, &gi->usage); return gi; } # 65 "include/linux/cred.h" extern struct group_info *groups_alloc(int); extern struct group_info init_groups; extern void groups_free(struct group_info *); extern int set_current_groups(struct group_info *); extern int set_groups(struct cred *, struct group_info *); extern int groups_search(const struct group_info *, kgid_t); extern int in_group_p(kgid_t); extern int in_egroup_p(kgid_t); # 102 "include/linux/cred.h" struct cred { atomic_t usage; kuid_t uid; kgid_t gid; kuid_t suid; kgid_t sgid; kuid_t euid; kgid_t egid; kuid_t fsuid; kgid_t fsgid; unsigned securebits; kernel_cap_t cap_inheritable; kernel_cap_t cap_permitted; kernel_cap_t cap_effective; kernel_cap_t cap_bset; unsigned char jit_keyring; struct key *session_keyring; struct key *process_keyring; struct key *thread_keyring; struct key *request_key_auth; void *security; struct user_struct *user; struct user_namespace *user_ns; struct group_info *group_info; struct callback_head rcu; }; extern void __put_cred(struct cred *); extern void exit_creds(struct task_struct *); extern int copy_creds(struct task_struct *, unsigned long); extern const struct cred *get_task_cred(struct task_struct *); extern struct cred *cred_alloc_blank(void); extern struct cred *prepare_creds(void); extern struct cred *prepare_exec_creds(void); extern int commit_creds(struct cred *); extern void abort_creds(struct cred *); extern const struct cred *override_creds(const struct cred *); extern void revert_creds(const struct cred *); extern struct cred *prepare_kernel_cred(struct task_struct *); extern int change_create_files_as(struct cred *, struct inode *); extern int set_security_override(struct cred *, u32); extern int set_security_override_from_ctx(struct cred *, const char *); extern int set_create_files_as(struct cred *, struct inode *); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) cred_init(void); extern void secureboot_enable(void); # 190 "include/linux/cred.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void validate_creds(const struct cred *cred) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void validate_creds_for_do_exit(struct task_struct *tsk) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void validate_process_creds(void) { } # 208 "include/linux/cred.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct cred *get_new_cred(struct cred *cred) { atomic_add(1, &cred->usage); return cred; } # 227 "include/linux/cred.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const struct cred *get_cred(const struct cred *cred) { struct cred *nonconst_cred = (struct cred *) cred; validate_creds(cred); return get_new_cred(nonconst_cred); } # 245 "include/linux/cred.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void put_cred(const struct cred *_cred) { struct cred *cred = (struct cred *) _cred; validate_creds(cred); if ((atomic_sub_return(1, &(cred)->usage) == 0)) __put_cred(cred); } # 345 "include/linux/cred.h" extern struct user_namespace init_user_ns; # 52 "include/linux/sched.h" 2 # 1 "include/linux/llist.h" 1 # 61 "include/linux/llist.h" struct llist_head { struct llist_node *first; }; struct llist_node { struct llist_node *next; }; # 76 "include/linux/llist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_llist_head(struct llist_head *list) { list->first = ((void *)0); } # 160 "include/linux/llist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool llist_empty(const struct llist_head *head) { return (*(volatile typeof(head->first) *)&(head->first)) == ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct llist_node *llist_next(struct llist_node *node) { return node->next; } # 177 "include/linux/llist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool llist_add(struct llist_node *new, struct llist_head *head) { struct llist_node *entry, *old_entry; entry = head->first; for (;;) { old_entry = entry; new->next = entry; entry = ((__typeof__(*(&head->first)))__cmpxchg_mb((&head->first), (unsigned long)(old_entry), (unsigned long)(new), sizeof(*(&head->first)))); if (entry == old_entry) break; } return old_entry == ((void *)0); } # 201 "include/linux/llist.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct llist_node *llist_del_all(struct llist_head *head) { return ((__typeof__(*(&head->first)))__xchg((unsigned long)(((void *)0)),(&head->first),sizeof(*(&head->first)))); } extern bool llist_add_batch(struct llist_node *new_first, struct llist_node *new_last, struct llist_head *head); extern struct llist_node *llist_del_first(struct llist_head *head); # 53 "include/linux/sched.h" 2 struct exec_domain; struct futex_pi_state; struct robust_list_head; struct bio_list; struct fs_struct; struct perf_event_context; struct blk_plug; # 81 "include/linux/sched.h" extern unsigned long avenrun[]; extern void get_avenrun(unsigned long *loads, unsigned long offset, int shift); # 96 "include/linux/sched.h" extern unsigned long total_forks; extern int nr_threads; extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned long) process_counts; extern int nr_processes(void); extern unsigned long nr_running(void); extern unsigned long nr_uninterruptible(void); extern unsigned long nr_iowait(void); extern unsigned long nr_iowait_cpu(int cpu); extern unsigned long this_cpu_load(void); extern void calc_global_load(unsigned long ticks); extern void update_cpu_load_nohz(void); struct task_migration_notifier { struct task_struct *task; int from_cpu; int to_cpu; }; extern void register_task_migration_notifier(struct notifier_block *n); extern unsigned long get_parent_ip(unsigned long addr); extern void dump_cpu_task(int cpu); struct seq_file; struct cfs_rq; struct task_group; extern void proc_sched_show_task(struct task_struct *p, struct seq_file *m); extern void proc_sched_set_task(struct task_struct *p); extern void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); # 170 "include/linux/sched.h" extern char ___assert_task_state[1 - 2*!!( sizeof("RSDTtZXxKW")-1 != ( __builtin_constant_p(512) ? ( (512) < 1 ? ____ilog2_NaN() : (512) & (1ULL << 63) ? 63 : (512) & (1ULL << 62) ? 62 : (512) & (1ULL << 61) ? 61 : (512) & (1ULL << 60) ? 60 : (512) & (1ULL << 59) ? 59 : (512) & (1ULL << 58) ? 58 : (512) & (1ULL << 57) ? 57 : (512) & (1ULL << 56) ? 56 : (512) & (1ULL << 55) ? 55 : (512) & (1ULL << 54) ? 54 : (512) & (1ULL << 53) ? 53 : (512) & (1ULL << 52) ? 52 : (512) & (1ULL << 51) ? 51 : (512) & (1ULL << 50) ? 50 : (512) & (1ULL << 49) ? 49 : (512) & (1ULL << 48) ? 48 : (512) & (1ULL << 47) ? 47 : (512) & (1ULL << 46) ? 46 : (512) & (1ULL << 45) ? 45 : (512) & (1ULL << 44) ? 44 : (512) & (1ULL << 43) ? 43 : (512) & (1ULL << 42) ? 42 : (512) & (1ULL << 41) ? 41 : (512) & (1ULL << 40) ? 40 : (512) & (1ULL << 39) ? 39 : (512) & (1ULL << 38) ? 38 : (512) & (1ULL << 37) ? 37 : (512) & (1ULL << 36) ? 36 : (512) & (1ULL << 35) ? 35 : (512) & (1ULL << 34) ? 34 : (512) & (1ULL << 33) ? 33 : (512) & (1ULL << 32) ? 32 : (512) & (1ULL << 31) ? 31 : (512) & (1ULL << 30) ? 30 : (512) & (1ULL << 29) ? 29 : (512) & (1ULL << 28) ? 28 : (512) & (1ULL << 27) ? 27 : (512) & (1ULL << 26) ? 26 : (512) & (1ULL << 25) ? 25 : (512) & (1ULL << 24) ? 24 : (512) & (1ULL << 23) ? 23 : (512) & (1ULL << 22) ? 22 : (512) & (1ULL << 21) ? 21 : (512) & (1ULL << 20) ? 20 : (512) & (1ULL << 19) ? 19 : (512) & (1ULL << 18) ? 18 : (512) & (1ULL << 17) ? 17 : (512) & (1ULL << 16) ? 16 : (512) & (1ULL << 15) ? 15 : (512) & (1ULL << 14) ? 14 : (512) & (1ULL << 13) ? 13 : (512) & (1ULL << 12) ? 12 : (512) & (1ULL << 11) ? 11 : (512) & (1ULL << 10) ? 10 : (512) & (1ULL << 9) ? 9 : (512) & (1ULL << 8) ? 8 : (512) & (1ULL << 7) ? 7 : (512) & (1ULL << 6) ? 6 : (512) & (1ULL << 5) ? 5 : (512) & (1ULL << 4) ? 4 : (512) & (1ULL << 3) ? 3 : (512) & (1ULL << 2) ? 2 : (512) & (1ULL << 1) ? 1 : (512) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(512) <= 4) ? __ilog2_u32(512) : __ilog2_u64(512) )+1)]; # 228 "include/linux/sched.h" extern rwlock_t tasklist_lock; extern spinlock_t mmlist_lock; struct task_struct; extern void sched_init(void); extern void sched_init_smp(void); extern void schedule_tail(struct task_struct *prev); extern void init_idle(struct task_struct *idle, int cpu); extern void init_idle_bootup_task(struct task_struct *idle); extern int runqueue_is_locked(int cpu); extern void nohz_balance_enter_idle(int cpu); extern void set_cpu_sd_state_idle(void); extern int get_nohz_timer_target(void); # 257 "include/linux/sched.h" extern void show_state_filter(unsigned long state_filter); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void show_state(void) { show_state_filter(0); } extern void show_regs(struct pt_regs *); extern void show_stack(struct task_struct *task, unsigned long *sp); void io_schedule(void); long io_schedule_timeout(long timeout); extern void cpu_init (void); extern void trap_init(void); extern void update_process_times(int user); extern void scheduler_tick(void); extern void sched_show_task(struct task_struct *p); extern void touch_softlockup_watchdog(void); extern void touch_softlockup_watchdog_sync(void); extern void touch_all_softlockup_watchdogs(void); extern int proc_dowatchdog_thresh(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern unsigned int softlockup_panic; void lockup_detector_init(void); # 317 "include/linux/sched.h" enum { sysctl_hung_task_timeout_secs = 0 }; extern char __sched_text_start[], __sched_text_end[]; extern int in_sched_functions(unsigned long addr); extern signed long schedule_timeout(signed long timeout); extern signed long schedule_timeout_interruptible(signed long timeout); extern signed long schedule_timeout_killable(signed long timeout); extern signed long schedule_timeout_uninterruptible(signed long timeout); void schedule(void); extern void schedule_preempt_disabled(void); extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner); struct nsproxy; struct user_namespace; # 356 "include/linux/sched.h" extern int sysctl_max_map_count; # 1 "include/linux/aio.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/aio_abi.h" 1 # 33 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/aio_abi.h" typedef __kernel_ulong_t aio_context_t; enum { IOCB_CMD_PREAD = 0, IOCB_CMD_PWRITE = 1, IOCB_CMD_FSYNC = 2, IOCB_CMD_FDSYNC = 3, IOCB_CMD_NOOP = 6, IOCB_CMD_PREADV = 7, IOCB_CMD_PWRITEV = 8, }; # 58 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/aio_abi.h" struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; # 79 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/aio_abi.h" struct iocb { __u64 aio_data; __u32 aio_key, aio_reserved1; __u16 aio_lio_opcode; __s16 aio_reqprio; __u32 aio_fildes; __u64 aio_buf; __u64 aio_nbytes; __s64 aio_offset; __u64 aio_reserved2; __u32 aio_flags; __u32 aio_resfd; }; # 7 "include/linux/aio.h" 2 # 1 "include/linux/uio.h" 1 # 12 "include/linux/uio.h" # 1 "include/uapi/linux/uio.h" 1 # 16 "include/uapi/linux/uio.h" struct iovec { void *iov_base; __kernel_size_t iov_len; }; # 13 "include/linux/uio.h" 2 struct kvec { void *iov_base; size_t iov_len; }; # 27 "include/linux/uio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) size_t iov_length(const struct iovec *iov, unsigned long nr_segs) { unsigned long seg; size_t ret = 0; for (seg = 0; seg < nr_segs; seg++) ret += iov[seg].iov_len; return ret; } unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to); # 8 "include/linux/aio.h" 2 struct kioctx; # 87 "include/linux/aio.h" struct kiocb { struct list_head ki_run_list; unsigned long ki_flags; int ki_users; unsigned ki_key; struct file *ki_filp; struct kioctx *ki_ctx; int (*ki_cancel)(struct kiocb *, struct io_event *); ssize_t (*ki_retry)(struct kiocb *); void (*ki_dtor)(struct kiocb *); union { void *user; struct task_struct *tsk; } ki_obj; __u64 ki_user_data; loff_t ki_pos; void *private; unsigned short ki_opcode; size_t ki_nbytes; char *ki_buf; size_t ki_left; struct iovec ki_inline_vec; struct iovec *ki_iovec; unsigned long ki_nr_segs; unsigned long ki_cur_seg; struct list_head ki_list; struct list_head ki_batch; struct eventfd_ctx *ki_eventfd; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool is_sync_kiocb(struct kiocb *kiocb) { return kiocb->ki_key == (~0U); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void init_sync_kiocb(struct kiocb *kiocb, struct file *filp) { *kiocb = (struct kiocb) { .ki_users = 1, .ki_key = (~0U), .ki_filp = filp, .ki_obj.tsk = (current_thread_info()->task), }; } struct aio_ring { unsigned id; unsigned nr; unsigned head; unsigned tail; unsigned magic; unsigned compat_features; unsigned incompat_features; unsigned header_length; struct io_event io_events[0]; }; struct aio_ring_info { unsigned long mmap_base; unsigned long mmap_size; struct page **ring_pages; spinlock_t ring_lock; long nr_pages; unsigned nr, tail; struct page *internal_pages[8]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned aio_ring_avail(struct aio_ring_info *info, struct aio_ring *ring) { return (ring->head + info->nr - 1 - ring->tail) % info->nr; } struct kioctx { atomic_t users; int dead; struct mm_struct *mm; unsigned long user_id; struct hlist_node list; wait_queue_head_t wait; spinlock_t ctx_lock; int reqs_active; struct list_head active_reqs; struct list_head run_list; unsigned max_reqs; struct aio_ring_info ring_info; struct delayed_work wq; struct callback_head callback_head; }; extern unsigned aio_max_size; extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb); extern int aio_put_req(struct kiocb *iocb); extern void kick_iocb(struct kiocb *iocb); extern int aio_complete(struct kiocb *iocb, long res, long res2); struct mm_struct; extern void exit_aio(struct mm_struct *mm); extern long do_io_submit(aio_context_t ctx_id, long nr, struct iocb * *iocbpp, bool compat); # 233 "include/linux/aio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kiocb *list_kiocb(struct list_head *h) { return ({ const typeof( ((struct kiocb *)0)->ki_list ) *__mptr = (h); (struct kiocb *)( (char *)__mptr - __builtin_offsetof(struct kiocb,ki_list) );}); } extern unsigned long aio_nr; extern unsigned long aio_max_nr; # 359 "include/linux/sched.h" 2 extern void arch_pick_mmap_layout(struct mm_struct *mm); extern unsigned long arch_get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); extern unsigned long arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); extern void arch_unmap_area(struct mm_struct *, unsigned long); extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); extern void set_dumpable(struct mm_struct *mm, int value); extern int get_dumpable(struct mm_struct *mm); # 424 "include/linux/sched.h" struct sighand_struct { atomic_t count; struct k_sigaction action[64]; spinlock_t siglock; wait_queue_head_t signalfd_wqh; }; struct pacct_struct { int ac_flag; long ac_exitcode; unsigned long ac_mem; cputime_t ac_utime, ac_stime; unsigned long ac_minflt, ac_majflt; }; struct cpu_itimer { cputime_t expires; cputime_t incr; u32 error; u32 incr_error; }; # 453 "include/linux/sched.h" struct cputime { cputime_t utime; cputime_t stime; }; # 472 "include/linux/sched.h" struct task_cputime { cputime_t utime; cputime_t stime; unsigned long long sum_exec_runtime; }; # 508 "include/linux/sched.h" struct thread_group_cputimer { struct task_cputime cputime; int running; raw_spinlock_t lock; }; struct autogroup; # 524 "include/linux/sched.h" struct signal_struct { atomic_t sigcnt; atomic_t live; int nr_threads; wait_queue_head_t wait_chldexit; struct task_struct *curr_target; struct sigpending shared_pending; int group_exit_code; int notify_count; struct task_struct *group_exit_task; int group_stop_count; unsigned int flags; # 560 "include/linux/sched.h" unsigned int is_child_subreaper:1; unsigned int has_child_subreaper:1; struct list_head posix_timers; struct hrtimer real_timer; struct pid *leader_pid; ktime_t it_real_incr; struct cpu_itimer it[2]; struct thread_group_cputimer cputimer; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct pid *tty_old_pgrp; int leader; struct tty_struct *tty; struct autogroup *autogroup; cputime_t utime, stime, cutime, cstime; cputime_t gtime; cputime_t cgtime; struct cputime prev_cputime; unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; unsigned long inblock, oublock, cinblock, coublock; unsigned long maxrss, cmaxrss; struct task_io_accounting ioac; unsigned long long sum_sched_runtime; # 634 "include/linux/sched.h" struct rlimit rlim[16]; struct pacct_struct pacct; struct taskstats *stats; unsigned audit_tty; struct tty_audit_buf *tty_audit_buf; # 656 "include/linux/sched.h" struct rw_semaphore group_rwsem; oom_flags_t oom_flags; short oom_score_adj; short oom_score_adj_min; struct mutex cred_guard_mutex; }; # 685 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int signal_group_exit(const struct signal_struct *sig) { return (sig->flags & 0x00000004) || (sig->group_exit_task != ((void *)0)); } struct user_struct { atomic_t __count; atomic_t processes; atomic_t files; atomic_t sigpending; atomic_t inotify_watches; atomic_t inotify_devs; atomic_t fanotify_listeners; atomic_long_t epoll_watches; unsigned long mq_bytes; unsigned long locked_shm; struct key *uid_keyring; struct key *session_keyring; struct hlist_node uidhash_node; kuid_t uid; atomic_long_t locked_vm; }; extern int uids_sysfs_init(void); extern struct user_struct *find_user(kuid_t); extern struct user_struct root_user; struct backing_dev_info; struct reclaim_state; struct sched_info { unsigned long pcount; unsigned long long run_delay; unsigned long long last_arrival, last_queued; }; struct task_delay_info { spinlock_t lock; unsigned int flags; # 772 "include/linux/sched.h" struct timespec blkio_start, blkio_end; u64 blkio_delay; u64 swapin_delay; u32 blkio_count; u32 swapin_count; struct timespec freepages_start, freepages_end; u64 freepages_delay; u32 freepages_count; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sched_info_on(void) { return 1; } enum cpu_idle_type { CPU_IDLE, CPU_NOT_IDLE, CPU_NEWLY_IDLE, CPU_MAX_IDLE_TYPES }; # 853 "include/linux/sched.h" extern int __attribute__((weak)) arch_sd_sibiling_asym_packing(void); struct sched_group_power { atomic_t ref; unsigned int power, power_orig; unsigned long next_update; atomic_t nr_busy_cpus; unsigned long cpumask[0]; }; struct sched_group { struct sched_group *next; atomic_t ref; unsigned int group_weight; struct sched_group_power *sgp; # 885 "include/linux/sched.h" unsigned long cpumask[0]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct cpumask *sched_group_cpus(struct sched_group *sg) { return ((struct cpumask *)(1 ? (sg->cpumask) : (void *)sizeof(__check_is_bitmap(sg->cpumask)))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct cpumask *sched_group_mask(struct sched_group *sg) { return ((struct cpumask *)(1 ? (sg->sgp->cpumask) : (void *)sizeof(__check_is_bitmap(sg->sgp->cpumask)))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int group_first_cpu(struct sched_group *group) { return cpumask_first(sched_group_cpus(group)); } struct sched_domain_attr { int relax_domain_level; }; extern int sched_domain_level_max; struct sched_domain { struct sched_domain *parent; struct sched_domain *child; struct sched_group *groups; unsigned long min_interval; unsigned long max_interval; unsigned int busy_factor; unsigned int imbalance_pct; unsigned int cache_nice_tries; unsigned int busy_idx; unsigned int idle_idx; unsigned int newidle_idx; unsigned int wake_idx; unsigned int forkexec_idx; unsigned int smt_gain; int flags; int level; unsigned long last_balance; unsigned int balance_interval; unsigned int nr_balance_failed; u64 last_update; unsigned int lb_count[CPU_MAX_IDLE_TYPES]; unsigned int lb_failed[CPU_MAX_IDLE_TYPES]; unsigned int lb_balanced[CPU_MAX_IDLE_TYPES]; unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES]; unsigned int lb_gained[CPU_MAX_IDLE_TYPES]; unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES]; unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES]; unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES]; unsigned int alb_count; unsigned int alb_failed; unsigned int alb_pushed; unsigned int sbe_count; unsigned int sbe_balanced; unsigned int sbe_pushed; unsigned int sbf_count; unsigned int sbf_balanced; unsigned int sbf_pushed; unsigned int ttwu_wake_remote; unsigned int ttwu_move_affine; unsigned int ttwu_move_balance; char *name; union { void *private; struct callback_head rcu; }; unsigned int span_weight; unsigned long span[0]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct cpumask *sched_domain_span(struct sched_domain *sd) { return ((struct cpumask *)(1 ? (sd->span) : (void *)sizeof(__check_is_bitmap(sd->span)))); } extern void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[], struct sched_domain_attr *dattr_new); cpumask_var_t *alloc_sched_domains(unsigned int ndoms); void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_sd_parent(struct sched_domain *sd, int flag) { if (sd->parent && (sd->parent->flags & flag)) return 1; return 0; } unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu); unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu); bool cpus_share_cache(int this_cpu, int that_cpu); # 1041 "include/linux/sched.h" struct io_context; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void prefetch_stack(struct task_struct *t) { } struct audit_context; struct mempolicy; struct pipe_inode_info; struct uts_namespace; struct rq; struct sched_domain; # 1075 "include/linux/sched.h" struct sched_class { const struct sched_class *next; void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags); void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags); void (*yield_task) (struct rq *rq); bool (*yield_to_task) (struct rq *rq, struct task_struct *p, bool preempt); void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags); struct task_struct * (*pick_next_task) (struct rq *rq); void (*put_prev_task) (struct rq *rq, struct task_struct *p); int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags); void (*migrate_task_rq)(struct task_struct *p, int next_cpu); void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); void (*post_schedule) (struct rq *this_rq); void (*task_waking) (struct task_struct *task); void (*task_woken) (struct rq *this_rq, struct task_struct *task); void (*set_cpus_allowed)(struct task_struct *p, const struct cpumask *newmask); void (*rq_online)(struct rq *rq); void (*rq_offline)(struct rq *rq); void (*set_curr_task) (struct rq *rq); void (*task_tick) (struct rq *rq, struct task_struct *p, int queued); void (*task_fork) (struct task_struct *p); void (*switched_from) (struct rq *this_rq, struct task_struct *task); void (*switched_to) (struct rq *this_rq, struct task_struct *task); void (*prio_changed) (struct rq *this_rq, struct task_struct *task, int oldprio); unsigned int (*get_rr_interval) (struct rq *rq, struct task_struct *task); void (*task_move_group) (struct task_struct *p, int on_rq); }; struct load_weight { unsigned long weight, inv_weight; }; struct sched_avg { u32 runnable_avg_sum, runnable_avg_period; u64 last_runnable_update; s64 decay_count; unsigned long load_avg_contrib; }; struct sched_statistics { u64 wait_start; u64 wait_max; u64 wait_count; u64 wait_sum; u64 iowait_count; u64 iowait_sum; u64 sleep_start; u64 sleep_max; s64 sum_sleep_runtime; u64 block_start; u64 block_max; u64 exec_max; u64 slice_max; u64 nr_migrations_cold; u64 nr_failed_migrations_affine; u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; u64 nr_forced_migrations; u64 nr_wakeups; u64 nr_wakeups_sync; u64 nr_wakeups_migrate; u64 nr_wakeups_local; u64 nr_wakeups_remote; u64 nr_wakeups_affine; u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; }; struct sched_entity { struct load_weight load; struct rb_node run_node; struct list_head group_node; unsigned int on_rq; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; u64 nr_migrations; struct sched_statistics statistics; struct sched_entity *parent; struct cfs_rq *cfs_rq; struct cfs_rq *my_q; # 1204 "include/linux/sched.h" struct sched_avg avg; }; struct sched_rt_entity { struct list_head run_list; unsigned long timeout; unsigned int time_slice; struct sched_rt_entity *back; struct sched_rt_entity *parent; struct rt_rq *rt_rq; struct rt_rq *my_q; }; struct rcu_node; enum perf_event_task_context { perf_invalid_context = -1, perf_hw_context = 0, perf_sw_context, perf_nr_task_contexts, }; struct task_struct { volatile long state; void *stack; atomic_t usage; unsigned int flags; unsigned int ptrace; struct llist_node wake_entry; int on_cpu; int on_rq; int prio, static_prio, normal_prio; unsigned int rt_priority; const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; struct task_group *sched_task_group; # 1273 "include/linux/sched.h" unsigned char fpu_counter; unsigned int btrace_seq; unsigned int policy; int nr_cpus_allowed; cpumask_t cpus_allowed; # 1295 "include/linux/sched.h" struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct mm_struct *mm, *active_mm; struct task_rss_stat rss_stat; int exit_state; int exit_code, exit_signal; int pdeath_signal; unsigned int jobctl; unsigned int personality; unsigned did_exec:1; unsigned in_execve:1; unsigned in_iowait:1; unsigned no_new_privs:1; unsigned sched_reset_on_fork:1; unsigned sched_contributes_to_load:1; pid_t pid; pid_t tgid; unsigned long stack_canary; struct task_struct *real_parent; struct task_struct *parent; struct list_head children; struct list_head sibling; struct task_struct *group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid_link pids[PIDTYPE_MAX]; struct list_head thread_group; struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; cputime_t utime, stime, utimescaled, stimescaled; cputime_t gtime; struct cputime prev_cputime; unsigned long nvcsw, nivcsw; struct timespec start_time; struct timespec real_start_time; unsigned long min_flt, maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; const struct cred *real_cred; const struct cred *cred; char comm[16]; int link_count, total_link_count; struct sysv_sem sysvsem; struct thread_struct thread; struct fs_struct *fs; struct files_struct *files; struct nsproxy *nsproxy; struct signal_struct *signal; struct sighand_struct *sighand; sigset_t blocked, real_blocked; sigset_t saved_sigmask; struct sigpending pending; unsigned long sas_ss_sp; size_t sas_ss_size; int (*notifier)(void *priv); void *notifier_data; sigset_t *notifier_mask; struct callback_head *task_works; struct audit_context *audit_context; kuid_t loginuid; unsigned int sessionid; struct seccomp seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; raw_spinlock_t pi_lock; struct plist_head pi_waiters; struct rt_mutex_waiter *pi_blocked_on; # 1475 "include/linux/sched.h" void *journal_info; struct bio_list *bio_list; struct blk_plug *plug; struct reclaim_state *reclaim_state; struct backing_dev_info *backing_dev_info; struct io_context *io_context; unsigned long ptrace_message; siginfo_t *last_siginfo; struct task_io_accounting ioac; u64 acct_rss_mem1; u64 acct_vm_mem1; cputime_t acct_timexpd; nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; struct css_set *cgroups; struct list_head cg_list; struct robust_list_head *robust_list; struct list_head pi_state_list; struct futex_pi_state *pi_state_cache; struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts]; struct mutex perf_event_mutex; struct list_head perf_event_list; # 1538 "include/linux/sched.h" struct callback_head rcu; struct pipe_inode_info *splice_pipe; struct page_frag task_frag; struct task_delay_info *delays; # 1557 "include/linux/sched.h" int nr_dirtied; int nr_dirtied_pause; unsigned long dirty_paused_when; # 1569 "include/linux/sched.h" unsigned long timer_slack_ns; unsigned long default_timer_slack_ns; # 1589 "include/linux/sched.h" unsigned long trace; unsigned long trace_recursion; struct memcg_batch_info { int do_batch; struct mem_cgroup *memcg; unsigned long nr_pages; unsigned long memsw_nr_pages; } memcg_batch; unsigned int memcg_kmem_skip_account; atomic_t ptrace_bp_refcnt; }; # 1617 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void task_numa_fault(int node, int pages, bool migrated) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_numabalancing_state(bool enabled) { } # 1644 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rt_prio(int prio) { if (__builtin_expect(!!(prio < 100), 0)) return 1; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int rt_task(struct task_struct *p) { return rt_prio(p->prio); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid *task_pid(struct task_struct *task) { return task->pids[PIDTYPE_PID].pid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid *task_tgid(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_PID].pid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid *task_pgrp(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_PGID].pid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct pid *task_session(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_SID].pid; } struct pid_namespace; # 1696 "include/linux/sched.h" pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pid_nr(struct task_struct *tsk) { return tsk->pid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_PID, ns); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pid_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PID, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_tgid_nr(struct task_struct *tsk) { return tsk->tgid; } pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_tgid_vnr(struct task_struct *tsk) { return pid_vnr(task_tgid(tsk)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pgrp_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_SID, ns); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_session_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_SID, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) pid_t task_pgrp_nr(struct task_struct *tsk) { return task_pgrp_nr_ns(tsk, &init_pid_ns); } # 1766 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int pid_alive(struct task_struct *p) { return p->pids[PIDTYPE_PID].pid != ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_global_init(struct task_struct *tsk) { return tsk->pid == 1; } extern struct pid *cad_pid; extern void free_task(struct task_struct *tsk); extern void __put_task_struct(struct task_struct *t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void put_task_struct(struct task_struct *t) { if ((atomic_sub_return(1, &t->usage) == 0)) __put_task_struct(t); } extern void task_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st); extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st); # 1879 "include/linux/sched.h" extern bool task_set_jobctl_pending(struct task_struct *task, unsigned int mask); extern void task_clear_jobctl_trapping(struct task_struct *task); extern void task_clear_jobctl_pending(struct task_struct *task, unsigned int mask); # 1905 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void rcu_copy_process(struct task_struct *p) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tsk_restore_flags(struct task_struct *task, unsigned long orig_flags, unsigned long flags) { task->flags &= ~flags; task->flags |= orig_flags & flags; } extern void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask); extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); # 1939 "include/linux/sched.h" void calc_load_enter_idle(void); void calc_load_exit_idle(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) { return set_cpus_allowed_ptr(p, &new_mask); } # 1961 "include/linux/sched.h" extern unsigned long long __attribute__((no_instrument_function)) sched_clock(void); extern u64 cpu_clock(int cpu); extern u64 local_clock(void); extern u64 sched_clock_cpu(int cpu); extern void sched_clock_init(void); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sched_clock_tick(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sched_clock_idle_sleep_event(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sched_clock_idle_wakeup_event(u64 delta_ns) { } # 2007 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void enable_sched_clock_irqtime(void) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void disable_sched_clock_irqtime(void) {} extern unsigned long long task_sched_runtime(struct task_struct *task); extern void sched_exec(void); extern void sched_clock_idle_sleep_event(void); extern void sched_clock_idle_wakeup_event(u64 delta_ns); extern void idle_task_exit(void); extern void wake_up_idle_cpu(int cpu); extern unsigned int sysctl_sched_latency; extern unsigned int sysctl_sched_min_granularity; extern unsigned int sysctl_sched_wakeup_granularity; extern unsigned int sysctl_sched_child_runs_first; enum sched_tunable_scaling { SCHED_TUNABLESCALING_NONE, SCHED_TUNABLESCALING_LOG, SCHED_TUNABLESCALING_LINEAR, SCHED_TUNABLESCALING_END, }; extern enum sched_tunable_scaling sysctl_sched_tunable_scaling; extern unsigned int sysctl_numa_balancing_scan_delay; extern unsigned int sysctl_numa_balancing_scan_period_min; extern unsigned int sysctl_numa_balancing_scan_period_max; extern unsigned int sysctl_numa_balancing_scan_period_reset; extern unsigned int sysctl_numa_balancing_scan_size; extern unsigned int sysctl_numa_balancing_settle_count; extern unsigned int sysctl_sched_migration_cost; extern unsigned int sysctl_sched_nr_migrate; extern unsigned int sysctl_sched_time_avg; extern unsigned int sysctl_timer_migration; extern unsigned int sysctl_sched_shares_window; int sched_proc_update_handler(struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int get_sysctl_timer_migration(void) { return sysctl_timer_migration; } extern unsigned int sysctl_sched_rt_period; extern int sysctl_sched_rt_runtime; int sched_rt_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern unsigned int sysctl_sched_autogroup_enabled; extern void sched_autogroup_create_attach(struct task_struct *p); extern void sched_autogroup_detach(struct task_struct *p); extern void sched_autogroup_fork(struct signal_struct *sig); extern void sched_autogroup_exit(struct signal_struct *sig); extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m); extern int proc_sched_autogroup_set_nice(struct task_struct *p, int nice); # 2104 "include/linux/sched.h" extern unsigned int sysctl_sched_cfs_bandwidth_slice; extern int rt_mutex_getprio(struct task_struct *p); extern void rt_mutex_setprio(struct task_struct *p, int prio); extern void rt_mutex_adjust_pi(struct task_struct *p); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool tsk_is_pi_blocked(struct task_struct *tsk) { return tsk->pi_blocked_on != ((void *)0); } # 2127 "include/linux/sched.h" extern bool yield_to(struct task_struct *p, bool preempt); extern void set_user_nice(struct task_struct *p, long nice); extern int task_prio(const struct task_struct *p); extern int task_nice(const struct task_struct *p); extern int can_nice(const struct task_struct *p, const int nice); extern int task_curr(const struct task_struct *p); extern int idle_cpu(int cpu); extern int sched_setscheduler(struct task_struct *, int, const struct sched_param *); extern int sched_setscheduler_nocheck(struct task_struct *, int, const struct sched_param *); extern struct task_struct *idle_task(int cpu); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool is_idle_task(const struct task_struct *p) { return p->pid == 0; } extern struct task_struct *curr_task(int cpu); extern void set_curr_task(int cpu, struct task_struct *p); void yield(void); extern struct exec_domain default_exec_domain; union thread_union { struct thread_info thread_info; unsigned long stack[8192/sizeof(long)]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kstack_end(void *addr) { return !(((unsigned long)addr+sizeof(void*)-1) & (8192 -sizeof(void*))); } extern union thread_union init_thread_union; extern struct task_struct init_task; extern struct mm_struct init_mm; extern struct pid_namespace init_pid_ns; # 2190 "include/linux/sched.h" extern struct task_struct *find_task_by_vpid(pid_t nr); extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns); extern void __set_special_pids(struct pid *pid); extern struct user_struct * alloc_uid(kuid_t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct user_struct *get_uid(struct user_struct *u) { atomic_add(1, &u->__count); return u; } extern void free_uid(struct user_struct *); # 1 "arch/arm/include/generated/asm/current.h" 1 # 2206 "include/linux/sched.h" 2 extern void xtime_update(unsigned long ticks); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); extern void wake_up_new_task(struct task_struct *tsk); extern void kick_process(struct task_struct *tsk); extern void sched_fork(struct task_struct *p); extern void sched_dead(struct task_struct *p); extern void proc_caches_init(void); extern void flush_signals(struct task_struct *); extern void __flush_signals(struct task_struct *); extern void ignore_signals(struct task_struct *); extern void flush_signal_handlers(struct task_struct *, int force_default); extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) { unsigned long flags; int ret; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _raw_spin_lock_irqsave(spinlock_check(&tsk->sighand->siglock)); } while (0); } while (0); ret = dequeue_signal(tsk, mask, info); spin_unlock_irqrestore(&tsk->sighand->siglock, flags); return ret; } extern void block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask); extern void unblock_all_signals(void); extern void release_task(struct task_struct * p); extern int send_sig_info(int, struct siginfo *, struct task_struct *); extern int force_sigsegv(int, struct task_struct *); extern int force_sig_info(int, struct siginfo *, struct task_struct *); extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *, const struct cred *, u32); extern int kill_pgrp(struct pid *pid, int sig, int priv); extern int kill_pid(struct pid *pid, int sig, int priv); extern int kill_proc_info(int, struct siginfo *, pid_t); extern __attribute__((warn_unused_result)) bool do_notify_parent(struct task_struct *, int); extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); extern void force_sig(int, struct task_struct *); extern int send_sig(int, struct task_struct *, int); extern int zap_other_threads(struct task_struct *p); extern struct sigqueue *sigqueue_alloc(void); extern void sigqueue_free(struct sigqueue *); extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void restore_saved_sigmask(void) { if (test_and_clear_restore_sigmask()) __set_current_blocked(&(current_thread_info()->task)->saved_sigmask); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) sigset_t *sigmask_to_save(void) { sigset_t *res = &(current_thread_info()->task)->blocked; if (__builtin_expect(!!(test_restore_sigmask()), 0)) res = &(current_thread_info()->task)->saved_sigmask; return res; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kill_cad_pid(int sig, int priv) { return kill_pid(cad_pid, sig, priv); } # 2291 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int on_sig_stack(unsigned long sp) { return sp > (current_thread_info()->task)->sas_ss_sp && sp - (current_thread_info()->task)->sas_ss_sp <= (current_thread_info()->task)->sas_ss_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sas_ss_flags(unsigned long sp) { return ((current_thread_info()->task)->sas_ss_size == 0 ? 2 : on_sig_stack(sp) ? 1 : 0); } extern struct mm_struct * mm_alloc(void); extern void __mmdrop(struct mm_struct *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mmdrop(struct mm_struct * mm) { if (__builtin_expect(!!((atomic_sub_return(1, &mm->mm_count) == 0)), 0)) __mmdrop(mm); } extern void mmput(struct mm_struct *); extern struct mm_struct *get_task_mm(struct task_struct *task); extern struct mm_struct *mm_access(struct task_struct *task, unsigned int mode); extern void mm_release(struct task_struct *, struct mm_struct *); extern struct mm_struct *dup_mm(struct task_struct *tsk); extern int copy_thread(unsigned long, unsigned long, unsigned long, struct task_struct *); extern void flush_thread(void); extern void exit_thread(void); extern void exit_files(struct task_struct *); extern void __cleanup_sighand(struct sighand_struct *); extern void exit_itimers(struct signal_struct *); extern void flush_itimer_signals(void); extern void do_group_exit(int); extern int allow_signal(int); extern int disallow_signal(int); extern int do_execve(const char *, const char * const *, const char * const *); extern long do_fork(unsigned long, unsigned long, unsigned long, int *, int *); struct task_struct *fork_idle(int); extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); extern void set_task_comm(struct task_struct *tsk, char *from); extern char *get_task_comm(char *to, struct task_struct *tsk); void scheduler_ipi(void); extern unsigned long wait_task_inactive(struct task_struct *, long match_state); # 2380 "include/linux/sched.h" extern bool current_is_single_threaded(void); # 2392 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_nr_threads(struct task_struct *tsk) { return tsk->signal->nr_threads; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool thread_group_leader(struct task_struct *p) { return p->exit_signal >= 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int has_group_leader_pid(struct task_struct *p) { return p->pid == p->tgid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int same_thread_group(struct task_struct *p1, struct task_struct *p2) { return p1->tgid == p2->tgid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct task_struct *next_thread(const struct task_struct *p) { return ({typeof (*p->thread_group.next) *__ptr = (typeof (*p->thread_group.next) *)p->thread_group.next; ({ const typeof( ((struct task_struct *)0)->thread_group ) *__mptr = ((typeof(p->thread_group.next))({ typeof(*(__ptr)) *_________p1 = (typeof(*(__ptr))* )(*(volatile typeof((__ptr)) *)&((__ptr))); do { } while (0); ; do { } while(0); ((typeof(*(__ptr)) *)(_________p1)); })); (struct task_struct *)( (char *)__mptr - __builtin_offsetof(struct task_struct,thread_group) );}); }) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int thread_group_empty(struct task_struct *p) { return list_empty(&p->thread_group); } # 2443 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void task_lock(struct task_struct *p) { spin_lock(&p->alloc_lock); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void task_unlock(struct task_struct *p) { spin_unlock(&p->alloc_lock); } extern struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, unsigned long *flags); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct sighand_struct *lock_task_sighand(struct task_struct *tsk, unsigned long *flags) { struct sighand_struct *ret; ret = __lock_task_sighand(tsk, flags); (void)(ret); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void unlock_task_sighand(struct task_struct *tsk, unsigned long *flags) { spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void threadgroup_change_begin(struct task_struct *tsk) { down_read(&tsk->signal->group_rwsem); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void threadgroup_change_end(struct task_struct *tsk) { up_read(&tsk->signal->group_rwsem); } # 2502 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void threadgroup_lock(struct task_struct *tsk) { mutex_lock(&tsk->signal->cred_guard_mutex); down_write(&tsk->signal->group_rwsem); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void threadgroup_unlock(struct task_struct *tsk) { up_write(&tsk->signal->group_rwsem); mutex_unlock(&tsk->signal->cred_guard_mutex); } # 2535 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void setup_thread_stack(struct task_struct *p, struct task_struct *org) { *((struct thread_info *)(p)->stack) = *((struct thread_info *)(org)->stack); ((struct thread_info *)(p)->stack)->task = p; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long *end_of_stack(struct task_struct *p) { return (unsigned long *)(((struct thread_info *)(p)->stack) + 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int object_is_on_stack(void *obj) { void *stack = (((current_thread_info()->task))->stack); return (obj >= stack) && (obj < (stack + 8192)); } extern void thread_info_cache_init(void); # 2573 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_tsk_thread_flag(struct task_struct *tsk, int flag) { set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_tsk_thread_flag(struct task_struct *tsk, int flag) { clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_tsk_need_resched(struct task_struct *tsk) { set_tsk_thread_flag(tsk,1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int test_tsk_need_resched(struct task_struct *tsk) { return __builtin_expect(!!(test_tsk_thread_flag(tsk,1)), 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int restart_syscall(void) { set_tsk_thread_flag((current_thread_info()->task), 0); return -513; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int signal_pending(struct task_struct *p) { return __builtin_expect(!!(test_tsk_thread_flag(p,0)), 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __fatal_signal_pending(struct task_struct *p) { return __builtin_expect(!!(sigismember(&p->pending.signal, 9)), 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fatal_signal_pending(struct task_struct *p) { return signal_pending(p) && __fatal_signal_pending(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int signal_pending_state(long state, struct task_struct *p) { if (!(state & (1 | 128))) return 0; if (!signal_pending(p)) return 0; return (state & 1) || __fatal_signal_pending(p); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int need_resched(void) { return __builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 1)), 0); } # 2656 "include/linux/sched.h" extern int _cond_resched(void); extern int __cond_resched_lock(spinlock_t *lock); # 2676 "include/linux/sched.h" extern int __cond_resched_softirq(void); # 2688 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int spin_needbreak(spinlock_t *lock) { return 0; } void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times); void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void thread_group_cputime_init(struct signal_struct *sig) { do { *(&sig->cputimer.lock) = (raw_spinlock_t) { .raw_lock = { { 0 } }, }; } while (0); } extern void recalc_sigpending_and_wake(struct task_struct *t); extern void recalc_sigpending(void); extern void signal_wake_up_state(struct task_struct *t, unsigned int state); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void signal_wake_up(struct task_struct *t, bool resume) { signal_wake_up_state(t, resume ? 128 : 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ptrace_signal_wake_up(struct task_struct *t, bool resume) { signal_wake_up_state(t, resume ? 8 : 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int task_cpu(const struct task_struct *p) { return ((struct thread_info *)(p)->stack)->cpu; } extern void set_task_cpu(struct task_struct *p, unsigned int cpu); # 2753 "include/linux/sched.h" extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); extern long sched_getaffinity(pid_t pid, struct cpumask *mask); extern void normalize_rt_tasks(void); extern struct task_group root_task_group; extern struct task_group *sched_create_group(struct task_group *parent); extern void sched_destroy_group(struct task_group *tg); extern void sched_move_task(struct task_struct *tsk); extern int sched_group_set_shares(struct task_group *tg, unsigned long shares); extern unsigned long sched_group_shares(struct task_group *tg); extern int sched_group_set_rt_runtime(struct task_group *tg, long rt_runtime_us); extern long sched_group_rt_runtime(struct task_group *tg); extern int sched_group_set_rt_period(struct task_group *tg, long rt_period_us); extern long sched_group_rt_period(struct task_group *tg); extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk); extern int task_can_switch_user(struct user_struct *up, struct task_struct *tsk); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void add_rchar(struct task_struct *tsk, ssize_t amt) { tsk->ioac.rchar += amt; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void add_wchar(struct task_struct *tsk, ssize_t amt) { tsk->ioac.wchar += amt; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inc_syscr(struct task_struct *tsk) { tsk->ioac.syscr++; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inc_syscw(struct task_struct *tsk) { tsk->ioac.syscw++; } # 2826 "include/linux/sched.h" extern void mm_update_next_owner(struct mm_struct *mm); extern void mm_init_owner(struct mm_struct *mm, struct task_struct *p); # 2838 "include/linux/sched.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long task_rlimit(const struct task_struct *tsk, unsigned int limit) { return (*(volatile typeof(tsk->signal->rlim[limit].rlim_cur) *)&(tsk->signal->rlim[limit].rlim_cur)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long task_rlimit_max(const struct task_struct *tsk, unsigned int limit) { return (*(volatile typeof(tsk->signal->rlim[limit].rlim_max) *)&(tsk->signal->rlim[limit].rlim_max)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long rlimit(unsigned int limit) { return task_rlimit((current_thread_info()->task), limit); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long rlimit_max(unsigned int limit) { return task_rlimit_max((current_thread_info()->task), limit); } # 5 "include/linux/blkdev.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/major.h" 1 # 9 "include/linux/blkdev.h" 2 # 1 "include/linux/genhd.h" 1 # 13 "include/linux/genhd.h" # 1 "include/linux/kdev_t.h" 1 # 1 "include/uapi/linux/kdev_t.h" 1 # 5 "include/linux/kdev_t.h" 2 # 23 "include/linux/kdev_t.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int old_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < 256 && ((unsigned int) ((dev) & ((1U << 20) - 1))) < 256; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u16 old_encode_dev(dev_t dev) { return (((unsigned int) ((dev) >> 20)) << 8) | ((unsigned int) ((dev) & ((1U << 20) - 1))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dev_t old_decode_dev(u16 val) { return ((((val >> 8) & 255) << 20) | (val & 255)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int new_valid_dev(dev_t dev) { return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 new_encode_dev(dev_t dev) { unsigned major = ((unsigned int) ((dev) >> 20)); unsigned minor = ((unsigned int) ((dev) & ((1U << 20) - 1))); return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dev_t new_decode_dev(u32 dev) { unsigned major = (dev & 0xfff00) >> 8; unsigned minor = (dev & 0xff) | ((dev >> 12) & 0xfff00); return (((major) << 20) | (minor)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int huge_valid_dev(dev_t dev) { return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u64 huge_encode_dev(dev_t dev) { return new_encode_dev(dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dev_t huge_decode_dev(u64 dev) { return new_decode_dev(dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sysv_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < (1<<14) && ((unsigned int) ((dev) & ((1U << 20) - 1))) < (1<<18); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 sysv_encode_dev(dev_t dev) { return ((unsigned int) ((dev) & ((1U << 20) - 1))) | (((unsigned int) ((dev) >> 20)) << 18); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned sysv_major(u32 dev) { return (dev >> 18) & 0x3fff; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned sysv_minor(u32 dev) { return dev & 0x3ffff; } # 14 "include/linux/genhd.h" 2 # 1 "include/linux/slab.h" 1 # 121 "include/linux/slab.h" struct mem_cgroup; void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) kmem_cache_init(void); int slab_is_available(void); struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, unsigned long, void (*)(void *)); struct kmem_cache * kmem_cache_create_memcg(struct mem_cgroup *, const char *, size_t, size_t, unsigned long, void (*)(void *), struct kmem_cache *); void kmem_cache_destroy(struct kmem_cache *); int kmem_cache_shrink(struct kmem_cache *); void kmem_cache_free(struct kmem_cache *, void *); # 206 "include/linux/slab.h" struct memcg_cache_params { bool is_root_cache; union { struct kmem_cache *memcg_caches[0]; struct { struct mem_cgroup *memcg; struct list_head list; struct kmem_cache *root_cache; bool dead; atomic_t nr_pages; struct work_struct destroy; }; }; }; int memcg_update_all_caches(int num_memcgs); struct seq_file; int cache_show(struct kmem_cache *s, struct seq_file *m); void print_slabinfo_header(struct seq_file *m); void * __attribute__((warn_unused_result)) __krealloc(const void *, size_t, gfp_t); void * __attribute__((warn_unused_result)) krealloc(const void *, size_t, gfp_t); void kfree(const void *); void kzfree(const void *); size_t ksize(const void *); # 256 "include/linux/slab.h" # 1 "include/linux/slub_def.h" 1 # 15 "include/linux/slub_def.h" # 1 "include/linux/kmemleak.h" 1 # 61 "include/linux/kmemleak.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_init(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_alloc(const void *ptr, size_t size, int min_count, gfp_t gfp) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_alloc_recursive(const void *ptr, size_t size, int min_count, unsigned long flags, gfp_t gfp) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_alloc_percpu(const void *ptr, size_t size) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_free(const void *ptr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_free_part(const void *ptr, size_t size) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_free_recursive(const void *ptr, unsigned long flags) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_free_percpu(const void *ptr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_not_leak(const void *ptr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_ignore(const void *ptr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_erase(void **ptr) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmemleak_no_scan(const void *ptr) { } # 16 "include/linux/slub_def.h" 2 enum stat_item { ALLOC_FASTPATH, ALLOC_SLOWPATH, FREE_FASTPATH, FREE_SLOWPATH, FREE_FROZEN, FREE_ADD_PARTIAL, FREE_REMOVE_PARTIAL, ALLOC_FROM_PARTIAL, ALLOC_SLAB, ALLOC_REFILL, ALLOC_NODE_MISMATCH, FREE_SLAB, CPUSLAB_FLUSH, DEACTIVATE_FULL, DEACTIVATE_EMPTY, DEACTIVATE_TO_HEAD, DEACTIVATE_TO_TAIL, DEACTIVATE_REMOTE_FREES, DEACTIVATE_BYPASS, ORDER_FALLBACK, CMPXCHG_DOUBLE_CPU_FAIL, CMPXCHG_DOUBLE_FAIL, CPU_PARTIAL_ALLOC, CPU_PARTIAL_FREE, CPU_PARTIAL_NODE, CPU_PARTIAL_DRAIN, NR_SLUB_STAT_ITEMS }; struct kmem_cache_cpu { void **freelist; unsigned long tid; struct page *page; struct page *partial; }; struct kmem_cache_node { spinlock_t list_lock; unsigned long nr_partial; struct list_head partial; atomic_long_t nr_slabs; atomic_long_t total_objects; struct list_head full; }; struct kmem_cache_order_objects { unsigned long x; }; struct kmem_cache { struct kmem_cache_cpu *cpu_slab; unsigned long flags; unsigned long min_partial; int size; int object_size; int offset; int cpu_partial; struct kmem_cache_order_objects oo; struct kmem_cache_order_objects max; struct kmem_cache_order_objects min; gfp_t allocflags; int refcount; void (*ctor)(void *); int inuse; int align; int reserved; const char *name; struct list_head list; struct kobject kobj; struct memcg_cache_params *memcg_params; int max_attr_size; # 115 "include/linux/slub_def.h" struct kmem_cache_node *node[(1 << 0)]; }; # 153 "include/linux/slub_def.h" extern struct kmem_cache *kmalloc_caches[(12 + 2)]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) int kmalloc_index(size_t size) { if (!size) return 0; if (size <= (1 << 6)) return ( __builtin_constant_p((1 << 6)) ? ( ((1 << 6)) < 1 ? ____ilog2_NaN() : ((1 << 6)) & (1ULL << 63) ? 63 : ((1 << 6)) & (1ULL << 62) ? 62 : ((1 << 6)) & (1ULL << 61) ? 61 : ((1 << 6)) & (1ULL << 60) ? 60 : ((1 << 6)) & (1ULL << 59) ? 59 : ((1 << 6)) & (1ULL << 58) ? 58 : ((1 << 6)) & (1ULL << 57) ? 57 : ((1 << 6)) & (1ULL << 56) ? 56 : ((1 << 6)) & (1ULL << 55) ? 55 : ((1 << 6)) & (1ULL << 54) ? 54 : ((1 << 6)) & (1ULL << 53) ? 53 : ((1 << 6)) & (1ULL << 52) ? 52 : ((1 << 6)) & (1ULL << 51) ? 51 : ((1 << 6)) & (1ULL << 50) ? 50 : ((1 << 6)) & (1ULL << 49) ? 49 : ((1 << 6)) & (1ULL << 48) ? 48 : ((1 << 6)) & (1ULL << 47) ? 47 : ((1 << 6)) & (1ULL << 46) ? 46 : ((1 << 6)) & (1ULL << 45) ? 45 : ((1 << 6)) & (1ULL << 44) ? 44 : ((1 << 6)) & (1ULL << 43) ? 43 : ((1 << 6)) & (1ULL << 42) ? 42 : ((1 << 6)) & (1ULL << 41) ? 41 : ((1 << 6)) & (1ULL << 40) ? 40 : ((1 << 6)) & (1ULL << 39) ? 39 : ((1 << 6)) & (1ULL << 38) ? 38 : ((1 << 6)) & (1ULL << 37) ? 37 : ((1 << 6)) & (1ULL << 36) ? 36 : ((1 << 6)) & (1ULL << 35) ? 35 : ((1 << 6)) & (1ULL << 34) ? 34 : ((1 << 6)) & (1ULL << 33) ? 33 : ((1 << 6)) & (1ULL << 32) ? 32 : ((1 << 6)) & (1ULL << 31) ? 31 : ((1 << 6)) & (1ULL << 30) ? 30 : ((1 << 6)) & (1ULL << 29) ? 29 : ((1 << 6)) & (1ULL << 28) ? 28 : ((1 << 6)) & (1ULL << 27) ? 27 : ((1 << 6)) & (1ULL << 26) ? 26 : ((1 << 6)) & (1ULL << 25) ? 25 : ((1 << 6)) & (1ULL << 24) ? 24 : ((1 << 6)) & (1ULL << 23) ? 23 : ((1 << 6)) & (1ULL << 22) ? 22 : ((1 << 6)) & (1ULL << 21) ? 21 : ((1 << 6)) & (1ULL << 20) ? 20 : ((1 << 6)) & (1ULL << 19) ? 19 : ((1 << 6)) & (1ULL << 18) ? 18 : ((1 << 6)) & (1ULL << 17) ? 17 : ((1 << 6)) & (1ULL << 16) ? 16 : ((1 << 6)) & (1ULL << 15) ? 15 : ((1 << 6)) & (1ULL << 14) ? 14 : ((1 << 6)) & (1ULL << 13) ? 13 : ((1 << 6)) & (1ULL << 12) ? 12 : ((1 << 6)) & (1ULL << 11) ? 11 : ((1 << 6)) & (1ULL << 10) ? 10 : ((1 << 6)) & (1ULL << 9) ? 9 : ((1 << 6)) & (1ULL << 8) ? 8 : ((1 << 6)) & (1ULL << 7) ? 7 : ((1 << 6)) & (1ULL << 6) ? 6 : ((1 << 6)) & (1ULL << 5) ? 5 : ((1 << 6)) & (1ULL << 4) ? 4 : ((1 << 6)) & (1ULL << 3) ? 3 : ((1 << 6)) & (1ULL << 2) ? 2 : ((1 << 6)) & (1ULL << 1) ? 1 : ((1 << 6)) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof((1 << 6)) <= 4) ? __ilog2_u32((1 << 6)) : __ilog2_u64((1 << 6)) ); if ((1 << 6) <= 32 && size > 64 && size <= 96) return 1; if ((1 << 6) <= 64 && size > 128 && size <= 192) return 2; if (size <= 8) return 3; if (size <= 16) return 4; if (size <= 32) return 5; if (size <= 64) return 6; if (size <= 128) return 7; if (size <= 256) return 8; if (size <= 512) return 9; if (size <= 1024) return 10; if (size <= 2 * 1024) return 11; if (size <= 4 * 1024) return 12; if (size <= 8 * 1024) return 13; if (size <= 16 * 1024) return 14; if (size <= 32 * 1024) return 15; if (size <= 64 * 1024) return 16; if (size <= 128 * 1024) return 17; if (size <= 256 * 1024) return 18; if (size <= 512 * 1024) return 19; if (size <= 1024 * 1024) return 20; if (size <= 2 * 1024 * 1024) return 21; do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/slub_def.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "195" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); return -1; # 205 "include/linux/slub_def.h" } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) struct kmem_cache *kmalloc_slab(size_t size) { int index = kmalloc_index(size); if (index == 0) return ((void *)0); return kmalloc_caches[index]; } void *kmem_cache_alloc(struct kmem_cache *, gfp_t); void *__kmalloc(size_t size, gfp_t flags); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void * kmalloc_order(size_t size, gfp_t flags, unsigned int order) { void *ret; flags |= ((( gfp_t)0x4000u) | (( gfp_t)0x100000u)); ret = (void *) __get_free_pages(flags, order); kmemleak_alloc(ret, size, 1, flags); return ret; } extern bool verify_mem_not_deleted(const void *x); # 251 "include/linux/slub_def.h" extern void * kmem_cache_alloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size); extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order); # 268 "include/linux/slub_def.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void *kmalloc_large(size_t size, gfp_t flags) { unsigned int order = ( __builtin_constant_p(size) ? ( ((size) == 0UL) ? 32 - 12 : (((size) < (1UL << 12)) ? 0 : ( __builtin_constant_p((size) - 1) ? ( ((size) - 1) < 1 ? ____ilog2_NaN() : ((size) - 1) & (1ULL << 63) ? 63 : ((size) - 1) & (1ULL << 62) ? 62 : ((size) - 1) & (1ULL << 61) ? 61 : ((size) - 1) & (1ULL << 60) ? 60 : ((size) - 1) & (1ULL << 59) ? 59 : ((size) - 1) & (1ULL << 58) ? 58 : ((size) - 1) & (1ULL << 57) ? 57 : ((size) - 1) & (1ULL << 56) ? 56 : ((size) - 1) & (1ULL << 55) ? 55 : ((size) - 1) & (1ULL << 54) ? 54 : ((size) - 1) & (1ULL << 53) ? 53 : ((size) - 1) & (1ULL << 52) ? 52 : ((size) - 1) & (1ULL << 51) ? 51 : ((size) - 1) & (1ULL << 50) ? 50 : ((size) - 1) & (1ULL << 49) ? 49 : ((size) - 1) & (1ULL << 48) ? 48 : ((size) - 1) & (1ULL << 47) ? 47 : ((size) - 1) & (1ULL << 46) ? 46 : ((size) - 1) & (1ULL << 45) ? 45 : ((size) - 1) & (1ULL << 44) ? 44 : ((size) - 1) & (1ULL << 43) ? 43 : ((size) - 1) & (1ULL << 42) ? 42 : ((size) - 1) & (1ULL << 41) ? 41 : ((size) - 1) & (1ULL << 40) ? 40 : ((size) - 1) & (1ULL << 39) ? 39 : ((size) - 1) & (1ULL << 38) ? 38 : ((size) - 1) & (1ULL << 37) ? 37 : ((size) - 1) & (1ULL << 36) ? 36 : ((size) - 1) & (1ULL << 35) ? 35 : ((size) - 1) & (1ULL << 34) ? 34 : ((size) - 1) & (1ULL << 33) ? 33 : ((size) - 1) & (1ULL << 32) ? 32 : ((size) - 1) & (1ULL << 31) ? 31 : ((size) - 1) & (1ULL << 30) ? 30 : ((size) - 1) & (1ULL << 29) ? 29 : ((size) - 1) & (1ULL << 28) ? 28 : ((size) - 1) & (1ULL << 27) ? 27 : ((size) - 1) & (1ULL << 26) ? 26 : ((size) - 1) & (1ULL << 25) ? 25 : ((size) - 1) & (1ULL << 24) ? 24 : ((size) - 1) & (1ULL << 23) ? 23 : ((size) - 1) & (1ULL << 22) ? 22 : ((size) - 1) & (1ULL << 21) ? 21 : ((size) - 1) & (1ULL << 20) ? 20 : ((size) - 1) & (1ULL << 19) ? 19 : ((size) - 1) & (1ULL << 18) ? 18 : ((size) - 1) & (1ULL << 17) ? 17 : ((size) - 1) & (1ULL << 16) ? 16 : ((size) - 1) & (1ULL << 15) ? 15 : ((size) - 1) & (1ULL << 14) ? 14 : ((size) - 1) & (1ULL << 13) ? 13 : ((size) - 1) & (1ULL << 12) ? 12 : ((size) - 1) & (1ULL << 11) ? 11 : ((size) - 1) & (1ULL << 10) ? 10 : ((size) - 1) & (1ULL << 9) ? 9 : ((size) - 1) & (1ULL << 8) ? 8 : ((size) - 1) & (1ULL << 7) ? 7 : ((size) - 1) & (1ULL << 6) ? 6 : ((size) - 1) & (1ULL << 5) ? 5 : ((size) - 1) & (1ULL << 4) ? 4 : ((size) - 1) & (1ULL << 3) ? 3 : ((size) - 1) & (1ULL << 2) ? 2 : ((size) - 1) & (1ULL << 1) ? 1 : ((size) - 1) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof((size) - 1) <= 4) ? __ilog2_u32((size) - 1) : __ilog2_u64((size) - 1) ) - 12 + 1) ) : __get_order(size) ); return kmalloc_order_trace(size, flags, order); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { if (size > (2 * ((1UL) << 12))) return kmalloc_large(size, flags); if (!(flags & ( gfp_t)0)) { struct kmem_cache *s = kmalloc_slab(size); if (!s) return ((void *)16); return kmem_cache_alloc_trace(s, flags, size); } } return __kmalloc(size, flags); } # 257 "include/linux/slab.h" 2 # 314 "include/linux/slab.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kmalloc_array(size_t n, size_t size, gfp_t flags) { if (size != 0 && n > (~(size_t)0) / size) return ((void *)0); return __kmalloc(n * size, flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kcalloc(size_t n, size_t size, gfp_t flags) { return kmalloc_array(n, size, flags | (( gfp_t)0x8000u)); } # 343 "include/linux/slab.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kmalloc_node(size_t size, gfp_t flags, int node) { return kmalloc(size, flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *__kmalloc_node(size_t size, gfp_t flags, int node) { return __kmalloc(size, flags); } void *kmem_cache_alloc(struct kmem_cache *, gfp_t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int node) { return kmem_cache_alloc(cachep, flags); } # 373 "include/linux/slab.h" extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long); # 412 "include/linux/slab.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags) { return kmem_cache_alloc(k, flags | (( gfp_t)0x8000u)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | (( gfp_t)0x8000u)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *kzalloc_node(size_t size, gfp_t flags, int node) { return kmalloc_node(size, flags | (( gfp_t)0x8000u), node); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int kmem_cache_size(struct kmem_cache *s) { return s->object_size; } void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) kmem_cache_init_late(void); # 16 "include/linux/genhd.h" 2 # 24 "include/linux/genhd.h" extern struct device_type part_type; extern struct kobject *block_depr; extern struct class block_class; enum { DOS_EXTENDED_PARTITION = 5, LINUX_EXTENDED_PARTITION = 0x85, WIN98_EXTENDED_PARTITION = 0x0f, SUN_WHOLE_DISK = DOS_EXTENDED_PARTITION, LINUX_SWAP_PARTITION = 0x82, LINUX_DATA_PARTITION = 0x83, LINUX_LVM_PARTITION = 0x8e, LINUX_RAID_PARTITION = 0xfd, SOLARIS_X86_PARTITION = LINUX_SWAP_PARTITION, NEW_SOLARIS_X86_PARTITION = 0xbf, DM6_AUX1PARTITION = 0x51, DM6_AUX3PARTITION = 0x53, DM6_PARTITION = 0x54, EZD_PARTITION = 0x55, FREEBSD_PARTITION = 0xa5, OPENBSD_PARTITION = 0xa6, NETBSD_PARTITION = 0xa9, BSDI_PARTITION = 0xb7, MINIX_PARTITION = 0x81, UNIXWARE_PARTITION = 0x63, }; # 65 "include/linux/genhd.h" # 1 "include/linux/fs.h" 1 # 1 "include/linux/dcache.h" 1 # 1 "include/linux/rculist_bl.h" 1 # 1 "include/linux/list_bl.h" 1 # 33 "include/linux/list_bl.h" struct hlist_bl_head { struct hlist_bl_node *first; }; struct hlist_bl_node { struct hlist_bl_node *next, **pprev; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hlist_bl_unhashed(const struct hlist_bl_node *h) { return !h->pprev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct hlist_bl_node *hlist_bl_first(struct hlist_bl_head *h) { return (struct hlist_bl_node *) ((unsigned long)h->first & ~1UL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_set_first(struct hlist_bl_head *h, struct hlist_bl_node *n) { do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/list_bl.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "65" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) != 1UL), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/list_bl.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "67" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0) ; h->first = (struct hlist_bl_node *)((unsigned long)n | 1UL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hlist_bl_empty(const struct hlist_bl_head *h) { return !((unsigned long)h->first & ~1UL); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_add_head(struct hlist_bl_node *n, struct hlist_bl_head *h) { struct hlist_bl_node *first = hlist_bl_first(h); n->next = first; if (first) first->pprev = &n->next; n->pprev = &h->first; hlist_bl_set_first(h, n); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __hlist_bl_del(struct hlist_bl_node *n) { struct hlist_bl_node *next = n->next; struct hlist_bl_node **pprev = n->pprev; do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/list_bl.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "93" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); *pprev = (struct hlist_bl_node *) ((unsigned long)next | ((unsigned long)*pprev & 1UL)); if (next) next->pprev = pprev; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_del(struct hlist_bl_node *n) { __hlist_bl_del(n); n->next = ((void *) 0x00100100 + 0); n->pprev = ((void *) 0x00200200 + 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_del_init(struct hlist_bl_node *n) { if (!hlist_bl_unhashed(n)) { __hlist_bl_del(n); INIT_HLIST_BL_NODE(n); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_lock(struct hlist_bl_head *b) { bit_spin_lock(0, (unsigned long *)b); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_unlock(struct hlist_bl_head *b) { __bit_spin_unlock(0, (unsigned long *)b); } # 8 "include/linux/rculist_bl.h" 2 static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_set_first_rcu(struct hlist_bl_head *h, struct hlist_bl_node *n) { do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/rculist_bl.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "13" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) != 1UL), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/rculist_bl.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "15" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0) ; do { __asm__ __volatile__ ("dmb" : : : "memory"); ((h->first)) = (typeof(*((struct hlist_bl_node *)((unsigned long)n | 1UL))) *)(((struct hlist_bl_node *)((unsigned long)n | 1UL))); } while (0) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct hlist_bl_node *hlist_bl_first_rcu(struct hlist_bl_head *h) { return (struct hlist_bl_node *) ((unsigned long)({ typeof(*(h->first)) *_________p1 = (typeof(*(h->first))* )(*(volatile typeof((h->first)) *)&((h->first))); do { } while (0); ; do { } while(0); ((typeof(*(h->first)) *)(_________p1)); }) & ~1UL); } # 46 "include/linux/rculist_bl.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_del_init_rcu(struct hlist_bl_node *n) { if (!hlist_bl_unhashed(n)) { __hlist_bl_del(n); n->pprev = ((void *)0); } } # 73 "include/linux/rculist_bl.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_del_rcu(struct hlist_bl_node *n) { __hlist_bl_del(n); n->pprev = ((void *) 0x00200200 + 0); } # 98 "include/linux/rculist_bl.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hlist_bl_add_head_rcu(struct hlist_bl_node *n, struct hlist_bl_head *h) { struct hlist_bl_node *first; first = hlist_bl_first(h); n->next = first; if (first) first->pprev = &n->next; n->pprev = &h->first; hlist_bl_set_first_rcu(h, n); } # 8 "include/linux/dcache.h" 2 struct nameidata; struct path; struct vfsmount; # 42 "include/linux/dcache.h" struct qstr { union { struct { u32 hash; u32 len;; }; u64 hash_len; }; const unsigned char *name; }; struct dentry_stat_t { int nr_dentry; int nr_unused; int age_limit; int want_pages; int dummy[2]; }; extern struct dentry_stat_t dentry_stat; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long partial_name_hash(unsigned long c, unsigned long prevhash) { return (prevhash + (c << 4) + (c >> 4)) * 11; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long end_name_hash(unsigned long hash) { return (unsigned int) hash; } extern unsigned int full_name_hash(const unsigned char *, unsigned int); # 103 "include/linux/dcache.h" struct dentry { unsigned int d_flags; seqcount_t d_seq; struct hlist_bl_node d_hash; struct dentry *d_parent; struct qstr d_name; struct inode *d_inode; unsigned char d_iname[36]; unsigned int d_count; spinlock_t d_lock; const struct dentry_operations *d_op; struct super_block *d_sb; unsigned long d_time; void *d_fsdata; struct list_head d_lru; union { struct list_head d_child; struct callback_head d_rcu; } d_u; struct list_head d_subdirs; struct hlist_node d_alias; }; enum dentry_d_lock_class { DENTRY_D_LOCK_NORMAL, DENTRY_D_LOCK_NESTED }; struct dentry_operations { int (*d_revalidate)(struct dentry *, unsigned int); int (*d_hash)(const struct dentry *, const struct inode *, struct qstr *); int (*d_compare)(const struct dentry *, const struct inode *, const struct dentry *, const struct inode *, unsigned int, const char *, const struct qstr *); int (*d_delete)(const struct dentry *); void (*d_release)(struct dentry *); void (*d_prune)(struct dentry *); void (*d_iput)(struct dentry *, struct inode *); char *(*d_dname)(struct dentry *, char *, int); struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(struct dentry *, bool); } __attribute__((__aligned__((1 << 6)))); # 210 "include/linux/dcache.h" extern seqlock_t rename_lock; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int dname_external(struct dentry *dentry) { return dentry->d_name.name != dentry->d_iname; } extern void d_instantiate(struct dentry *, struct inode *); extern struct dentry * d_instantiate_unique(struct dentry *, struct inode *); extern struct dentry * d_materialise_unique(struct dentry *, struct inode *); extern void __d_drop(struct dentry *dentry); extern void d_drop(struct dentry *dentry); extern void d_delete(struct dentry *); extern void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op); extern struct dentry * d_alloc(struct dentry *, const struct qstr *); extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *); extern struct dentry * d_splice_alias(struct inode *, struct dentry *); extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); extern struct dentry *d_find_any_alias(struct inode *inode); extern struct dentry * d_obtain_alias(struct inode *); extern void shrink_dcache_sb(struct super_block *); extern void shrink_dcache_parent(struct dentry *); extern void shrink_dcache_for_umount(struct super_block *); extern int d_invalidate(struct dentry *); extern struct dentry * d_make_root(struct inode *); extern void d_genocide(struct dentry *); extern struct dentry *d_find_alias(struct inode *); extern void d_prune_aliases(struct inode *); extern int have_submounts(struct dentry *); extern void d_rehash(struct dentry *); # 266 "include/linux/dcache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void d_add(struct dentry *entry, struct inode *inode) { d_instantiate(entry, inode); d_rehash(entry); } # 280 "include/linux/dcache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct dentry *d_add_unique(struct dentry *entry, struct inode *inode) { struct dentry *res; res = d_instantiate_unique(entry, inode); d_rehash(res != ((void *)0) ? res : entry); return res; } extern void dentry_update_name_case(struct dentry *, struct qstr *); extern void d_move(struct dentry *, struct dentry *); extern struct dentry *d_ancestor(struct dentry *, struct dentry *); extern struct dentry *d_lookup(struct dentry *, struct qstr *); extern struct dentry *d_hash_and_lookup(struct dentry *, struct qstr *); extern struct dentry *__d_lookup(struct dentry *, struct qstr *); extern struct dentry *__d_lookup_rcu(const struct dentry *parent, const struct qstr *name, unsigned *seq, struct inode *inode); # 312 "include/linux/dcache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __d_rcu_to_refcount(struct dentry *dentry, unsigned seq) { int ret = 0; do { if (__builtin_expect(!!(!arch_spin_is_locked(&(&(&dentry->d_lock)->rlock)->raw_lock)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/dcache.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "316" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (!read_seqcount_retry(&dentry->d_seq, seq)) { ret = 1; dentry->d_count++; } return ret; } extern int d_validate(struct dentry *, struct dentry *); extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); extern char *__d_path(const struct path *, const struct path *, char *, int); extern char *d_absolute_path(const struct path *, char *, int); extern char *d_path(const struct path *, char *, int); extern char *d_path_with_unreachable(const struct path *, char *, int); extern char *dentry_path_raw(struct dentry *, char *, int); extern char *dentry_path(struct dentry *, char *, int); # 350 "include/linux/dcache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct dentry *dget_dlock(struct dentry *dentry) { if (dentry) dentry->d_count++; return dentry; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct dentry *dget(struct dentry *dentry) { if (dentry) { spin_lock(&dentry->d_lock); dget_dlock(dentry); spin_unlock(&dentry->d_lock); } return dentry; } extern struct dentry *dget_parent(struct dentry *dentry); # 376 "include/linux/dcache.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int d_unhashed(struct dentry *dentry) { return hlist_bl_unhashed(&dentry->d_hash); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int d_unlinked(struct dentry *dentry) { return d_unhashed(dentry) && !((dentry) == (dentry)->d_parent); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int cant_mount(struct dentry *dentry) { return (dentry->d_flags & 0x0100); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dont_mount(struct dentry *dentry) { spin_lock(&dentry->d_lock); dentry->d_flags |= 0x0100; spin_unlock(&dentry->d_lock); } extern void dput(struct dentry *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool d_managed(struct dentry *dentry) { return dentry->d_flags & (0x10000|0x20000|0x40000); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool d_mountpoint(struct dentry *dentry) { return dentry->d_flags & 0x10000; } extern int sysctl_vfs_cache_pressure; # 9 "include/linux/fs.h" 2 # 1 "include/linux/path.h" 1 struct dentry; struct vfsmount; struct path { struct vfsmount *mnt; struct dentry *dentry; }; extern void path_get(struct path *); extern void path_put(struct path *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int path_equal(const struct path *path1, const struct path *path2) { return path1->mnt == path2->mnt && path1->dentry == path2->dentry; } # 10 "include/linux/fs.h" 2 # 1 "include/linux/radix-tree.h" 1 # 54 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int radix_tree_is_indirect_ptr(void *ptr) { return (int)((unsigned long)ptr & 1); } struct radix_tree_root { unsigned int height; gfp_t gfp_mask; struct radix_tree_node *rnode; }; # 150 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *radix_tree_deref_slot(void **pslot) { return ({ typeof(*(*pslot)) *_________p1 = (typeof(*(*pslot))* )(*(volatile typeof((*pslot)) *)&((*pslot))); do { } while (0); ; do { } while(0); ((typeof(*(*pslot)) *)(_________p1)); }); } # 165 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *radix_tree_deref_slot_protected(void **pslot, spinlock_t *treelock) { return ({ do { } while (0); ; ((typeof(*(*pslot)) *)((*pslot))); }); } # 178 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int radix_tree_deref_retry(void *arg) { return __builtin_expect(!!((unsigned long)arg & 1), 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int radix_tree_exceptional_entry(void *arg) { return (unsigned long)arg & 2; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int radix_tree_exception(void *arg) { return __builtin_expect(!!((unsigned long)arg & (1 | 2)), 0) ; } # 213 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void radix_tree_replace_slot(void **pslot, void *item) { do { if (__builtin_expect(!!(radix_tree_is_indirect_ptr(item)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/radix-tree.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "215" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); do { __asm__ __volatile__ ("dmb" : : : "memory"); ((*pslot)) = (typeof(*(item)) *)((item)); } while (0); } int radix_tree_insert(struct radix_tree_root *, unsigned long, void *); void *radix_tree_lookup(struct radix_tree_root *, unsigned long); void **radix_tree_lookup_slot(struct radix_tree_root *, unsigned long); void *radix_tree_delete(struct radix_tree_root *, unsigned long); unsigned int radix_tree_gang_lookup(struct radix_tree_root *root, void **results, unsigned long first_index, unsigned int max_items); unsigned int radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results, unsigned long *indices, unsigned long first_index, unsigned int max_items); unsigned long radix_tree_next_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); unsigned long radix_tree_prev_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); int radix_tree_preload(gfp_t gfp_mask); void radix_tree_init(void); void *radix_tree_tag_set(struct radix_tree_root *root, unsigned long index, unsigned int tag); void *radix_tree_tag_clear(struct radix_tree_root *root, unsigned long index, unsigned int tag); int radix_tree_tag_get(struct radix_tree_root *root, unsigned long index, unsigned int tag); unsigned int radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results, unsigned long first_index, unsigned int max_items, unsigned int tag); unsigned int radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root, void ***results, unsigned long first_index, unsigned int max_items, unsigned int tag); unsigned long radix_tree_range_tag_if_tagged(struct radix_tree_root *root, unsigned long *first_indexp, unsigned long last_index, unsigned long nr_to_tag, unsigned int fromtag, unsigned int totag); int radix_tree_tagged(struct radix_tree_root *root, unsigned int tag); unsigned long radix_tree_locate_item(struct radix_tree_root *root, void *item); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void radix_tree_preload_end(void) { do { } while (0); } # 275 "include/linux/radix-tree.h" struct radix_tree_iter { unsigned long index; unsigned long next_index; unsigned long tags; }; # 292 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void ** radix_tree_iter_init(struct radix_tree_iter *iter, unsigned long start) { # 303 "include/linux/radix-tree.h" iter->index = 0; iter->next_index = start; return ((void *)0); } # 321 "include/linux/radix-tree.h" void **radix_tree_next_chunk(struct radix_tree_root *root, struct radix_tree_iter *iter, unsigned flags); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) unsigned radix_tree_chunk_size(struct radix_tree_iter *iter) { return iter->next_index - iter->index; } # 347 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((always_inline)) void ** radix_tree_next_slot(void **slot, struct radix_tree_iter *iter, unsigned flags) { if (flags & 0x0100) { iter->tags >>= 1; if (__builtin_expect(!!(iter->tags & 1ul), 1)) { iter->index++; return slot + 1; } if (!(flags & 0x0200) && __builtin_expect(!!(iter->tags), 1)) { unsigned offset = (({ unsigned long __t = (iter->tags); fls(__t & -__t); }) - 1); iter->tags >>= offset; iter->index += offset + 1; return slot + offset + 1; } } else { unsigned size = radix_tree_chunk_size(iter) - 1; while (size--) { slot++; iter->index++; if (__builtin_expect(!!(*slot), 1)) return slot; if (flags & 0x0200) { iter->next_index = 0; break; } } } return ((void *)0); } # 14 "include/linux/fs.h" 2 # 1 "include/linux/semaphore.h" 1 # 16 "include/linux/semaphore.h" struct semaphore { raw_spinlock_t lock; unsigned int count; struct list_head wait_list; }; # 32 "include/linux/semaphore.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sema_init(struct semaphore *sem, int val) { static struct lock_class_key __key; *sem = (struct semaphore) { .lock = (raw_spinlock_t) { .raw_lock = { { 0 } }, }, .count = val, .wait_list = { &((*sem).wait_list), &((*sem).wait_list) }, }; do { (void)("semaphore->lock"); (void)(&__key); } while (0); } extern void down(struct semaphore *sem); extern int __attribute__((warn_unused_result)) down_interruptible(struct semaphore *sem); extern int __attribute__((warn_unused_result)) down_killable(struct semaphore *sem); extern int __attribute__((warn_unused_result)) down_trylock(struct semaphore *sem); extern int __attribute__((warn_unused_result)) down_timeout(struct semaphore *sem, long jiffies); extern void up(struct semaphore *sem); # 21 "include/linux/fs.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/fiemap.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/fiemap.h" struct fiemap_extent { __u64 fe_logical; __u64 fe_physical; __u64 fe_length; __u64 fe_reserved64[2]; __u32 fe_flags; __u32 fe_reserved[3]; }; struct fiemap { __u64 fm_start; __u64 fm_length; __u32 fm_flags; __u32 fm_mapped_extents; __u32 fm_extent_count; __u32 fm_reserved; struct fiemap_extent fm_extents[0]; }; # 22 "include/linux/fs.h" 2 # 1 "include/linux/migrate_mode.h" 1 # 10 "include/linux/migrate_mode.h" enum migrate_mode { MIGRATE_ASYNC, MIGRATE_SYNC_LIGHT, MIGRATE_SYNC, }; # 26 "include/linux/fs.h" 2 # 1 "include/linux/percpu-rwsem.h" 1 # 10 "include/linux/percpu-rwsem.h" struct percpu_rw_semaphore { unsigned int *fast_read_ctr; atomic_t write_ctr; struct rw_semaphore rw_sem; atomic_t slow_read_ctr; wait_queue_head_t write_waitq; }; extern void percpu_down_read(struct percpu_rw_semaphore *); extern void percpu_up_read(struct percpu_rw_semaphore *); extern void percpu_down_write(struct percpu_rw_semaphore *); extern void percpu_up_write(struct percpu_rw_semaphore *); extern int __percpu_init_rwsem(struct percpu_rw_semaphore *, const char *, struct lock_class_key *); extern void percpu_free_rwsem(struct percpu_rw_semaphore *); # 29 "include/linux/fs.h" 2 # 1 "include/linux/blk_types.h" 1 # 12 "include/linux/blk_types.h" struct bio_set; struct bio; struct bio_integrity_payload; struct page; struct block_device; struct io_context; struct cgroup_subsys_state; typedef void (bio_end_io_t) (struct bio *, int); typedef void (bio_destructor_t) (struct bio *); struct bio_vec { struct page *bv_page; unsigned int bv_len; unsigned int bv_offset; }; struct bio { sector_t bi_sector; struct bio *bi_next; struct block_device *bi_bdev; unsigned long bi_flags; unsigned long bi_rw; unsigned short bi_vcnt; unsigned short bi_idx; unsigned int bi_phys_segments; unsigned int bi_size; unsigned int bi_seg_front_size; unsigned int bi_seg_back_size; bio_end_io_t *bi_end_io; void *bi_private; struct io_context *bi_ioc; struct cgroup_subsys_state *bi_css; struct bio_integrity_payload *bi_integrity; unsigned int bi_max_vecs; atomic_t bi_cnt; struct bio_vec *bi_io_vec; struct bio_set *bi_pool; struct bio_vec bi_inline_vecs[0]; }; # 138 "include/linux/blk_types.h" enum rq_flag_bits { __REQ_WRITE, __REQ_FAILFAST_DEV, __REQ_FAILFAST_TRANSPORT, __REQ_FAILFAST_DRIVER, __REQ_SYNC, __REQ_META, __REQ_PRIO, __REQ_DISCARD, __REQ_SECURE, __REQ_WRITE_SAME, __REQ_NOIDLE, __REQ_FUA, __REQ_FLUSH, __REQ_RAHEAD, __REQ_THROTTLED, __REQ_SORTED, __REQ_SOFTBARRIER, __REQ_NOMERGE, __REQ_STARTED, __REQ_DONTPREP, __REQ_QUEUED, __REQ_ELVPRIV, __REQ_FAILED, __REQ_QUIET, __REQ_PREEMPT, __REQ_ALLOCED, __REQ_COPY_USER, __REQ_FLUSH_SEQ, __REQ_IO_STAT, __REQ_MIXED_MERGE, __REQ_KERNEL, __REQ_NR_BITS, }; # 30 "include/linux/fs.h" 2 # 1 "include/uapi/linux/fs.h" 1 # 9 "include/uapi/linux/fs.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/limits.h" 1 # 10 "include/uapi/linux/fs.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/ioctl.h" 1 # 1 "arch/arm/include/generated/asm/ioctl.h" 1 # 1 "include/asm-generic/ioctl.h" 1 # 1 "include/uapi/asm-generic/ioctl.h" 1 # 5 "include/asm-generic/ioctl.h" 2 extern unsigned int __invalid_size_argument_for_IOC; # 1 "arch/arm/include/generated/asm/ioctl.h" 2 # 5 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/ioctl.h" 2 # 11 "include/uapi/linux/fs.h" 2 # 38 "include/uapi/linux/fs.h" struct fstrim_range { __u64 start; __u64 len; __u64 minlen; }; struct files_stat_struct { unsigned long nr_files; unsigned long nr_free_files; unsigned long max_files; }; struct inodes_stat_t { int nr_inodes; int nr_unused; int dummy[5]; }; # 33 "include/linux/fs.h" 2 struct export_operations; struct hd_geometry; struct iovec; struct nameidata; struct kiocb; struct kobject; struct pipe_inode_info; struct poll_table_struct; struct kstatfs; struct vm_area_struct; struct vfsmount; struct cred; struct swap_info_struct; struct seq_file; extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) inode_init(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) inode_init_early(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) files_init(unsigned long); extern struct files_stat_struct files_stat; extern unsigned long get_max_files(void); extern int sysctl_nr_open; extern struct inodes_stat_t inodes_stat; extern int leases_enable, lease_break_time; extern int sysctl_protected_symlinks; extern int sysctl_protected_hardlinks; struct buffer_head; typedef int (get_block_t)(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create); typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset, ssize_t bytes, void *private, int ret, bool is_async); # 224 "include/linux/fs.h" struct iattr { unsigned int ia_valid; umode_t ia_mode; kuid_t ia_uid; kgid_t ia_gid; loff_t ia_size; struct timespec ia_atime; struct timespec ia_mtime; struct timespec ia_ctime; struct file *ia_file; }; # 1 "include/linux/quota.h" 1 # 42 "include/linux/quota.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/dqblk_xfs.h" 1 # 50 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/dqblk_xfs.h" typedef struct fs_disk_quota { __s8 d_version; __s8 d_flags; __u16 d_fieldmask; __u32 d_id; __u64 d_blk_hardlimit; __u64 d_blk_softlimit; __u64 d_ino_hardlimit; __u64 d_ino_softlimit; __u64 d_bcount; __u64 d_icount; __s32 d_itimer; __s32 d_btimer; __u16 d_iwarns; __u16 d_bwarns; __s32 d_padding2; __u64 d_rtb_hardlimit; __u64 d_rtb_softlimit; __u64 d_rtbcount; __s32 d_rtbtimer; __u16 d_rtbwarns; __s16 d_padding3; char d_padding4[8]; } fs_disk_quota_t; # 146 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/linux/dqblk_xfs.h" typedef struct fs_qfilestat { __u64 qfs_ino; __u64 qfs_nblks; __u32 qfs_nextents; } fs_qfilestat_t; typedef struct fs_quota_stat { __s8 qs_version; __u16 qs_flags; __s8 qs_pad; fs_qfilestat_t qs_uquota; fs_qfilestat_t qs_gquota; __u32 qs_incoredqs; __s32 qs_btimelimit; __s32 qs_itimelimit; __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; } fs_quota_stat_t; # 43 "include/linux/quota.h" 2 # 1 "include/linux/dqblk_v1.h" 1 # 44 "include/linux/quota.h" 2 # 1 "include/linux/dqblk_v2.h" 1 # 1 "include/linux/dqblk_qtree.h" 1 # 17 "include/linux/dqblk_qtree.h" struct dquot; struct qtree_fmt_operations { void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); int (*is_id)(void *disk, struct dquot *dquot); }; struct qtree_mem_dqinfo { struct super_block *dqi_sb; int dqi_type; unsigned int dqi_blocks; unsigned int dqi_free_blk; unsigned int dqi_free_entry; unsigned int dqi_blocksize_bits; unsigned int dqi_entry_size; unsigned int dqi_usable_bs; unsigned int dqi_qtree_depth; struct qtree_fmt_operations *dqi_ops; }; int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int qtree_depth(struct qtree_mem_dqinfo *info) { unsigned int epb = info->dqi_usable_bs >> 2; unsigned long long entries = epb; int i; for (i = 1; entries < (1ULL << 32); i++) entries *= epb; return i; } # 9 "include/linux/dqblk_v2.h" 2 # 45 "include/linux/quota.h" 2 # 1 "include/linux/projid.h" 1 # 16 "include/linux/projid.h" struct user_namespace; extern struct user_namespace init_user_ns; typedef __kernel_uid32_t projid_t; # 36 "include/linux/projid.h" typedef projid_t kprojid_t; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) projid_t __kprojid_val(kprojid_t projid) { return projid; } # 50 "include/linux/projid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool projid_eq(kprojid_t left, kprojid_t right) { return __kprojid_val(left) == __kprojid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool projid_lt(kprojid_t left, kprojid_t right) { return __kprojid_val(left) < __kprojid_val(right); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool projid_valid(kprojid_t projid) { return !projid_eq(projid, ((kprojid_t) -1 )); } # 79 "include/linux/projid.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) kprojid_t make_kprojid(struct user_namespace *from, projid_t projid) { return ((kprojid_t) projid ); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) projid_t from_kprojid(struct user_namespace *to, kprojid_t kprojid) { return __kprojid_val(kprojid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) projid_t from_kprojid_munged(struct user_namespace *to, kprojid_t kprojid) { projid_t projid = from_kprojid(to, kprojid); if (projid == (projid_t)-1) projid = 65534; return projid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool kprojid_has_mapping(struct user_namespace *ns, kprojid_t projid) { return true; } # 49 "include/linux/quota.h" 2 # 1 "include/uapi/linux/quota.h" 1 # 88 "include/uapi/linux/quota.h" enum { QIF_BLIMITS_B = 0, QIF_SPACE_B, QIF_ILIMITS_B, QIF_INODES_B, QIF_BTIME_B, QIF_ITIME_B, }; # 108 "include/uapi/linux/quota.h" struct if_dqblk { __u64 dqb_bhardlimit; __u64 dqb_bsoftlimit; __u64 dqb_curspace; __u64 dqb_ihardlimit; __u64 dqb_isoftlimit; __u64 dqb_curinodes; __u64 dqb_btime; __u64 dqb_itime; __u32 dqb_valid; }; # 129 "include/uapi/linux/quota.h" struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; }; # 151 "include/uapi/linux/quota.h" enum { QUOTA_NL_C_UNSPEC, QUOTA_NL_C_WARNING, __QUOTA_NL_C_MAX, }; enum { QUOTA_NL_A_UNSPEC, QUOTA_NL_A_QTYPE, QUOTA_NL_A_EXCESS_ID, QUOTA_NL_A_WARNING, QUOTA_NL_A_DEV_MAJOR, QUOTA_NL_A_DEV_MINOR, QUOTA_NL_A_CAUSED_ID, __QUOTA_NL_A_MAX, }; # 50 "include/linux/quota.h" 2 enum quota_type { USRQUOTA = 0, GRPQUOTA = 1, PRJQUOTA = 2, }; typedef __kernel_uid32_t qid_t; typedef long long qsize_t; struct kqid { union { kuid_t uid; kgid_t gid; kprojid_t projid; }; enum quota_type type; }; extern bool qid_eq(struct kqid left, struct kqid right); extern bool qid_lt(struct kqid left, struct kqid right); extern qid_t from_kqid(struct user_namespace *to, struct kqid qid); extern qid_t from_kqid_munged(struct user_namespace *to, struct kqid qid); extern bool qid_valid(struct kqid qid); # 91 "include/linux/quota.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kqid make_kqid(struct user_namespace *from, enum quota_type type, qid_t qid) { struct kqid kqid; kqid.type = type; switch (type) { case USRQUOTA: kqid.uid = make_kuid(from, qid); break; case GRPQUOTA: kqid.gid = make_kgid(from, qid); break; case PRJQUOTA: kqid.projid = make_kprojid(from, qid); break; default: do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/quota.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "108" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } return kqid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kqid make_kqid_invalid(enum quota_type type) { struct kqid kqid; kqid.type = type; switch (type) { case USRQUOTA: kqid.uid = ((kuid_t) -1 ); break; case GRPQUOTA: kqid.gid = ((kgid_t) -1 ); break; case PRJQUOTA: kqid.projid = ((kprojid_t) -1 ); break; default: do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/quota.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "135" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } return kqid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kqid make_kqid_uid(kuid_t uid) { struct kqid kqid; kqid.type = USRQUOTA; kqid.uid = uid; return kqid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kqid make_kqid_gid(kgid_t gid) { struct kqid kqid; kqid.type = GRPQUOTA; kqid.gid = gid; return kqid; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct kqid make_kqid_projid(kprojid_t projid) { struct kqid kqid; kqid.type = PRJQUOTA; kqid.projid = projid; return kqid; } extern spinlock_t dq_data_lock; # 189 "include/linux/quota.h" struct mem_dqblk { qsize_t dqb_bhardlimit; qsize_t dqb_bsoftlimit; qsize_t dqb_curspace; qsize_t dqb_rsvspace; qsize_t dqb_ihardlimit; qsize_t dqb_isoftlimit; qsize_t dqb_curinodes; time_t dqb_btime; time_t dqb_itime; }; struct quota_format_type; struct mem_dqinfo { struct quota_format_type *dqi_format; int dqi_fmt_id; struct list_head dqi_dirty_list; unsigned long dqi_flags; unsigned int dqi_bgrace; unsigned int dqi_igrace; qsize_t dqi_maxblimit; qsize_t dqi_maxilimit; void *dqi_priv; }; struct super_block; # 229 "include/linux/quota.h" extern void mark_info_dirty(struct super_block *sb, int type); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int info_dirty(struct mem_dqinfo *info) { return test_bit(31, &info->dqi_flags); } enum { DQST_LOOKUPS, DQST_DROPS, DQST_READS, DQST_WRITES, DQST_CACHE_HITS, DQST_ALLOC_DQUOTS, DQST_FREE_DQUOTS, DQST_SYNCS, _DQST_DQSTAT_LAST }; struct dqstats { int stat[_DQST_DQSTAT_LAST]; struct percpu_counter counter[_DQST_DQSTAT_LAST]; }; extern struct dqstats *dqstats_pcpu; extern struct dqstats dqstats; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dqstats_inc(unsigned int type) { percpu_counter_inc(&dqstats.counter[type]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dqstats_dec(unsigned int type) { percpu_counter_dec(&dqstats.counter[type]); } # 277 "include/linux/quota.h" struct dquot { struct hlist_node dq_hash; struct list_head dq_inuse; struct list_head dq_free; struct list_head dq_dirty; struct mutex dq_lock; atomic_t dq_count; wait_queue_head_t dq_wait_unused; struct super_block *dq_sb; struct kqid dq_id; loff_t dq_off; unsigned long dq_flags; struct mem_dqblk dq_dqb; }; struct quota_format_ops { int (*check_quota_file)(struct super_block *sb, int type); int (*read_file_info)(struct super_block *sb, int type); int (*write_file_info)(struct super_block *sb, int type); int (*free_file_info)(struct super_block *sb, int type); int (*read_dqblk)(struct dquot *dquot); int (*commit_dqblk)(struct dquot *dquot); int (*release_dqblk)(struct dquot *dquot); }; struct dquot_operations { int (*write_dquot) (struct dquot *); struct dquot *(*alloc_dquot)(struct super_block *, int); void (*destroy_dquot)(struct dquot *); int (*acquire_dquot) (struct dquot *); int (*release_dquot) (struct dquot *); int (*mark_dirty) (struct dquot *); int (*write_info) (struct super_block *, int); qsize_t *(*get_reserved_space) (struct inode *); }; struct path; struct quotactl_ops { int (*quota_on)(struct super_block *, int, int, struct path *); int (*quota_on_meta)(struct super_block *, int, int); int (*quota_off)(struct super_block *, int); int (*quota_sync)(struct super_block *, int); int (*get_info)(struct super_block *, int, struct if_dqinfo *); int (*set_info)(struct super_block *, int, struct if_dqinfo *); int (*get_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *); int (*set_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *); int (*get_xstate)(struct super_block *, struct fs_quota_stat *); int (*set_xstate)(struct super_block *, unsigned int, int); }; struct quota_format_type { int qf_fmt_id; const struct quota_format_ops *qf_ops; struct module *qf_owner; struct quota_format_type *qf_next; }; enum { _DQUOT_USAGE_ENABLED = 0, _DQUOT_LIMITS_ENABLED, _DQUOT_SUSPENDED, _DQUOT_STATE_FLAGS }; # 366 "include/linux/quota.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int dquot_state_flag(unsigned int flags, int type) { return flags << _DQUOT_STATE_FLAGS * type; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int dquot_generic_flag(unsigned int flags, int type) { return (flags >> _DQUOT_STATE_FLAGS * type) & ((1 << _DQUOT_USAGE_ENABLED) | (1 << _DQUOT_LIMITS_ENABLED) | (1 << _DQUOT_SUSPENDED)); } extern void quota_send_warning(struct kqid qid, dev_t dev, const char warntype); # 387 "include/linux/quota.h" struct quota_info { unsigned int flags; struct mutex dqio_mutex; struct mutex dqonoff_mutex; struct rw_semaphore dqptr_sem; struct inode *files[2]; struct mem_dqinfo info[2]; const struct quota_format_ops *ops[2]; }; int register_quota_format(struct quota_format_type *fmt); void unregister_quota_format(struct quota_format_type *fmt); struct quota_module_name { int qm_fmt_id; char *qm_mod_name; }; # 246 "include/linux/fs.h" 2 # 273 "include/linux/fs.h" enum positive_aop_returns { AOP_WRITEPAGE_ACTIVATE = 0x80000, AOP_TRUNCATED_PAGE = 0x80001, }; # 287 "include/linux/fs.h" struct page; struct address_space; struct writeback_control; struct iov_iter { const struct iovec *iov; unsigned long nr_segs; size_t iov_offset; size_t count; }; size_t iov_iter_copy_from_user_atomic(struct page *page, struct iov_iter *i, unsigned long offset, size_t bytes); size_t iov_iter_copy_from_user(struct page *page, struct iov_iter *i, unsigned long offset, size_t bytes); void iov_iter_advance(struct iov_iter *i, size_t bytes); int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); size_t iov_iter_single_seg_count(struct iov_iter *i); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void iov_iter_init(struct iov_iter *i, const struct iovec *iov, unsigned long nr_segs, size_t count, size_t written) { i->iov = iov; i->nr_segs = nr_segs; i->iov_offset = 0; i->count = count + written; iov_iter_advance(i, written); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) size_t iov_iter_count(struct iov_iter *i) { return i->count; } # 332 "include/linux/fs.h" typedef struct { size_t written; size_t count; union { char *buf; void *data; } arg; int error; } read_descriptor_t; typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long); struct address_space_operations { int (*writepage)(struct page *page, struct writeback_control *wbc); int (*readpage)(struct file *, struct page *); int (*writepages)(struct address_space *, struct writeback_control *); int (*set_page_dirty)(struct page *page); int (*readpages)(struct file *filp, struct address_space *mapping, struct list_head *pages, unsigned nr_pages); int (*write_begin)(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); int (*write_end)(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); sector_t (*bmap)(struct address_space *, sector_t); void (*invalidatepage) (struct page *, unsigned long); int (*releasepage) (struct page *, gfp_t); void (*freepage)(struct page *); ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, loff_t offset, unsigned long nr_segs); int (*get_xip_mem)(struct address_space *, unsigned long, int, void **, unsigned long *); int (*migratepage) (struct address_space *, struct page *, struct page *, enum migrate_mode); int (*launder_page) (struct page *); int (*is_partially_uptodate) (struct page *, read_descriptor_t *, unsigned long); int (*error_remove_page)(struct address_space *, struct page *); int (*swap_activate)(struct swap_info_struct *sis, struct file *file, sector_t *span); void (*swap_deactivate)(struct file *file); }; extern const struct address_space_operations empty_aops; int pagecache_write_begin(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); int pagecache_write_end(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); struct backing_dev_info; struct address_space { struct inode *host; struct radix_tree_root page_tree; spinlock_t tree_lock; unsigned int i_mmap_writable; struct rb_root i_mmap; struct list_head i_mmap_nonlinear; struct mutex i_mmap_mutex; unsigned long nrpages; unsigned long writeback_index; const struct address_space_operations *a_ops; unsigned long flags; struct backing_dev_info *backing_dev_info; spinlock_t private_lock; struct list_head private_list; void *private_data; } __attribute__((aligned(sizeof(long)))); struct request_queue; struct block_device { dev_t bd_dev; int bd_openers; struct inode * bd_inode; struct super_block * bd_super; struct mutex bd_mutex; struct list_head bd_inodes; void * bd_claiming; void * bd_holder; int bd_holders; bool bd_write_holder; struct list_head bd_holder_disks; struct block_device * bd_contains; unsigned bd_block_size; struct hd_struct * bd_part; unsigned bd_part_count; int bd_invalidated; struct gendisk * bd_disk; struct request_queue * bd_queue; struct list_head bd_list; unsigned long bd_private; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; }; # 476 "include/linux/fs.h" int mapping_tagged(struct address_space *mapping, int tag); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mapping_mapped(struct address_space *mapping) { return !((&mapping->i_mmap)->rb_node == ((void *)0)) || !list_empty(&mapping->i_mmap_nonlinear); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mapping_writably_mapped(struct address_space *mapping) { return mapping->i_mmap_writable != 0; } # 509 "include/linux/fs.h" struct posix_acl; # 521 "include/linux/fs.h" struct inode { umode_t i_mode; unsigned short i_opflags; kuid_t i_uid; kgid_t i_gid; unsigned int i_flags; struct posix_acl *i_acl; struct posix_acl *i_default_acl; const struct inode_operations *i_op; struct super_block *i_sb; struct address_space *i_mapping; void *i_security; unsigned long i_ino; union { const unsigned int i_nlink; unsigned int __i_nlink; }; dev_t i_rdev; loff_t i_size; struct timespec i_atime; struct timespec i_mtime; struct timespec i_ctime; spinlock_t i_lock; unsigned short i_bytes; unsigned int i_blkbits; blkcnt_t i_blocks; seqcount_t i_size_seqcount; unsigned long i_state; struct mutex i_mutex; unsigned long dirtied_when; struct hlist_node i_hash; struct list_head i_wb_list; struct list_head i_lru; struct list_head i_sb_list; union { struct hlist_head i_dentry; struct callback_head i_rcu; }; u64 i_version; atomic_t i_count; atomic_t i_dio_count; atomic_t i_writecount; const struct file_operations *i_fop; struct file_lock *i_flock; struct address_space i_data; struct dquot *i_dquot[2]; struct list_head i_devices; union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; }; __u32 i_generation; __u32 i_fsnotify_mask; struct hlist_head i_fsnotify_marks; void *i_private; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int inode_unhashed(struct inode *inode) { return hlist_unhashed(&inode->i_hash); } # 628 "include/linux/fs.h" enum inode_i_mutex_lock_class { I_MUTEX_NORMAL, I_MUTEX_PARENT, I_MUTEX_CHILD, I_MUTEX_XATTR, I_MUTEX_QUOTA }; # 647 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) loff_t i_size_read(const struct inode *inode) { loff_t i_size; unsigned int seq; do { seq = read_seqcount_begin(&inode->i_size_seqcount); i_size = inode->i_size; } while (read_seqcount_retry(&inode->i_size_seqcount, seq)); return i_size; # 668 "include/linux/fs.h" } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void i_size_write(struct inode *inode, loff_t i_size) { write_seqcount_begin(&inode->i_size_seqcount); inode->i_size = i_size; write_seqcount_end(&inode->i_size_seqcount); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uid_t i_uid_read(const struct inode *inode) { return from_kuid(&init_user_ns, inode->i_uid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) gid_t i_gid_read(const struct inode *inode) { return from_kgid(&init_user_ns, inode->i_gid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void i_uid_write(struct inode *inode, uid_t uid) { inode->i_uid = make_kuid(&init_user_ns, uid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void i_gid_write(struct inode *inode, gid_t gid) { inode->i_gid = make_kgid(&init_user_ns, gid); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned iminor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) & ((1U << 20) - 1))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned imajor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) >> 20)); } extern struct block_device *I_BDEV(struct inode *inode); struct fown_struct { rwlock_t lock; struct pid *pid; enum pid_type pid_type; kuid_t uid, euid; int signum; }; struct file_ra_state { unsigned long start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned int mmap_miss; loff_t prev_pos; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ra_has_index(struct file_ra_state *ra, unsigned long index) { return (index >= ra->start && index < ra->start + ra->size); } struct file { union { struct list_head fu_list; struct callback_head fu_rcuhead; } f_u; struct path f_path; const struct file_operations *f_op; spinlock_t f_lock; int f_sb_list_cpu; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; loff_t f_pos; struct fown_struct f_owner; const struct cred *f_cred; struct file_ra_state f_ra; u64 f_version; void *f_security; void *private_data; struct list_head f_ep_links; struct list_head f_tfile_llink; struct address_space *f_mapping; }; struct file_handle { __u32 handle_bytes; int handle_type; unsigned char f_handle[0]; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct file *get_file(struct file *f) { atomic_long_inc(&f->f_count); return f; } # 857 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void file_take_write(struct file *filp) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void file_release_write(struct file *filp) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void file_reset_write(struct file *filp) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void file_check_state(struct file *filp) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int file_check_writeable(struct file *filp) { return 0; } # 900 "include/linux/fs.h" typedef struct files_struct *fl_owner_t; struct file_lock_operations { void (*fl_copy_lock)(struct file_lock *, struct file_lock *); void (*fl_release_private)(struct file_lock *); }; struct lock_manager_operations { int (*lm_compare_owner)(struct file_lock *, struct file_lock *); void (*lm_notify)(struct file_lock *); int (*lm_grant)(struct file_lock *, struct file_lock *, int); void (*lm_break)(struct file_lock *); int (*lm_change)(struct file_lock **, int); }; struct lock_manager { struct list_head list; }; struct net; void locks_start_grace(struct net *, struct lock_manager *); void locks_end_grace(struct lock_manager *); int locks_in_grace(struct net *); # 1 "include/linux/nfs_fs_i.h" 1 struct nlm_lockowner; struct nfs_lock_info { u32 state; struct nlm_lockowner *owner; struct list_head list; }; struct nfs4_lock_state; struct nfs4_lock_info { struct nfs4_lock_state *owner; }; # 926 "include/linux/fs.h" 2 struct file_lock { struct file_lock *fl_next; struct list_head fl_link; struct list_head fl_block; fl_owner_t fl_owner; unsigned int fl_flags; unsigned char fl_type; unsigned int fl_pid; struct pid *fl_nspid; wait_queue_head_t fl_wait; struct file *fl_file; loff_t fl_start; loff_t fl_end; struct fasync_struct * fl_fasync; unsigned long fl_break_time; unsigned long fl_downgrade_time; const struct file_lock_operations *fl_ops; const struct lock_manager_operations *fl_lmops; union { struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct { struct list_head link; int state; } afs; } fl_u; }; # 965 "include/linux/fs.h" # 1 "include/linux/fcntl.h" 1 # 1 "include/uapi/linux/fcntl.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/fcntl.h" 1 # 9 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/fcntl.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/fcntl.h" 1 # 131 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/fcntl.h" struct f_owner_ex { int type; __kernel_pid_t pid; }; # 171 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/fcntl.h" struct flock { short l_type; short l_whence; __kernel_off_t l_start; __kernel_off_t l_len; __kernel_pid_t l_pid; }; # 188 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/include/uapi/asm-generic/fcntl.h" struct flock64 { short l_type; short l_whence; __kernel_loff_t l_start; __kernel_loff_t l_len; __kernel_pid_t l_pid; }; # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/uapi/asm/fcntl.h" 2 # 5 "include/uapi/linux/fcntl.h" 2 # 5 "include/linux/fcntl.h" 2 # 966 "include/linux/fs.h" 2 extern void send_sigio(struct fown_struct *fown, int fd, int band); extern int fcntl_getlk(struct file *, struct flock *); extern int fcntl_setlk(unsigned int, struct file *, unsigned int, struct flock *); extern int fcntl_getlk64(struct file *, struct flock64 *); extern int fcntl_setlk64(unsigned int, struct file *, unsigned int, struct flock64 *); extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg); extern int fcntl_getlease(struct file *filp); void locks_free_lock(struct file_lock *fl); extern void locks_init_lock(struct file_lock *); extern struct file_lock * locks_alloc_lock(void); extern void locks_copy_lock(struct file_lock *, struct file_lock *); extern void __locks_copy_lock(struct file_lock *, const struct file_lock *); extern void locks_remove_posix(struct file *, fl_owner_t); extern void locks_remove_flock(struct file *); extern void locks_release_private(struct file_lock *); extern void posix_test_lock(struct file *, struct file_lock *); extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *); extern int posix_lock_file_wait(struct file *, struct file_lock *); extern int posix_unblock_lock(struct file *, struct file_lock *); extern int vfs_test_lock(struct file *, struct file_lock *); extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *); extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl); extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl); extern int __break_lease(struct inode *inode, unsigned int flags); extern void lease_get_mtime(struct inode *, struct timespec *time); extern int generic_setlease(struct file *, long, struct file_lock **); extern int vfs_setlease(struct file *, long, struct file_lock **); extern int lease_modify(struct file_lock **, int); extern int lock_may_read(struct inode *, loff_t start, unsigned long count); extern int lock_may_write(struct inode *, loff_t start, unsigned long count); extern void locks_delete_block(struct file_lock *waiter); extern void lock_flocks(void); extern void unlock_flocks(void); # 1167 "include/linux/fs.h" struct fasync_struct { spinlock_t fa_lock; int magic; int fa_fd; struct fasync_struct *fa_next; struct file *fa_file; struct callback_head fa_rcu; }; extern int fasync_helper(int, struct file *, int, struct fasync_struct **); extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *); extern int fasync_remove_entry(struct file *, struct fasync_struct **); extern struct fasync_struct *fasync_alloc(void); extern void fasync_free(struct fasync_struct *); extern void kill_fasync(struct fasync_struct **, int, int); extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); extern pid_t f_getown(struct file *filp); extern int send_sigurg(struct fown_struct *fown); struct mm_struct; # 1206 "include/linux/fs.h" extern struct list_head super_blocks; extern spinlock_t sb_lock; enum { SB_UNFROZEN = 0, SB_FREEZE_WRITE = 1, SB_FREEZE_PAGEFAULT = 2, SB_FREEZE_FS = 3, SB_FREEZE_COMPLETE = 4, }; struct sb_writers { struct percpu_counter counter[(SB_FREEZE_COMPLETE - 1)]; wait_queue_head_t wait; int frozen; wait_queue_head_t wait_unfrozen; }; struct super_block { struct list_head s_list; dev_t s_dev; unsigned char s_blocksize_bits; unsigned long s_blocksize; loff_t s_maxbytes; struct file_system_type *s_type; const struct super_operations *s_op; const struct dquot_operations *dq_op; const struct quotactl_ops *s_qcop; const struct export_operations *s_export_op; unsigned long s_flags; unsigned long s_magic; struct dentry *s_root; struct rw_semaphore s_umount; int s_count; atomic_t s_active; void *s_security; const struct xattr_handler **s_xattr; struct list_head s_inodes; struct hlist_bl_head s_anon; struct list_head *s_files; struct list_head s_mounts; struct list_head s_dentry_lru; int s_nr_dentry_unused; spinlock_t s_inode_lru_lock __attribute__((__aligned__((1 << 6)))); struct list_head s_inode_lru; int s_nr_inodes_unused; struct block_device *s_bdev; struct backing_dev_info *s_bdi; struct mtd_info *s_mtd; struct hlist_node s_instances; struct quota_info s_dquot; struct sb_writers s_writers; char s_id[32]; u8 s_uuid[16]; void *s_fs_info; unsigned int s_max_links; fmode_t s_mode; u32 s_time_gran; struct mutex s_vfs_rename_mutex; char *s_subtype; char *s_options; const struct dentry_operations *s_d_op; int cleancache_poolid; struct shrinker s_shrink; atomic_long_t s_remove_count; int s_readonly_remount; }; extern void prune_icache_sb(struct super_block *sb, int nr_to_scan); extern void prune_dcache_sb(struct super_block *sb, int nr_to_scan); extern struct timespec current_fs_time(struct super_block *sb); void __sb_end_write(struct super_block *sb, int level); int __sb_start_write(struct super_block *sb, int level, bool wait); # 1345 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_end_write(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_WRITE); } # 1357 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_end_pagefault(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_PAGEFAULT); } # 1369 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_end_intwrite(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_FS); } # 1393 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_start_write(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_WRITE, true); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sb_start_write_trylock(struct super_block *sb) { return __sb_start_write(sb, SB_FREEZE_WRITE, false); } # 1422 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_start_pagefault(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_PAGEFAULT, true); } # 1440 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void sb_start_intwrite(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_FS, true); } extern bool inode_owner_or_capable(const struct inode *inode); extern int vfs_create(struct inode *, struct dentry *, umode_t, bool); extern int vfs_mkdir(struct inode *, struct dentry *, umode_t); extern int vfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); extern int vfs_symlink(struct inode *, struct dentry *, const char *); extern int vfs_link(struct dentry *, struct inode *, struct dentry *); extern int vfs_rmdir(struct inode *, struct dentry *); extern int vfs_unlink(struct inode *, struct dentry *); extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); extern void dentry_unhash(struct dentry *dentry); extern void inode_init_owner(struct inode *inode, const struct inode *dir, umode_t mode); struct fiemap_extent_info { unsigned int fi_flags; unsigned int fi_extents_mapped; unsigned int fi_extents_max; struct fiemap_extent *fi_extents_start; }; int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical, u64 phys, u64 len, u32 flags); int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags); # 1506 "include/linux/fs.h" typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); struct block_device_operations; struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, loff_t, loff_t, int datasync); int (*aio_fsync) (struct kiocb *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); int (*setlease)(struct file *, long, struct file_lock **); long (*fallocate)(struct file *file, int mode, loff_t offset, loff_t len); int (*show_fdinfo)(struct seq_file *m, struct file *f); }; struct inode_operations { struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); void * (*follow_link) (struct dentry *, struct nameidata *); int (*permission) (struct inode *, int); struct posix_acl * (*get_acl)(struct inode *, int); int (*readlink) (struct dentry *, char *,int); void (*put_link) (struct dentry *, struct nameidata *, void *); int (*create) (struct inode *,struct dentry *, umode_t, bool); int (*link) (struct dentry *,struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct inode *,struct dentry *,const char *); int (*mkdir) (struct inode *,struct dentry *,umode_t); int (*rmdir) (struct inode *,struct dentry *); int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *); int (*setattr) (struct dentry *, struct iattr *); int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); ssize_t (*listxattr) (struct dentry *, char *, size_t); int (*removexattr) (struct dentry *, const char *); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); int (*update_time)(struct inode *, struct timespec *, int); int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened); } __attribute__((__aligned__((1 << 6)))); ssize_t rw_copy_check_uvector(int type, const struct iovec * uvector, unsigned long nr_segs, unsigned long fast_segs, struct iovec *fast_pointer, struct iovec **ret_pointer); extern ssize_t vfs_read(struct file *, char *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char *, size_t, loff_t *); extern ssize_t vfs_readv(struct file *, const struct iovec *, unsigned long, loff_t *); extern ssize_t vfs_writev(struct file *, const struct iovec *, unsigned long, loff_t *); struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); void (*destroy_inode)(struct inode *); void (*dirty_inode) (struct inode *, int flags); int (*write_inode) (struct inode *, struct writeback_control *wbc); int (*drop_inode) (struct inode *); void (*evict_inode) (struct inode *); void (*put_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); int (*freeze_fs) (struct super_block *); int (*unfreeze_fs) (struct super_block *); int (*statfs) (struct dentry *, struct kstatfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*umount_begin) (struct super_block *); int (*show_options)(struct seq_file *, struct dentry *); int (*show_devname)(struct seq_file *, struct dentry *); int (*show_path)(struct seq_file *, struct dentry *); int (*show_stats)(struct seq_file *, struct dentry *); ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); int (*nr_cached_objects)(struct super_block *); void (*free_cached_objects)(struct super_block *, int); }; # 1742 "include/linux/fs.h" extern void __mark_inode_dirty(struct inode *, int); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mark_inode_dirty(struct inode *inode) { __mark_inode_dirty(inode, ((1 << 0) | (1 << 1) | (1 << 2))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mark_inode_dirty_sync(struct inode *inode) { __mark_inode_dirty(inode, (1 << 0)); } extern void inc_nlink(struct inode *inode); extern void drop_nlink(struct inode *inode); extern void clear_nlink(struct inode *inode); extern void set_nlink(struct inode *inode, unsigned int nlink); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inode_inc_link_count(struct inode *inode) { inc_nlink(inode); mark_inode_dirty(inode); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inode_dec_link_count(struct inode *inode) { drop_nlink(inode); mark_inode_dirty(inode); } # 1778 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inode_inc_iversion(struct inode *inode) { spin_lock(&inode->i_lock); inode->i_version++; spin_unlock(&inode->i_lock); } enum file_time_flags { S_ATIME = 1, S_MTIME = 2, S_CTIME = 4, S_VERSION = 8, }; extern void touch_atime(struct path *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void file_accessed(struct file *file) { if (!(file->f_flags & 01000000)) touch_atime(&file->f_path); } int sync_inode(struct inode *inode, struct writeback_control *wbc); int sync_inode_metadata(struct inode *inode, int wait); struct file_system_type { const char *name; int fs_flags; struct dentry *(*mount) (struct file_system_type *, int, const char *, void *); void (*kill_sb) (struct super_block *); struct module *owner; struct file_system_type * next; struct hlist_head fs_supers; struct lock_class_key s_lock_key; struct lock_class_key s_umount_key; struct lock_class_key s_vfs_rename_key; struct lock_class_key s_writers_key[(SB_FREEZE_COMPLETE - 1)]; struct lock_class_key i_lock_key; struct lock_class_key i_mutex_key; struct lock_class_key i_mutex_dir_key; }; extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_bdev(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_single(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_nodev(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path); void generic_shutdown_super(struct super_block *sb); void kill_block_super(struct super_block *sb); void kill_anon_super(struct super_block *sb); void kill_litter_super(struct super_block *sb); void deactivate_super(struct super_block *sb); void deactivate_locked_super(struct super_block *sb); int set_anon_super(struct super_block *s, void *data); int get_anon_bdev(dev_t *); void free_anon_bdev(dev_t); struct super_block *sget(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), int flags, void *data); extern struct dentry *mount_pseudo(struct file_system_type *, char *, const struct super_operations *ops, const struct dentry_operations *dops, unsigned long); extern int register_filesystem(struct file_system_type *); extern int unregister_filesystem(struct file_system_type *); extern struct vfsmount *kern_mount_data(struct file_system_type *, void *data); extern void kern_unmount(struct vfsmount *mnt); extern int may_umount_tree(struct vfsmount *); extern int may_umount(struct vfsmount *); extern long do_mount(const char *, const char *, const char *, unsigned long, void *); extern struct vfsmount *collect_mounts(struct path *); extern void drop_collected_mounts(struct vfsmount *); extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, struct vfsmount *); extern int vfs_statfs(struct path *, struct kstatfs *); extern int user_statfs(const char *, struct kstatfs *); extern int fd_statfs(int, struct kstatfs *); extern int vfs_ustat(dev_t, struct kstatfs *); extern int freeze_super(struct super_block *super); extern int thaw_super(struct super_block *super); extern bool our_mnt(struct vfsmount *mnt); extern int current_umask(void); extern struct kobject *fs_kobj; extern int rw_verify_area(int, struct file *, loff_t *, size_t); extern int locks_mandatory_locked(struct inode *); extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __mandatory_lock(struct inode *ino) { return (ino->i_mode & (0002000 | 00010)) == 0002000; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mandatory_lock(struct inode *ino) { return ((ino)->i_sb->s_flags & (64)) && __mandatory_lock(ino); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int locks_verify_locked(struct inode *inode) { if (mandatory_lock(inode)) return locks_mandatory_locked(inode); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int locks_verify_truncate(struct inode *inode, struct file *filp, loff_t size) { if (inode->i_flock && mandatory_lock(inode)) return locks_mandatory_area( 2, inode, filp, size < inode->i_size ? size : inode->i_size, (size < inode->i_size ? inode->i_size - size : size - inode->i_size) ); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int break_lease(struct inode *inode, unsigned int mode) { if (inode->i_flock) return __break_lease(inode, mode); return 0; } # 1989 "include/linux/fs.h" struct audit_names; struct filename { const char *name; const char *uptr; struct audit_names *aname; bool separate; }; extern long vfs_truncate(struct path *, loff_t); extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp); extern int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len); extern long do_sys_open(int dfd, const char *filename, int flags, umode_t mode); extern struct file *file_open_name(struct filename *, int, umode_t); extern struct file *filp_open(const char *, int, umode_t); extern struct file *file_open_root(struct dentry *, struct vfsmount *, const char *, int); extern struct file * dentry_open(const struct path *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); extern struct filename *getname(const char *); enum { FILE_CREATED = 1, FILE_OPENED = 2 }; extern int finish_open(struct file *file, struct dentry *dentry, int (*open)(struct inode *, struct file *), int *opened); extern int finish_no_open(struct file *file, struct dentry *dentry); extern int ioctl_preallocate(struct file *filp, void *argp); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) vfs_caches_init_early(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) vfs_caches_init(unsigned long); extern struct kmem_cache *names_cachep; extern void final_putname(struct filename *name); extern void putname(struct filename *name); extern int register_blkdev(unsigned int, const char *); extern void unregister_blkdev(unsigned int, const char *); extern struct block_device *bdget(dev_t); extern struct block_device *bdgrab(struct block_device *bdev); extern void bd_set_size(struct block_device *, loff_t size); extern void bd_forget(struct inode *inode); extern void bdput(struct block_device *); extern void invalidate_bdev(struct block_device *); extern void iterate_bdevs(void (*)(struct block_device *, void *), void *); extern int sync_blockdev(struct block_device *bdev); extern void kill_bdev(struct block_device *); extern struct super_block *freeze_bdev(struct block_device *); extern void emergency_thaw_all(void); extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); extern int fsync_bdev(struct block_device *); # 2078 "include/linux/fs.h" extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; extern const struct file_operations bad_sock_fops; extern const struct file_operations def_fifo_fops; extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); extern int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder); extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, void *holder); extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder); extern int blkdev_put(struct block_device *bdev, fmode_t mode); extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); extern void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk); # 2112 "include/linux/fs.h" extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *); extern int register_chrdev_region(dev_t, unsigned, const char *); extern int __register_chrdev(unsigned int major, unsigned int baseminor, unsigned int count, const char *name, const struct file_operations *fops); extern void __unregister_chrdev(unsigned int major, unsigned int baseminor, unsigned int count, const char *name); extern void unregister_chrdev_region(dev_t, unsigned); extern void chrdev_show(struct seq_file *,off_t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) { return __register_chrdev(major, 0, 256, name, fops); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void unregister_chrdev(unsigned int major, const char *name) { __unregister_chrdev(major, 0, 256, name); } extern const char *__bdevname(dev_t, char *buffer); extern const char *bdevname(struct block_device *bdev, char *buffer); extern struct block_device *lookup_bdev(const char *); extern void blkdev_show(struct seq_file *,off_t); extern void init_special_inode(struct inode *, umode_t, dev_t); extern void make_bad_inode(struct inode *); extern int is_bad_inode(struct inode *); extern const struct file_operations read_pipefifo_fops; extern const struct file_operations write_pipefifo_fops; extern const struct file_operations rdwr_pipefifo_fops; # 2169 "include/linux/fs.h" extern void check_disk_size_change(struct gendisk *disk, struct block_device *bdev); extern int revalidate_disk(struct gendisk *); extern int check_disk_change(struct block_device *); extern int __invalidate_device(struct block_device *, bool); extern int invalidate_partition(struct gendisk *, int); unsigned long invalidate_mapping_pages(struct address_space *mapping, unsigned long start, unsigned long end); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void invalidate_remote_inode(struct inode *inode) { if ((((inode->i_mode) & 00170000) == 0100000) || (((inode->i_mode) & 00170000) == 0040000) || (((inode->i_mode) & 00170000) == 0120000)) invalidate_mapping_pages(inode->i_mapping, 0, -1); } extern int invalidate_inode_pages2(struct address_space *mapping); extern int invalidate_inode_pages2_range(struct address_space *mapping, unsigned long start, unsigned long end); extern int write_inode_now(struct inode *, int); extern int filemap_fdatawrite(struct address_space *); extern int filemap_flush(struct address_space *); extern int filemap_fdatawait(struct address_space *); extern int filemap_fdatawait_range(struct address_space *, loff_t lstart, loff_t lend); extern int filemap_write_and_wait(struct address_space *mapping); extern int filemap_write_and_wait_range(struct address_space *mapping, loff_t lstart, loff_t lend); extern int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end, int sync_mode); extern int filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end); extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync); extern int vfs_fsync(struct file *file, int datasync); extern int generic_write_sync(struct file *file, loff_t pos, loff_t count); extern void emergency_sync(void); extern void emergency_remount(void); extern sector_t bmap(struct inode *, sector_t); extern int notify_change(struct dentry *, struct iattr *); extern int inode_permission(struct inode *, int); extern int generic_permission(struct inode *, int); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool execute_ok(struct inode *inode) { return (inode->i_mode & (00100|00010|00001)) || (((inode->i_mode) & 00170000) == 0040000); } # 2236 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_write_access(struct inode *inode) { return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -26; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int deny_write_access(struct file *file) { struct inode *inode = file->f_path.dentry->d_inode; return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -26; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void put_write_access(struct inode * inode) { atomic_sub(1, &inode->i_writecount); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void allow_write_access(struct file *file) { if (file) atomic_add(1, &file->f_path.dentry->d_inode->i_writecount); } # 2265 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void i_readcount_dec(struct inode *inode) { return; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void i_readcount_inc(struct inode *inode) { return; } extern int do_pipe_flags(int *, int); extern int kernel_read(struct file *, loff_t, char *, unsigned long); extern struct file * open_exec(const char *); extern int is_subdir(struct dentry *, struct dentry *); extern int path_is_under(struct path *, struct path *); extern ino_t find_inode_number(struct dentry *, struct qstr *); extern loff_t default_llseek(struct file *file, loff_t offset, int whence); extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence); extern int inode_init_always(struct super_block *, struct inode *); extern void inode_init_once(struct inode *); extern void address_space_init_once(struct address_space *mapping); extern void ihold(struct inode * inode); extern void iput(struct inode *); extern struct inode * igrab(struct inode *); extern ino_t iunique(struct super_block *, ino_t); extern int inode_needs_sync(struct inode *inode); extern int generic_delete_inode(struct inode *inode); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int generic_drop_inode(struct inode *inode) { return !inode->i_nlink || inode_unhashed(inode); } extern struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval, int (*test)(struct inode *, void *), void *data); extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval, int (*test)(struct inode *, void *), void *data); extern struct inode *ilookup(struct super_block *sb, unsigned long ino); extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *); extern struct inode * iget_locked(struct super_block *, unsigned long); extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *); extern int insert_inode_locked(struct inode *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lockdep_annotate_inode_mutex_key(struct inode *inode) { }; extern void unlock_new_inode(struct inode *); extern unsigned int get_next_ino(void); extern void __iget(struct inode * inode); extern void iget_failed(struct inode *); extern void clear_inode(struct inode *); extern void __destroy_inode(struct inode *); extern struct inode *new_inode_pseudo(struct super_block *sb); extern struct inode *new_inode(struct super_block *sb); extern void free_inode_nonrcu(struct inode *inode); extern int should_remove_suid(struct dentry *); extern int file_remove_suid(struct file *); extern void __insert_inode_hash(struct inode *, unsigned long hashval); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void insert_inode_hash(struct inode *inode) { __insert_inode_hash(inode, inode->i_ino); } extern void __remove_inode_hash(struct inode *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void remove_inode_hash(struct inode *inode) { if (!inode_unhashed(inode)) __remove_inode_hash(inode); } extern void inode_sb_list_add(struct inode *inode); extern void submit_bio(int, struct bio *); extern int bdev_read_only(struct block_device *); extern int set_blocksize(struct block_device *, int); extern int sb_set_blocksize(struct super_block *, int); extern int sb_min_blocksize(struct super_block *, int); extern int generic_file_mmap(struct file *, struct vm_area_struct *); extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); extern int generic_file_remap_pages(struct vm_area_struct *, unsigned long addr, unsigned long size, unsigned long pgoff); extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); extern ssize_t __generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t *); extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, unsigned long *, loff_t, loff_t *, size_t, size_t); extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, unsigned long, loff_t, loff_t *, size_t, ssize_t); extern ssize_t do_sync_read(struct file *filp, char *buf, size_t len, loff_t *ppos); extern ssize_t do_sync_write(struct file *filp, const char *buf, size_t len, loff_t *ppos); extern int generic_segment_checks(const struct iovec *iov, unsigned long *nr_segs, size_t *count, int access_flags); extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos); extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, int datasync); extern void block_sync_page(struct page *page); extern ssize_t generic_file_splice_read(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); extern ssize_t default_file_splice_read(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); extern ssize_t generic_file_splice_write(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, struct file *out, loff_t *, size_t len, unsigned int flags); extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, size_t len, unsigned int flags); extern void file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); extern loff_t noop_llseek(struct file *file, loff_t offset, int whence); extern loff_t no_llseek(struct file *file, loff_t offset, int whence); extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence); extern loff_t generic_file_llseek_size(struct file *file, loff_t offset, int whence, loff_t maxsize, loff_t eof); extern int generic_file_open(struct inode * inode, struct file * filp); extern int nonseekable_open(struct inode * inode, struct file * filp); # 2413 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int xip_truncate_page(struct address_space *mapping, loff_t from) { return 0; } typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode, loff_t file_offset); enum { DIO_LOCKING = 0x01, DIO_SKIP_HOLES = 0x02, }; void dio_end_io(struct bio *bio, int error); ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, struct block_device *bdev, const struct iovec *iov, loff_t offset, unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, dio_submit_t submit_io, int flags); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ssize_t blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, const struct iovec *iov, loff_t offset, unsigned long nr_segs, get_block_t get_block) { return __blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, offset, nr_segs, get_block, ((void *)0), ((void *)0), DIO_LOCKING | DIO_SKIP_HOLES); } void inode_dio_wait(struct inode *inode); void inode_dio_done(struct inode *inode); extern const struct file_operations generic_ro_fops; extern int vfs_readlink(struct dentry *, char *, int, const char *); extern int vfs_follow_link(struct nameidata *, const char *); extern int page_readlink(struct dentry *, char *, int); extern void *page_follow_link_light(struct dentry *, struct nameidata *); extern void page_put_link(struct dentry *, struct nameidata *, void *); extern int __page_symlink(struct inode *inode, const char *symname, int len, int nofs); extern int page_symlink(struct inode *inode, const char *symname, int len); extern const struct inode_operations page_symlink_inode_operations; extern int generic_readlink(struct dentry *, char *, int); extern void generic_fillattr(struct inode *, struct kstat *); extern int vfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); void __inode_add_bytes(struct inode *inode, loff_t bytes); void inode_add_bytes(struct inode *inode, loff_t bytes); void inode_sub_bytes(struct inode *inode, loff_t bytes); loff_t inode_get_bytes(struct inode *inode); void inode_set_bytes(struct inode *inode, loff_t bytes); extern int vfs_readdir(struct file *, filldir_t, void *); extern int vfs_stat(const char *, struct kstat *); extern int vfs_lstat(const char *, struct kstat *); extern int vfs_fstat(unsigned int, struct kstat *); extern int vfs_fstatat(int , const char *, struct kstat *, int); extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, unsigned long arg); extern int __generic_block_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, loff_t start, loff_t len, get_block_t *get_block); extern int generic_block_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, u64 start, u64 len, get_block_t *get_block); extern void get_filesystem(struct file_system_type *fs); extern void put_filesystem(struct file_system_type *fs); extern struct file_system_type *get_fs_type(const char *name); extern struct super_block *get_super(struct block_device *); extern struct super_block *get_super_thawed(struct block_device *); extern struct super_block *get_active_super(struct block_device *bdev); extern void drop_super(struct super_block *sb); extern void iterate_supers(void (*)(struct super_block *, void *), void *); extern void iterate_supers_type(struct file_system_type *, void (*)(struct super_block *, void *), void *); extern int dcache_dir_open(struct inode *, struct file *); extern int dcache_dir_close(struct inode *, struct file *); extern loff_t dcache_dir_lseek(struct file *, loff_t, int); extern int dcache_readdir(struct file *, void *, filldir_t); extern int simple_setattr(struct dentry *, struct iattr *); extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *); extern int simple_statfs(struct dentry *, struct kstatfs *); extern int simple_open(struct inode *inode, struct file *file); extern int simple_link(struct dentry *, struct inode *, struct dentry *); extern int simple_unlink(struct inode *, struct dentry *); extern int simple_rmdir(struct inode *, struct dentry *); extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); extern int noop_fsync(struct file *, loff_t, loff_t, int); extern int simple_empty(struct dentry *); extern int simple_readpage(struct file *file, struct page *page); extern int simple_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); extern int simple_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags); extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *); extern const struct file_operations simple_dir_operations; extern const struct inode_operations simple_dir_inode_operations; struct tree_descr { char *name; const struct file_operations *ops; int mode; }; struct dentry *d_alloc_name(struct dentry *, const char *); extern int simple_fill_super(struct super_block *, unsigned long, struct tree_descr *); extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count); extern void simple_release_fs(struct vfsmount **mount, int *count); extern ssize_t simple_read_from_buffer(void *to, size_t count, loff_t *ppos, const void *from, size_t available); extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos, const void *from, size_t count); extern int generic_file_fsync(struct file *, loff_t, loff_t, int); extern int generic_check_addressable(unsigned, u64); extern int buffer_migrate_page(struct address_space *, struct page *, struct page *, enum migrate_mode); extern int inode_change_ok(const struct inode *, struct iattr *); extern int inode_newsize_ok(const struct inode *, loff_t offset); extern void setattr_copy(struct inode *inode, const struct iattr *attr); extern int file_update_time(struct file *file); extern int generic_show_options(struct seq_file *m, struct dentry *root); extern void save_mount_options(struct super_block *sb, char *options); extern void replace_mount_options(struct super_block *sb, char *options); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) ino_t parent_ino(struct dentry *dentry) { ino_t res; spin_lock(&dentry->d_lock); res = dentry->d_parent->d_inode->i_ino; spin_unlock(&dentry->d_lock); return res; } struct simple_transaction_argresp { ssize_t size; char data[0]; }; char *simple_transaction_get(struct file *file, const char *buf, size_t size); ssize_t simple_transaction_read(struct file *file, char *buf, size_t size, loff_t *pos); int simple_transaction_release(struct inode *inode, struct file *file); void simple_transaction_set(struct file *file, size_t n); # 2626 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((format(printf, 1, 2))) void __simple_attr_check_format(const char *fmt, ...) { } int simple_attr_open(struct inode *inode, struct file *file, int (*get)(void *, u64 *), int (*set)(void *, u64), const char *fmt); int simple_attr_release(struct inode *inode, struct file *file); ssize_t simple_attr_read(struct file *file, char *buf, size_t len, loff_t *ppos); ssize_t simple_attr_write(struct file *file, const char *buf, size_t len, loff_t *ppos); struct ctl_table; int proc_nr_files(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int proc_nr_dentry(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int proc_nr_inodes(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) get_filesystem_list(char *buf); # 2657 "include/linux/fs.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_sxid(umode_t mode) { return (mode & 0004000) || ((mode & 0002000) && (mode & 00010)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inode_has_no_xattr(struct inode *inode) { if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & (1<<28))) inode->i_flags |= 4096; } # 66 "include/linux/genhd.h" 2 struct partition { unsigned char boot_ind; unsigned char head; unsigned char sector; unsigned char cyl; unsigned char sys_ind; unsigned char end_head; unsigned char end_sector; unsigned char end_cyl; __le32 start_sect; __le32 nr_sects; } __attribute__((packed)); struct disk_stats { unsigned long sectors[2]; unsigned long ios[2]; unsigned long merges[2]; unsigned long ticks[2]; unsigned long io_ticks; unsigned long time_in_queue; }; # 97 "include/linux/genhd.h" struct partition_meta_info { char uuid[37]; u8 volname[64]; }; struct hd_struct { sector_t start_sect; sector_t nr_sects; seqcount_t nr_sects_seq; sector_t alignment_offset; unsigned int discard_alignment; struct device __dev; struct kobject *holder_dir; int policy, partno; struct partition_meta_info *info; unsigned long stamp; atomic_t in_flight[2]; struct disk_stats *dkstats; atomic_t ref; struct callback_head callback_head; }; # 142 "include/linux/genhd.h" enum { DISK_EVENT_MEDIA_CHANGE = 1 << 0, DISK_EVENT_EJECT_REQUEST = 1 << 1, }; struct blk_scsi_cmd_filter { unsigned long read_ok[((256) / (sizeof(long) * 8))]; unsigned long write_ok[((256) / (sizeof(long) * 8))]; struct kobject kobj; }; struct disk_part_tbl { struct callback_head callback_head; int len; struct hd_struct *last_lookup; struct hd_struct *part[]; }; struct disk_events; struct gendisk { int major; int first_minor; int minors; char disk_name[32]; char *(*devnode)(struct gendisk *gd, umode_t *mode); unsigned int events; unsigned int async_events; struct disk_part_tbl *part_tbl; struct hd_struct part0; const struct block_device_operations *fops; struct request_queue *queue; void *private_data; int flags; struct device *driverfs_dev; struct kobject *slave_dir; struct timer_rand_state *random; atomic_t sync_io; struct disk_events *ev; struct blk_integrity *integrity; int node_id; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct gendisk *part_to_disk(struct hd_struct *part) { if (__builtin_expect(!!(part), 1)) { if (part->partno) return ({ const typeof( ((struct gendisk *)0)->part0.__dev ) *__mptr = (((&((part)->__dev))->parent)); (struct gendisk *)( (char *)__mptr - __builtin_offsetof(struct gendisk,part0.__dev) );}); else return ({ const typeof( ((struct gendisk *)0)->part0.__dev ) *__mptr = (((&((part)->__dev)))); (struct gendisk *)( (char *)__mptr - __builtin_offsetof(struct gendisk,part0.__dev) );}); } return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void part_pack_uuid(const u8 *uuid_str, u8 *to) { int i; for (i = 0; i < 16; ++i) { *to++ = (hex_to_bin(*uuid_str) << 4) | (hex_to_bin(*(uuid_str + 1))); uuid_str += 2; switch (i) { case 3: case 5: case 7: case 9: uuid_str++; continue; } } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int disk_max_parts(struct gendisk *disk) { if (disk->flags & 64) return 256; return disk->minors; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool disk_part_scan_enabled(struct gendisk *disk) { return disk_max_parts(disk) > 1 && !(disk->flags & 512); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dev_t disk_devt(struct gendisk *disk) { return (&(disk)->part0.__dev)->devt; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) dev_t part_devt(struct hd_struct *part) { return (&((part)->__dev))->devt; } extern struct hd_struct *disk_get_part(struct gendisk *disk, int partno); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void disk_put_part(struct hd_struct *part) { if (__builtin_expect(!!(part), 1)) put_device((&((part)->__dev))); } # 273 "include/linux/genhd.h" struct disk_part_iter { struct gendisk *disk; struct hd_struct *part; int idx; unsigned int flags; }; extern void disk_part_iter_init(struct disk_part_iter *piter, struct gendisk *disk, unsigned int flags); extern struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter); extern void disk_part_iter_exit(struct disk_part_iter *piter); extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, sector_t sector); # 316 "include/linux/genhd.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void part_stat_set_all(struct hd_struct *part, int value) { int i; for (((i)) = -1; ((i)) = cpumask_next(((i)), (cpu_possible_mask)), ((i)) < nr_cpu_ids;) ({ void *__p = (({ do { const void *__vpp_verify = (typeof(((part->dkstats))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*((part->dkstats))) *)((part->dkstats)))); (typeof((typeof(*((part->dkstats))) *)((part->dkstats)))) (__ptr + (((__per_cpu_offset[(i)])))); }); })); size_t __n = sizeof(struct disk_stats); if ((__n) != 0) { if (__builtin_constant_p((value)) && (value) == 0) __memzero((__p),(__n)); else memset((__p),(value),(__n)); } (__p); }) ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int init_part_stats(struct hd_struct *part) { part->dkstats = (typeof(struct disk_stats) *)__alloc_percpu(sizeof(struct disk_stats), __alignof__(struct disk_stats)); if (!part->dkstats) return 0; return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void free_part_stats(struct hd_struct *part) { free_percpu(part->dkstats); } # 377 "include/linux/genhd.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void part_inc_in_flight(struct hd_struct *part, int rw) { atomic_add(1, &part->in_flight[rw]); if (part->partno) atomic_add(1, &part_to_disk(part)->part0.in_flight[rw]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void part_dec_in_flight(struct hd_struct *part, int rw) { atomic_sub(1, &part->in_flight[rw]); if (part->partno) atomic_sub(1, &part_to_disk(part)->part0.in_flight[rw]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int part_in_flight(struct hd_struct *part) { return (*(volatile int *)&(&part->in_flight[0])->counter) + (*(volatile int *)&(&part->in_flight[1])->counter); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct partition_meta_info *alloc_part_info(struct gendisk *disk) { if (disk) return kzalloc_node(sizeof(struct partition_meta_info), ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)), disk->node_id); return kzalloc(sizeof(struct partition_meta_info), ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void free_part_info(struct hd_struct *part) { kfree(part->info); } extern void part_round_stats(int cpu, struct hd_struct *part); extern void add_disk(struct gendisk *disk); extern void del_gendisk(struct gendisk *gp); extern struct gendisk *get_gendisk(dev_t dev, int *partno); extern struct block_device *bdget_disk(struct gendisk *disk, int partno); extern void set_device_ro(struct block_device *bdev, int flag); extern void set_disk_ro(struct gendisk *disk, int flag); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int get_disk_ro(struct gendisk *disk) { return disk->part0.policy; } extern void disk_block_events(struct gendisk *disk); extern void disk_unblock_events(struct gendisk *disk); extern void disk_flush_events(struct gendisk *disk, unsigned int mask); extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask); extern void add_disk_randomness(struct gendisk *disk); extern void rand_initialize_disk(struct gendisk *disk); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) sector_t get_start_sect(struct block_device *bdev) { return bdev->bd_part->start_sect; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) sector_t get_capacity(struct gendisk *disk) { return disk->part0.nr_sects; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_capacity(struct gendisk *disk, sector_t size) { disk->part0.nr_sects = size; } struct solaris_x86_slice { __le16 s_tag; __le16 s_flag; __le32 s_start; __le32 s_size; }; struct solaris_x86_vtoc { unsigned int v_bootinfo[3]; __le32 v_sanity; __le32 v_version; char v_volume[8]; __le16 v_sectorsz; __le16 v_nparts; unsigned int v_reserved[10]; struct solaris_x86_slice v_slice[16]; unsigned int timestamp[16]; char v_asciilabel[128]; }; # 488 "include/linux/genhd.h" struct bsd_disklabel { __le32 d_magic; __s16 d_type; __s16 d_subtype; char d_typename[16]; char d_packname[16]; __u32 d_secsize; __u32 d_nsectors; __u32 d_ntracks; __u32 d_ncylinders; __u32 d_secpercyl; __u32 d_secperunit; __u16 d_sparespertrack; __u16 d_sparespercyl; __u32 d_acylinders; __u16 d_rpm; __u16 d_interleave; __u16 d_trackskew; __u16 d_cylskew; __u32 d_headswitch; __u32 d_trkseek; __u32 d_flags; __u32 d_drivedata[5]; __u32 d_spare[5]; __le32 d_magic2; __le16 d_checksum; __le16 d_npartitions; __le32 d_bbsize; __le32 d_sbsize; struct bsd_partition { __le32 p_size; __le32 p_offset; __le32 p_fsize; __u8 p_fstype; __u8 p_frag; __le16 p_cpg; } d_partitions[16]; }; # 544 "include/linux/genhd.h" struct unixware_slice { __le16 s_label; __le16 s_flags; __le32 start_sect; __le32 nr_sects; }; struct unixware_disklabel { __le32 d_type; __le32 d_magic; __le32 d_version; char d_serial[12]; __le32 d_ncylinders; __le32 d_ntracks; __le32 d_nsectors; __le32 d_secsize; __le32 d_part_start; __le32 d_unknown1[12]; __le32 d_alt_tbl; __le32 d_alt_len; __le32 d_phys_cyl; __le32 d_phys_trk; __le32 d_phys_sec; __le32 d_phys_bytes; __le32 d_unknown2; __le32 d_unknown3; __le32 d_pad[8]; struct unixware_vtoc { __le32 v_magic; __le32 v_version; char v_name[8]; __le16 v_nslices; __le16 v_unknown1; __le32 v_reserved[10]; struct unixware_slice v_slice[16]; } vtoc; }; # 595 "include/linux/genhd.h" extern int blk_alloc_devt(struct hd_struct *part, dev_t *devt); extern void blk_free_devt(dev_t devt); extern dev_t blk_lookup_devt(const char *name, int partno); extern char *disk_name (struct gendisk *hd, int partno, char *buf); extern int disk_expand_part_tbl(struct gendisk *disk, int target); extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev); extern int invalidate_partitions(struct gendisk *disk, struct block_device *bdev); extern struct hd_struct * __attribute__((warn_unused_result)) add_partition(struct gendisk *disk, int partno, sector_t start, sector_t len, int flags, struct partition_meta_info *info); extern void __delete_partition(struct hd_struct *); extern void delete_partition(struct gendisk *, int); extern void printk_all_partitions(void); extern struct gendisk *alloc_disk_node(int minors, int node_id); extern struct gendisk *alloc_disk(int minors); extern struct kobject *get_disk(struct gendisk *disk); extern void put_disk(struct gendisk *disk); extern void blk_register_region(dev_t devt, unsigned long range, struct module *module, struct kobject *(*probe)(dev_t, int *, void *), int (*lock)(dev_t, void *), void *data); extern void blk_unregister_region(dev_t devt, unsigned long range); extern ssize_t part_size_show(struct device *dev, struct device_attribute *attr, char *buf); extern ssize_t part_stat_show(struct device *dev, struct device_attribute *attr, char *buf); extern ssize_t part_inflight_show(struct device *dev, struct device_attribute *attr, char *buf); # 637 "include/linux/genhd.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hd_ref_init(struct hd_struct *part) { (((&part->ref)->counter) = (1)); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hd_struct_get(struct hd_struct *part) { atomic_add(1, &part->ref); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int hd_struct_try_get(struct hd_struct *part) { return atomic_add_unless((&part->ref), 1, 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void hd_struct_put(struct hd_struct *part) { if ((atomic_sub_return(1, &part->ref) == 0)) __delete_partition(part); } # 669 "include/linux/genhd.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) sector_t part_nr_sects_read(struct hd_struct *part) { sector_t nr_sects; unsigned seq; do { seq = read_seqcount_begin(&part->nr_sects_seq); nr_sects = part->nr_sects; } while (read_seqcount_retry(&part->nr_sects_seq, seq)); return nr_sects; # 689 "include/linux/genhd.h" } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void part_nr_sects_write(struct hd_struct *part, sector_t size) { write_seqcount_begin(&part->nr_sects_seq); part->nr_sects = size; write_seqcount_end(&part->nr_sects_seq); } # 10 "include/linux/blkdev.h" 2 # 1 "include/linux/pagemap.h" 1 # 10 "include/linux/pagemap.h" # 1 "include/linux/highmem.h" 1 # 1 "include/linux/uaccess.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" 1 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" # 1 "arch/arm/include/generated/asm/errno.h" 1 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/unified.h" 1 # 95 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/unified.h" __asm__( " .macro it, cond\n" " .endm\n" " .macro itt, cond\n" " .endm\n" " .macro ite, cond\n" " .endm\n" " .macro ittt, cond\n" " .endm\n" " .macro itte, cond\n" " .endm\n" " .macro itet, cond\n" " .endm\n" " .macro itee, cond\n" " .endm\n" " .macro itttt, cond\n" " .endm\n" " .macro ittte, cond\n" " .endm\n" " .macro ittet, cond\n" " .endm\n" " .macro ittee, cond\n" " .endm\n" " .macro itett, cond\n" " .endm\n" " .macro itete, cond\n" " .endm\n" " .macro iteet, cond\n" " .endm\n" " .macro iteee, cond\n" " .endm\n"); # 20 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" 2 # 38 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" struct exception_table_entry { unsigned long insn, fixup; }; extern int fixup_exception(struct pt_regs *regs); extern int __get_user_bad(void); extern int __put_user_bad(void); # 63 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_fs(mm_segment_t fs) { current_thread_info()->addr_limit = fs; modify_domain(0, fs ? 1 : 1); } # 100 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" extern int __get_user_1(void *); extern int __get_user_2(void *); extern int __get_user_4(void *); # 150 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" extern int __put_user_1(void *, unsigned int); extern int __put_user_2(void *, unsigned int); extern int __put_user_4(void *, unsigned int); extern int __put_user_8(void *, unsigned long long); # 421 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/uaccess.h" extern unsigned long __attribute__((warn_unused_result)) __copy_from_user(void *to, const void *from, unsigned long n); extern unsigned long __attribute__((warn_unused_result)) __copy_to_user(void *to, const void *from, unsigned long n); extern unsigned long __attribute__((warn_unused_result)) __copy_to_user_std(void *to, const void *from, unsigned long n); extern unsigned long __attribute__((warn_unused_result)) __clear_user(void *addr, unsigned long n); extern unsigned long __attribute__((warn_unused_result)) __clear_user_std(void *addr, unsigned long n); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __attribute__((warn_unused_result)) copy_from_user(void *to, const void *from, unsigned long n) { if ((({ unsigned long flag, roksum; (void)0; __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" : "=&r" (flag), "=&r" (roksum) : "r" (from), "Ir" (n), "0" (current_thread_info()->addr_limit) : "cc"); flag; }) == 0)) n = __copy_from_user(to, from, n); else ({ void *__p = (to); size_t __n = n; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); return n; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __attribute__((warn_unused_result)) copy_to_user(void *to, const void *from, unsigned long n) { if ((({ unsigned long flag, roksum; (void)0; __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" : "=&r" (flag), "=&r" (roksum) : "r" (to), "Ir" (n), "0" (current_thread_info()->addr_limit) : "cc"); flag; }) == 0)) n = __copy_to_user(to, from, n); return n; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __attribute__((warn_unused_result)) clear_user(void *to, unsigned long n) { if ((({ unsigned long flag, roksum; (void)0; __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" : "=&r" (flag), "=&r" (roksum) : "r" (to), "Ir" (n), "0" (current_thread_info()->addr_limit) : "cc"); flag; }) == 0)) n = __clear_user(to, n); return n; } extern long strncpy_from_user(char *dest, const char *src, long count); extern __attribute__((warn_unused_result)) long strlen_user(const char *str); extern __attribute__((warn_unused_result)) long strnlen_user(const char *str, long n); # 6 "include/linux/uaccess.h" 2 # 16 "include/linux/uaccess.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pagefault_disable(void) { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void pagefault_enable(void) { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); __asm__ __volatile__("": : :"memory"); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __copy_from_user_inatomic_nocache(void *to, const void *from, unsigned long n) { return __copy_from_user(to, from, n); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long __copy_from_user_nocache(void *to, const void *from, unsigned long n) { return __copy_from_user(to, from, n); } # 96 "include/linux/uaccess.h" extern long probe_kernel_read(void *dst, const void *src, size_t size); extern long __probe_kernel_read(void *dst, const void *src, size_t size); # 108 "include/linux/uaccess.h" extern long __attribute__((no_instrument_function)) probe_kernel_write(void *dst, const void *src, size_t size); extern long __attribute__((no_instrument_function)) __probe_kernel_write(void *dst, const void *src, size_t size); # 9 "include/linux/highmem.h" 2 # 1 "include/linux/hardirq.h" 1 # 1 "include/linux/ftrace_irq.h" 1 # 9 "include/linux/ftrace_irq.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ftrace_nmi_enter(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ftrace_nmi_exit(void) { } # 7 "include/linux/hardirq.h" 2 # 1 "include/linux/vtime.h" 1 struct task_struct; # 14 "include/linux/vtime.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_task_switch(struct task_struct *prev) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_account_system(struct task_struct *tsk) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_account_system_irqsafe(struct task_struct *tsk) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_account(struct task_struct *tsk) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void irqtime_account_irq(struct task_struct *tsk) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_account_irq_enter(struct task_struct *tsk) { # 37 "include/linux/vtime.h" vtime_account(tsk); irqtime_account_irq(tsk); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vtime_account_irq_exit(struct task_struct *tsk) { vtime_account_system(tsk); irqtime_account_irq(tsk); } # 8 "include/linux/hardirq.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hardirq.h" 1 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/irq.h" 1 # 25 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/irq.h" struct irqaction; struct pt_regs; extern void migrate_irqs(void); extern void asm_do_IRQ(unsigned int, struct pt_regs *); void handle_IRQ(unsigned int, struct pt_regs *); void init_IRQ(void); # 7 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hardirq.h" 2 typedef struct { unsigned int __softirq_pending; unsigned int ipi_irqs[6]; } __attribute__((__aligned__((1 << 6)))) irq_cpustat_t; # 1 "include/linux/irq_cpustat.h" 1 # 20 "include/linux/irq_cpustat.h" extern irq_cpustat_t irq_stat[]; # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/hardirq.h" 2 u64 smp_irq_stat_cpu(unsigned int cpu); # 9 "include/linux/hardirq.h" 2 # 128 "include/linux/hardirq.h" extern void synchronize_irq(unsigned int irq); # 144 "include/linux/hardirq.h" extern void rcu_nmi_enter(void); extern void rcu_nmi_exit(void); # 164 "include/linux/hardirq.h" extern void irq_enter(void); # 179 "include/linux/hardirq.h" extern void irq_exit(void); # 10 "include/linux/highmem.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" 1 # 15 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-cache.h" 1 # 13 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-cache.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue.h" 1 # 14 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/glue-cache.h" 2 # 16 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/shmparam.h" 1 # 17 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cachetype.h" 1 # 12 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cachetype.h" extern unsigned int cacheid; # 53 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cachetype.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int __attribute__((pure)) cacheid_is(unsigned int mask) { return ((0) & mask) | (~((1 << 0)) & ((1 << 1) | (1 << 3) | (1 << 4) | (1 << 5)) & mask & cacheid); } # 18 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" 2 # 104 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" struct cpu_cache_fns { void (*flush_icache_all)(void); void (*flush_kern_all)(void); void (*flush_kern_louis)(void); void (*flush_user_all)(void); void (*flush_user_range)(unsigned long, unsigned long, unsigned int); void (*coherent_kern_range)(unsigned long, unsigned long); int (*coherent_user_range)(unsigned long, unsigned long); void (*flush_kern_dcache_area)(void *, size_t); void (*dma_map_area)(const void *, size_t, int); void (*dma_unmap_area)(const void *, size_t, int); void (*dma_flush_range)(const void *, const void *); }; # 149 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" extern void v7_flush_icache_all(void); extern void v7_flush_kern_cache_all(void); extern void v7_flush_kern_cache_louis(void); extern void v7_flush_user_cache_all(void); extern void v7_flush_user_cache_range(unsigned long, unsigned long, unsigned int); extern void v7_coherent_kern_range(unsigned long, unsigned long); extern int v7_coherent_user_range(unsigned long, unsigned long); extern void v7_flush_kern_dcache_area(void *, size_t); extern void v7_dma_map_area(const void *, size_t, int); extern void v7_dma_unmap_area(const void *, size_t, int); extern void v7_dma_flush_range(const void *, const void *); # 175 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" extern void copy_to_user_page(struct vm_area_struct *, struct page *, unsigned long, void *, const void *, unsigned long); # 212 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __flush_icache_all(void) { v7_flush_icache_all(); } # 224 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vivt_flush_cache_mm(struct mm_struct *mm) { if (test_bit(cpumask_check((current_thread_info()->cpu)), (((mm_cpumask(mm)))->bits))) v7_flush_user_cache_all(); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { struct mm_struct *mm = vma->vm_mm; if (!mm || test_bit(cpumask_check((current_thread_info()->cpu)), (((mm_cpumask(mm)))->bits))) v7_flush_user_cache_range(start & (~(((1UL) << 12)-1)), ((((end)) + ((typeof((end)))((((1UL) << 12))) - 1)) & ~((typeof((end)))((((1UL) << 12))) - 1)), vma->vm_flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void vivt_flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { struct mm_struct *mm = vma->vm_mm; if (!mm || test_bit(cpumask_check((current_thread_info()->cpu)), (((mm_cpumask(mm)))->bits))) { unsigned long addr = user_addr & (~(((1UL) << 12)-1)); v7_flush_user_cache_range(addr, addr + ((1UL) << 12), vma->vm_flags); } } # 259 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" extern void flush_cache_mm(struct mm_struct *mm); extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn); # 299 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" extern void flush_dcache_page(struct page *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void flush_kernel_vmap_range(void *addr, int size) { if ((cacheid_is((1 << 0)) || cacheid_is((1 << 2)))) v7_flush_kern_dcache_area(addr, (size_t)size); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void invalidate_kernel_vmap_range(void *addr, int size) { if ((cacheid_is((1 << 0)) || cacheid_is((1 << 2)))) v7_flush_kern_dcache_area(addr, (size_t)size); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr) { extern void __flush_anon_page(struct vm_area_struct *vma, struct page *, unsigned long); if (PageAnon(page)) __flush_anon_page(vma, page, vmaddr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void flush_kernel_dcache_page(struct page *page) { } # 348 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/cacheflush.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void flush_cache_vmap(unsigned long start, unsigned long end) { if (!cacheid_is((1 << 1))) v7_flush_kern_cache_all(); else __asm__ __volatile__ ("dsb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void flush_cache_vunmap(unsigned long start, unsigned long end) { if (!cacheid_is((1 << 1))) v7_flush_kern_cache_all(); } # 12 "include/linux/highmem.h" 2 # 31 "include/linux/highmem.h" # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/kmap_types.h" 1 # 32 "include/linux/highmem.h" 2 # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/highmem.h" 1 # 20 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/highmem.h" extern pte_t *pkmap_page_table; extern void *kmap_high(struct page *page); extern void kunmap_high(struct page *page); # 45 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/highmem.h" extern void *kmap_high_get(struct page *page); # 58 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/highmem.h" extern void *kmap(struct page *page); extern void kunmap(struct page *page); extern void *kmap_atomic(struct page *page); extern void __kunmap_atomic(void *kvaddr); extern void *kmap_atomic_pfn(unsigned long pfn); extern struct page *kmap_atomic_to_page(const void *ptr); # 35 "include/linux/highmem.h" 2 unsigned int nr_free_highpages(void); extern unsigned long totalhigh_pages; void kmap_flush_unused(void); struct page *kmap_to_page(void *addr); # 88 "include/linux/highmem.h" extern __attribute__((section(".data..percpu" ""))) __typeof__(int) __kmap_atomic_idx; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kmap_atomic_idx_push(void) { int idx = ({ typeof(__kmap_atomic_idx) pscr2_ret__; do { const void *__vpp_verify = (typeof(&(__kmap_atomic_idx)))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(__kmap_atomic_idx)) { case 1: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 2: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 4: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 8: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; default: __bad_size_call_parameter(); break; } pscr2_ret__; }) - 1; ({ static bool __attribute__ ((__section__(".data.unlikely"))) __warned; int __ret_warn_once = !!((((current_thread_info()->preempt_count) & (((1UL << (10))-1) << ((0 + 8) + 8)))) && !({ unsigned long _flags; do { ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _flags = arch_local_save_flags(); } while (0); ({ ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(_flags); }); })); if (__builtin_expect(!!(__ret_warn_once), 0)) if (({ int __ret_warn_on = !!(!__warned); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/highmem.h", 95); __builtin_expect(!!(__ret_warn_on), 0); })) __warned = true; __builtin_expect(!!(__ret_warn_once), 0); }); do { if (__builtin_expect(!!(idx > 16), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/highmem.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "96" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); return idx; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int kmap_atomic_idx(void) { return ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }) - 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void kmap_atomic_idx_pop(void) { int idx = ({ typeof(__kmap_atomic_idx) pscr2_ret__; do { const void *__vpp_verify = (typeof(&(__kmap_atomic_idx)))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(__kmap_atomic_idx)) { case 1: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 2: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 4: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; case 8: pscr2_ret__ = ({ do { do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 2: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 4: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; case 8: do { *({ do { const void *__vpp_verify = (typeof((&(((__kmap_atomic_idx))))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))); (typeof((typeof(*(&(((__kmap_atomic_idx))))) *)(&(((__kmap_atomic_idx)))))) (__ptr + ((__my_cpu_offset()))); }); }) += ((-1)); } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ({ typeof((__kmap_atomic_idx)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((__kmap_atomic_idx))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((__kmap_atomic_idx))) { case 1: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 2: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 4: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; case 8: pscr_ret__ = (*({ do { const void *__vpp_verify = (typeof((&((__kmap_atomic_idx)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))); (typeof((typeof(*(&((__kmap_atomic_idx)))) *)(&((__kmap_atomic_idx))))) (__ptr + ((__my_cpu_offset()))); }); }));break; default: __bad_size_call_parameter();break; } pscr_ret__; }); }); break; default: __bad_size_call_parameter(); break; } pscr2_ret__; }); do { if (__builtin_expect(!!(idx < 0), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/highmem.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "111" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); } # 155 "include/linux/highmem.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page * __alloc_zeroed_user_highpage(gfp_t movableflags, struct vm_area_struct *vma, unsigned long vaddr) { struct page *page = alloc_pages_node(numa_node_id(), ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u) | (( gfp_t)0x20000u) | (( gfp_t)0x02u)) | movableflags, 0) ; if (page) cpu_user.cpu_clear_user_highpage(page, vaddr); return page; } # 178 "include/linux/highmem.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page * alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma, unsigned long vaddr) { return __alloc_zeroed_user_highpage((( gfp_t)0x08u), vma, vaddr); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void clear_highpage(struct page *page) { void *kaddr = kmap_atomic(page); ({ void *__p = ((void *)(kaddr)); size_t __n = ((1UL) << 12); if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); do { do { ((void)sizeof(char[1 - 2*!!(__builtin_types_compatible_p(typeof((kaddr)), typeof(struct page *)))])); if (__builtin_types_compatible_p(typeof((kaddr)), typeof(struct page *))) __build_bug_on_failed = 1; } while(0); __kunmap_atomic(kaddr); } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zero_user_segments(struct page *page, unsigned start1, unsigned end1, unsigned start2, unsigned end2) { void *kaddr = kmap_atomic(page); do { if (__builtin_expect(!!(end1 > ((1UL) << 12) || end2 > ((1UL) << 12)), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/highmem.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "198" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); if (end1 > start1) ({ void *__p = (kaddr + start1); size_t __n = end1 - start1; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); if (end2 > start2) ({ void *__p = (kaddr + start2); size_t __n = end2 - start2; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); do { do { ((void)sizeof(char[1 - 2*!!(__builtin_types_compatible_p(typeof((kaddr)), typeof(struct page *)))])); if (__builtin_types_compatible_p(typeof((kaddr)), typeof(struct page *))) __build_bug_on_failed = 1; } while(0); __kunmap_atomic(kaddr); } while (0); flush_dcache_page(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zero_user_segment(struct page *page, unsigned start, unsigned end) { zero_user_segments(page, start, end, 0, 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void zero_user(struct page *page, unsigned start, unsigned size) { zero_user_segments(page, start, start + size, 0, 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void memclear_highpage_flush(struct page *page, unsigned int offset, unsigned int size) { zero_user(page, offset, size); } # 244 "include/linux/highmem.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void copy_highpage(struct page *to, struct page *from) { char *vfrom, *vto; vfrom = kmap_atomic(from); vto = kmap_atomic(to); copy_page(vto, vfrom); do { do { ((void)sizeof(char[1 - 2*!!(__builtin_types_compatible_p(typeof((vto)), typeof(struct page *)))])); if (__builtin_types_compatible_p(typeof((vto)), typeof(struct page *))) __build_bug_on_failed = 1; } while(0); __kunmap_atomic(vto); } while (0); do { do { ((void)sizeof(char[1 - 2*!!(__builtin_types_compatible_p(typeof((vfrom)), typeof(struct page *)))])); if (__builtin_types_compatible_p(typeof((vfrom)), typeof(struct page *))) __build_bug_on_failed = 1; } while(0); __kunmap_atomic(vfrom); } while (0); } # 11 "include/linux/pagemap.h" 2 # 1 "include/linux/hugetlb_inline.h" 1 # 15 "include/linux/hugetlb_inline.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_vm_hugetlb_page(struct vm_area_struct *vma) { return 0; } # 17 "include/linux/pagemap.h" 2 enum mapping_flags { AS_EIO = 25 + 0, AS_ENOSPC = 25 + 1, AS_MM_ALL_LOCKS = 25 + 2, AS_UNEVICTABLE = 25 + 3, AS_BALLOON_MAP = 25 + 4, }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_set_error(struct address_space *mapping, int error) { if (__builtin_expect(!!(error), 0)) { if (error == -28) _set_bit(AS_ENOSPC,&mapping->flags); else _set_bit(AS_EIO,&mapping->flags); } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_set_unevictable(struct address_space *mapping) { _set_bit(AS_UNEVICTABLE,&mapping->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_clear_unevictable(struct address_space *mapping) { _clear_bit(AS_UNEVICTABLE,&mapping->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mapping_unevictable(struct address_space *mapping) { if (mapping) return test_bit(AS_UNEVICTABLE, &mapping->flags); return !!mapping; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_set_balloon(struct address_space *mapping) { _set_bit(AS_BALLOON_MAP,&mapping->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_clear_balloon(struct address_space *mapping) { _clear_bit(AS_BALLOON_MAP,&mapping->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int mapping_balloon(struct address_space *mapping) { return mapping && test_bit(AS_BALLOON_MAP, &mapping->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) gfp_t mapping_gfp_mask(struct address_space * mapping) { return ( gfp_t)mapping->flags & (( gfp_t)((1 << 25) - 1)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void mapping_set_gfp_mask(struct address_space *m, gfp_t mask) { m->flags = (m->flags & ~( unsigned long)(( gfp_t)((1 << 25) - 1))) | ( unsigned long)mask; } # 102 "include/linux/pagemap.h" void release_pages(struct page **pages, int nr, int cold); # 148 "include/linux/pagemap.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_cache_get_speculative(struct page *page) { ({ int __ret_warn_on = !!((((current_thread_info()->preempt_count) & ((((1UL << (10))-1) << ((0 + 8) + 8)) | (((1UL << (8))-1) << (0 + 8)) | (((1UL << (1))-1) << (((0 + 8) + 8) + 10)))))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 150); __builtin_expect(!!(__ret_warn_on), 0); }); # 169 "include/linux/pagemap.h" if (__builtin_expect(!!(!get_page_unless_zero(page)), 0)) { return 0; } ({ int __ret_warn_on = !!(PageTail(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 178); __builtin_expect(!!(__ret_warn_on), 0); }); return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_cache_add_speculative(struct page *page, int count) { ({ int __ret_warn_on = !!((((current_thread_info()->preempt_count) & ((((1UL << (10))-1) << ((0 + 8) + 8)) | (((1UL << (8))-1) << (0 + 8)) | (((1UL << (1))-1) << (((0 + 8) + 8) + 10)))))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 188); __builtin_expect(!!(__ret_warn_on), 0); }); # 198 "include/linux/pagemap.h" if (__builtin_expect(!!(!atomic_add_unless(&page->_count, count, 0)), 0)) return 0; ({ int __ret_warn_on = !!(PageCompound(page) && page != compound_head(page)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 201); __builtin_expect(!!(__ret_warn_on), 0); }); return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int page_freeze_refs(struct page *page, int count) { return __builtin_expect(!!(atomic_cmpxchg(&page->_count, count, 0) == count), 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void page_unfreeze_refs(struct page *page, int count) { ({ int __ret_warn_on = !!(page_count(page) != 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 213); __builtin_expect(!!(__ret_warn_on), 0); }); ({ int __ret_warn_on = !!(count == 0); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/pagemap.h", 214); __builtin_expect(!!(__ret_warn_on), 0); }); (((&page->_count)->counter) = (count)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *__page_cache_alloc(gfp_t gfp) { return alloc_pages_node(numa_node_id(), gfp, 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *page_cache_alloc(struct address_space *x) { return __page_cache_alloc(mapping_gfp_mask(x)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *page_cache_alloc_cold(struct address_space *x) { return __page_cache_alloc(mapping_gfp_mask(x)|(( gfp_t)0x100u)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *page_cache_alloc_readahead(struct address_space *x) { return __page_cache_alloc(mapping_gfp_mask(x) | (( gfp_t)0x100u) | (( gfp_t)0x1000u) | (( gfp_t)0x200u)); } typedef int filler_t(void *, struct page *); extern struct page * find_get_page(struct address_space *mapping, unsigned long index); extern struct page * find_lock_page(struct address_space *mapping, unsigned long index); extern struct page * find_or_create_page(struct address_space *mapping, unsigned long index, gfp_t gfp_mask); unsigned find_get_pages(struct address_space *mapping, unsigned long start, unsigned int nr_pages, struct page **pages); unsigned find_get_pages_contig(struct address_space *mapping, unsigned long start, unsigned int nr_pages, struct page **pages); unsigned find_get_pages_tag(struct address_space *mapping, unsigned long *index, int tag, unsigned int nr_pages, struct page **pages); struct page *grab_cache_page_write_begin(struct address_space *mapping, unsigned long index, unsigned flags); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *grab_cache_page(struct address_space *mapping, unsigned long index) { return find_or_create_page(mapping, index, mapping_gfp_mask(mapping)); } extern struct page * grab_cache_page_nowait(struct address_space *mapping, unsigned long index); extern struct page * read_cache_page_async(struct address_space *mapping, unsigned long index, filler_t *filler, void *data); extern struct page * read_cache_page(struct address_space *mapping, unsigned long index, filler_t *filler, void *data); extern struct page * read_cache_page_gfp(struct address_space *mapping, unsigned long index, gfp_t gfp_mask); extern int read_cache_pages(struct address_space *mapping, struct list_head *pages, filler_t *filler, void *data); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *read_mapping_page_async( struct address_space *mapping, unsigned long index, void *data) { filler_t *filler = (filler_t *)mapping->a_ops->readpage; return read_cache_page_async(mapping, index, filler, data); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct page *read_mapping_page(struct address_space *mapping, unsigned long index, void *data) { filler_t *filler = (filler_t *)mapping->a_ops->readpage; return read_cache_page(mapping, index, filler, data); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) loff_t page_offset(struct page *page) { return ((loff_t)page->index) << 12; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) loff_t page_file_offset(struct page *page) { return ((loff_t)page_file_index(page)) << 12; } extern unsigned long linear_hugepage_index(struct vm_area_struct *vma, unsigned long address); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long linear_page_index(struct vm_area_struct *vma, unsigned long address) { unsigned long pgoff; if (__builtin_expect(!!(is_vm_hugetlb_page(vma)), 0)) return linear_hugepage_index(vma, address); pgoff = (address - vma->vm_start) >> 12; pgoff += vma->vm_pgoff; return pgoff >> (12 - 12); } extern void __lock_page(struct page *page); extern int __lock_page_killable(struct page *page); extern int __lock_page_or_retry(struct page *page, struct mm_struct *mm, unsigned int flags); extern void unlock_page(struct page *page); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __set_page_locked(struct page *page) { __set_bit(PG_locked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __clear_page_locked(struct page *page) { __clear_bit(PG_locked, &page->flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int trylock_page(struct page *page) { return (__builtin_expect(!!(!_test_and_set_bit(PG_locked,&page->flags)), 1)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lock_page(struct page *page) { do { _cond_resched(); } while (0); if (!trylock_page(page)) __lock_page(page); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int lock_page_killable(struct page *page) { do { _cond_resched(); } while (0); if (!trylock_page(page)) return __lock_page_killable(page); return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int lock_page_or_retry(struct page *page, struct mm_struct *mm, unsigned int flags) { do { _cond_resched(); } while (0); return trylock_page(page) || __lock_page_or_retry(page, mm, flags); } extern void wait_on_page_bit(struct page *page, int bit_nr); extern int wait_on_page_bit_killable(struct page *page, int bit_nr); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int wait_on_page_locked_killable(struct page *page) { if (PageLocked(page)) return wait_on_page_bit_killable(page, PG_locked); return 0; } # 401 "include/linux/pagemap.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void wait_on_page_locked(struct page *page) { if (PageLocked(page)) wait_on_page_bit(page, PG_locked); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void wait_on_page_writeback(struct page *page) { if (PageWriteback(page)) wait_on_page_bit(page, PG_writeback); } extern void end_page_writeback(struct page *page); extern void add_page_wait_queue(struct page *page, wait_queue_t *waiter); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fault_in_pages_writeable(char *uaddr, int size) { int ret; if (__builtin_expect(!!(size == 0), 0)) return 0; ret = ({ long __pu_err = 0; do { unsigned long __pu_addr = (unsigned long)((uaddr)); __typeof__(*((uaddr))) __pu_val = ((0)); (void)0; might_fault(); switch (sizeof(*((uaddr)))) { case 1: __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __temp = (unsigned long)(__pu_val); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp), "r" (__pu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp >> 8), "r" (__pu_addr + 1), "i" (-14) : "cc"); }); break; case 4: __asm__ __volatile__( "1: " "str" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 8: __asm__ __volatile__( "1: " "str" " " "%Q2" ", [%1], #4\n" "2: " "str" " " "%R2" ", [%1]\n" "3:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "4: mov %0, %3\n" " b 3b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 4b\n" " .long 2b, 4b\n" " .popsection" : "+r" (__pu_err), "+r" (__pu_addr) : "r" (__pu_val), "i" (-14) : "cc"); break; default: __put_user_bad(); } } while (0); __pu_err; }); if (ret == 0) { char *end = uaddr + size - 1; if (((unsigned long)uaddr & (~(((1UL) << 12)-1))) != ((unsigned long)end & (~(((1UL) << 12)-1)))) ret = ({ long __pu_err = 0; do { unsigned long __pu_addr = (unsigned long)((end)); __typeof__(*((end))) __pu_val = ((0)); (void)0; might_fault(); switch (sizeof(*((end)))) { case 1: __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __temp = (unsigned long)(__pu_val); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp), "r" (__pu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp >> 8), "r" (__pu_addr + 1), "i" (-14) : "cc"); }); break; case 4: __asm__ __volatile__( "1: " "str" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 8: __asm__ __volatile__( "1: " "str" " " "%Q2" ", [%1], #4\n" "2: " "str" " " "%R2" ", [%1]\n" "3:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "4: mov %0, %3\n" " b 3b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 4b\n" " .long 2b, 4b\n" " .popsection" : "+r" (__pu_err), "+r" (__pu_addr) : "r" (__pu_val), "i" (-14) : "cc"); break; default: __put_user_bad(); } } while (0); __pu_err; }); } return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fault_in_pages_readable(const char *uaddr, int size) { volatile char c; int ret; if (__builtin_expect(!!(size == 0), 0)) return 0; ret = ({ long __gu_err = 0; do { unsigned long __gu_addr = (unsigned long)((uaddr)); unsigned long __gu_val; (void)0; might_fault(); switch (sizeof(*((uaddr)))) { case 1: __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __b1, __b2; __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b1) : "r" (__gu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b2) : "r" (__gu_addr + 1), "i" (-14) : "cc"); (__gu_val) = __b1 | (__b2 << 8); }); break; case 4: __asm__ __volatile__( "1: " "ldr" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; default: (__gu_val) = __get_user_bad(); } ((c)) = (__typeof__(*((uaddr))))__gu_val; } while (0); __gu_err; }); if (ret == 0) { const char *end = uaddr + size - 1; if (((unsigned long)uaddr & (~(((1UL) << 12)-1))) != ((unsigned long)end & (~(((1UL) << 12)-1)))) { ret = ({ long __gu_err = 0; do { unsigned long __gu_addr = (unsigned long)((end)); unsigned long __gu_val; (void)0; might_fault(); switch (sizeof(*((end)))) { case 1: __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __b1, __b2; __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b1) : "r" (__gu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b2) : "r" (__gu_addr + 1), "i" (-14) : "cc"); (__gu_val) = __b1 | (__b2 << 8); }); break; case 4: __asm__ __volatile__( "1: " "ldr" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; default: (__gu_val) = __get_user_bad(); } ((c)) = (__typeof__(*((end))))__gu_val; } while (0); __gu_err; }); (void)c; } } return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fault_in_multipages_writeable(char *uaddr, int size) { int ret = 0; char *end = uaddr + size - 1; if (__builtin_expect(!!(size == 0), 0)) return ret; while (uaddr <= end) { ret = ({ long __pu_err = 0; do { unsigned long __pu_addr = (unsigned long)((uaddr)); __typeof__(*((uaddr))) __pu_val = ((0)); (void)0; might_fault(); switch (sizeof(*((uaddr)))) { case 1: __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __temp = (unsigned long)(__pu_val); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp), "r" (__pu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp >> 8), "r" (__pu_addr + 1), "i" (-14) : "cc"); }); break; case 4: __asm__ __volatile__( "1: " "str" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 8: __asm__ __volatile__( "1: " "str" " " "%Q2" ", [%1], #4\n" "2: " "str" " " "%R2" ", [%1]\n" "3:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "4: mov %0, %3\n" " b 3b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 4b\n" " .long 2b, 4b\n" " .popsection" : "+r" (__pu_err), "+r" (__pu_addr) : "r" (__pu_val), "i" (-14) : "cc"); break; default: __put_user_bad(); } } while (0); __pu_err; }); if (ret != 0) return ret; uaddr += ((1UL) << 12); } if (((unsigned long)uaddr & (~(((1UL) << 12)-1))) == ((unsigned long)end & (~(((1UL) << 12)-1)))) ret = ({ long __pu_err = 0; do { unsigned long __pu_addr = (unsigned long)((end)); __typeof__(*((end))) __pu_val = ((0)); (void)0; might_fault(); switch (sizeof(*((end)))) { case 1: __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __temp = (unsigned long)(__pu_val); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp), "r" (__pu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "strb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__temp >> 8), "r" (__pu_addr + 1), "i" (-14) : "cc"); }); break; case 4: __asm__ __volatile__( "1: " "str" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__pu_err) : "r" (__pu_val), "r" (__pu_addr), "i" (-14) : "cc"); break; case 8: __asm__ __volatile__( "1: " "str" " " "%Q2" ", [%1], #4\n" "2: " "str" " " "%R2" ", [%1]\n" "3:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "4: mov %0, %3\n" " b 3b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 4b\n" " .long 2b, 4b\n" " .popsection" : "+r" (__pu_err), "+r" (__pu_addr) : "r" (__pu_val), "i" (-14) : "cc"); break; default: __put_user_bad(); } } while (0); __pu_err; }); return ret; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int fault_in_multipages_readable(const char *uaddr, int size) { volatile char c; int ret = 0; const char *end = uaddr + size - 1; if (__builtin_expect(!!(size == 0), 0)) return ret; while (uaddr <= end) { ret = ({ long __gu_err = 0; do { unsigned long __gu_addr = (unsigned long)((uaddr)); unsigned long __gu_val; (void)0; might_fault(); switch (sizeof(*((uaddr)))) { case 1: __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __b1, __b2; __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b1) : "r" (__gu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b2) : "r" (__gu_addr + 1), "i" (-14) : "cc"); (__gu_val) = __b1 | (__b2 << 8); }); break; case 4: __asm__ __volatile__( "1: " "ldr" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; default: (__gu_val) = __get_user_bad(); } ((c)) = (__typeof__(*((uaddr))))__gu_val; } while (0); __gu_err; }); if (ret != 0) return ret; uaddr += ((1UL) << 12); } if (((unsigned long)uaddr & (~(((1UL) << 12)-1))) == ((unsigned long)end & (~(((1UL) << 12)-1)))) { ret = ({ long __gu_err = 0; do { unsigned long __gu_addr = (unsigned long)((end)); unsigned long __gu_val; (void)0; might_fault(); switch (sizeof(*((end)))) { case 1: __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; case 2: ({ unsigned long __b1, __b2; __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b1) : "r" (__gu_addr), "i" (-14) : "cc"); __asm__ __volatile__( "1: " "ldrb" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__b2) : "r" (__gu_addr + 1), "i" (-14) : "cc"); (__gu_val) = __b1 | (__b2 << 8); }); break; case 4: __asm__ __volatile__( "1: " "ldr" " %1,[%2],#0\n" "2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" "3: mov %0, %3\n" " mov %1, #0\n" " b 2b\n" " .popsection\n" " .pushsection __ex_table,\"a\"\n" " .align 3\n" " .long 1b, 3b\n" " .popsection" : "+r" (__gu_err), "=&r" (__gu_val) : "r" (__gu_addr), "i" (-14) : "cc"); break; default: (__gu_val) = __get_user_bad(); } ((c)) = (__typeof__(*((end))))__gu_val; } while (0); __gu_err; }); (void)c; } return ret; } int add_to_page_cache_locked(struct page *page, struct address_space *mapping, unsigned long index, gfp_t gfp_mask); int add_to_page_cache_lru(struct page *page, struct address_space *mapping, unsigned long index, gfp_t gfp_mask); extern void delete_from_page_cache(struct page *page); extern void __delete_from_page_cache(struct page *page); int replace_page_cache_page(struct page *old, struct page *new, gfp_t gfp_mask); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int add_to_page_cache(struct page *page, struct address_space *mapping, unsigned long offset, gfp_t gfp_mask) { int error; __set_page_locked(page); error = add_to_page_cache_locked(page, mapping, offset, gfp_mask); if (__builtin_expect(!!(error), 0)) __clear_page_locked(page); return error; } # 14 "include/linux/blkdev.h" 2 # 1 "include/linux/backing-dev.h" 1 # 13 "include/linux/backing-dev.h" # 1 "include/linux/flex_proportions.h" 1 # 26 "include/linux/flex_proportions.h" struct fprop_global { struct percpu_counter events; unsigned int period; seqcount_t sequence; }; int fprop_global_init(struct fprop_global *p); void fprop_global_destroy(struct fprop_global *p); bool fprop_new_period(struct fprop_global *p, int periods); struct fprop_local_single { unsigned long events; unsigned int period; raw_spinlock_t lock; }; int fprop_local_init_single(struct fprop_local_single *pl); void fprop_local_destroy_single(struct fprop_local_single *pl); void __fprop_inc_single(struct fprop_global *p, struct fprop_local_single *pl); void fprop_fraction_single(struct fprop_global *p, struct fprop_local_single *pl, unsigned long *numerator, unsigned long *denominator); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void fprop_inc_single(struct fprop_global *p, struct fprop_local_single *pl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __fprop_inc_single(p, pl); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } struct fprop_local_percpu { struct percpu_counter events; unsigned int period; raw_spinlock_t lock; }; int fprop_local_init_percpu(struct fprop_local_percpu *pl); void fprop_local_destroy_percpu(struct fprop_local_percpu *pl); void __fprop_inc_percpu(struct fprop_global *p, struct fprop_local_percpu *pl); void __fprop_inc_percpu_max(struct fprop_global *p, struct fprop_local_percpu *pl, int max_frac); void fprop_fraction_percpu(struct fprop_global *p, struct fprop_local_percpu *pl, unsigned long *numerator, unsigned long *denominator); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void fprop_inc_percpu(struct fprop_global *p, struct fprop_local_percpu *pl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __fprop_inc_percpu(p, pl); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } # 14 "include/linux/backing-dev.h" 2 # 1 "include/linux/writeback.h" 1 # 10 "include/linux/writeback.h" extern __attribute__((section(".data..percpu" ""))) __typeof__(int) dirty_throttle_leaks; # 28 "include/linux/writeback.h" struct backing_dev_info; enum writeback_sync_modes { WB_SYNC_NONE, WB_SYNC_ALL, }; enum wb_reason { WB_REASON_BACKGROUND, WB_REASON_TRY_TO_FREE_PAGES, WB_REASON_SYNC, WB_REASON_PERIODIC, WB_REASON_LAPTOP_TIMER, WB_REASON_FREE_MORE_MEM, WB_REASON_FS_FREE_SPACE, WB_REASON_FORKER_THREAD, WB_REASON_MAX, }; extern const char *wb_reason_name[]; struct writeback_control { long nr_to_write; long pages_skipped; loff_t range_start; loff_t range_end; enum writeback_sync_modes sync_mode; unsigned for_kupdate:1; unsigned for_background:1; unsigned tagged_writepages:1; unsigned for_reclaim:1; unsigned range_cyclic:1; }; struct bdi_writeback; int inode_wait(void *); void writeback_inodes_sb(struct super_block *, enum wb_reason reason); void writeback_inodes_sb_nr(struct super_block *, unsigned long nr, enum wb_reason reason); int writeback_inodes_sb_if_idle(struct super_block *, enum wb_reason reason); int writeback_inodes_sb_nr_if_idle(struct super_block *, unsigned long nr, enum wb_reason reason); void sync_inodes_sb(struct super_block *); long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages, enum wb_reason reason); long wb_do_writeback(struct bdi_writeback *wb, int force_wait); void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); void inode_wait_for_writeback(struct inode *inode); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void wait_on_inode(struct inode *inode) { do { _cond_resched(); } while (0); wait_on_bit(&inode->i_state, 3, inode_wait, 2); } void laptop_io_completion(struct backing_dev_info *info); void laptop_sync_completion(void); void laptop_mode_sync(struct work_struct *work); void laptop_mode_timer_fn(unsigned long data); void throttle_vm_writeout(gfp_t gfp_mask); bool zone_dirty_ok(struct zone *zone); extern unsigned long global_dirty_limit; extern int dirty_background_ratio; extern unsigned long dirty_background_bytes; extern int vm_dirty_ratio; extern unsigned long vm_dirty_bytes; extern unsigned int dirty_writeback_interval; extern unsigned int dirty_expire_interval; extern int vm_highmem_is_dirtyable; extern int block_dump; extern int laptop_mode; extern int dirty_background_ratio_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int dirty_background_bytes_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int dirty_ratio_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int dirty_bytes_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); struct ctl_table; int dirty_writeback_centisecs_handler(struct ctl_table *, int, void *, size_t *, loff_t *); void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty); unsigned long bdi_dirty_limit(struct backing_dev_info *bdi, unsigned long dirty); void __bdi_update_bandwidth(struct backing_dev_info *bdi, unsigned long thresh, unsigned long bg_thresh, unsigned long dirty, unsigned long bdi_thresh, unsigned long bdi_dirty, unsigned long start_time); void page_writeback_init(void); void balance_dirty_pages_ratelimited(struct address_space *mapping); typedef int (*writepage_t)(struct page *page, struct writeback_control *wbc, void *data); int generic_writepages(struct address_space *mapping, struct writeback_control *wbc); void tag_pages_for_writeback(struct address_space *mapping, unsigned long start, unsigned long end); int write_cache_pages(struct address_space *mapping, struct writeback_control *wbc, writepage_t writepage, void *data); int do_writepages(struct address_space *mapping, struct writeback_control *wbc); void set_page_dirty_balance(struct page *page, int page_mkwrite); void writeback_set_ratelimit(void); void tag_pages_for_writeback(struct address_space *mapping, unsigned long start, unsigned long end); void account_page_redirty(struct page *page); # 19 "include/linux/backing-dev.h" 2 struct page; struct device; struct dentry; enum bdi_state { BDI_pending, BDI_wb_alloc, BDI_async_congested, BDI_sync_congested, BDI_registered, BDI_writeback_running, BDI_unused, }; typedef int (congested_fn)(void *, int); enum bdi_stat_item { BDI_RECLAIMABLE, BDI_WRITEBACK, BDI_DIRTIED, BDI_WRITTEN, NR_BDI_STAT_ITEMS }; struct bdi_writeback { struct backing_dev_info *bdi; unsigned int nr; unsigned long last_old_flush; unsigned long last_active; struct task_struct *task; struct timer_list wakeup_timer; struct list_head b_dirty; struct list_head b_io; struct list_head b_more_io; spinlock_t list_lock; }; struct backing_dev_info { struct list_head bdi_list; unsigned long ra_pages; unsigned long state; unsigned int capabilities; congested_fn *congested_fn; void *congested_data; char *name; struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS]; unsigned long bw_time_stamp; unsigned long dirtied_stamp; unsigned long written_stamp; unsigned long write_bandwidth; unsigned long avg_write_bandwidth; unsigned long dirty_ratelimit; unsigned long balanced_dirty_ratelimit; struct fprop_local_percpu completions; int dirty_exceeded; unsigned int min_ratio; unsigned int max_ratio, max_prop_frac; struct bdi_writeback wb; spinlock_t wb_lock; struct list_head work_list; struct device *dev; struct timer_list laptop_mode_wb_timer; struct dentry *debug_dir; struct dentry *debug_stats; }; int bdi_init(struct backing_dev_info *bdi); void bdi_destroy(struct backing_dev_info *bdi); __attribute__((format(printf, 3, 4))) int bdi_register(struct backing_dev_info *bdi, struct device *parent, const char *fmt, ...); int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); void bdi_unregister(struct backing_dev_info *bdi); int bdi_setup_and_register(struct backing_dev_info *, char *, unsigned int); void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, enum wb_reason reason); void bdi_start_background_writeback(struct backing_dev_info *bdi); int bdi_writeback_thread(void *data); int bdi_has_dirty_io(struct backing_dev_info *bdi); void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi); void bdi_lock_two(struct bdi_writeback *wb1, struct bdi_writeback *wb2); extern spinlock_t bdi_lock; extern struct list_head bdi_list; extern struct list_head bdi_pending_list; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int wb_has_dirty_io(struct bdi_writeback *wb) { return !list_empty(&wb->b_dirty) || !list_empty(&wb->b_io) || !list_empty(&wb->b_more_io); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __add_bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item, s64 amount) { __percpu_counter_add(&bdi->bdi_stat[item], amount, (8*(1+( __builtin_constant_p(nr_cpu_ids) ? ( (nr_cpu_ids) < 1 ? ____ilog2_NaN() : (nr_cpu_ids) & (1ULL << 63) ? 63 : (nr_cpu_ids) & (1ULL << 62) ? 62 : (nr_cpu_ids) & (1ULL << 61) ? 61 : (nr_cpu_ids) & (1ULL << 60) ? 60 : (nr_cpu_ids) & (1ULL << 59) ? 59 : (nr_cpu_ids) & (1ULL << 58) ? 58 : (nr_cpu_ids) & (1ULL << 57) ? 57 : (nr_cpu_ids) & (1ULL << 56) ? 56 : (nr_cpu_ids) & (1ULL << 55) ? 55 : (nr_cpu_ids) & (1ULL << 54) ? 54 : (nr_cpu_ids) & (1ULL << 53) ? 53 : (nr_cpu_ids) & (1ULL << 52) ? 52 : (nr_cpu_ids) & (1ULL << 51) ? 51 : (nr_cpu_ids) & (1ULL << 50) ? 50 : (nr_cpu_ids) & (1ULL << 49) ? 49 : (nr_cpu_ids) & (1ULL << 48) ? 48 : (nr_cpu_ids) & (1ULL << 47) ? 47 : (nr_cpu_ids) & (1ULL << 46) ? 46 : (nr_cpu_ids) & (1ULL << 45) ? 45 : (nr_cpu_ids) & (1ULL << 44) ? 44 : (nr_cpu_ids) & (1ULL << 43) ? 43 : (nr_cpu_ids) & (1ULL << 42) ? 42 : (nr_cpu_ids) & (1ULL << 41) ? 41 : (nr_cpu_ids) & (1ULL << 40) ? 40 : (nr_cpu_ids) & (1ULL << 39) ? 39 : (nr_cpu_ids) & (1ULL << 38) ? 38 : (nr_cpu_ids) & (1ULL << 37) ? 37 : (nr_cpu_ids) & (1ULL << 36) ? 36 : (nr_cpu_ids) & (1ULL << 35) ? 35 : (nr_cpu_ids) & (1ULL << 34) ? 34 : (nr_cpu_ids) & (1ULL << 33) ? 33 : (nr_cpu_ids) & (1ULL << 32) ? 32 : (nr_cpu_ids) & (1ULL << 31) ? 31 : (nr_cpu_ids) & (1ULL << 30) ? 30 : (nr_cpu_ids) & (1ULL << 29) ? 29 : (nr_cpu_ids) & (1ULL << 28) ? 28 : (nr_cpu_ids) & (1ULL << 27) ? 27 : (nr_cpu_ids) & (1ULL << 26) ? 26 : (nr_cpu_ids) & (1ULL << 25) ? 25 : (nr_cpu_ids) & (1ULL << 24) ? 24 : (nr_cpu_ids) & (1ULL << 23) ? 23 : (nr_cpu_ids) & (1ULL << 22) ? 22 : (nr_cpu_ids) & (1ULL << 21) ? 21 : (nr_cpu_ids) & (1ULL << 20) ? 20 : (nr_cpu_ids) & (1ULL << 19) ? 19 : (nr_cpu_ids) & (1ULL << 18) ? 18 : (nr_cpu_ids) & (1ULL << 17) ? 17 : (nr_cpu_ids) & (1ULL << 16) ? 16 : (nr_cpu_ids) & (1ULL << 15) ? 15 : (nr_cpu_ids) & (1ULL << 14) ? 14 : (nr_cpu_ids) & (1ULL << 13) ? 13 : (nr_cpu_ids) & (1ULL << 12) ? 12 : (nr_cpu_ids) & (1ULL << 11) ? 11 : (nr_cpu_ids) & (1ULL << 10) ? 10 : (nr_cpu_ids) & (1ULL << 9) ? 9 : (nr_cpu_ids) & (1ULL << 8) ? 8 : (nr_cpu_ids) & (1ULL << 7) ? 7 : (nr_cpu_ids) & (1ULL << 6) ? 6 : (nr_cpu_ids) & (1ULL << 5) ? 5 : (nr_cpu_ids) & (1ULL << 4) ? 4 : (nr_cpu_ids) & (1ULL << 3) ? 3 : (nr_cpu_ids) & (1ULL << 2) ? 2 : (nr_cpu_ids) & (1ULL << 1) ? 1 : (nr_cpu_ids) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(nr_cpu_ids) <= 4) ? __ilog2_u32(nr_cpu_ids) : __ilog2_u64(nr_cpu_ids) )))); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __inc_bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item) { __add_bdi_stat(bdi, item, 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void inc_bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __inc_bdi_stat(bdi, item); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void __dec_bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item) { __add_bdi_stat(bdi, item, -1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void dec_bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); __dec_bdi_stat(bdi, item); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 bdi_stat(struct backing_dev_info *bdi, enum bdi_stat_item item) { return percpu_counter_read_positive(&bdi->bdi_stat[item]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 __bdi_stat_sum(struct backing_dev_info *bdi, enum bdi_stat_item item) { return percpu_counter_sum_positive(&bdi->bdi_stat[item]); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) s64 bdi_stat_sum(struct backing_dev_info *bdi, enum bdi_stat_item item) { s64 sum; unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); sum = __bdi_stat_sum(bdi, item); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); return sum; } extern void bdi_writeout_inc(struct backing_dev_info *bdi); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long bdi_stat_error(struct backing_dev_info *bdi) { return nr_cpu_ids * (8*(1+( __builtin_constant_p(nr_cpu_ids) ? ( (nr_cpu_ids) < 1 ? ____ilog2_NaN() : (nr_cpu_ids) & (1ULL << 63) ? 63 : (nr_cpu_ids) & (1ULL << 62) ? 62 : (nr_cpu_ids) & (1ULL << 61) ? 61 : (nr_cpu_ids) & (1ULL << 60) ? 60 : (nr_cpu_ids) & (1ULL << 59) ? 59 : (nr_cpu_ids) & (1ULL << 58) ? 58 : (nr_cpu_ids) & (1ULL << 57) ? 57 : (nr_cpu_ids) & (1ULL << 56) ? 56 : (nr_cpu_ids) & (1ULL << 55) ? 55 : (nr_cpu_ids) & (1ULL << 54) ? 54 : (nr_cpu_ids) & (1ULL << 53) ? 53 : (nr_cpu_ids) & (1ULL << 52) ? 52 : (nr_cpu_ids) & (1ULL << 51) ? 51 : (nr_cpu_ids) & (1ULL << 50) ? 50 : (nr_cpu_ids) & (1ULL << 49) ? 49 : (nr_cpu_ids) & (1ULL << 48) ? 48 : (nr_cpu_ids) & (1ULL << 47) ? 47 : (nr_cpu_ids) & (1ULL << 46) ? 46 : (nr_cpu_ids) & (1ULL << 45) ? 45 : (nr_cpu_ids) & (1ULL << 44) ? 44 : (nr_cpu_ids) & (1ULL << 43) ? 43 : (nr_cpu_ids) & (1ULL << 42) ? 42 : (nr_cpu_ids) & (1ULL << 41) ? 41 : (nr_cpu_ids) & (1ULL << 40) ? 40 : (nr_cpu_ids) & (1ULL << 39) ? 39 : (nr_cpu_ids) & (1ULL << 38) ? 38 : (nr_cpu_ids) & (1ULL << 37) ? 37 : (nr_cpu_ids) & (1ULL << 36) ? 36 : (nr_cpu_ids) & (1ULL << 35) ? 35 : (nr_cpu_ids) & (1ULL << 34) ? 34 : (nr_cpu_ids) & (1ULL << 33) ? 33 : (nr_cpu_ids) & (1ULL << 32) ? 32 : (nr_cpu_ids) & (1ULL << 31) ? 31 : (nr_cpu_ids) & (1ULL << 30) ? 30 : (nr_cpu_ids) & (1ULL << 29) ? 29 : (nr_cpu_ids) & (1ULL << 28) ? 28 : (nr_cpu_ids) & (1ULL << 27) ? 27 : (nr_cpu_ids) & (1ULL << 26) ? 26 : (nr_cpu_ids) & (1ULL << 25) ? 25 : (nr_cpu_ids) & (1ULL << 24) ? 24 : (nr_cpu_ids) & (1ULL << 23) ? 23 : (nr_cpu_ids) & (1ULL << 22) ? 22 : (nr_cpu_ids) & (1ULL << 21) ? 21 : (nr_cpu_ids) & (1ULL << 20) ? 20 : (nr_cpu_ids) & (1ULL << 19) ? 19 : (nr_cpu_ids) & (1ULL << 18) ? 18 : (nr_cpu_ids) & (1ULL << 17) ? 17 : (nr_cpu_ids) & (1ULL << 16) ? 16 : (nr_cpu_ids) & (1ULL << 15) ? 15 : (nr_cpu_ids) & (1ULL << 14) ? 14 : (nr_cpu_ids) & (1ULL << 13) ? 13 : (nr_cpu_ids) & (1ULL << 12) ? 12 : (nr_cpu_ids) & (1ULL << 11) ? 11 : (nr_cpu_ids) & (1ULL << 10) ? 10 : (nr_cpu_ids) & (1ULL << 9) ? 9 : (nr_cpu_ids) & (1ULL << 8) ? 8 : (nr_cpu_ids) & (1ULL << 7) ? 7 : (nr_cpu_ids) & (1ULL << 6) ? 6 : (nr_cpu_ids) & (1ULL << 5) ? 5 : (nr_cpu_ids) & (1ULL << 4) ? 4 : (nr_cpu_ids) & (1ULL << 3) ? 3 : (nr_cpu_ids) & (1ULL << 2) ? 2 : (nr_cpu_ids) & (1ULL << 1) ? 1 : (nr_cpu_ids) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(nr_cpu_ids) <= 4) ? __ilog2_u32(nr_cpu_ids) : __ilog2_u64(nr_cpu_ids) ))); } int bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ratio); int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio); # 271 "include/linux/backing-dev.h" extern struct backing_dev_info default_backing_dev_info; extern struct backing_dev_info noop_backing_dev_info; int writeback_in_progress(struct backing_dev_info *bdi); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdi_congested(struct backing_dev_info *bdi, int bdi_bits) { if (bdi->congested_fn) return bdi->congested_fn(bdi->congested_data, bdi_bits); return (bdi->state & bdi_bits); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdi_read_congested(struct backing_dev_info *bdi) { return bdi_congested(bdi, 1 << BDI_sync_congested); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdi_write_congested(struct backing_dev_info *bdi) { return bdi_congested(bdi, 1 << BDI_async_congested); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdi_rw_congested(struct backing_dev_info *bdi) { return bdi_congested(bdi, (1 << BDI_sync_congested) | (1 << BDI_async_congested)); } enum { BLK_RW_ASYNC = 0, BLK_RW_SYNC = 1, }; void clear_bdi_congested(struct backing_dev_info *bdi, int sync); void set_bdi_congested(struct backing_dev_info *bdi, int sync); long congestion_wait(int sync, long timeout); long wait_iff_congested(struct zone *zone, int sync, long timeout); int pdflush_proc_obsolete(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) { return !(bdi->capabilities & 0x00000002); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bdi_cap_account_dirty(struct backing_dev_info *bdi) { return !(bdi->capabilities & 0x00000001); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bdi_cap_account_writeback(struct backing_dev_info *bdi) { return !(bdi->capabilities & (0x00000080 | 0x00000002)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bdi_cap_swap_backed(struct backing_dev_info *bdi) { return bdi->capabilities & 0x00000100; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bdi_cap_flush_forker(struct backing_dev_info *bdi) { return bdi == &default_backing_dev_info; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool mapping_cap_writeback_dirty(struct address_space *mapping) { return bdi_cap_writeback_dirty(mapping->backing_dev_info); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool mapping_cap_account_dirty(struct address_space *mapping) { return bdi_cap_account_dirty(mapping->backing_dev_info); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool mapping_cap_swap_backed(struct address_space *mapping) { return bdi_cap_swap_backed(mapping->backing_dev_info); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdi_sched_wait(void *word) { schedule(); return 0; } # 15 "include/linux/blkdev.h" 2 # 1 "include/linux/mempool.h" 1 # 9 "include/linux/mempool.h" struct kmem_cache; typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data); typedef void (mempool_free_t)(void *element, void *pool_data); typedef struct mempool_s { spinlock_t lock; int min_nr; int curr_nr; void **elements; void *pool_data; mempool_alloc_t *alloc; mempool_free_t *free; wait_queue_head_t wait; } mempool_t; extern mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn, mempool_free_t *free_fn, void *pool_data); extern mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn, mempool_free_t *free_fn, void *pool_data, gfp_t gfp_mask, int nid); extern int mempool_resize(mempool_t *pool, int new_min_nr, gfp_t gfp_mask); extern void mempool_destroy(mempool_t *pool); extern void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask); extern void mempool_free(void *element, mempool_t *pool); void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data); void mempool_free_slab(void *element, void *pool_data); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) mempool_t * mempool_create_slab_pool(int min_nr, struct kmem_cache *kc) { return mempool_create(min_nr, mempool_alloc_slab, mempool_free_slab, (void *) kc); } void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data); void mempool_kfree(void *element, void *pool_data); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size) { return mempool_create(min_nr, mempool_kmalloc, mempool_kfree, (void *) size); } void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data); void mempool_free_pages(void *element, void *pool_data); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) mempool_t *mempool_create_page_pool(int min_nr, int order) { return mempool_create(min_nr, mempool_alloc_pages, mempool_free_pages, (void *)(long)order); } # 17 "include/linux/blkdev.h" 2 # 1 "include/linux/bio.h" 1 # 25 "include/linux/bio.h" # 1 "include/linux/ioprio.h" 1 # 1 "include/linux/iocontext.h" 1 enum { ICQ_EXITED = 1 << 2, }; # 71 "include/linux/iocontext.h" struct io_cq { struct request_queue *q; struct io_context *ioc; union { struct list_head q_node; struct kmem_cache *__rcu_icq_cache; }; union { struct hlist_node ioc_node; struct callback_head __rcu_head; }; unsigned int flags; }; struct io_context { atomic_long_t refcount; atomic_t active_ref; atomic_t nr_tasks; spinlock_t lock; unsigned short ioprio; int nr_batch_requests; unsigned long last_waited; struct radix_tree_root icq_tree; struct io_cq *icq_hint; struct hlist_head icq_list; struct work_struct release_work; }; # 128 "include/linux/iocontext.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void get_io_context_active(struct io_context *ioc) { ({ static bool __attribute__ ((__section__(".data.unlikely"))) __warned; int __ret_warn_once = !!(atomic_long_read(&ioc->refcount) <= 0); if (__builtin_expect(!!(__ret_warn_once), 0)) if (({ int __ret_warn_on = !!(!__warned); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/iocontext.h", 130); __builtin_expect(!!(__ret_warn_on), 0); })) __warned = true; __builtin_expect(!!(__ret_warn_once), 0); }); ({ static bool __attribute__ ((__section__(".data.unlikely"))) __warned; int __ret_warn_once = !!((*(volatile int *)&(&ioc->active_ref)->counter) <= 0); if (__builtin_expect(!!(__ret_warn_once), 0)) if (({ int __ret_warn_on = !!(!__warned); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/iocontext.h", 131); __builtin_expect(!!(__ret_warn_on), 0); })) __warned = true; __builtin_expect(!!(__ret_warn_once), 0); }); atomic_long_inc(&ioc->refcount); atomic_add(1, &ioc->active_ref); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ioc_task_link(struct io_context *ioc) { get_io_context_active(ioc); ({ static bool __attribute__ ((__section__(".data.unlikely"))) __warned; int __ret_warn_once = !!((*(volatile int *)&(&ioc->nr_tasks)->counter) <= 0); if (__builtin_expect(!!(__ret_warn_once), 0)) if (({ int __ret_warn_on = !!(!__warned); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("include/linux/iocontext.h", 140); __builtin_expect(!!(__ret_warn_on), 0); })) __warned = true; __builtin_expect(!!(__ret_warn_once), 0); }); atomic_add(1, &ioc->nr_tasks); } struct task_struct; void put_io_context(struct io_context *ioc); void put_io_context_active(struct io_context *ioc); void exit_io_context(struct task_struct *task); struct io_context *get_task_io_context(struct task_struct *task, gfp_t gfp_flags, int node); # 6 "include/linux/ioprio.h" 2 # 26 "include/linux/ioprio.h" enum { IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE, }; enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER, }; # 53 "include/linux/ioprio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int task_nice_ioprio(struct task_struct *task) { return (task_nice(task) + 20) / 5; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int task_nice_ioclass(struct task_struct *task) { if (task->policy == 5) return IOPRIO_CLASS_IDLE; else if (task->policy == 1 || task->policy == 2) return IOPRIO_CLASS_RT; else return IOPRIO_CLASS_BE; } extern int ioprio_best(unsigned short aprio, unsigned short bprio); extern int set_task_ioprio(struct task_struct *task, int ioprio); # 26 "include/linux/bio.h" 2 # 71 "include/linux/bio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int bio_cur_bytes(struct bio *bio) { if (bio->bi_vcnt) return (&(((bio))->bi_io_vec[((bio)->bi_idx)]))->bv_len; else return bio->bi_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *bio_data(struct bio *bio) { if (bio->bi_vcnt) return page_address((&((((bio)))->bi_io_vec[(((bio))->bi_idx)]))->bv_page) + (&((((bio)))->bi_io_vec[(((bio))->bi_idx)]))->bv_offset; return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bio_has_allocated_vec(struct bio *bio) { return bio->bi_io_vec && bio->bi_io_vec != bio->bi_inline_vecs; } # 170 "include/linux/bio.h" struct bio_integrity_payload { struct bio *bip_bio; sector_t bip_sector; void *bip_buf; bio_end_io_t *bip_end_io; unsigned int bip_size; unsigned short bip_slab; unsigned short bip_vcnt; unsigned short bip_idx; struct work_struct bip_work; struct bio_vec bip_vec[0]; }; # 199 "include/linux/bio.h" struct bio_pair { struct bio bio1, bio2; struct bio_vec bv1, bv2; struct bio_integrity_payload bip1, bip2; struct bio_vec iv1, iv2; atomic_t cnt; int error; }; extern struct bio_pair *bio_split(struct bio *bi, int first_sectors); extern void bio_pair_release(struct bio_pair *dbio); extern struct bio_set *bioset_create(unsigned int, unsigned int); extern void bioset_free(struct bio_set *); extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *); extern void bio_put(struct bio *); extern void __bio_clone(struct bio *, struct bio *); extern struct bio *bio_clone_bioset(struct bio *, gfp_t, struct bio_set *bs); extern struct bio_set *fs_bio_set; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) { return bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) { return bio_clone_bioset(bio, gfp_mask, fs_bio_set); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_kmalloc(gfp_t gfp_mask, unsigned int nr_iovecs) { return bio_alloc_bioset(gfp_mask, nr_iovecs, ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_clone_kmalloc(struct bio *bio, gfp_t gfp_mask) { return bio_clone_bioset(bio, gfp_mask, ((void *)0)); } extern void bio_endio(struct bio *, int); struct request_queue; extern int bio_phys_segments(struct request_queue *, struct bio *); extern void bio_init(struct bio *); extern void bio_reset(struct bio *); extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *, unsigned int, unsigned int); extern int bio_get_nr_vecs(struct block_device *); extern sector_t bio_sector_offset(struct bio *, unsigned short, unsigned int); extern struct bio *bio_map_user(struct request_queue *, struct block_device *, unsigned long, unsigned int, int, gfp_t); struct sg_iovec; struct rq_map_data; extern struct bio *bio_map_user_iov(struct request_queue *, struct block_device *, struct sg_iovec *, int, int, gfp_t); extern void bio_unmap_user(struct bio *); extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int, gfp_t); extern struct bio *bio_copy_kern(struct request_queue *, void *, unsigned int, gfp_t, int); extern void bio_set_pages_dirty(struct bio *bio); extern void bio_check_pages_dirty(struct bio *bio); extern void bio_flush_dcache_pages(struct bio *bi); extern struct bio *bio_copy_user(struct request_queue *, struct rq_map_data *, unsigned long, unsigned int, int, gfp_t); extern struct bio *bio_copy_user_iov(struct request_queue *, struct rq_map_data *, struct sg_iovec *, int, int, gfp_t); extern int bio_uncopy_user(struct bio *); void zero_fill_bio(struct bio *bio); extern struct bio_vec *bvec_alloc_bs(gfp_t, int, unsigned long *, struct bio_set *); extern void bvec_free_bs(struct bio_set *, struct bio_vec *, unsigned int); extern unsigned int bvec_nr_vecs(unsigned short idx); int bio_associate_current(struct bio *bio); void bio_disassociate_task(struct bio *bio); # 311 "include/linux/bio.h" struct bio_set { struct kmem_cache *bio_slab; unsigned int front_pad; mempool_t *bio_pool; mempool_t *bio_integrity_pool; mempool_t *bvec_pool; }; struct biovec_slab { int nr_vecs; char *name; struct kmem_cache *slab; }; # 339 "include/linux/bio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags) { unsigned long addr; do { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); *flags = arch_local_irq_save(); } while (0); do { } while (0); } while (0); addr = (unsigned long) kmap_atomic(bvec->bv_page); do { if (__builtin_expect(!!(addr & ~(~(((1UL) << 12)-1))), 0)) do { asm volatile("1:\t" ".word " "0xe7f001f2" "\n" ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" "2:\t.asciz " "\"include/linux/bio.h\"" "\n" ".popsection\n" ".pushsection __bug_table,\"a\"\n" "3:\t.word 1b, 2b\n" "\t.hword " "350" ", 0\n" ".popsection"); __builtin_unreachable(); } while (0); } while(0); return (char *) addr + bvec->bv_offset; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bvec_kunmap_irq(char *buffer, unsigned long *flags) { unsigned long ptr = (unsigned long) buffer & (~(((1UL) << 12)-1)); do { do { ((void)sizeof(char[1 - 2*!!(__builtin_types_compatible_p(typeof(((void *) ptr)), typeof(struct page *)))])); if (__builtin_types_compatible_p(typeof(((void *) ptr)), typeof(struct page *))) __build_bug_on_failed = 1; } while(0); __kunmap_atomic((void *) ptr); } while (0); do { if (({ ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(*flags); })) { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(*flags); } while (0); do { } while (0); } else { do { } while (0); do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(*flags); } while (0); } } while (0); } # 375 "include/linux/bio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) char *__bio_kmap_irq(struct bio *bio, unsigned short idx, unsigned long *flags) { return bvec_kmap_irq((&((bio)->bi_io_vec[(idx)])), flags); } # 389 "include/linux/bio.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bio_has_data(struct bio *bio) { if (bio && bio->bi_vcnt) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bio_is_rw(struct bio *bio) { if (!bio_has_data(bio)) return false; if (bio->bi_rw & (1 << __REQ_WRITE_SAME)) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool bio_mergeable(struct bio *bio) { if (bio->bi_rw & ((1 << __REQ_NOMERGE) | (1 << __REQ_STARTED) | (1 << __REQ_SOFTBARRIER) | (1 << __REQ_FLUSH) | (1 << __REQ_FUA))) return false; return true; } # 423 "include/linux/bio.h" struct bio_list { struct bio *head; struct bio *tail; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bio_list_empty(const struct bio_list *bl) { return bl->head == ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bio_list_init(struct bio_list *bl) { bl->head = bl->tail = ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned bio_list_size(const struct bio_list *bl) { unsigned sz = 0; struct bio *bio; for (bio = (bl)->head; bio; bio = bio->bi_next) sz++; return sz; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bio_list_add(struct bio_list *bl, struct bio *bio) { bio->bi_next = ((void *)0); if (bl->tail) bl->tail->bi_next = bio; else bl->head = bio; bl->tail = bio; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bio_list_add_head(struct bio_list *bl, struct bio *bio) { bio->bi_next = bl->head; bl->head = bio; if (!bl->tail) bl->tail = bio; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bio_list_merge(struct bio_list *bl, struct bio_list *bl2) { if (!bl2->head) return; if (bl->tail) bl->tail->bi_next = bl2->head; else bl->head = bl2->head; bl->tail = bl2->tail; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void bio_list_merge_head(struct bio_list *bl, struct bio_list *bl2) { if (!bl2->head) return; if (bl->head) bl2->tail->bi_next = bl->head; else bl->tail = bl2->tail; bl->head = bl2->head; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_list_peek(struct bio_list *bl) { return bl->head; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_list_pop(struct bio_list *bl) { struct bio *bio = bl->head; if (bio) { bl->head = bl->head->bi_next; if (!bl->head) bl->tail = ((void *)0); bio->bi_next = ((void *)0); } return bio; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct bio *bio_list_get(struct bio_list *bl) { struct bio *bio = bl->head; bl->head = bl->tail = ((void *)0); return bio; } # 549 "include/linux/bio.h" extern struct bio_integrity_payload *bio_integrity_alloc(struct bio *, gfp_t, unsigned int); extern void bio_integrity_free(struct bio *); extern int bio_integrity_add_page(struct bio *, struct page *, unsigned int, unsigned int); extern int bio_integrity_enabled(struct bio *bio); extern int bio_integrity_set_tag(struct bio *, void *, unsigned int); extern int bio_integrity_get_tag(struct bio *, void *, unsigned int); extern int bio_integrity_prep(struct bio *); extern void bio_integrity_endio(struct bio *, int); extern void bio_integrity_advance(struct bio *, unsigned int); extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int); extern void bio_integrity_split(struct bio *, struct bio_pair *, int); extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t); extern int bioset_integrity_create(struct bio_set *, int); extern void bioset_integrity_free(struct bio_set *); extern void bio_integrity_init(void); # 18 "include/linux/blkdev.h" 2 # 1 "include/linux/bsg.h" 1 # 1 "include/uapi/linux/bsg.h" 1 # 20 "include/uapi/linux/bsg.h" struct sg_io_v4 { __s32 guard; __u32 protocol; __u32 subprotocol; __u32 request_len; __u64 request; __u64 request_tag; __u32 request_attr; __u32 request_priority; __u32 request_extra; __u32 max_response_len; __u64 response; __u32 dout_iovec_count; __u32 dout_xfer_len; __u32 din_iovec_count; __u32 din_xfer_len; __u64 dout_xferp; __u64 din_xferp; __u32 timeout; __u32 flags; __u64 usr_ptr; __u32 spare_in; __u32 driver_status; __u32 transport_status; __u32 device_status; __u32 retry_delay; __u32 info; __u32 duration; __u32 response_len; __s32 din_resid; __s32 dout_resid; __u64 generated_tag; __u32 spare_out; __u32 padding; }; # 5 "include/linux/bsg.h" 2 struct bsg_class_device { struct device *class_dev; struct device *parent; int minor; struct request_queue *queue; struct kref ref; void (*release)(struct device *); }; extern int bsg_register_queue(struct request_queue *q, struct device *parent, const char *name, void (*release)(struct device *)); extern void bsg_unregister_queue(struct request_queue *); # 21 "include/linux/blkdev.h" 2 struct module; struct scsi_ioctl_command; struct request_queue; struct elevator_queue; struct request_pm_state; struct blk_trace; struct request; struct sg_io_hdr; struct bsg_job; struct blkcg_gq; # 46 "include/linux/blkdev.h" struct request; typedef void (rq_end_io_fn)(struct request *, int); struct request_list { struct request_queue *q; struct blkcg_gq *blkg; int count[2]; int starved[2]; mempool_t *rq_pool; wait_queue_head_t wait[2]; unsigned int flags; }; enum rq_cmd_type_bits { REQ_TYPE_FS = 1, REQ_TYPE_BLOCK_PC, REQ_TYPE_SENSE, REQ_TYPE_PM_SUSPEND, REQ_TYPE_PM_RESUME, REQ_TYPE_PM_SHUTDOWN, REQ_TYPE_SPECIAL, REQ_TYPE_ATA_TASKFILE, REQ_TYPE_ATA_PC, }; # 95 "include/linux/blkdev.h" struct request { struct list_head queuelist; struct call_single_data csd; struct request_queue *q; unsigned int cmd_flags; enum rq_cmd_type_bits cmd_type; unsigned long atomic_flags; int cpu; unsigned int __data_len; sector_t __sector; struct bio *bio; struct bio *biotail; struct hlist_node hash; union { struct rb_node rb_node; void *completion_data; }; union { struct { struct io_cq *icq; void *priv[2]; } elv; struct { unsigned int seq; struct list_head list; rq_end_io_fn *saved_end_io; } flush; }; struct gendisk *rq_disk; struct hd_struct *part; unsigned long start_time; struct request_list *rl; unsigned long long start_time_ns; unsigned long long io_start_time_ns; unsigned short nr_phys_segments; unsigned short nr_integrity_segments; unsigned short ioprio; int ref_count; void *special; char *buffer; int tag; int errors; unsigned char __cmd[16]; unsigned char *cmd; unsigned short cmd_len; unsigned int extra_len; unsigned int sense_len; unsigned int resid_len; void *sense; unsigned long deadline; struct list_head timeout_list; unsigned int timeout; int retries; rq_end_io_fn *end_io; void *end_io_data; struct request *next_rq; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned short req_get_ioprio(struct request *req) { return req->ioprio; } struct request_pm_state { int pm_step; u32 pm_state; void* data; }; # 1 "include/linux/elevator.h" 1 struct io_cq; typedef int (elevator_merge_fn) (struct request_queue *, struct request **, struct bio *); typedef void (elevator_merge_req_fn) (struct request_queue *, struct request *, struct request *); typedef void (elevator_merged_fn) (struct request_queue *, struct request *, int); typedef int (elevator_allow_merge_fn) (struct request_queue *, struct request *, struct bio *); typedef void (elevator_bio_merged_fn) (struct request_queue *, struct request *, struct bio *); typedef int (elevator_dispatch_fn) (struct request_queue *, int); typedef void (elevator_add_req_fn) (struct request_queue *, struct request *); typedef struct request *(elevator_request_list_fn) (struct request_queue *, struct request *); typedef void (elevator_completed_req_fn) (struct request_queue *, struct request *); typedef int (elevator_may_queue_fn) (struct request_queue *, int); typedef void (elevator_init_icq_fn) (struct io_cq *); typedef void (elevator_exit_icq_fn) (struct io_cq *); typedef int (elevator_set_req_fn) (struct request_queue *, struct request *, struct bio *, gfp_t); typedef void (elevator_put_req_fn) (struct request *); typedef void (elevator_activate_req_fn) (struct request_queue *, struct request *); typedef void (elevator_deactivate_req_fn) (struct request_queue *, struct request *); typedef int (elevator_init_fn) (struct request_queue *); typedef void (elevator_exit_fn) (struct elevator_queue *); struct elevator_ops { elevator_merge_fn *elevator_merge_fn; elevator_merged_fn *elevator_merged_fn; elevator_merge_req_fn *elevator_merge_req_fn; elevator_allow_merge_fn *elevator_allow_merge_fn; elevator_bio_merged_fn *elevator_bio_merged_fn; elevator_dispatch_fn *elevator_dispatch_fn; elevator_add_req_fn *elevator_add_req_fn; elevator_activate_req_fn *elevator_activate_req_fn; elevator_deactivate_req_fn *elevator_deactivate_req_fn; elevator_completed_req_fn *elevator_completed_req_fn; elevator_request_list_fn *elevator_former_req_fn; elevator_request_list_fn *elevator_latter_req_fn; elevator_init_icq_fn *elevator_init_icq_fn; elevator_exit_icq_fn *elevator_exit_icq_fn; elevator_set_req_fn *elevator_set_req_fn; elevator_put_req_fn *elevator_put_req_fn; elevator_may_queue_fn *elevator_may_queue_fn; elevator_init_fn *elevator_init_fn; elevator_exit_fn *elevator_exit_fn; }; struct elv_fs_entry { struct attribute attr; ssize_t (*show)(struct elevator_queue *, char *); ssize_t (*store)(struct elevator_queue *, const char *, size_t); }; struct elevator_type { struct kmem_cache *icq_cache; struct elevator_ops ops; size_t icq_size; size_t icq_align; struct elv_fs_entry *elevator_attrs; char elevator_name[(16)]; struct module *elevator_owner; char icq_cache_name[(16) + 5]; struct list_head list; }; struct elevator_queue { struct elevator_type *type; void *elevator_data; struct kobject kobj; struct mutex sysfs_lock; struct hlist_head *hash; unsigned int registered:1; }; extern void elv_dispatch_sort(struct request_queue *, struct request *); extern void elv_dispatch_add_tail(struct request_queue *, struct request *); extern void elv_add_request(struct request_queue *, struct request *, int); extern void __elv_add_request(struct request_queue *, struct request *, int); extern int elv_merge(struct request_queue *, struct request **, struct bio *); extern void elv_merge_requests(struct request_queue *, struct request *, struct request *); extern void elv_merged_request(struct request_queue *, struct request *, int); extern void elv_bio_merged(struct request_queue *q, struct request *, struct bio *); extern void elv_requeue_request(struct request_queue *, struct request *); extern struct request *elv_former_request(struct request_queue *, struct request *); extern struct request *elv_latter_request(struct request_queue *, struct request *); extern int elv_register_queue(struct request_queue *q); extern void elv_unregister_queue(struct request_queue *q); extern int elv_may_queue(struct request_queue *, int); extern void elv_abort_queue(struct request_queue *); extern void elv_completed_request(struct request_queue *, struct request *); extern int elv_set_request(struct request_queue *q, struct request *rq, struct bio *bio, gfp_t gfp_mask); extern void elv_put_request(struct request_queue *, struct request *); extern void elv_drain_elevator(struct request_queue *); extern int elv_register(struct elevator_type *); extern void elv_unregister(struct elevator_type *); extern ssize_t elv_iosched_show(struct request_queue *, char *); extern ssize_t elv_iosched_store(struct request_queue *, const char *, size_t); extern int elevator_init(struct request_queue *, char *); extern void elevator_exit(struct elevator_queue *); extern int elevator_change(struct request_queue *, const char *); extern bool elv_rq_merge_ok(struct request *, struct bio *); extern struct request *elv_rb_former_request(struct request_queue *, struct request *); extern struct request *elv_rb_latter_request(struct request_queue *, struct request *); extern void elv_rb_add(struct rb_root *, struct request *); extern void elv_rb_del(struct rb_root *, struct request *); extern struct request *elv_rb_find(struct rb_root *, sector_t); # 188 "include/linux/elevator.h" enum { ELV_MQUEUE_MAY, ELV_MQUEUE_NO, ELV_MQUEUE_MUST, }; # 216 "include/linux/blkdev.h" 2 typedef void (request_fn_proc) (struct request_queue *q); typedef void (make_request_fn) (struct request_queue *q, struct bio *bio); typedef int (prep_rq_fn) (struct request_queue *, struct request *); typedef void (unprep_rq_fn) (struct request_queue *, struct request *); struct bio_vec; struct bvec_merge_data { struct block_device *bi_bdev; sector_t bi_sector; unsigned bi_size; unsigned long bi_rw; }; typedef int (merge_bvec_fn) (struct request_queue *, struct bvec_merge_data *, struct bio_vec *); typedef void (softirq_done_fn)(struct request *); typedef int (dma_drain_needed_fn)(struct request *); typedef int (lld_busy_fn) (struct request_queue *q); typedef int (bsg_job_fn) (struct bsg_job *); enum blk_eh_timer_return { BLK_EH_NOT_HANDLED, BLK_EH_HANDLED, BLK_EH_RESET_TIMER, }; typedef enum blk_eh_timer_return (rq_timed_out_fn)(struct request *); enum blk_queue_state { Queue_down, Queue_up, }; struct blk_queue_tag { struct request **tag_index; unsigned long *tag_map; int busy; int max_depth; int real_max_depth; atomic_t refcnt; }; struct queue_limits { unsigned long bounce_pfn; unsigned long seg_boundary_mask; unsigned int max_hw_sectors; unsigned int max_sectors; unsigned int max_segment_size; unsigned int physical_block_size; unsigned int alignment_offset; unsigned int io_min; unsigned int io_opt; unsigned int max_discard_sectors; unsigned int max_write_same_sectors; unsigned int discard_granularity; unsigned int discard_alignment; unsigned short logical_block_size; unsigned short max_segments; unsigned short max_integrity_segments; unsigned char misaligned; unsigned char discard_misaligned; unsigned char cluster; unsigned char discard_zeroes_data; }; struct request_queue { struct list_head queue_head; struct request *last_merge; struct elevator_queue *elevator; int nr_rqs[2]; int nr_rqs_elvpriv; struct request_list root_rl; request_fn_proc *request_fn; make_request_fn *make_request_fn; prep_rq_fn *prep_rq_fn; unprep_rq_fn *unprep_rq_fn; merge_bvec_fn *merge_bvec_fn; softirq_done_fn *softirq_done_fn; rq_timed_out_fn *rq_timed_out_fn; dma_drain_needed_fn *dma_drain_needed; lld_busy_fn *lld_busy_fn; sector_t end_sector; struct request *boundary_rq; struct delayed_work delay_work; struct backing_dev_info backing_dev_info; void *queuedata; unsigned long queue_flags; int id; gfp_t bounce_gfp; spinlock_t __queue_lock; spinlock_t *queue_lock; struct kobject kobj; unsigned long nr_requests; unsigned int nr_congestion_on; unsigned int nr_congestion_off; unsigned int nr_batching; unsigned int dma_drain_size; void *dma_drain_buffer; unsigned int dma_pad_mask; unsigned int dma_alignment; struct blk_queue_tag *queue_tags; struct list_head tag_busy_list; unsigned int nr_sorted; unsigned int in_flight[2]; unsigned int request_fn_active; unsigned int rq_timeout; struct timer_list timeout; struct list_head timeout_list; struct list_head icq_list; unsigned long blkcg_pols[(((2) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; struct blkcg_gq *root_blkg; struct list_head blkg_list; struct queue_limits limits; unsigned int sg_timeout; unsigned int sg_reserved_size; int node; struct blk_trace *blk_trace; unsigned int flush_flags; unsigned int flush_not_queueable:1; unsigned int flush_queue_delayed:1; unsigned int flush_pending_idx:1; unsigned int flush_running_idx:1; unsigned long flush_pending_since; struct list_head flush_queue[2]; struct list_head flush_data_in_flight; struct request flush_rq; struct mutex sysfs_lock; int bypass_depth; bsg_job_fn *bsg_job_fn; int bsg_job_size; struct bsg_class_device bsg_dev; struct list_head all_q_node; struct throtl_data *td; }; # 468 "include/linux/blkdev.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void queue_lockdep_assert_held(struct request_queue *q) { if (q->queue_lock) do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void queue_flag_set_unlocked(unsigned int flag, struct request_queue *q) { __set_bit(flag, &q->queue_flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_flag_test_and_clear(unsigned int flag, struct request_queue *q) { queue_lockdep_assert_held(q); if (test_bit(flag, &q->queue_flags)) { __clear_bit(flag, &q->queue_flags); return 1; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_flag_test_and_set(unsigned int flag, struct request_queue *q) { queue_lockdep_assert_held(q); if (!test_bit(flag, &q->queue_flags)) { __set_bit(flag, &q->queue_flags); return 0; } return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void queue_flag_set(unsigned int flag, struct request_queue *q) { queue_lockdep_assert_held(q); __set_bit(flag, &q->queue_flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void queue_flag_clear_unlocked(unsigned int flag, struct request_queue *q) { __clear_bit(flag, &q->queue_flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_in_flight(struct request_queue *q) { return q->in_flight[0] + q->in_flight[1]; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void queue_flag_clear(unsigned int flag, struct request_queue *q) { queue_lockdep_assert_held(q); __clear_bit(flag, &q->queue_flags); } # 567 "include/linux/blkdev.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_queue_cluster(struct request_queue *q) { return q->limits.cluster; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool rw_is_sync(unsigned int rw_flags) { return !(rw_flags & (1 << __REQ_WRITE)) || (rw_flags & (1 << __REQ_SYNC)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool rq_is_sync(struct request *rq) { return rw_is_sync(rq->cmd_flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool blk_rl_full(struct request_list *rl, bool sync) { unsigned int flag = sync ? (1U << 0) : (1U << 1); return rl->flags & flag; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_set_rl_full(struct request_list *rl, bool sync) { unsigned int flag = sync ? (1U << 0) : (1U << 1); rl->flags |= flag; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_clear_rl_full(struct request_list *rl, bool sync) { unsigned int flag = sync ? (1U << 0) : (1U << 1); rl->flags &= ~flag; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool rq_mergeable(struct request *rq) { if (rq->cmd_type != REQ_TYPE_FS) return false; if (rq->cmd_flags & ((1 << __REQ_NOMERGE) | (1 << __REQ_STARTED) | (1 << __REQ_SOFTBARRIER) | (1 << __REQ_FLUSH) | (1 << __REQ_FUA))) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool blk_check_merge_flags(unsigned int flags1, unsigned int flags2) { if ((flags1 & (1 << __REQ_DISCARD)) != (flags2 & (1 << __REQ_DISCARD))) return false; if ((flags1 & (1 << __REQ_SECURE)) != (flags2 & (1 << __REQ_SECURE))) return false; if ((flags1 & (1 << __REQ_WRITE_SAME)) != (flags2 & (1 << __REQ_WRITE_SAME))) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool blk_write_same_mergeable(struct bio *a, struct bio *b) { if (bio_data(a) == bio_data(b)) return true; return false; } # 647 "include/linux/blkdev.h" extern unsigned long blk_max_low_pfn, blk_max_pfn; # 672 "include/linux/blkdev.h" extern int init_emergency_isa_pool(void); extern void blk_queue_bounce(struct request_queue *q, struct bio **bio); # 684 "include/linux/blkdev.h" struct rq_map_data { struct page **pages; int page_order; int nr_entries; unsigned long offset; int null_mapped; int from_user; }; struct req_iterator { int i; struct bio *bio; }; # 716 "include/linux/blkdev.h" extern void rq_flush_dcache_pages(struct request *rq); extern int blk_register_queue(struct gendisk *disk); extern void blk_unregister_queue(struct gendisk *disk); extern void generic_make_request(struct bio *bio); extern void blk_rq_init(struct request_queue *q, struct request *rq); extern void blk_put_request(struct request *); extern void __blk_put_request(struct request_queue *, struct request *); extern struct request *blk_get_request(struct request_queue *, int, gfp_t); extern struct request *blk_make_request(struct request_queue *, struct bio *, gfp_t); extern void blk_requeue_request(struct request_queue *, struct request *); extern void blk_add_request_payload(struct request *rq, struct page *page, unsigned int len); extern int blk_rq_check_limits(struct request_queue *q, struct request *rq); extern int blk_lld_busy(struct request_queue *q); extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, struct bio_set *bs, gfp_t gfp_mask, int (*bio_ctr)(struct bio *, struct bio *, void *), void *data); extern void blk_rq_unprep_clone(struct request *rq); extern int blk_insert_cloned_request(struct request_queue *q, struct request *rq); extern void blk_delay_queue(struct request_queue *, unsigned long); extern void blk_recount_segments(struct request_queue *, struct bio *); extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int); extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t, unsigned int, void *); extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, unsigned int, void *); extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, struct scsi_ioctl_command *); extern void blk_queue_bio(struct request_queue *q, struct bio *bio); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_clear_queue_congested(struct request_queue *q, int sync) { clear_bdi_congested(&q->backing_dev_info, sync); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_set_queue_congested(struct request_queue *q, int sync) { set_bdi_congested(&q->backing_dev_info, sync); } extern void blk_start_queue(struct request_queue *q); extern void blk_stop_queue(struct request_queue *q); extern void blk_sync_queue(struct request_queue *q); extern void __blk_stop_queue(struct request_queue *q); extern void __blk_run_queue(struct request_queue *q); extern void blk_run_queue(struct request_queue *); extern void blk_run_queue_async(struct request_queue *q); extern int blk_rq_map_user(struct request_queue *, struct request *, struct rq_map_data *, void *, unsigned long, gfp_t); extern int blk_rq_unmap_user(struct bio *); extern int blk_rq_map_kern(struct request_queue *, struct request *, void *, unsigned int, gfp_t); extern int blk_rq_map_user_iov(struct request_queue *, struct request *, struct rq_map_data *, struct sg_iovec *, int, unsigned int, gfp_t); extern int blk_execute_rq(struct request_queue *, struct gendisk *, struct request *, int); extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *, struct request *, int, rq_end_io_fn *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct request_queue *bdev_get_queue(struct block_device *bdev) { return bdev->bd_disk->queue; } # 808 "include/linux/blkdev.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) sector_t blk_rq_pos(const struct request *rq) { return rq->__sector; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_rq_bytes(const struct request *rq) { return rq->__data_len; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int blk_rq_cur_bytes(const struct request *rq) { return rq->bio ? bio_cur_bytes(rq->bio) : 0; } extern unsigned int blk_rq_err_bytes(const struct request *rq); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_rq_sectors(const struct request *rq) { return blk_rq_bytes(rq) >> 9; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_rq_cur_sectors(const struct request *rq) { return blk_rq_cur_bytes(rq) >> 9; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_queue_get_max_sectors(struct request_queue *q, unsigned int cmd_flags) { if (__builtin_expect(!!(cmd_flags & (1 << __REQ_DISCARD)), 0)) return q->limits.max_discard_sectors; if (__builtin_expect(!!(cmd_flags & (1 << __REQ_WRITE_SAME)), 0)) return q->limits.max_write_same_sectors; return q->limits.max_sectors; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blk_rq_get_max_sectors(struct request *rq) { struct request_queue *q = rq->q; if (__builtin_expect(!!(rq->cmd_type == REQ_TYPE_BLOCK_PC), 0)) return q->limits.max_hw_sectors; return blk_queue_get_max_sectors(q, rq->cmd_flags); } extern struct request *blk_peek_request(struct request_queue *q); extern void blk_start_request(struct request *rq); extern struct request *blk_fetch_request(struct request_queue *q); # 877 "include/linux/blkdev.h" extern bool blk_update_request(struct request *rq, int error, unsigned int nr_bytes); extern bool blk_end_request(struct request *rq, int error, unsigned int nr_bytes); extern void blk_end_request_all(struct request *rq, int error); extern bool blk_end_request_cur(struct request *rq, int error); extern bool blk_end_request_err(struct request *rq, int error); extern bool __blk_end_request(struct request *rq, int error, unsigned int nr_bytes); extern void __blk_end_request_all(struct request *rq, int error); extern bool __blk_end_request_cur(struct request *rq, int error); extern bool __blk_end_request_err(struct request *rq, int error); extern void blk_complete_request(struct request *); extern void __blk_complete_request(struct request *); extern void blk_abort_request(struct request *); extern void blk_unprep_request(struct request *); extern struct request_queue *blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id); extern struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *); extern struct request_queue *blk_init_allocated_queue(struct request_queue *, request_fn_proc *, spinlock_t *); extern void blk_cleanup_queue(struct request_queue *); extern void blk_queue_make_request(struct request_queue *, make_request_fn *); extern void blk_queue_bounce_limit(struct request_queue *, u64); extern void blk_limits_max_hw_sectors(struct queue_limits *, unsigned int); extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int); extern void blk_queue_max_segments(struct request_queue *, unsigned short); extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); extern void blk_queue_max_discard_sectors(struct request_queue *q, unsigned int max_discard_sectors); extern void blk_queue_max_write_same_sectors(struct request_queue *q, unsigned int max_write_same_sectors); extern void blk_queue_logical_block_size(struct request_queue *, unsigned short); extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); extern void blk_queue_alignment_offset(struct request_queue *q, unsigned int alignment); extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); extern void blk_queue_io_min(struct request_queue *q, unsigned int min); extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt); extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); extern void blk_set_default_limits(struct queue_limits *lim); extern void blk_set_stacking_limits(struct queue_limits *lim); extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, sector_t offset); extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev, sector_t offset); extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, sector_t offset); extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); extern void blk_queue_dma_pad(struct request_queue *, unsigned int); extern void blk_queue_update_dma_pad(struct request_queue *, unsigned int); extern int blk_queue_dma_drain(struct request_queue *q, dma_drain_needed_fn *dma_drain_needed, void *buf, unsigned int size); extern void blk_queue_lld_busy(struct request_queue *q, lld_busy_fn *fn); extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); extern void blk_queue_prep_rq(struct request_queue *, prep_rq_fn *pfn); extern void blk_queue_unprep_rq(struct request_queue *, unprep_rq_fn *ufn); extern void blk_queue_merge_bvec(struct request_queue *, merge_bvec_fn *); extern void blk_queue_dma_alignment(struct request_queue *, int); extern void blk_queue_update_dma_alignment(struct request_queue *, int); extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); extern void blk_queue_flush(struct request_queue *q, unsigned int flush); extern void blk_queue_flush_queueable(struct request_queue *q, bool queueable); extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); extern int blk_bio_map_sg(struct request_queue *q, struct bio *bio, struct scatterlist *sglist); extern void blk_dump_rq_flags(struct request *, char *); extern long nr_blockdev_pages(void); bool __attribute__((warn_unused_result)) blk_get_queue(struct request_queue *); struct request_queue *blk_alloc_queue(gfp_t); struct request_queue *blk_alloc_queue_node(gfp_t, int); extern void blk_put_queue(struct request_queue *); # 973 "include/linux/blkdev.h" struct blk_plug { unsigned long magic; struct list_head list; struct list_head cb_list; unsigned int should_sort; }; struct blk_plug_cb; typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); struct blk_plug_cb { struct list_head list; blk_plug_cb_fn callback; void *data; }; extern struct blk_plug_cb *blk_check_plugged(blk_plug_cb_fn unplug, void *data, int size); extern void blk_start_plug(struct blk_plug *); extern void blk_finish_plug(struct blk_plug *); extern void blk_flush_plug_list(struct blk_plug *, bool); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; if (plug) blk_flush_plug_list(plug, false); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_schedule_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; if (plug) blk_flush_plug_list(plug, true); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool blk_needs_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; return plug && (!list_empty(&plug->list) || !list_empty(&plug->cb_list)); } extern int blk_queue_start_tag(struct request_queue *, struct request *); extern struct request *blk_queue_find_tag(struct request_queue *, int); extern void blk_queue_end_tag(struct request_queue *, struct request *); extern int blk_queue_init_tags(struct request_queue *, int, struct blk_queue_tag *); extern void blk_queue_free_tags(struct request_queue *); extern int blk_queue_resize_tags(struct request_queue *, int); extern void blk_queue_invalidate_tags(struct request_queue *); extern struct blk_queue_tag *blk_init_tags(int); extern void blk_free_tags(struct blk_queue_tag *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt, int tag) { if (__builtin_expect(!!(bqt == ((void *)0) || tag >= bqt->real_max_depth), 0)) return ((void *)0); return bqt->tag_index[tag]; } extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *); extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, unsigned long flags); extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, struct page *page); extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sb_issue_discard(struct super_block *sb, sector_t block, sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags) { return blkdev_issue_discard(sb->s_bdev, block << (sb->s_blocksize_bits - 9), nr_blocks << (sb->s_blocksize_bits - 9), gfp_mask, flags); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sb_issue_zeroout(struct super_block *sb, sector_t block, sector_t nr_blocks, gfp_t gfp_mask) { return blkdev_issue_zeroout(sb->s_bdev, block << (sb->s_blocksize_bits - 9), nr_blocks << (sb->s_blocksize_bits - 9), gfp_mask); } extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm); enum blk_default_limits { BLK_MAX_SEGMENTS = 128, BLK_SAFE_MAX_SECTORS = 255, BLK_DEF_MAX_SECTORS = 1024, BLK_MAX_SEGMENT_SIZE = 65536, BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL, }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long queue_bounce_pfn(struct request_queue *q) { return q->limits.bounce_pfn; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long queue_segment_boundary(struct request_queue *q) { return q->limits.seg_boundary_mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_max_sectors(struct request_queue *q) { return q->limits.max_sectors; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_max_hw_sectors(struct request_queue *q) { return q->limits.max_hw_sectors; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned short queue_max_segments(struct request_queue *q) { return q->limits.max_segments; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_max_segment_size(struct request_queue *q) { return q->limits.max_segment_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned short queue_logical_block_size(struct request_queue *q) { int retval = 512; if (q && q->limits.logical_block_size) retval = q->limits.logical_block_size; return retval; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned short bdev_logical_block_size(struct block_device *bdev) { return queue_logical_block_size(bdev_get_queue(bdev)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_physical_block_size(struct request_queue *q) { return q->limits.physical_block_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int bdev_physical_block_size(struct block_device *bdev) { return queue_physical_block_size(bdev_get_queue(bdev)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_io_min(struct request_queue *q) { return q->limits.io_min; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdev_io_min(struct block_device *bdev) { return queue_io_min(bdev_get_queue(bdev)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_io_opt(struct request_queue *q) { return q->limits.io_opt; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdev_io_opt(struct block_device *bdev) { return queue_io_opt(bdev_get_queue(bdev)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_alignment_offset(struct request_queue *q) { if (q->limits.misaligned) return -1; return q->limits.alignment_offset; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_limit_alignment_offset(struct queue_limits *lim, sector_t sector) { unsigned int granularity = ({ typeof(lim->physical_block_size) _max1 = (lim->physical_block_size); typeof(lim->io_min) _max2 = (lim->io_min); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; }); unsigned int alignment = (sector << 9) & (granularity - 1); return (granularity + lim->alignment_offset - alignment) & (granularity - 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdev_alignment_offset(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q->limits.misaligned) return -1; if (bdev != bdev->bd_contains) return bdev->bd_part->alignment_offset; return q->limits.alignment_offset; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_discard_alignment(struct request_queue *q) { if (q->limits.discard_misaligned) return -1; return q->limits.discard_alignment; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_limit_discard_alignment(struct queue_limits *lim, sector_t sector) { unsigned int alignment, granularity, offset; if (!lim->max_discard_sectors) return 0; alignment = lim->discard_alignment >> 9; granularity = lim->discard_granularity >> 9; if (!granularity) return 0; offset = ({ unsigned int __r, __b = (granularity); if (!__builtin_constant_p(__b) || __b == 0 || (7 < 4 && (__b & (__b - 1)) != 0)) { __r = ({ register unsigned int __base asm("r4") = __b; register unsigned long long __n asm("r0") = sector; register unsigned long long __res asm("r2"); register unsigned int __rem asm("r1"); asm( ".ifnc " "%0" "," "r1" " ; .err ; .endif\n\t" ".ifnc " "%1" "," "r2" " ; .err ; .endif\n\t" ".ifnc " "%2" "," "r0" " ; .err ; .endif\n\t" ".ifnc " "%3" "," "r4" " ; .err ; .endif\n\t" "bl __do_div64" : "=r" (__rem), "=r" (__res) : "r" (__n), "r" (__base) : "ip", "lr", "cc"); sector = __res; __rem; }); } else if ((__b & (__b - 1)) == 0) { __r = sector; __r &= (__b - 1); sector /= __b; } else { unsigned long long __res, __x, __t, __m, __n = sector; unsigned int __c, __p, __z = 0; __r = __n; __p = 1 << ({ unsigned int __left = (__b), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); __m = (~0ULL / __b) * __p; __m += (((~0ULL % __b + 1) * __p) + __b - 1) / __b; __x = ~0ULL / __b * __b - 1; __res = (__m & 0xffffffff) * (__x & 0xffffffff); __res >>= 32; __res += (__m & 0xffffffff) * (__x >> 32); __t = __res; __res += (__x & 0xffffffff) * (__m >> 32); __t = (__res < __t) ? (1ULL << 32) : 0; __res = (__res >> 32) + __t; __res += (__m >> 32) * (__x >> 32); __res /= __p; if (~0ULL % (__b / (__b & -__b)) == 0) { __n /= (__b & -__b); __m = ~0ULL / (__b / (__b & -__b)); __p = 1; __c = 1; } else if (__res != __x / __b) { __c = 1; __m = (~0ULL / __b) * __p; __m += ((~0ULL % __b + 1) * __p) / __b; } else { unsigned int __bits = -(__m & -__m); __bits |= __m >> 32; __bits = (~__bits) << 1; if (!__bits) { __p /= (__m & -__m); __m /= (__m & -__m); } else { __p >>= ({ unsigned int __left = (__bits), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); __m >>= ({ unsigned int __left = (__bits), __nr = 0; if (__left & 0xffff0000) __nr += 16, __left >>= 16; if (__left & 0x0000ff00) __nr += 8, __left >>= 8; if (__left & 0x000000f0) __nr += 4, __left >>= 4; if (__left & 0x0000000c) __nr += 2, __left >>= 2; if (__left & 0x00000002) __nr += 1; __nr; }); } __c = 0; } if (!__c) { asm ( "umull %Q0, %R0, %1, %Q2\n\t" "mov %Q0, #0" : "=&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else if (!(__m & ((1ULL << 63) | (1ULL << 31)))) { __res = __m; asm ( "umlal %Q0, %R0, %Q1, %Q2\n\t" "mov %Q0, #0" : "+&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else { asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" "cmn %Q0, %Q1\n\t" "adcs %R0, %R0, %R1\n\t" "adc %Q0, %3, #0" : "=&r" (__res) : "r" (__m), "r" (__n), "r" (__z) : "cc" ); } if (!(__m & ((1ULL << 63) | (1ULL << 31)))) { asm ( "umlal %R0, %Q0, %R1, %Q2\n\t" "umlal %R0, %Q0, %Q1, %R2\n\t" "mov %R0, #0\n\t" "umlal %Q0, %R0, %R1, %R2" : "+&r" (__res) : "r" (__m), "r" (__n) : "cc" ); } else { asm ( "umlal %R0, %Q0, %R2, %Q3\n\t" "umlal %R0, %1, %Q2, %R3\n\t" "mov %R0, #0\n\t" "adds %Q0, %1, %Q0\n\t" "adc %R0, %R0, #0\n\t" "umlal %Q0, %R0, %R2, %R3" : "+&r" (__res), "+&r" (__z) : "r" (__m), "r" (__n) : "cc" ); } __res /= __p; { unsigned int __res0 = __res; unsigned int __b0 = __b; __r -= __res0 * __b0; } sector = __res; } __r; }); offset = (granularity + alignment - offset) % granularity; return offset << 9; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int bdev_discard_alignment(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (bdev != bdev->bd_contains) return bdev->bd_part->discard_alignment; return q->limits.discard_alignment; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int queue_discard_zeroes_data(struct request_queue *q) { if (q->limits.max_discard_sectors && q->limits.discard_zeroes_data == 1) return 1; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int bdev_discard_zeroes_data(struct block_device *bdev) { return queue_discard_zeroes_data(bdev_get_queue(bdev)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int bdev_write_same(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return q->limits.max_write_same_sectors; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int queue_dma_alignment(struct request_queue *q) { return q ? q->dma_alignment : 511; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int blk_rq_aligned(struct request_queue *q, unsigned long addr, unsigned int len) { unsigned int alignment = queue_dma_alignment(q) | q->dma_pad_mask; return !(addr & alignment) && !(len & alignment); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int blksize_bits(unsigned int size) { unsigned int bits = 8; do { bits++; size >>= 1; } while (size > 256); return bits; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int block_size(struct block_device *bdev) { return bdev->bd_block_size; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool queue_flush_queueable(struct request_queue *q) { return !q->flush_not_queueable; } typedef struct {struct page *v;} Sector; unsigned char *read_dev_sector(struct block_device *, sector_t, Sector *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void put_dev_sector(Sector p) { put_page(p.v); } struct work_struct; int kblockd_schedule_work(struct request_queue *q, struct work_struct *work); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_start_time_ns(struct request *req) { do { } while (0); req->start_time_ns = sched_clock(); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void set_io_start_time_ns(struct request *req) { do { } while (0); req->io_start_time_ns = sched_clock(); do { } while (0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uint64_t rq_start_time_ns(struct request *req) { return req->start_time_ns; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) uint64_t rq_io_start_time_ns(struct request *req) { return req->io_start_time_ns; } # 1342 "include/linux/blkdev.h" struct blk_integrity_exchg { void *prot_buf; void *data_buf; sector_t sector; unsigned int data_size; unsigned short sector_size; const char *disk_name; }; typedef void (integrity_gen_fn) (struct blk_integrity_exchg *); typedef int (integrity_vrfy_fn) (struct blk_integrity_exchg *); typedef void (integrity_set_tag_fn) (void *, void *, unsigned int); typedef void (integrity_get_tag_fn) (void *, void *, unsigned int); struct blk_integrity { integrity_gen_fn *generate_fn; integrity_vrfy_fn *verify_fn; integrity_set_tag_fn *set_tag_fn; integrity_get_tag_fn *get_tag_fn; unsigned short flags; unsigned short tuple_size; unsigned short sector_size; unsigned short tag_size; const char *name; struct kobject kobj; }; extern bool blk_integrity_is_initialized(struct gendisk *); extern int blk_integrity_register(struct gendisk *, struct blk_integrity *); extern void blk_integrity_unregister(struct gendisk *); extern int blk_integrity_compare(struct gendisk *, struct gendisk *); extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, struct scatterlist *); extern int blk_rq_count_integrity_sg(struct request_queue *, struct bio *); extern int blk_integrity_merge_rq(struct request_queue *, struct request *, struct request *); extern int blk_integrity_merge_bio(struct request_queue *, struct request *, struct bio *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct blk_integrity *bdev_get_integrity(struct block_device *bdev) { return bdev->bd_disk->integrity; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct blk_integrity *blk_get_integrity(struct gendisk *disk) { return disk->integrity; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int blk_integrity_rq(struct request *rq) { if (rq->bio == ((void *)0)) return 0; return (rq->bio->bi_integrity != ((void *)0)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void blk_queue_max_integrity_segments(struct request_queue *q, unsigned int segs) { q->limits.max_integrity_segments = segs; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned short queue_max_integrity_segments(struct request_queue *q) { return q->limits.max_integrity_segments; } # 1484 "include/linux/blkdev.h" struct block_device_operations { int (*open) (struct block_device *, fmode_t); int (*release) (struct gendisk *, fmode_t); int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); int (*direct_access) (struct block_device *, sector_t, void **, unsigned long *); unsigned int (*check_events) (struct gendisk *disk, unsigned int clearing); int (*media_changed) (struct gendisk *); void (*unlock_native_capacity) (struct gendisk *); int (*revalidate_disk) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); void (*swap_slot_free_notify) (struct block_device *, unsigned long); struct module *owner; }; extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int, unsigned long); # 30 "drivers/ata/pata_optidma.c" 2 # 1 "include/linux/delay.h" 1 # 12 "include/linux/delay.h" extern unsigned long loops_per_jiffy; # 1 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/delay.h" 1 # 10 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/delay.h" # 1 "arch/arm/include/generated/asm/param.h" 1 # 11 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/delay.h" 2 struct delay_timer { unsigned long (*read_current_timer)(void); unsigned long freq; }; extern struct arm_delay_ops { void (*delay)(unsigned long); void (*const_udelay)(unsigned long); void (*udelay)(unsigned long); } arm_delay_ops; # 38 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/delay.h" extern void __bad_udelay(void); # 60 "/builddir/build/BUILD/kernel-3.8.fc19/linux-3.8.0-1.fc19.armv7hl/arch/arm/include/asm/delay.h" extern void __loop_delay(unsigned long loops); extern void __loop_udelay(unsigned long usecs); extern void __loop_const_udelay(unsigned long); extern void register_current_timer_delay(const struct delay_timer *timer); # 15 "include/linux/delay.h" 2 # 37 "include/linux/delay.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ndelay(unsigned long x) { (__builtin_constant_p((((x) + (1000) - 1) / (1000))) ? (((((x) + (1000) - 1) / (1000))) > (2 * 1000) ? __bad_udelay() : arm_delay_ops.const_udelay(((((x) + (1000) - 1) / (1000))) * (((2199023UL) * 100) >> 11))) : arm_delay_ops.udelay((((x) + (1000) - 1) / (1000)))); } extern unsigned long lpj_fine; void calibrate_delay(void); void msleep(unsigned int msecs); unsigned long msleep_interruptible(unsigned int msecs); void usleep_range(unsigned long min, unsigned long max); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ssleep(unsigned int seconds) { msleep(seconds * 1000); } # 31 "drivers/ata/pata_optidma.c" 2 # 1 "include/scsi/scsi_host.h" 1 # 9 "include/scsi/scsi_host.h" # 1 "include/scsi/scsi.h" 1 # 14 "include/scsi/scsi.h" struct scsi_cmnd; # 194 "include/scsi/scsi.h" struct scsi_varlen_cdb_hdr { __u8 opcode; __u8 control; __u8 misc[5]; __u8 additional_cdb_length; __be16 service_action; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned scsi_varlen_cdb_length(const void *hdr) { return ((struct scsi_varlen_cdb_hdr *)hdr)->additional_cdb_length + 8; } extern const unsigned char scsi_command_size_tbl[8]; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned scsi_command_size(const unsigned char *cmnd) { return (cmnd[0] == 0x7f) ? scsi_varlen_cdb_length(cmnd) : scsi_command_size_tbl[((cmnd[0]) >> 5) & 7]; } # 253 "include/scsi/scsi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int scsi_status_is_good(int status) { status &= 0xfe; return ((status == 0x00) || (status == 0x10) || (status == 0x14) || (status == 0x22)); } # 331 "include/scsi/scsi.h" enum scsi_protocol { SCSI_PROTOCOL_FCP = 0, SCSI_PROTOCOL_SPI = 1, SCSI_PROTOCOL_SSA = 2, SCSI_PROTOCOL_SBP = 3, SCSI_PROTOCOL_SRP = 4, SCSI_PROTOCOL_ISCSI = 5, SCSI_PROTOCOL_SAS = 6, SCSI_PROTOCOL_ADT = 7, SCSI_PROTOCOL_ATA = 8, SCSI_PROTOCOL_UNSPEC = 0xf, }; extern const char * scsi_device_type(unsigned type); struct ccs_modesel_head { __u8 _r1; __u8 medium; __u8 _r2; __u8 block_desc_length; __u8 density; __u8 number_blocks_hi; __u8 number_blocks_med; __u8 number_blocks_lo; __u8 _r3; __u8 block_length_hi; __u8 block_length_med; __u8 block_length_lo; }; struct scsi_lun { __u8 scsi_lun[8]; }; # 381 "include/scsi/scsi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int scsi_is_wlun(unsigned int lun) { return (lun & 0xff00) == 0xc100; } # 572 "include/scsi/scsi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __u32 scsi_to_u32(__u8 *ptr) { return (ptr[0]<<24) + (ptr[1]<<16) + (ptr[2]<<8) + ptr[3]; } # 10 "include/scsi/scsi_host.h" 2 struct request_queue; struct block_device; struct completion; struct module; struct scsi_cmnd; struct scsi_device; struct scsi_target; struct Scsi_Host; struct scsi_host_cmd_pool; struct scsi_transport_template; struct blk_queue_tags; # 46 "include/scsi/scsi_host.h" enum { SCSI_QDEPTH_DEFAULT, SCSI_QDEPTH_QFULL, SCSI_QDEPTH_RAMP_UP, }; struct scsi_host_template { struct module *module; const char *name; int (* detect)(struct scsi_host_template *); int (* release)(struct Scsi_Host *); # 78 "include/scsi/scsi_host.h" const char *(* info)(struct Scsi_Host *); int (* ioctl)(struct scsi_device *dev, int cmd, void *arg); # 130 "include/scsi/scsi_host.h" int (* queuecommand)(struct Scsi_Host *, struct scsi_cmnd *); # 150 "include/scsi/scsi_host.h" int (* transfer_response)(struct scsi_cmnd *, void (*done)(struct scsi_cmnd *)); # 171 "include/scsi/scsi_host.h" int (* eh_abort_handler)(struct scsi_cmnd *); int (* eh_device_reset_handler)(struct scsi_cmnd *); int (* eh_target_reset_handler)(struct scsi_cmnd *); int (* eh_bus_reset_handler)(struct scsi_cmnd *); int (* eh_host_reset_handler)(struct scsi_cmnd *); # 203 "include/scsi/scsi_host.h" int (* slave_alloc)(struct scsi_device *); # 234 "include/scsi/scsi_host.h" int (* slave_configure)(struct scsi_device *); # 245 "include/scsi/scsi_host.h" void (* slave_destroy)(struct scsi_device *); # 259 "include/scsi/scsi_host.h" int (* target_alloc)(struct scsi_target *); # 269 "include/scsi/scsi_host.h" void (* target_destroy)(struct scsi_target *); # 280 "include/scsi/scsi_host.h" int (* scan_finished)(struct Scsi_Host *, unsigned long); # 289 "include/scsi/scsi_host.h" void (* scan_start)(struct Scsi_Host *); # 302 "include/scsi/scsi_host.h" int (* change_queue_depth)(struct scsi_device *, int, int); # 315 "include/scsi/scsi_host.h" int (* change_queue_type)(struct scsi_device *, int); # 325 "include/scsi/scsi_host.h" int (* bios_param)(struct scsi_device *, struct block_device *, sector_t, int []); void (*unlock_native_capacity)(struct scsi_device *); # 343 "include/scsi/scsi_host.h" int (*proc_info)(struct Scsi_Host *, char *, char **, off_t, int, int); # 356 "include/scsi/scsi_host.h" enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *); # 366 "include/scsi/scsi_host.h" int (*host_reset)(struct Scsi_Host *shost, int reset_type); const char *proc_name; struct proc_dir_entry *proc_dir; int can_queue; # 396 "include/scsi/scsi_host.h" int this_id; unsigned short sg_tablesize; unsigned short sg_prot_tablesize; unsigned short max_sectors; unsigned long dma_boundary; # 433 "include/scsi/scsi_host.h" short cmd_per_lun; unsigned char present; unsigned supported_mode:2; unsigned unchecked_isa_dma:1; # 459 "include/scsi/scsi_host.h" unsigned use_clustering:1; unsigned emulated:1; unsigned skip_settle_delay:1; unsigned ordered_tag:1; unsigned int max_host_blocked; # 493 "include/scsi/scsi_host.h" struct device_attribute **shost_attrs; struct device_attribute **sdev_attrs; # 507 "include/scsi/scsi_host.h" struct list_head legacy_hosts; # 516 "include/scsi/scsi_host.h" u64 vendor_id; }; # 543 "include/scsi/scsi_host.h" enum scsi_host_state { SHOST_CREATED = 1, SHOST_RUNNING, SHOST_CANCEL, SHOST_DEL, SHOST_RECOVERY, SHOST_CANCEL_RECOVERY, SHOST_DEL_RECOVERY, }; struct Scsi_Host { # 562 "include/scsi/scsi_host.h" struct list_head __devices; struct list_head __targets; struct scsi_host_cmd_pool *cmd_pool; spinlock_t free_list_lock; struct list_head free_list; struct list_head starved_list; spinlock_t default_lock; spinlock_t *host_lock; struct mutex scan_mutex; struct list_head eh_cmd_q; struct task_struct * ehandler; struct completion * eh_action; wait_queue_head_t host_wait; struct scsi_host_template *hostt; struct scsi_transport_template *transportt; struct blk_queue_tag *bqt; unsigned int host_busy; unsigned int host_failed; unsigned int host_eh_scheduled; unsigned int host_no; int resetting; unsigned long last_reset; unsigned int max_id; unsigned int max_lun; unsigned int max_channel; # 619 "include/scsi/scsi_host.h" unsigned int unique_id; # 628 "include/scsi/scsi_host.h" unsigned short max_cmd_len; int this_id; int can_queue; short cmd_per_lun; short unsigned int sg_tablesize; short unsigned int sg_prot_tablesize; short unsigned int max_sectors; unsigned long dma_boundary; unsigned long cmd_serial_number; unsigned active_mode:2; unsigned unchecked_isa_dma:1; unsigned use_clustering:1; unsigned use_blk_tcq:1; unsigned host_self_blocked:1; unsigned reverse_ordering:1; unsigned ordered_tag:1; unsigned tmf_in_progress:1; unsigned async_scan:1; unsigned eh_noresume:1; char work_q_name[20]; struct workqueue_struct *work_q; unsigned int host_blocked; unsigned int max_host_blocked; unsigned int prot_capabilities; unsigned char prot_guard_type; struct request_queue *uspace_req_q; unsigned long base; unsigned long io_port; unsigned char n_io_port; unsigned char dma_channel; unsigned int irq; enum scsi_host_state shost_state; struct device shost_gendev, shost_dev; # 721 "include/scsi/scsi_host.h" struct list_head sht_legacy_list; void *shost_data; struct device *dma_dev; unsigned long hostdata[0] __attribute__ ((aligned (sizeof(unsigned long)))); }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void *shost_priv(struct Scsi_Host *shost) { return (void *)shost->hostdata; } int scsi_is_host_device(const struct device *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct Scsi_Host *dev_to_shost(struct device *dev) { while (!scsi_is_host_device(dev)) { if (!dev->parent) return ((void *)0); dev = dev->parent; } return ({ const typeof( ((struct Scsi_Host *)0)->shost_gendev ) *__mptr = (dev); (struct Scsi_Host *)( (char *)__mptr - __builtin_offsetof(struct Scsi_Host,shost_gendev) );}); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int scsi_host_in_recovery(struct Scsi_Host *shost) { return shost->shost_state == SHOST_RECOVERY || shost->shost_state == SHOST_CANCEL_RECOVERY || shost->shost_state == SHOST_DEL_RECOVERY || shost->tmf_in_progress; } extern int scsi_queue_work(struct Scsi_Host *, struct work_struct *); extern void scsi_flush_work(struct Scsi_Host *); extern struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *, int); extern int __attribute__((warn_unused_result)) scsi_add_host_with_dma(struct Scsi_Host *, struct device *, struct device *); extern void scsi_scan_host(struct Scsi_Host *); extern void scsi_rescan_device(struct device *); extern void scsi_remove_host(struct Scsi_Host *); extern struct Scsi_Host *scsi_host_get(struct Scsi_Host *); extern void scsi_host_put(struct Scsi_Host *t); extern struct Scsi_Host *scsi_host_lookup(unsigned short); extern const char *scsi_host_state_name(enum scsi_host_state); extern void scsi_cmd_get_serial(struct Scsi_Host *, struct scsi_cmnd *); extern u64 scsi_calculate_bounce_limit(struct Scsi_Host *); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) scsi_add_host(struct Scsi_Host *host, struct device *dev) { return scsi_add_host_with_dma(host, dev, dev); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct device *scsi_get_device(struct Scsi_Host *shost) { return shost->shost_gendev.parent; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int scsi_host_scan_allowed(struct Scsi_Host *shost) { return shost->shost_state == SHOST_RUNNING || shost->shost_state == SHOST_RECOVERY; } extern void scsi_unblock_requests(struct Scsi_Host *); extern void scsi_block_requests(struct Scsi_Host *); struct class_container; extern struct request_queue *__scsi_alloc_queue(struct Scsi_Host *shost, void (*) (struct request_queue *)); extern void scsi_free_host_dev(struct scsi_device *); extern struct scsi_device *scsi_get_host_dev(struct Scsi_Host *); # 838 "include/scsi/scsi_host.h" enum scsi_host_prot_capabilities { SHOST_DIF_TYPE1_PROTECTION = 1 << 0, SHOST_DIF_TYPE2_PROTECTION = 1 << 1, SHOST_DIF_TYPE3_PROTECTION = 1 << 2, SHOST_DIX_TYPE0_PROTECTION = 1 << 3, SHOST_DIX_TYPE1_PROTECTION = 1 << 4, SHOST_DIX_TYPE2_PROTECTION = 1 << 5, SHOST_DIX_TYPE3_PROTECTION = 1 << 6, }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void scsi_host_set_prot(struct Scsi_Host *shost, unsigned int mask) { shost->prot_capabilities = mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int scsi_host_get_prot(struct Scsi_Host *shost) { return shost->prot_capabilities; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int scsi_host_prot_dma(struct Scsi_Host *shost) { return shost->prot_capabilities >= SHOST_DIX_TYPE0_PROTECTION; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsigned int target_type) { static unsigned char cap[] = { 0, SHOST_DIF_TYPE1_PROTECTION, SHOST_DIF_TYPE2_PROTECTION, SHOST_DIF_TYPE3_PROTECTION }; if (target_type > SHOST_DIF_TYPE3_PROTECTION) return 0; return shost->prot_capabilities & cap[target_type] ? target_type : 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsigned int target_type) { static unsigned char cap[] = { SHOST_DIX_TYPE0_PROTECTION, SHOST_DIX_TYPE1_PROTECTION, SHOST_DIX_TYPE2_PROTECTION, SHOST_DIX_TYPE3_PROTECTION }; if (target_type > SHOST_DIX_TYPE3_PROTECTION) return 0; return shost->prot_capabilities & cap[target_type]; return 0; } # 907 "include/scsi/scsi_host.h" enum scsi_host_guard_type { SHOST_DIX_GUARD_CRC = 1 << 0, SHOST_DIX_GUARD_IP = 1 << 1, }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void scsi_host_set_guard(struct Scsi_Host *shost, unsigned char type) { shost->prot_guard_type = type; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned char scsi_host_get_guard(struct Scsi_Host *shost) { return shost->prot_guard_type; } extern struct Scsi_Host *scsi_register(struct scsi_host_template *, int); extern void scsi_unregister(struct Scsi_Host *); extern int scsi_host_set_state(struct Scsi_Host *, enum scsi_host_state); # 32 "drivers/ata/pata_optidma.c" 2 # 1 "include/linux/libata.h" 1 # 31 "include/linux/libata.h" # 1 "include/linux/interrupt.h" 1 # 11 "include/linux/interrupt.h" # 1 "include/linux/irqnr.h" 1 # 1 "include/uapi/linux/irqnr.h" 1 # 5 "include/linux/irqnr.h" 2 # 24 "include/linux/irqnr.h" extern int nr_irqs; extern struct irq_desc *irq_to_desc(unsigned int irq); unsigned int irq_get_next_irq(unsigned int offset); # 12 "include/linux/interrupt.h" 2 # 84 "include/linux/interrupt.h" enum { IRQC_IS_HARDIRQ = 0, IRQC_IS_NESTED, }; typedef irqreturn_t (*irq_handler_t)(int, void *); # 106 "include/linux/interrupt.h" struct irqaction { irq_handler_t handler; void *dev_id; void *percpu_dev_id; struct irqaction *next; irq_handler_t thread_fn; struct task_struct *thread; unsigned int irq; unsigned int flags; unsigned long thread_flags; unsigned long thread_mask; const char *name; struct proc_dir_entry *dir; } __attribute__((__aligned__(1 << (6)))); extern irqreturn_t no_action(int cpl, void *dev_id); extern int __attribute__((warn_unused_result)) request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long flags, const char *name, void *dev); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) { return request_threaded_irq(irq, handler, ((void *)0), flags, name, dev); } extern int __attribute__((warn_unused_result)) request_any_context_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id); extern int __attribute__((warn_unused_result)) request_percpu_irq(unsigned int irq, irq_handler_t handler, const char *devname, void *percpu_dev_id); # 178 "include/linux/interrupt.h" extern void free_irq(unsigned int, void *); extern void free_percpu_irq(unsigned int, void *); struct device; extern int __attribute__((warn_unused_result)) devm_request_threaded_irq(struct device *dev, unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int __attribute__((warn_unused_result)) devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) { return devm_request_threaded_irq(dev, irq, handler, ((void *)0), irqflags, devname, dev_id); } extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); # 217 "include/linux/interrupt.h" extern void disable_irq_nosync(unsigned int irq); extern void disable_irq(unsigned int irq); extern void disable_percpu_irq(unsigned int irq); extern void enable_irq(unsigned int irq); extern void enable_percpu_irq(unsigned int irq, unsigned int type); extern void suspend_device_irqs(void); extern void resume_device_irqs(void); extern int check_wakeup_irqs(void); # 240 "include/linux/interrupt.h" extern cpumask_var_t irq_default_affinity; extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask); extern int irq_can_set_affinity(unsigned int irq); extern int irq_select_affinity(unsigned int irq); extern int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m); # 260 "include/linux/interrupt.h" struct irq_affinity_notify { unsigned int irq; struct kref kref; struct work_struct work; void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); void (*release)(struct kref *ref); }; extern int irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify); # 304 "include/linux/interrupt.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void disable_irq_nosync_lockdep(unsigned int irq) { disable_irq_nosync(irq); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void disable_irq_nosync_lockdep_irqsave(unsigned int irq, unsigned long *flags) { disable_irq_nosync(irq); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void disable_irq_lockdep(unsigned int irq) { disable_irq(irq); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void enable_irq_lockdep(unsigned int irq) { enable_irq(irq); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void enable_irq_lockdep_irqrestore(unsigned int irq, unsigned long *flags) { enable_irq(irq); } extern int irq_set_irq_wake(unsigned int irq, unsigned int on); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int enable_irq_wake(unsigned int irq) { return irq_set_irq_wake(irq, 1); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int disable_irq_wake(unsigned int irq) { return irq_set_irq_wake(irq, 0); } # 412 "include/linux/interrupt.h" enum { HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, BLOCK_SOFTIRQ, BLOCK_IOPOLL_SOFTIRQ, TASKLET_SOFTIRQ, SCHED_SOFTIRQ, HRTIMER_SOFTIRQ, RCU_SOFTIRQ, NR_SOFTIRQS }; extern char *softirq_to_name[NR_SOFTIRQS]; struct softirq_action { void (*action)(struct softirq_action *); }; void do_softirq(void); void __do_softirq(void); extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void softirq_init(void); extern void __raise_softirq_irqoff(unsigned int nr); extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); # 460 "include/linux/interrupt.h" extern __attribute__((section(".data..percpu" ""))) __typeof__(struct list_head [NR_SOFTIRQS]) softirq_work_list; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct task_struct *) ksoftirqd; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct task_struct *this_cpu_ksoftirqd(void) { return ({ typeof((ksoftirqd)) pscr_ret__; do { const void *__vpp_verify = (typeof(&((ksoftirqd))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((ksoftirqd))) { case 1: pscr_ret__ = ({ typeof((ksoftirqd)) ret__; do { } while (0); ret__ = *({ do { const void *__vpp_verify = (typeof((&((ksoftirqd)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))); (typeof((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))) (__ptr + ((__my_cpu_offset()))); }); }); do { } while (0); ret__; });break; case 2: pscr_ret__ = ({ typeof((ksoftirqd)) ret__; do { } while (0); ret__ = *({ do { const void *__vpp_verify = (typeof((&((ksoftirqd)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))); (typeof((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))) (__ptr + ((__my_cpu_offset()))); }); }); do { } while (0); ret__; });break; case 4: pscr_ret__ = ({ typeof((ksoftirqd)) ret__; do { } while (0); ret__ = *({ do { const void *__vpp_verify = (typeof((&((ksoftirqd)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))); (typeof((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))) (__ptr + ((__my_cpu_offset()))); }); }); do { } while (0); ret__; });break; case 8: pscr_ret__ = ({ typeof((ksoftirqd)) ret__; do { } while (0); ret__ = *({ do { const void *__vpp_verify = (typeof((&((ksoftirqd)))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))); (typeof((typeof(*(&((ksoftirqd)))) *)(&((ksoftirqd))))) (__ptr + ((__my_cpu_offset()))); }); }); do { } while (0); ret__; });break; default: __bad_size_call_parameter();break; } pscr_ret__; }); } extern void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq); extern void __send_remote_softirq(struct call_single_data *cp, int cpu, int this_cpu, int softirq); # 500 "include/linux/interrupt.h" struct tasklet_struct { struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data; }; # 516 "include/linux/interrupt.h" enum { TASKLET_STATE_SCHED, TASKLET_STATE_RUN }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int tasklet_trylock(struct tasklet_struct *t) { return !_test_and_set_bit(TASKLET_STATE_RUN,&(t)->state); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_unlock(struct tasklet_struct *t) { __asm__ __volatile__ ("dmb" : : : "memory"); _clear_bit(TASKLET_STATE_RUN,&(t)->state); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_unlock_wait(struct tasklet_struct *t) { while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { __asm__ __volatile__("": : :"memory"); } } extern void __tasklet_schedule(struct tasklet_struct *t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_schedule(struct tasklet_struct *t) { if (!_test_and_set_bit(TASKLET_STATE_SCHED,&t->state)) __tasklet_schedule(t); } extern void __tasklet_hi_schedule(struct tasklet_struct *t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_hi_schedule(struct tasklet_struct *t) { if (!_test_and_set_bit(TASKLET_STATE_SCHED,&t->state)) __tasklet_hi_schedule(t); } extern void __tasklet_hi_schedule_first(struct tasklet_struct *t); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_hi_schedule_first(struct tasklet_struct *t) { if (!_test_and_set_bit(TASKLET_STATE_SCHED,&t->state)) __tasklet_hi_schedule_first(t); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_disable_nosync(struct tasklet_struct *t) { atomic_add(1, &t->count); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_disable(struct tasklet_struct *t) { tasklet_disable_nosync(t); tasklet_unlock_wait(t); __asm__ __volatile__ ("dmb" : : : "memory"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_enable(struct tasklet_struct *t) { __asm__ __volatile__ ("dmb" : : : "memory"); atomic_sub(1, &t->count); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_hi_enable(struct tasklet_struct *t) { __asm__ __volatile__ ("dmb" : : : "memory"); atomic_sub(1, &t->count); } extern void tasklet_kill(struct tasklet_struct *t); extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); extern void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data); struct tasklet_hrtimer { struct hrtimer timer; struct tasklet_struct tasklet; enum hrtimer_restart (*function)(struct hrtimer *); }; extern void tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, enum hrtimer_restart (*function)(struct hrtimer *), clockid_t which_clock, enum hrtimer_mode mode); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, const enum hrtimer_mode mode) { return hrtimer_start(&ttimer->timer, time, mode); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) { hrtimer_cancel(&ttimer->timer); tasklet_kill(&ttimer->tasklet); } # 672 "include/linux/interrupt.h" extern unsigned long probe_irq_on(void); extern int probe_irq_off(unsigned long); extern unsigned int probe_irq_mask(unsigned long); extern void init_irq_proc(void); struct seq_file; int show_interrupts(struct seq_file *p, void *v); int arch_show_interrupts(struct seq_file *p, int prec); extern int early_irq_init(void); extern int arch_probe_nr_irqs(void); extern int arch_early_irq_init(void); # 32 "include/linux/libata.h" 2 # 1 "include/linux/ata.h" 1 # 41 "include/linux/ata.h" enum { ATA_MAX_DEVICES = 2, ATA_MAX_PRD = 256, ATA_SECT_SIZE = 512, ATA_MAX_SECTORS_128 = 128, ATA_MAX_SECTORS = 256, ATA_MAX_SECTORS_LBA48 = 65535, ATA_MAX_SECTORS_TAPE = 65535, ATA_ID_WORDS = 256, ATA_ID_CONFIG = 0, ATA_ID_CYLS = 1, ATA_ID_HEADS = 3, ATA_ID_SECTORS = 6, ATA_ID_SERNO = 10, ATA_ID_BUF_SIZE = 21, ATA_ID_FW_REV = 23, ATA_ID_PROD = 27, ATA_ID_MAX_MULTSECT = 47, ATA_ID_DWORD_IO = 48, ATA_ID_CAPABILITY = 49, ATA_ID_OLD_PIO_MODES = 51, ATA_ID_OLD_DMA_MODES = 52, ATA_ID_FIELD_VALID = 53, ATA_ID_CUR_CYLS = 54, ATA_ID_CUR_HEADS = 55, ATA_ID_CUR_SECTORS = 56, ATA_ID_MULTSECT = 59, ATA_ID_LBA_CAPACITY = 60, ATA_ID_SWDMA_MODES = 62, ATA_ID_MWDMA_MODES = 63, ATA_ID_PIO_MODES = 64, ATA_ID_EIDE_DMA_MIN = 65, ATA_ID_EIDE_DMA_TIME = 66, ATA_ID_EIDE_PIO = 67, ATA_ID_EIDE_PIO_IORDY = 68, ATA_ID_ADDITIONAL_SUPP = 69, ATA_ID_QUEUE_DEPTH = 75, ATA_ID_SATA_CAPABILITY = 76, ATA_ID_SATA_CAPABILITY_2 = 77, ATA_ID_FEATURE_SUPP = 78, ATA_ID_MAJOR_VER = 80, ATA_ID_COMMAND_SET_1 = 82, ATA_ID_COMMAND_SET_2 = 83, ATA_ID_CFSSE = 84, ATA_ID_CFS_ENABLE_1 = 85, ATA_ID_CFS_ENABLE_2 = 86, ATA_ID_CSF_DEFAULT = 87, ATA_ID_UDMA_MODES = 88, ATA_ID_HW_CONFIG = 93, ATA_ID_SPG = 98, ATA_ID_LBA_CAPACITY_2 = 100, ATA_ID_SECTOR_SIZE = 106, ATA_ID_WWN = 108, ATA_ID_LOGICAL_SECTOR_SIZE = 117, ATA_ID_LAST_LUN = 126, ATA_ID_DLF = 128, ATA_ID_CSFO = 129, ATA_ID_CFA_POWER = 160, ATA_ID_CFA_KEY_MGMT = 162, ATA_ID_CFA_MODES = 163, ATA_ID_DATA_SET_MGMT = 169, ATA_ID_ROT_SPEED = 217, ATA_ID_PIO4 = (1 << 1), ATA_ID_SERNO_LEN = 20, ATA_ID_FW_REV_LEN = 8, ATA_ID_PROD_LEN = 40, ATA_ID_WWN_LEN = 8, ATA_PCI_CTL_OFS = 2, ATA_PIO0 = (1 << 0), ATA_PIO1 = ATA_PIO0 | (1 << 1), ATA_PIO2 = ATA_PIO1 | (1 << 2), ATA_PIO3 = ATA_PIO2 | (1 << 3), ATA_PIO4 = ATA_PIO3 | (1 << 4), ATA_PIO5 = ATA_PIO4 | (1 << 5), ATA_PIO6 = ATA_PIO5 | (1 << 6), ATA_PIO4_ONLY = (1 << 4), ATA_SWDMA0 = (1 << 0), ATA_SWDMA1 = ATA_SWDMA0 | (1 << 1), ATA_SWDMA2 = ATA_SWDMA1 | (1 << 2), ATA_SWDMA2_ONLY = (1 << 2), ATA_MWDMA0 = (1 << 0), ATA_MWDMA1 = ATA_MWDMA0 | (1 << 1), ATA_MWDMA2 = ATA_MWDMA1 | (1 << 2), ATA_MWDMA3 = ATA_MWDMA2 | (1 << 3), ATA_MWDMA4 = ATA_MWDMA3 | (1 << 4), ATA_MWDMA12_ONLY = (1 << 1) | (1 << 2), ATA_MWDMA2_ONLY = (1 << 2), ATA_UDMA0 = (1 << 0), ATA_UDMA1 = ATA_UDMA0 | (1 << 1), ATA_UDMA2 = ATA_UDMA1 | (1 << 2), ATA_UDMA3 = ATA_UDMA2 | (1 << 3), ATA_UDMA4 = ATA_UDMA3 | (1 << 4), ATA_UDMA5 = ATA_UDMA4 | (1 << 5), ATA_UDMA6 = ATA_UDMA5 | (1 << 6), ATA_UDMA7 = ATA_UDMA6 | (1 << 7), ATA_UDMA24_ONLY = (1 << 2) | (1 << 4), ATA_UDMA_MASK_40C = ATA_UDMA2, ATA_PRD_SZ = 8, ATA_PRD_TBL_SZ = (ATA_MAX_PRD * ATA_PRD_SZ), ATA_PRD_EOT = (1 << 31), ATA_DMA_TABLE_OFS = 4, ATA_DMA_STATUS = 2, ATA_DMA_CMD = 0, ATA_DMA_WR = (1 << 3), ATA_DMA_START = (1 << 0), ATA_DMA_INTR = (1 << 2), ATA_DMA_ERR = (1 << 1), ATA_DMA_ACTIVE = (1 << 0), ATA_HOB = (1 << 7), ATA_NIEN = (1 << 1), ATA_LBA = (1 << 6), ATA_DEV1 = (1 << 4), ATA_DEVICE_OBS = (1 << 7) | (1 << 5), ATA_DEVCTL_OBS = (1 << 3), ATA_BUSY = (1 << 7), ATA_DRDY = (1 << 6), ATA_DF = (1 << 5), ATA_DSC = (1 << 4), ATA_DRQ = (1 << 3), ATA_CORR = (1 << 2), ATA_IDX = (1 << 1), ATA_ERR = (1 << 0), ATA_SRST = (1 << 2), ATA_ICRC = (1 << 7), ATA_BBK = ATA_ICRC, ATA_UNC = (1 << 6), ATA_MC = (1 << 5), ATA_IDNF = (1 << 4), ATA_MCR = (1 << 3), ATA_ABORTED = (1 << 2), ATA_TRK0NF = (1 << 1), ATA_AMNF = (1 << 0), ATAPI_LFS = 0xF0, ATAPI_EOM = ATA_TRK0NF, ATAPI_ILI = ATA_AMNF, ATAPI_IO = (1 << 1), ATAPI_COD = (1 << 0), ATA_REG_DATA = 0x00, ATA_REG_ERR = 0x01, ATA_REG_NSECT = 0x02, ATA_REG_LBAL = 0x03, ATA_REG_LBAM = 0x04, ATA_REG_LBAH = 0x05, ATA_REG_DEVICE = 0x06, ATA_REG_STATUS = 0x07, ATA_REG_FEATURE = ATA_REG_ERR, ATA_REG_CMD = ATA_REG_STATUS, ATA_REG_BYTEL = ATA_REG_LBAM, ATA_REG_BYTEH = ATA_REG_LBAH, ATA_REG_DEVSEL = ATA_REG_DEVICE, ATA_REG_IRQ = ATA_REG_NSECT, ATA_CMD_DEV_RESET = 0x08, ATA_CMD_CHK_POWER = 0xE5, ATA_CMD_STANDBY = 0xE2, ATA_CMD_IDLE = 0xE3, ATA_CMD_EDD = 0x90, ATA_CMD_DOWNLOAD_MICRO = 0x92, ATA_CMD_NOP = 0x00, ATA_CMD_FLUSH = 0xE7, ATA_CMD_FLUSH_EXT = 0xEA, ATA_CMD_ID_ATA = 0xEC, ATA_CMD_ID_ATAPI = 0xA1, ATA_CMD_SERVICE = 0xA2, ATA_CMD_READ = 0xC8, ATA_CMD_READ_EXT = 0x25, ATA_CMD_READ_QUEUED = 0x26, ATA_CMD_READ_STREAM_EXT = 0x2B, ATA_CMD_READ_STREAM_DMA_EXT = 0x2A, ATA_CMD_WRITE = 0xCA, ATA_CMD_WRITE_EXT = 0x35, ATA_CMD_WRITE_QUEUED = 0x36, ATA_CMD_WRITE_STREAM_EXT = 0x3B, ATA_CMD_WRITE_STREAM_DMA_EXT = 0x3A, ATA_CMD_WRITE_FUA_EXT = 0x3D, ATA_CMD_WRITE_QUEUED_FUA_EXT = 0x3E, ATA_CMD_FPDMA_READ = 0x60, ATA_CMD_FPDMA_WRITE = 0x61, ATA_CMD_PIO_READ = 0x20, ATA_CMD_PIO_READ_EXT = 0x24, ATA_CMD_PIO_WRITE = 0x30, ATA_CMD_PIO_WRITE_EXT = 0x34, ATA_CMD_READ_MULTI = 0xC4, ATA_CMD_READ_MULTI_EXT = 0x29, ATA_CMD_WRITE_MULTI = 0xC5, ATA_CMD_WRITE_MULTI_EXT = 0x39, ATA_CMD_WRITE_MULTI_FUA_EXT = 0xCE, ATA_CMD_SET_FEATURES = 0xEF, ATA_CMD_SET_MULTI = 0xC6, ATA_CMD_PACKET = 0xA0, ATA_CMD_VERIFY = 0x40, ATA_CMD_VERIFY_EXT = 0x42, ATA_CMD_WRITE_UNCORR_EXT = 0x45, ATA_CMD_STANDBYNOW1 = 0xE0, ATA_CMD_IDLEIMMEDIATE = 0xE1, ATA_CMD_SLEEP = 0xE6, ATA_CMD_INIT_DEV_PARAMS = 0x91, ATA_CMD_READ_NATIVE_MAX = 0xF8, ATA_CMD_READ_NATIVE_MAX_EXT = 0x27, ATA_CMD_SET_MAX = 0xF9, ATA_CMD_SET_MAX_EXT = 0x37, ATA_CMD_READ_LOG_EXT = 0x2F, ATA_CMD_WRITE_LOG_EXT = 0x3F, ATA_CMD_READ_LOG_DMA_EXT = 0x47, ATA_CMD_WRITE_LOG_DMA_EXT = 0x57, ATA_CMD_TRUSTED_RCV = 0x5C, ATA_CMD_TRUSTED_RCV_DMA = 0x5D, ATA_CMD_TRUSTED_SND = 0x5E, ATA_CMD_TRUSTED_SND_DMA = 0x5F, ATA_CMD_PMP_READ = 0xE4, ATA_CMD_PMP_WRITE = 0xE8, ATA_CMD_CONF_OVERLAY = 0xB1, ATA_CMD_SEC_SET_PASS = 0xF1, ATA_CMD_SEC_UNLOCK = 0xF2, ATA_CMD_SEC_ERASE_PREP = 0xF3, ATA_CMD_SEC_ERASE_UNIT = 0xF4, ATA_CMD_SEC_FREEZE_LOCK = 0xF5, ATA_CMD_SEC_DISABLE_PASS = 0xF6, ATA_CMD_CONFIG_STREAM = 0x51, ATA_CMD_SMART = 0xB0, ATA_CMD_MEDIA_LOCK = 0xDE, ATA_CMD_MEDIA_UNLOCK = 0xDF, ATA_CMD_DSM = 0x06, ATA_CMD_CHK_MED_CRD_TYP = 0xD1, ATA_CMD_CFA_REQ_EXT_ERR = 0x03, ATA_CMD_CFA_WRITE_NE = 0x38, ATA_CMD_CFA_TRANS_SECT = 0x87, ATA_CMD_CFA_ERASE = 0xC0, ATA_CMD_CFA_WRITE_MULT_NE = 0xCD, ATA_CMD_RESTORE = 0x10, ATA_LOG_SATA_NCQ = 0x10, ATA_LOG_SATA_ID_DEV_DATA = 0x30, ATA_LOG_SATA_SETTINGS = 0x08, ATA_LOG_DEVSLP_OFFSET = 0x30, ATA_LOG_DEVSLP_SIZE = 0x08, ATA_LOG_DEVSLP_MDAT = 0x00, ATA_LOG_DEVSLP_MDAT_MASK = 0x1F, ATA_LOG_DEVSLP_DETO = 0x01, ATA_LOG_DEVSLP_VALID = 0x07, ATA_LOG_DEVSLP_VALID_MASK = 0x80, ATA_CMD_READ_LONG = 0x22, ATA_CMD_READ_LONG_ONCE = 0x23, ATA_CMD_WRITE_LONG = 0x32, ATA_CMD_WRITE_LONG_ONCE = 0x33, SETFEATURES_XFER = 0x03, XFER_UDMA_7 = 0x47, XFER_UDMA_6 = 0x46, XFER_UDMA_5 = 0x45, XFER_UDMA_4 = 0x44, XFER_UDMA_3 = 0x43, XFER_UDMA_2 = 0x42, XFER_UDMA_1 = 0x41, XFER_UDMA_0 = 0x40, XFER_MW_DMA_4 = 0x24, XFER_MW_DMA_3 = 0x23, XFER_MW_DMA_2 = 0x22, XFER_MW_DMA_1 = 0x21, XFER_MW_DMA_0 = 0x20, XFER_SW_DMA_2 = 0x12, XFER_SW_DMA_1 = 0x11, XFER_SW_DMA_0 = 0x10, XFER_PIO_6 = 0x0E, XFER_PIO_5 = 0x0D, XFER_PIO_4 = 0x0C, XFER_PIO_3 = 0x0B, XFER_PIO_2 = 0x0A, XFER_PIO_1 = 0x09, XFER_PIO_0 = 0x08, XFER_PIO_SLOW = 0x00, SETFEATURES_WC_ON = 0x02, SETFEATURES_WC_OFF = 0x82, SETFEATURES_AAM_ON = 0x42, SETFEATURES_AAM_OFF = 0xC2, SETFEATURES_SPINUP = 0x07, SETFEATURES_SATA_ENABLE = 0x10, SETFEATURES_SATA_DISABLE = 0x90, SATA_FPDMA_OFFSET = 0x01, SATA_FPDMA_AA = 0x02, SATA_DIPM = 0x03, SATA_FPDMA_IN_ORDER = 0x04, SATA_AN = 0x05, SATA_SSP = 0x06, SATA_DEVSLP = 0x09, ATA_SET_MAX_ADDR = 0x00, ATA_SET_MAX_PASSWD = 0x01, ATA_SET_MAX_LOCK = 0x02, ATA_SET_MAX_UNLOCK = 0x03, ATA_SET_MAX_FREEZE_LOCK = 0x04, ATA_DCO_RESTORE = 0xC0, ATA_DCO_FREEZE_LOCK = 0xC1, ATA_DCO_IDENTIFY = 0xC2, ATA_DCO_SET = 0xC3, ATA_SMART_ENABLE = 0xD8, ATA_SMART_READ_VALUES = 0xD0, ATA_SMART_READ_THRESHOLDS = 0xD1, ATA_DSM_TRIM = 0x01, ATA_SMART_LBAM_PASS = 0x4F, ATA_SMART_LBAH_PASS = 0xC2, ATAPI_PKT_DMA = (1 << 0), ATAPI_DMADIR = (1 << 2), ATAPI_CDB_LEN = 16, SATA_PMP_MAX_PORTS = 15, SATA_PMP_CTRL_PORT = 15, SATA_PMP_GSCR_DWORDS = 128, SATA_PMP_GSCR_PROD_ID = 0, SATA_PMP_GSCR_REV = 1, SATA_PMP_GSCR_PORT_INFO = 2, SATA_PMP_GSCR_ERROR = 32, SATA_PMP_GSCR_ERROR_EN = 33, SATA_PMP_GSCR_FEAT = 64, SATA_PMP_GSCR_FEAT_EN = 96, SATA_PMP_PSCR_STATUS = 0, SATA_PMP_PSCR_ERROR = 1, SATA_PMP_PSCR_CONTROL = 2, SATA_PMP_FEAT_BIST = (1 << 0), SATA_PMP_FEAT_PMREQ = (1 << 1), SATA_PMP_FEAT_DYNSSC = (1 << 2), SATA_PMP_FEAT_NOTIFY = (1 << 3), ATA_CBL_NONE = 0, ATA_CBL_PATA40 = 1, ATA_CBL_PATA80 = 2, ATA_CBL_PATA40_SHORT = 3, ATA_CBL_PATA_UNK = 4, ATA_CBL_PATA_IGN = 5, ATA_CBL_SATA = 6, SCR_STATUS = 0, SCR_ERROR = 1, SCR_CONTROL = 2, SCR_ACTIVE = 3, SCR_NOTIFICATION = 4, SERR_DATA_RECOVERED = (1 << 0), SERR_COMM_RECOVERED = (1 << 1), SERR_DATA = (1 << 8), SERR_PERSISTENT = (1 << 9), SERR_PROTOCOL = (1 << 10), SERR_INTERNAL = (1 << 11), SERR_PHYRDY_CHG = (1 << 16), SERR_PHY_INT_ERR = (1 << 17), SERR_COMM_WAKE = (1 << 18), SERR_10B_8B_ERR = (1 << 19), SERR_DISPARITY = (1 << 20), SERR_CRC = (1 << 21), SERR_HANDSHAKE = (1 << 22), SERR_LINK_SEQ_ERR = (1 << 23), SERR_TRANS_ST_ERROR = (1 << 24), SERR_UNRECOG_FIS = (1 << 25), SERR_DEV_XCHG = (1 << 26), ATA_TFLAG_LBA48 = (1 << 0), ATA_TFLAG_ISADDR = (1 << 1), ATA_TFLAG_DEVICE = (1 << 2), ATA_TFLAG_WRITE = (1 << 3), ATA_TFLAG_LBA = (1 << 4), ATA_TFLAG_FUA = (1 << 5), ATA_TFLAG_POLLING = (1 << 6), ATA_PROT_FLAG_PIO = (1 << 0), ATA_PROT_FLAG_DMA = (1 << 1), ATA_PROT_FLAG_DATA = ATA_PROT_FLAG_PIO | ATA_PROT_FLAG_DMA, ATA_PROT_FLAG_NCQ = (1 << 2), ATA_PROT_FLAG_ATAPI = (1 << 3), }; enum ata_tf_protocols { ATA_PROT_UNKNOWN, ATA_PROT_NODATA, ATA_PROT_PIO, ATA_PROT_DMA, ATA_PROT_NCQ, ATAPI_PROT_NODATA, ATAPI_PROT_PIO, ATAPI_PROT_DMA, }; enum ata_ioctls { ATA_IOC_GET_IO32 = 0x309, ATA_IOC_SET_IO32 = 0x324, }; struct ata_bmdma_prd { __le32 addr; __le32 flags_len; }; struct ata_taskfile { unsigned long flags; u8 protocol; u8 ctl; u8 hob_feature; u8 hob_nsect; u8 hob_lbal; u8 hob_lbam; u8 hob_lbah; u8 feature; u8 nsect; u8 lbal; u8 lbam; u8 lbah; u8 device; u8 command; }; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_prot_flags(u8 prot) { switch (prot) { case ATA_PROT_NODATA: return 0; case ATA_PROT_PIO: return ATA_PROT_FLAG_PIO; case ATA_PROT_DMA: return ATA_PROT_FLAG_DMA; case ATA_PROT_NCQ: return ATA_PROT_FLAG_DMA | ATA_PROT_FLAG_NCQ; case ATAPI_PROT_NODATA: return ATA_PROT_FLAG_ATAPI; case ATAPI_PROT_PIO: return ATA_PROT_FLAG_ATAPI | ATA_PROT_FLAG_PIO; case ATAPI_PROT_DMA: return ATA_PROT_FLAG_ATAPI | ATA_PROT_FLAG_DMA; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_atapi(u8 prot) { return ata_prot_flags(prot) & ATA_PROT_FLAG_ATAPI; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_nodata(u8 prot) { return !(ata_prot_flags(prot) & ATA_PROT_FLAG_DATA); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_pio(u8 prot) { return ata_prot_flags(prot) & ATA_PROT_FLAG_PIO; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_dma(u8 prot) { return ata_prot_flags(prot) & ATA_PROT_FLAG_DMA; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_ncq(u8 prot) { return ata_prot_flags(prot) & ATA_PROT_FLAG_NCQ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_data(u8 prot) { return ata_prot_flags(prot) & ATA_PROT_FLAG_DATA; } # 599 "include/linux/ata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_hipm(const u16 *id) { u16 val = id[ATA_ID_SATA_CAPABILITY]; if (val == 0 || val == 0xffff) return false; return val & (1 << 9); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_dipm(const u16 *id) { u16 val = id[ATA_ID_FEATURE_SUPP]; if (val == 0 || val == 0xffff) return false; return val & (1 << 3); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_fua(const u16 *id) { if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000) return false; return id[ATA_ID_CFSSE] & (1 << 6); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_flush(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; return id[ATA_ID_COMMAND_SET_2] & (1 << 12); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_flush_enabled(const u16 *id) { if (ata_id_has_flush(id) == 0) return false; if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; return id[ATA_ID_CFS_ENABLE_2] & (1 << 12); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_flush_ext(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; return id[ATA_ID_COMMAND_SET_2] & (1 << 13); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_flush_ext_enabled(const u16 *id) { if (ata_id_has_flush_ext(id) == 0) return false; if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; return (id[ATA_ID_CFS_ENABLE_2] & 0x2400) == 0x2400; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 ata_id_logical_sector_size(const u16 *id) { if ((id[ATA_ID_SECTOR_SIZE] & 0xd000) == 0x5000) return (((id[ATA_ID_LOGICAL_SECTOR_SIZE+1] << 16) + id[ATA_ID_LOGICAL_SECTOR_SIZE]) * sizeof(u16)) ; return ATA_SECT_SIZE; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 ata_id_log2_per_physical_sector(const u16 *id) { if ((id[ATA_ID_SECTOR_SIZE] & 0xe000) == 0x6000) return (id[ATA_ID_SECTOR_SIZE] & 0xf); return 0; } # 695 "include/linux/ata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u16 ata_id_logical_sector_offset(const u16 *id, u8 log2_per_phys) { u16 word_209 = id[209]; if ((log2_per_phys > 1) && (word_209 & 0xc000) == 0x4000) { u16 first = word_209 & 0x3fff; if (first > 0) return (1 << log2_per_phys) - first; } return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_lba48(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; if (!( ((u64) (id)[(ATA_ID_LBA_CAPACITY_2) + 3] << 48) | ((u64) (id)[(ATA_ID_LBA_CAPACITY_2) + 2] << 32) | ((u64) (id)[(ATA_ID_LBA_CAPACITY_2) + 1] << 16) | ((u64) (id)[(ATA_ID_LBA_CAPACITY_2) + 0]) )) return false; return id[ATA_ID_COMMAND_SET_2] & (1 << 10); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_lba48_enabled(const u16 *id) { if (ata_id_has_lba48(id) == 0) return false; if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; return id[ATA_ID_CFS_ENABLE_2] & (1 << 10); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_hpa_enabled(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; if ((id[ATA_ID_CFS_ENABLE_1] & (1 << 10)) == 0) return false; return id[ATA_ID_COMMAND_SET_1] & (1 << 10); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_wcache(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; return id[ATA_ID_COMMAND_SET_1] & (1 << 5); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_pm(const u16 *id) { if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000) return false; return id[ATA_ID_COMMAND_SET_1] & (1 << 3); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_rahead_enabled(const u16 *id) { if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; return id[ATA_ID_CFS_ENABLE_1] & (1 << 6); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_wcache_enabled(const u16 *id) { if ((id[ATA_ID_CSF_DEFAULT] & 0xC000) != 0x4000) return false; return id[ATA_ID_CFS_ENABLE_1] & (1 << 5); } # 782 "include/linux/ata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_id_major_version(const u16 *id) { unsigned int mver; if (id[ATA_ID_MAJOR_VER] == 0xFFFF) return 0; for (mver = 14; mver >= 1; mver--) if (id[ATA_ID_MAJOR_VER] & (1 << mver)) break; return mver; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_is_sata(const u16 *id) { if (id[ATA_ID_HW_CONFIG] == 0 && (short)id[ATA_ID_MAJOR_VER] >= 0x0020) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_tpm(const u16 *id) { if (ata_id_major_version(id) < 8) return false; if ((id[48] & 0xC000) != 0x4000) return false; return id[48] & (1 << 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_dword_io(const u16 *id) { if (ata_id_major_version(id) > 7) return false; return id[ATA_ID_DWORD_IO] & (1 << 0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_unload(const u16 *id) { if (ata_id_major_version(id) >= 7 && (id[ATA_ID_CFSSE] & 0xC000) == 0x4000 && id[ATA_ID_CFSSE] & (1 << 13)) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_wwn(const u16 *id) { return (id[ATA_ID_CSF_DEFAULT] & 0xC100) == 0x4100; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_id_form_factor(const u16 *id) { u16 val = id[168]; if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff) return 0; val &= 0xf; if (val > 5) return 0; return val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_id_rotation_rate(const u16 *id) { u16 val = id[217]; if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff) return 0; if (val > 1 && val < 0x401) return 0; return val; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_trim(const u16 *id) { if (ata_id_major_version(id) >= 7 && (id[ATA_ID_DATA_SET_MGMT] & 1)) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_has_zero_after_trim(const u16 *id) { if (ata_id_has_trim(id) && (id[ATA_ID_ADDITIONAL_SUPP] & 0x4020) == 0x4020) return true; return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_current_chs_valid(const u16 *id) { return (id[ATA_ID_FIELD_VALID] & 1) && id[ATA_ID_CUR_CYLS] && id[ATA_ID_CUR_HEADS] && id[ATA_ID_CUR_HEADS] <= 16 && id[ATA_ID_CUR_SECTORS]; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_is_cfa(const u16 *id) { if ((id[ATA_ID_CONFIG] == 0x848A) || (id[ATA_ID_CONFIG] == 0x844A)) return true; # 911 "include/linux/ata.h" return (id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_is_ssd(const u16 *id) { return id[ATA_ID_ROT_SPEED] == 0x01; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_pio_need_iordy(const u16 *id, const u8 pio) { if (pio > 4 && ata_id_is_cfa(id)) return false; if (pio > 2) return true; return ((id)[ATA_ID_CAPABILITY] & (1 << 11)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_drive_40wire(const u16 *dev_id) { if (ata_id_is_sata(dev_id)) return false; if ((dev_id[ATA_ID_HW_CONFIG] & 0xE000) == 0x6000) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_drive_40wire_relaxed(const u16 *dev_id) { if ((dev_id[ATA_ID_HW_CONFIG] & 0x2000) == 0x2000) return false; return true; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int atapi_cdb_len(const u16 *dev_id) { u16 tmp = dev_id[ATA_ID_CONFIG] & 0x3; switch (tmp) { case 0: return 12; case 1: return 16; default: return -1; } } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool atapi_command_packet_set(const u16 *dev_id) { return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool atapi_id_dmadir(const u16 *dev_id) { return ata_id_major_version(dev_id) >= 7 && (dev_id[62] & 0x8000); } # 975 "include/linux/ata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_id_is_lba_capacity_ok(u16 *id) { unsigned long lba_sects, chs_sects, head, tail; if (id[ATA_ID_CYLS] == 0) return true; lba_sects = (((u32) (id)[(ATA_ID_LBA_CAPACITY) + 1] << 16) | ((u32) (id)[(ATA_ID_LBA_CAPACITY)])); if ((id[ATA_ID_CYLS] == 16383 || (id[ATA_ID_CYLS] == 4092 && id[ATA_ID_CUR_CYLS] == 16383)) && id[ATA_ID_SECTORS] == 63 && (id[ATA_ID_HEADS] == 15 || id[ATA_ID_HEADS] == 16) && (lba_sects >= 16383 * 63 * id[ATA_ID_HEADS])) return true; chs_sects = id[ATA_ID_CYLS] * id[ATA_ID_HEADS] * id[ATA_ID_SECTORS]; if (lba_sects - chs_sects < chs_sects/10) return true; head = (lba_sects >> 16) & 0xffff; tail = lba_sects & 0xffff; lba_sects = head | (tail << 16); if (lba_sects - chs_sects < chs_sects/10) { *(__le32 *)&id[ATA_ID_LBA_CAPACITY] = (( __le32)(__u32)(lba_sects)); return true; } return false; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ata_id_to_hd_driveid(u16 *id) { # 1035 "include/linux/ata.h" } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned ata_set_lba_range_entries(void *_buffer, unsigned buf_size, u64 sector, unsigned long count) { __le64 *buffer = _buffer; unsigned i = 0, used_bytes; while (i < buf_size / 8 ) { u64 entry = sector | ((u64)(count > 0xffff ? 0xffff : count) << 48); buffer[i++] = (( __le64)(__u64)(entry)); if (count <= 0xffff) break; count -= 0xffff; sector += 0xffff; } used_bytes = ((((i * 8)) + ((typeof((i * 8)))((512)) - 1)) & ~((typeof((i * 8)))((512)) - 1)); ({ void *__p = (buffer + i); size_t __n = used_bytes - i * 8; if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); return used_bytes; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int is_multi_taskfile(struct ata_taskfile *tf) { return (tf->command == ATA_CMD_READ_MULTI) || (tf->command == ATA_CMD_WRITE_MULTI) || (tf->command == ATA_CMD_READ_MULTI_EXT) || (tf->command == ATA_CMD_WRITE_MULTI_EXT) || (tf->command == ATA_CMD_WRITE_MULTI_FUA_EXT); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool ata_ok(u8 status) { return ((status & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ | ATA_ERR)) == ATA_DRDY); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool lba_28_ok(u64 block, u32 n_block) { return ((block + n_block) < ((1 << 28) - 1)) && (n_block <= 256); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool lba_48_ok(u64 block, u32 n_block) { return ((block + n_block - 1) < ((u64)1 << 48)) && (n_block <= 65536); } # 36 "include/linux/libata.h" 2 # 1 "include/linux/acpi.h" 1 # 416 "include/linux/acpi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void acpi_early_init(void) { } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int early_acpi_boot_init(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_boot_init(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void acpi_boot_table_init(void) { return; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_mps_check(void) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_check_resource_conflict(struct resource *res) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_check_region(resource_size_t start, resource_size_t n, const char *name) { return 0; } struct acpi_table_header; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_table_parse(char *id, int (*handler)(struct acpi_table_header *)) { return -1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_nvs_register(__u64 start, __u64 size) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *), void *data) { return 0; } struct acpi_device_id; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const struct acpi_device_id *acpi_match_device( const struct acpi_device_id *ids, const struct device *dev) { return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool acpi_driver_match_device(struct device *dev, const struct device_driver *drv) { return false; } # 508 "include/linux/acpi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_dev_runtime_suspend(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_dev_runtime_resume(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_subsys_runtime_suspend(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_subsys_runtime_resume(struct device *dev) { return 0; } # 521 "include/linux/acpi.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_dev_suspend_late(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_dev_resume_early(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_subsys_prepare(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_subsys_suspend_late(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_subsys_resume_early(struct device *dev) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int acpi_dev_pm_attach(struct device *dev, bool power_on) { return -19; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void acpi_dev_pm_detach(struct device *dev, bool power_off) {} static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) __attribute__((format(printf, 3, 4))) void acpi_handle_printk(const char *level, void *handle, const char *fmt, ...) {} # 39 "include/linux/libata.h" 2 # 1 "include/linux/cdrom.h" 1 # 15 "include/linux/cdrom.h" # 1 "include/uapi/linux/cdrom.h" 1 # 154 "include/uapi/linux/cdrom.h" struct cdrom_msf0 { __u8 minute; __u8 second; __u8 frame; }; union cdrom_addr { struct cdrom_msf0 msf; int lba; }; struct cdrom_msf { __u8 cdmsf_min0; __u8 cdmsf_sec0; __u8 cdmsf_frame0; __u8 cdmsf_min1; __u8 cdmsf_sec1; __u8 cdmsf_frame1; }; struct cdrom_ti { __u8 cdti_trk0; __u8 cdti_ind0; __u8 cdti_trk1; __u8 cdti_ind1; }; struct cdrom_tochdr { __u8 cdth_trk0; __u8 cdth_trk1; }; struct cdrom_volctrl { __u8 channel0; __u8 channel1; __u8 channel2; __u8 channel3; }; struct cdrom_subchnl { __u8 cdsc_format; __u8 cdsc_audiostatus; __u8 cdsc_adr: 4; __u8 cdsc_ctrl: 4; __u8 cdsc_trk; __u8 cdsc_ind; union cdrom_addr cdsc_absaddr; union cdrom_addr cdsc_reladdr; }; struct cdrom_tocentry { __u8 cdte_track; __u8 cdte_adr :4; __u8 cdte_ctrl :4; __u8 cdte_format; union cdrom_addr cdte_addr; __u8 cdte_datamode; }; struct cdrom_read { int cdread_lba; char *cdread_bufaddr; int cdread_buflen; }; struct cdrom_read_audio { union cdrom_addr addr; __u8 addr_format; int nframes; __u8 *buf; }; struct cdrom_multisession { union cdrom_addr addr; __u8 xa_flag; __u8 addr_format; }; struct cdrom_mcn { __u8 medium_catalog_number[14]; }; struct cdrom_blk { unsigned from; unsigned short len; }; # 281 "include/uapi/linux/cdrom.h" struct cdrom_generic_command { unsigned char cmd[12]; unsigned char *buffer; unsigned int buflen; int stat; struct request_sense *sense; unsigned char data_direction; int quiet; int timeout; void *reserved[1]; }; # 526 "include/uapi/linux/cdrom.h" struct dvd_layer { __u8 book_version : 4; __u8 book_type : 4; __u8 min_rate : 4; __u8 disc_size : 4; __u8 layer_type : 4; __u8 track_path : 1; __u8 nlayers : 2; __u8 track_density : 4; __u8 linear_density : 4; __u8 bca : 1; __u32 start_sector; __u32 end_sector; __u32 end_sector_l0; }; struct dvd_physical { __u8 type; __u8 layer_num; struct dvd_layer layer[4]; }; struct dvd_copyright { __u8 type; __u8 layer_num; __u8 cpst; __u8 rmi; }; struct dvd_disckey { __u8 type; unsigned agid : 2; __u8 value[2048]; }; struct dvd_bca { __u8 type; int len; __u8 value[188]; }; struct dvd_manufact { __u8 type; __u8 layer_num; int len; __u8 value[2048]; }; typedef union { __u8 type; struct dvd_physical physical; struct dvd_copyright copyright; struct dvd_disckey disckey; struct dvd_bca bca; struct dvd_manufact manufact; } dvd_struct; # 613 "include/uapi/linux/cdrom.h" typedef __u8 dvd_key[5]; typedef __u8 dvd_challenge[10]; struct dvd_lu_send_agid { __u8 type; unsigned agid : 2; }; struct dvd_host_send_challenge { __u8 type; unsigned agid : 2; dvd_challenge chal; }; struct dvd_send_key { __u8 type; unsigned agid : 2; dvd_key key; }; struct dvd_lu_send_challenge { __u8 type; unsigned agid : 2; dvd_challenge chal; }; # 652 "include/uapi/linux/cdrom.h" struct dvd_lu_send_title_key { __u8 type; unsigned agid : 2; dvd_key title_key; int lba; unsigned cpm : 1; unsigned cp_sec : 1; unsigned cgms : 2; }; struct dvd_lu_send_asf { __u8 type; unsigned agid : 2; unsigned asf : 1; }; struct dvd_host_send_rpcstate { __u8 type; __u8 pdrc; }; struct dvd_lu_send_rpcstate { __u8 type : 2; __u8 vra : 3; __u8 ucca : 3; __u8 region_mask; __u8 rpc_scheme; }; typedef union { __u8 type; struct dvd_lu_send_agid lsa; struct dvd_host_send_challenge hsc; struct dvd_send_key lsk; struct dvd_lu_send_challenge lsc; struct dvd_send_key hsk; struct dvd_lu_send_title_key lstk; struct dvd_lu_send_asf lsasf; struct dvd_host_send_rpcstate hrpcs; struct dvd_lu_send_rpcstate lrpcs; } dvd_authinfo; struct request_sense { __u8 error_code : 7; __u8 valid : 1; __u8 segment_number; __u8 sense_key : 4; __u8 reserved2 : 1; __u8 ili : 1; __u8 reserved1 : 2; __u8 information[4]; __u8 add_sense_len; __u8 command_info[4]; __u8 asc; __u8 ascq; __u8 fruc; __u8 sks[3]; __u8 asb[46]; }; # 755 "include/uapi/linux/cdrom.h" struct mrw_feature_desc { __be16 feature_code; __u8 curr : 1; __u8 persistent : 1; __u8 feature_version : 4; __u8 reserved1 : 2; __u8 add_len; __u8 write : 1; __u8 reserved2 : 7; __u8 reserved3; __u8 reserved4; __u8 reserved5; }; struct rwrt_feature_desc { __be16 feature_code; __u8 curr : 1; __u8 persistent : 1; __u8 feature_version : 4; __u8 reserved1 : 2; __u8 add_len; __u32 last_lba; __u32 block_size; __u16 blocking; __u8 page_present : 1; __u8 reserved2 : 7; __u8 reserved3; }; typedef struct { __be16 disc_information_length; __u8 disc_status : 2; __u8 border_status : 2; __u8 erasable : 1; __u8 reserved1 : 3; __u8 n_first_track; __u8 n_sessions_lsb; __u8 first_track_lsb; __u8 last_track_lsb; # 836 "include/uapi/linux/cdrom.h" __u8 mrw_status : 2; __u8 dbit : 1; __u8 reserved2 : 2; __u8 uru : 1; __u8 dbc_v : 1; __u8 did_v : 1; __u8 disc_type; __u8 n_sessions_msb; __u8 first_track_msb; __u8 last_track_msb; __u32 disc_id; __u32 lead_in; __u32 lead_out; __u8 disc_bar_code[8]; __u8 reserved3; __u8 n_opc; } disc_information; typedef struct { __be16 track_information_length; __u8 track_lsb; __u8 session_lsb; __u8 reserved1; # 874 "include/uapi/linux/cdrom.h" __u8 track_mode : 4; __u8 copy : 1; __u8 damage : 1; __u8 reserved2 : 2; __u8 data_mode : 4; __u8 fp : 1; __u8 packet : 1; __u8 blank : 1; __u8 rt : 1; __u8 nwa_v : 1; __u8 lra_v : 1; __u8 reserved3 : 6; __be32 track_start; __be32 next_writable; __be32 free_blocks; __be32 fixed_packet_size; __be32 track_size; __be32 last_rec_address; } track_information; struct feature_header { __u32 data_len; __u8 reserved1; __u8 reserved2; __u16 curr_profile; }; struct mode_page_header { __be16 mode_data_length; __u8 medium_type; __u8 reserved1; __u8 reserved2; __u8 reserved3; __be16 desc_length; }; # 16 "include/linux/cdrom.h" 2 struct packet_command { unsigned char cmd[12]; unsigned char *buffer; unsigned int buflen; int stat; struct request_sense *sense; unsigned char data_direction; int quiet; int timeout; void *reserved[1]; }; # 38 "include/linux/cdrom.h" struct cdrom_device_info { struct cdrom_device_ops *ops; struct list_head list; struct gendisk *disk; void *handle; int mask; int speed; int capacity; unsigned int options : 30; unsigned mc_flags : 2; unsigned int vfs_events; unsigned int ioctl_events; int use_count; char name[20]; __u8 sanyo_slot : 2; __u8 keeplocked : 1; __u8 reserved : 5; int cdda_method; __u8 last_sense; __u8 media_written; unsigned short mmc3_profile; int for_data; int (*exit)(struct cdrom_device_info *); int mrw_mode_page; }; struct cdrom_device_ops { int (*open) (struct cdrom_device_info *, int); void (*release) (struct cdrom_device_info *); int (*drive_status) (struct cdrom_device_info *, int); unsigned int (*check_events) (struct cdrom_device_info *cdi, unsigned int clearing, int slot); int (*media_changed) (struct cdrom_device_info *, int); int (*tray_move) (struct cdrom_device_info *, int); int (*lock_door) (struct cdrom_device_info *, int); int (*select_speed) (struct cdrom_device_info *, int); int (*select_disc) (struct cdrom_device_info *, int); int (*get_last_session) (struct cdrom_device_info *, struct cdrom_multisession *); int (*get_mcn) (struct cdrom_device_info *, struct cdrom_mcn *); int (*reset) (struct cdrom_device_info *); int (*audio_ioctl) (struct cdrom_device_info *,unsigned int, void *); const int capability; int n_minors; int (*generic_packet) (struct cdrom_device_info *, struct packet_command *); }; extern int cdrom_open(struct cdrom_device_info *cdi, struct block_device *bdev, fmode_t mode); extern void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode); extern int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); extern unsigned int cdrom_check_events(struct cdrom_device_info *cdi, unsigned int clearing); extern int cdrom_media_changed(struct cdrom_device_info *); extern int register_cdrom(struct cdrom_device_info *cdi); extern void unregister_cdrom(struct cdrom_device_info *cdi); typedef struct { int data; int audio; int cdi; int xa; long error; } tracktype; extern int cdrom_get_last_written(struct cdrom_device_info *cdi, long *last_written); extern int cdrom_number_of_slots(struct cdrom_device_info *cdi); extern int cdrom_mode_select(struct cdrom_device_info *cdi, struct packet_command *cgc); extern int cdrom_mode_sense(struct cdrom_device_info *cdi, struct packet_command *cgc, int page_code, int page_control); extern void init_cdrom_command(struct packet_command *cgc, void *buffer, int len, int type); struct cdrom_mechstat_header { # 139 "include/linux/cdrom.h" __u8 curslot : 5; __u8 changer_state : 2; __u8 fault : 1; __u8 reserved1 : 4; __u8 door_open : 1; __u8 mech_state : 3; __u8 curlba[3]; __u8 nslots; __u16 slot_tablelen; }; struct cdrom_slot { __u8 change : 1; __u8 reserved1 : 6; __u8 disc_present : 1; __u8 reserved2[3]; }; struct cdrom_changer_info { struct cdrom_mechstat_header hdr; struct cdrom_slot slots[256]; }; typedef enum { mechtype_caddy = 0, mechtype_tray = 1, mechtype_popup = 2, mechtype_individual_changer = 4, mechtype_cartridge_changer = 5 } mechtype_t; typedef struct { # 195 "include/linux/cdrom.h" __u8 page_code : 6; __u8 reserved1 : 1; __u8 ps : 1; __u8 page_length; __u8 write_type : 4; __u8 test_write : 1; __u8 ls_v : 1; __u8 bufe : 1; __u8 reserved2 : 1; __u8 track_mode : 4; __u8 copy : 1; __u8 fp : 1; __u8 multi_session : 2; __u8 data_block_type : 4; __u8 reserved3 : 4; __u8 link_size; __u8 reserved4; __u8 app_code : 6; __u8 reserved5 : 2; __u8 session_format; __u8 reserved6; __be32 packet_size; __u16 audio_pause; __u8 mcn[16]; __u8 isrc[16]; __u8 subhdr0; __u8 subhdr1; __u8 subhdr2; __u8 subhdr3; } __attribute__((packed)) write_param_page; struct modesel_head { __u8 reserved1; __u8 medium; __u8 reserved2; __u8 block_desc_length; __u8 density; __u8 number_of_blocks_hi; __u8 number_of_blocks_med; __u8 number_of_blocks_lo; __u8 reserved3; __u8 block_length_hi; __u8 block_length_med; __u8 block_length_lo; }; typedef struct { __u16 report_key_length; __u8 reserved1; __u8 reserved2; __u8 ucca : 3; __u8 vra : 3; __u8 type_code : 2; __u8 region_mask; __u8 rpc_scheme; __u8 reserved3; } rpc_state_t; struct event_header { __be16 data_len; __u8 notification_class : 3; __u8 reserved1 : 4; __u8 nea : 1; __u8 supp_event_class; }; struct media_event_desc { __u8 media_event_code : 4; __u8 reserved1 : 4; __u8 door_open : 1; __u8 media_present : 1; __u8 reserved2 : 6; __u8 start_slot; __u8 end_slot; }; extern int cdrom_get_media_event(struct cdrom_device_info *cdi, struct media_event_desc *med); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void lba_to_msf(int lba, u8 *m, u8 *s, u8 *f) { lba += 150; lba &= 0xffffff; *m = lba / (60 * 75); lba %= (60 * 75); *s = lba / 75; *f = lba % 75; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int msf_to_lba(u8 m, u8 s, u8 f) { return (((m * 60) + s) * 75 + f) - 150; } # 40 "include/linux/libata.h" 2 # 49 "include/linux/libata.h" # 1 "include/asm-generic/libata-portmap.h" 1 # 50 "include/linux/libata.h" 2 # 90 "include/linux/libata.h" enum { ATA_MSG_DRV = 0x0001, ATA_MSG_INFO = 0x0002, ATA_MSG_PROBE = 0x0004, ATA_MSG_WARN = 0x0008, ATA_MSG_MALLOC = 0x0010, ATA_MSG_CTL = 0x0020, ATA_MSG_INTR = 0x0040, ATA_MSG_ERR = 0x0080, }; # 110 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u32 ata_msg_init(int dval, int default_msg_enable_bits) { if (dval < 0 || dval >= (sizeof(u32) * 8)) return default_msg_enable_bits; if (!dval) return 0; return (1 << dval) - 1; } enum { LIBATA_MAX_PRD = ATA_MAX_PRD / 2, LIBATA_DUMB_MAX_PRD = ATA_MAX_PRD / 4, ATA_DEF_QUEUE = 1, ATA_MAX_QUEUE = 32, ATA_TAG_INTERNAL = ATA_MAX_QUEUE - 1, ATA_SHORT_PAUSE = 16, ATAPI_MAX_DRAIN = 16 << 10, ATA_ALL_DEVICES = (1 << ATA_MAX_DEVICES) - 1, ATA_SHT_EMULATED = 1, ATA_SHT_CMD_PER_LUN = 1, ATA_SHT_THIS_ID = -1, ATA_SHT_USE_CLUSTERING = 1, ATA_DFLAG_LBA = (1 << 0), ATA_DFLAG_LBA48 = (1 << 1), ATA_DFLAG_CDB_INTR = (1 << 2), ATA_DFLAG_NCQ = (1 << 3), ATA_DFLAG_FLUSH_EXT = (1 << 4), ATA_DFLAG_ACPI_PENDING = (1 << 5), ATA_DFLAG_ACPI_FAILED = (1 << 6), ATA_DFLAG_AN = (1 << 7), ATA_DFLAG_DMADIR = (1 << 10), ATA_DFLAG_CFG_MASK = (1 << 12) - 1, ATA_DFLAG_PIO = (1 << 12), ATA_DFLAG_NCQ_OFF = (1 << 13), ATA_DFLAG_SLEEPING = (1 << 15), ATA_DFLAG_DUBIOUS_XFER = (1 << 16), ATA_DFLAG_NO_UNLOAD = (1 << 17), ATA_DFLAG_UNLOCK_HPA = (1 << 18), ATA_DFLAG_INIT_MASK = (1 << 24) - 1, ATA_DFLAG_DETACH = (1 << 24), ATA_DFLAG_DETACHED = (1 << 25), ATA_DFLAG_DA = (1 << 26), ATA_DFLAG_DEVSLP = (1 << 27), ATA_DFLAG_ACPI_DISABLED = (1 << 28), ATA_DEV_UNKNOWN = 0, ATA_DEV_ATA = 1, ATA_DEV_ATA_UNSUP = 2, ATA_DEV_ATAPI = 3, ATA_DEV_ATAPI_UNSUP = 4, ATA_DEV_PMP = 5, ATA_DEV_PMP_UNSUP = 6, ATA_DEV_SEMB = 7, ATA_DEV_SEMB_UNSUP = 8, ATA_DEV_NONE = 9, ATA_LFLAG_NO_HRST = (1 << 1), ATA_LFLAG_NO_SRST = (1 << 2), ATA_LFLAG_ASSUME_ATA = (1 << 3), ATA_LFLAG_ASSUME_SEMB = (1 << 4), ATA_LFLAG_ASSUME_CLASS = ATA_LFLAG_ASSUME_ATA | ATA_LFLAG_ASSUME_SEMB, ATA_LFLAG_NO_RETRY = (1 << 5), ATA_LFLAG_DISABLED = (1 << 6), ATA_LFLAG_SW_ACTIVITY = (1 << 7), ATA_LFLAG_NO_LPM = (1 << 8), ATA_LFLAG_RST_ONCE = (1 << 9), ATA_FLAG_SLAVE_POSS = (1 << 0), ATA_FLAG_SATA = (1 << 1), ATA_FLAG_NO_ATAPI = (1 << 6), ATA_FLAG_PIO_DMA = (1 << 7), ATA_FLAG_PIO_LBA48 = (1 << 8), ATA_FLAG_PIO_POLLING = (1 << 9), ATA_FLAG_NCQ = (1 << 10), ATA_FLAG_NO_POWEROFF_SPINDOWN = (1 << 11), ATA_FLAG_NO_HIBERNATE_SPINDOWN = (1 << 12), ATA_FLAG_DEBUGMSG = (1 << 13), ATA_FLAG_FPDMA_AA = (1 << 14), ATA_FLAG_IGN_SIMPLEX = (1 << 15), ATA_FLAG_NO_IORDY = (1 << 16), ATA_FLAG_ACPI_SATA = (1 << 17), ATA_FLAG_AN = (1 << 18), ATA_FLAG_PMP = (1 << 19), ATA_FLAG_EM = (1 << 21), ATA_FLAG_SW_ACTIVITY = (1 << 22), ATA_FLAG_NO_DIPM = (1 << 23), ATA_PFLAG_EH_PENDING = (1 << 0), ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), ATA_PFLAG_FROZEN = (1 << 2), ATA_PFLAG_RECOVERED = (1 << 3), ATA_PFLAG_LOADING = (1 << 4), ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), ATA_PFLAG_INITIALIZING = (1 << 7), ATA_PFLAG_RESETTING = (1 << 8), ATA_PFLAG_UNLOADING = (1 << 9), ATA_PFLAG_UNLOADED = (1 << 10), ATA_PFLAG_SUSPENDED = (1 << 17), ATA_PFLAG_PM_PENDING = (1 << 18), ATA_PFLAG_INIT_GTM_VALID = (1 << 19), ATA_PFLAG_PIO32 = (1 << 20), ATA_PFLAG_PIO32CHANGE = (1 << 21), ATA_QCFLAG_ACTIVE = (1 << 0), ATA_QCFLAG_DMAMAP = (1 << 1), ATA_QCFLAG_IO = (1 << 3), ATA_QCFLAG_RESULT_TF = (1 << 4), ATA_QCFLAG_CLEAR_EXCL = (1 << 5), ATA_QCFLAG_QUIET = (1 << 6), ATA_QCFLAG_RETRY = (1 << 7), ATA_QCFLAG_FAILED = (1 << 16), ATA_QCFLAG_SENSE_VALID = (1 << 17), ATA_QCFLAG_EH_SCHEDULED = (1 << 18), ATA_HOST_SIMPLEX = (1 << 0), ATA_HOST_STARTED = (1 << 1), ATA_HOST_PARALLEL_SCAN = (1 << 2), ATA_HOST_IGNORE_ATA = (1 << 3), ATA_TMOUT_BOOT = 30000, ATA_TMOUT_BOOT_QUICK = 7000, ATA_TMOUT_INTERNAL_QUICK = 5000, ATA_TMOUT_MAX_PARK = 30000, ATA_TMOUT_FF_WAIT_LONG = 2000, ATA_TMOUT_FF_WAIT = 800, # 283 "include/linux/libata.h" ATA_WAIT_AFTER_RESET = 150, ATA_TMOUT_PMP_SRST_WAIT = 5000, BUS_UNKNOWN = 0, BUS_DMA = 1, BUS_IDLE = 2, BUS_NOINTR = 3, BUS_NODATA = 4, BUS_TIMER = 5, BUS_PIO = 6, BUS_EDD = 7, BUS_IDENTIFY = 8, BUS_PACKET = 9, PORT_UNKNOWN = 0, PORT_ENABLED = 1, PORT_DISABLED = 2, ATA_NR_PIO_MODES = 7, ATA_NR_MWDMA_MODES = 5, ATA_NR_UDMA_MODES = 8, ATA_SHIFT_PIO = 0, ATA_SHIFT_MWDMA = ATA_SHIFT_PIO + ATA_NR_PIO_MODES, ATA_SHIFT_UDMA = ATA_SHIFT_MWDMA + ATA_NR_MWDMA_MODES, ATA_DMA_PAD_SZ = 4, ATA_ERING_SIZE = 32, ATA_DEFER_LINK = 1, ATA_DEFER_PORT = 2, ATA_EH_DESC_LEN = 80, ATA_EH_REVALIDATE = (1 << 0), ATA_EH_SOFTRESET = (1 << 1), ATA_EH_HARDRESET = (1 << 2), ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, ATA_EH_ENABLE_LINK = (1 << 3), ATA_EH_PARK = (1 << 5), ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK, ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET | ATA_EH_ENABLE_LINK, ATA_EHI_HOTPLUGGED = (1 << 0), ATA_EHI_NO_AUTOPSY = (1 << 2), ATA_EHI_QUIET = (1 << 3), ATA_EHI_NO_RECOVERY = (1 << 4), ATA_EHI_DID_SOFTRESET = (1 << 16), ATA_EHI_DID_HARDRESET = (1 << 17), ATA_EHI_PRINTINFO = (1 << 18), ATA_EHI_SETMODE = (1 << 19), ATA_EHI_POST_SETMODE = (1 << 20), ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET, ATA_EHI_TO_SLAVE_MASK = ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET, ATA_EH_MAX_TRIES = 5, ATA_LINK_RESUME_TRIES = 5, ATA_PROBE_MAX_TRIES = 3, ATA_EH_DEV_TRIES = 3, ATA_EH_PMP_TRIES = 5, ATA_EH_PMP_LINK_TRIES = 3, SATA_PMP_RW_TIMEOUT = 3000, ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6, ATA_HORKAGE_DIAGNOSTIC = (1 << 0), ATA_HORKAGE_NODMA = (1 << 1), ATA_HORKAGE_NONCQ = (1 << 2), ATA_HORKAGE_MAX_SEC_128 = (1 << 3), ATA_HORKAGE_BROKEN_HPA = (1 << 4), ATA_HORKAGE_DISABLE = (1 << 5), ATA_HORKAGE_HPA_SIZE = (1 << 6), ATA_HORKAGE_IVB = (1 << 8), ATA_HORKAGE_STUCK_ERR = (1 << 9), ATA_HORKAGE_BRIDGE_OK = (1 << 10), ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), ATA_HORKAGE_1_5_GBPS = (1 << 13), ATA_HORKAGE_NOSETXFER = (1 << 14), ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), ATA_HORKAGE_DUMP_ID = (1 << 16), ATA_DMA_MASK_ATA = (1 << 0), ATA_DMA_MASK_ATAPI = (1 << 1), ATA_DMA_MASK_CFA = (1 << 2), ATAPI_READ = 0, ATAPI_WRITE = 1, ATAPI_READ_CD = 2, ATAPI_PASS_THRU = 3, ATAPI_MISC = 4, ATA_TIMING_SETUP = (1 << 0), ATA_TIMING_ACT8B = (1 << 1), ATA_TIMING_REC8B = (1 << 2), ATA_TIMING_CYC8B = (1 << 3), ATA_TIMING_8BIT = ATA_TIMING_ACT8B | ATA_TIMING_REC8B | ATA_TIMING_CYC8B, ATA_TIMING_ACTIVE = (1 << 4), ATA_TIMING_RECOVER = (1 << 5), ATA_TIMING_DMACK_HOLD = (1 << 6), ATA_TIMING_CYCLE = (1 << 7), ATA_TIMING_UDMA = (1 << 8), ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | ATA_TIMING_REC8B | ATA_TIMING_CYC8B | ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE | ATA_TIMING_UDMA, ATA_ACPI_FILTER_SETXFER = 1 << 0, ATA_ACPI_FILTER_LOCK = 1 << 1, ATA_ACPI_FILTER_DIPM = 1 << 2, ATA_ACPI_FILTER_FPDMA_OFFSET = 1 << 3, ATA_ACPI_FILTER_FPDMA_AA = 1 << 4, ATA_ACPI_FILTER_DEFAULT = ATA_ACPI_FILTER_SETXFER | ATA_ACPI_FILTER_LOCK | ATA_ACPI_FILTER_DIPM, }; enum ata_xfer_mask { ATA_MASK_PIO = ((1LU << ATA_NR_PIO_MODES) - 1) << ATA_SHIFT_PIO, ATA_MASK_MWDMA = ((1LU << ATA_NR_MWDMA_MODES) - 1) << ATA_SHIFT_MWDMA, ATA_MASK_UDMA = ((1LU << ATA_NR_UDMA_MODES) - 1) << ATA_SHIFT_UDMA, }; enum hsm_task_states { HSM_ST_IDLE, HSM_ST_FIRST, HSM_ST, HSM_ST_LAST, HSM_ST_ERR, }; enum ata_completion_errors { AC_ERR_DEV = (1 << 0), AC_ERR_HSM = (1 << 1), AC_ERR_TIMEOUT = (1 << 2), AC_ERR_MEDIA = (1 << 3), AC_ERR_ATA_BUS = (1 << 4), AC_ERR_HOST_BUS = (1 << 5), AC_ERR_SYSTEM = (1 << 6), AC_ERR_INVALID = (1 << 7), AC_ERR_OTHER = (1 << 8), AC_ERR_NODEV_HINT = (1 << 9), AC_ERR_NCQ = (1 << 10), }; enum ata_lpm_policy { ATA_LPM_UNKNOWN, ATA_LPM_MAX_POWER, ATA_LPM_MED_POWER, ATA_LPM_MIN_POWER, }; enum ata_lpm_hints { ATA_LPM_EMPTY = (1 << 0), ATA_LPM_HIPM = (1 << 1), }; struct scsi_device; struct ata_port_operations; struct ata_port; struct ata_link; struct ata_queued_cmd; typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc); typedef int (*ata_prereset_fn_t)(struct ata_link *link, unsigned long deadline); typedef int (*ata_reset_fn_t)(struct ata_link *link, unsigned int *classes, unsigned long deadline); typedef void (*ata_postreset_fn_t)(struct ata_link *link, unsigned int *classes); extern struct device_attribute dev_attr_link_power_management_policy; extern struct device_attribute dev_attr_unload_heads; extern struct device_attribute dev_attr_em_message_type; extern struct device_attribute dev_attr_em_message; extern struct device_attribute dev_attr_sw_activity; enum sw_activity { OFF, BLINK_ON, BLINK_OFF, }; struct ata_ioports { void *cmd_addr; void *data_addr; void *error_addr; void *feature_addr; void *nsect_addr; void *lbal_addr; void *lbam_addr; void *lbah_addr; void *device_addr; void *status_addr; void *command_addr; void *altstatus_addr; void *ctl_addr; void *bmdma_addr; void *scr_addr; }; struct ata_host { spinlock_t lock; struct device *dev; void * const *iomap; unsigned int n_ports; void *private_data; struct ata_port_operations *ops; unsigned long flags; struct mutex eh_mutex; struct task_struct *eh_owner; struct ata_port *simplex_claimed; struct ata_port *ports[0]; }; struct ata_queued_cmd { struct ata_port *ap; struct ata_device *dev; struct scsi_cmnd *scsicmd; void (*scsidone)(struct scsi_cmnd *); struct ata_taskfile tf; u8 cdb[ATAPI_CDB_LEN]; unsigned long flags; unsigned int tag; unsigned int n_elem; unsigned int orig_n_elem; int dma_dir; unsigned int sect_size; unsigned int nbytes; unsigned int extrabytes; unsigned int curbytes; struct scatterlist sgent; struct scatterlist *sg; struct scatterlist *cursg; unsigned int cursg_ofs; unsigned int err_mask; struct ata_taskfile result_tf; ata_qc_cb_t complete_fn; void *private_data; void *lldd_task; }; struct ata_port_stats { unsigned long unhandled_irq; unsigned long idle_irq; unsigned long rw_reqbuf; }; struct ata_ering_entry { unsigned int eflags; unsigned int err_mask; u64 timestamp; }; struct ata_ering { int cursor; struct ata_ering_entry ring[ATA_ERING_SIZE]; }; struct ata_device { struct ata_link *link; unsigned int devno; unsigned int horkage; unsigned long flags; struct scsi_device *sdev; void *private_data; struct device tdev; u64 n_sectors; u64 n_native_sectors; unsigned int class; unsigned long unpark_deadline; u8 pio_mode; u8 dma_mode; u8 xfer_mode; unsigned int xfer_shift; unsigned int multi_count; unsigned int max_sectors; unsigned int cdb_len; unsigned long pio_mask; unsigned long mwdma_mask; unsigned long udma_mask; u16 cylinders; u16 heads; u16 sectors; union { u16 id[ATA_ID_WORDS]; u32 gscr[SATA_PMP_GSCR_DWORDS]; }; u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; int spdn_cnt; struct ata_ering ering; }; struct ata_eh_info { struct ata_device *dev; u32 serror; unsigned int err_mask; unsigned int action; unsigned int dev_action[ATA_MAX_DEVICES]; unsigned int flags; unsigned int probe_mask; char desc[ATA_EH_DESC_LEN]; int desc_len; }; struct ata_eh_context { struct ata_eh_info i; int tries[ATA_MAX_DEVICES]; int cmd_timeout_idx[ATA_MAX_DEVICES] [ATA_EH_CMD_TIMEOUT_TABLE_SIZE]; unsigned int classes[ATA_MAX_DEVICES]; unsigned int did_probe_mask; unsigned int unloaded_mask; unsigned int saved_ncq_enabled; u8 saved_xfer_mode[ATA_MAX_DEVICES]; unsigned long last_reset; }; struct ata_acpi_drive { u32 pio; u32 dma; } __attribute__((packed)); struct ata_acpi_gtm { struct ata_acpi_drive drive[2]; u32 flags; } __attribute__((packed)); struct ata_link { struct ata_port *ap; int pmp; struct device tdev; unsigned int active_tag; u32 sactive; unsigned int flags; u32 saved_scontrol; unsigned int hw_sata_spd_limit; unsigned int sata_spd_limit; unsigned int sata_spd; enum ata_lpm_policy lpm_policy; struct ata_eh_info eh_info; struct ata_eh_context eh_context; struct ata_device device[ATA_MAX_DEVICES]; }; struct ata_port { struct Scsi_Host *scsi_host; struct ata_port_operations *ops; spinlock_t *lock; unsigned long flags; unsigned int pflags; unsigned int print_id; unsigned int port_no; struct ata_ioports ioaddr; u8 ctl; u8 last_ctl; struct ata_link* sff_pio_task_link; struct delayed_work sff_pio_task; struct ata_bmdma_prd *bmdma_prd; dma_addr_t bmdma_prd_dma; unsigned int pio_mask; unsigned int mwdma_mask; unsigned int udma_mask; unsigned int cbl; struct ata_queued_cmd qcmd[ATA_MAX_QUEUE]; unsigned long qc_allocated; unsigned int qc_active; int nr_active_links; struct ata_link link; struct ata_link *slave_link; int nr_pmp_links; struct ata_link *pmp_link; struct ata_link *excl_link; struct ata_port_stats stats; struct ata_host *host; struct device *dev; struct device tdev; struct mutex scsi_scan_mutex; struct delayed_work hotplug_task; struct work_struct scsi_rescan_task; unsigned int hsm_task_state; u32 msg_enable; struct list_head eh_done_q; wait_queue_head_t eh_wait_q; int eh_tries; struct completion park_req_pending; pm_message_t pm_mesg; int *pm_result; enum ata_lpm_policy target_lpm_policy; struct timer_list fastdrain_timer; unsigned long fastdrain_cnt; int em_message_type; void *private_data; u8 sector_buf[ATA_SECT_SIZE] __attribute__((__aligned__((1 << 6)))); }; # 817 "include/linux/libata.h" struct ata_port_operations { int (*qc_defer)(struct ata_queued_cmd *qc); int (*check_atapi_dma)(struct ata_queued_cmd *qc); void (*qc_prep)(struct ata_queued_cmd *qc); unsigned int (*qc_issue)(struct ata_queued_cmd *qc); bool (*qc_fill_rtf)(struct ata_queued_cmd *qc); int (*cable_detect)(struct ata_port *ap); unsigned long (*mode_filter)(struct ata_device *dev, unsigned long xfer_mask); void (*set_piomode)(struct ata_port *ap, struct ata_device *dev); void (*set_dmamode)(struct ata_port *ap, struct ata_device *dev); int (*set_mode)(struct ata_link *link, struct ata_device **r_failed_dev); unsigned int (*read_id)(struct ata_device *dev, struct ata_taskfile *tf, u16 *id); void (*dev_config)(struct ata_device *dev); void (*freeze)(struct ata_port *ap); void (*thaw)(struct ata_port *ap); ata_prereset_fn_t prereset; ata_reset_fn_t softreset; ata_reset_fn_t hardreset; ata_postreset_fn_t postreset; ata_prereset_fn_t pmp_prereset; ata_reset_fn_t pmp_softreset; ata_reset_fn_t pmp_hardreset; ata_postreset_fn_t pmp_postreset; void (*error_handler)(struct ata_port *ap); void (*lost_interrupt)(struct ata_port *ap); void (*post_internal_cmd)(struct ata_queued_cmd *qc); void (*sched_eh)(struct ata_port *ap); void (*end_eh)(struct ata_port *ap); int (*scr_read)(struct ata_link *link, unsigned int sc_reg, u32 *val); int (*scr_write)(struct ata_link *link, unsigned int sc_reg, u32 val); void (*pmp_attach)(struct ata_port *ap); void (*pmp_detach)(struct ata_port *ap); int (*set_lpm)(struct ata_link *link, enum ata_lpm_policy policy, unsigned hints); int (*port_suspend)(struct ata_port *ap, pm_message_t mesg); int (*port_resume)(struct ata_port *ap); int (*port_start)(struct ata_port *ap); void (*port_stop)(struct ata_port *ap); void (*host_stop)(struct ata_host *host); void (*sff_dev_select)(struct ata_port *ap, unsigned int device); void (*sff_set_devctl)(struct ata_port *ap, u8 ctl); u8 (*sff_check_status)(struct ata_port *ap); u8 (*sff_check_altstatus)(struct ata_port *ap); void (*sff_tf_load)(struct ata_port *ap, const struct ata_taskfile *tf); void (*sff_tf_read)(struct ata_port *ap, struct ata_taskfile *tf); void (*sff_exec_command)(struct ata_port *ap, const struct ata_taskfile *tf); unsigned int (*sff_data_xfer)(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw); void (*sff_irq_on)(struct ata_port *); bool (*sff_irq_check)(struct ata_port *); void (*sff_irq_clear)(struct ata_port *); void (*sff_drain_fifo)(struct ata_queued_cmd *qc); void (*bmdma_setup)(struct ata_queued_cmd *qc); void (*bmdma_start)(struct ata_queued_cmd *qc); void (*bmdma_stop)(struct ata_queued_cmd *qc); u8 (*bmdma_status)(struct ata_port *ap); ssize_t (*em_show)(struct ata_port *ap, char *buf); ssize_t (*em_store)(struct ata_port *ap, const char *message, size_t size); ssize_t (*sw_activity_show)(struct ata_device *dev, char *buf); ssize_t (*sw_activity_store)(struct ata_device *dev, enum sw_activity val); void (*phy_reset)(struct ata_port *ap); void (*eng_timeout)(struct ata_port *ap); const struct ata_port_operations *inherits; }; struct ata_port_info { unsigned long flags; unsigned long link_flags; unsigned long pio_mask; unsigned long mwdma_mask; unsigned long udma_mask; struct ata_port_operations *port_ops; void *private_data; }; struct ata_timing { unsigned short mode; unsigned short setup; unsigned short act8b; unsigned short rec8b; unsigned short cyc8b; unsigned short active; unsigned short recover; unsigned short dmack_hold; unsigned short cycle; unsigned short udma; }; extern const unsigned long sata_deb_timing_normal[]; extern const unsigned long sata_deb_timing_hotplug[]; extern const unsigned long sata_deb_timing_long[]; extern struct ata_port_operations ata_dummy_port_ops; extern const struct ata_port_info ata_dummy_port_info; static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const unsigned long * sata_ehc_deb_timing(struct ata_eh_context *ehc) { if (ehc->i.flags & ATA_EHI_HOTPLUGGED) return sata_deb_timing_hotplug; else return sata_deb_timing_normal; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_port_is_dummy(struct ata_port *ap) { return ap->ops == &ata_dummy_port_ops; } extern int sata_set_spd(struct ata_link *link); extern int ata_std_prereset(struct ata_link *link, unsigned long deadline); extern int ata_wait_after_reset(struct ata_link *link, unsigned long deadline, int (*check_ready)(struct ata_link *link)); extern int sata_link_debounce(struct ata_link *link, const unsigned long *params, unsigned long deadline); extern int sata_link_resume(struct ata_link *link, const unsigned long *params, unsigned long deadline); extern int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy, bool spm_wakeup); extern int sata_link_hardreset(struct ata_link *link, const unsigned long *timing, unsigned long deadline, bool *online, int (*check_ready)(struct ata_link *)); extern int sata_std_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline); extern void ata_std_postreset(struct ata_link *link, unsigned int *classes); extern struct ata_host *ata_host_alloc(struct device *dev, int max_ports); extern struct ata_host *ata_host_alloc_pinfo(struct device *dev, const struct ata_port_info * const * ppi, int n_ports); extern int ata_slave_link_init(struct ata_port *ap); extern int ata_host_start(struct ata_host *host); extern int ata_host_register(struct ata_host *host, struct scsi_host_template *sht); extern int ata_host_activate(struct ata_host *host, int irq, irq_handler_t irq_handler, unsigned long irq_flags, struct scsi_host_template *sht); extern void ata_host_detach(struct ata_host *host); extern void ata_host_init(struct ata_host *, struct device *, struct ata_port_operations *); extern int ata_scsi_detect(struct scsi_host_template *sht); extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void *arg); extern int ata_scsi_queuecmd(struct Scsi_Host *h, struct scsi_cmnd *cmd); extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev, int cmd, void *arg); extern void ata_sas_port_destroy(struct ata_port *); extern struct ata_port *ata_sas_port_alloc(struct ata_host *, struct ata_port_info *, struct Scsi_Host *); extern void ata_sas_async_probe(struct ata_port *ap); extern int ata_sas_sync_probe(struct ata_port *ap); extern int ata_sas_port_init(struct ata_port *); extern int ata_sas_port_start(struct ata_port *ap); extern void ata_sas_port_stop(struct ata_port *ap); extern int ata_sas_slave_configure(struct scsi_device *, struct ata_port *); extern int ata_sas_queuecmd(struct scsi_cmnd *cmd, struct ata_port *ap); extern int sata_scr_valid(struct ata_link *link); extern int sata_scr_read(struct ata_link *link, int reg, u32 *val); extern int sata_scr_write(struct ata_link *link, int reg, u32 val); extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val); extern bool ata_link_online(struct ata_link *link); extern bool ata_link_offline(struct ata_link *link); extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg); extern void ata_host_resume(struct ata_host *host); extern int ata_sas_port_async_suspend(struct ata_port *ap, int *async); extern int ata_sas_port_async_resume(struct ata_port *ap, int *async); # 1032 "include/linux/libata.h" extern int ata_ratelimit(void); extern void ata_msleep(struct ata_port *ap, unsigned int msecs); extern u32 ata_wait_register(struct ata_port *ap, void *reg, u32 mask, u32 val, unsigned long interval, unsigned long timeout); extern int atapi_cmd_type(u8 opcode); extern void ata_tf_to_fis(const struct ata_taskfile *tf, u8 pmp, int is_cmd, u8 *fis); extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); extern unsigned long ata_pack_xfermask(unsigned long pio_mask, unsigned long mwdma_mask, unsigned long udma_mask); extern void ata_unpack_xfermask(unsigned long xfer_mask, unsigned long *pio_mask, unsigned long *mwdma_mask, unsigned long *udma_mask); extern u8 ata_xfer_mask2mode(unsigned long xfer_mask); extern unsigned long ata_xfer_mode2mask(u8 xfer_mode); extern int ata_xfer_mode2shift(unsigned long xfer_mode); extern const char *ata_mode_string(unsigned long xfer_mask); extern unsigned long ata_id_xfermask(const u16 *id); extern int ata_std_qc_defer(struct ata_queued_cmd *qc); extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg, unsigned int n_elem); extern unsigned int ata_dev_classify(const struct ata_taskfile *tf); extern void ata_dev_disable(struct ata_device *adev); extern void ata_id_string(const u16 *id, unsigned char *s, unsigned int ofs, unsigned int len); extern void ata_id_c_string(const u16 *id, unsigned char *s, unsigned int ofs, unsigned int len); extern unsigned int ata_do_dev_read_id(struct ata_device *dev, struct ata_taskfile *tf, u16 *id); extern void ata_qc_complete(struct ata_queued_cmd *qc); extern int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active); extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd); extern int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev, sector_t capacity, int geom[]); extern void ata_scsi_unlock_native_capacity(struct scsi_device *sdev); extern int ata_scsi_slave_config(struct scsi_device *sdev); extern void ata_scsi_slave_destroy(struct scsi_device *sdev); extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth, int reason); extern int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev, int queue_depth, int reason); extern struct ata_device *ata_dev_pair(struct ata_device *adev); extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap); extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_q); extern int ata_cable_40wire(struct ata_port *ap); extern int ata_cable_80wire(struct ata_port *ap); extern int ata_cable_sata(struct ata_port *ap); extern int ata_cable_ignore(struct ata_port *ap); extern int ata_cable_unknown(struct ata_port *ap); extern unsigned int ata_pio_need_iordy(const struct ata_device *); extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode); extern int ata_timing_compute(struct ata_device *, unsigned short, struct ata_timing *, int, int); extern void ata_timing_merge(const struct ata_timing *, const struct ata_timing *, struct ata_timing *, unsigned int); extern u8 ata_timing_cycle2mode(unsigned int xfer_shift, int cycle); struct pci_dev; struct pci_bits { unsigned int reg; unsigned int width; unsigned long mask; unsigned long val; }; extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); extern void ata_pci_remove_one(struct pci_dev *pdev); extern void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t mesg); extern int __attribute__((warn_unused_result)) ata_pci_device_do_resume(struct pci_dev *pdev); extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); extern int ata_pci_device_resume(struct pci_dev *pdev); struct platform_device; extern int ata_platform_remove_one(struct platform_device *pdev); # 1140 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) const struct ata_acpi_gtm *ata_acpi_init_gtm(struct ata_port *ap) { return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_acpi_stm(const struct ata_port *ap, struct ata_acpi_gtm *stm) { return -38; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_acpi_gtm(const struct ata_port *ap, struct ata_acpi_gtm *stm) { return -38; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_acpi_gtm_xfermask(struct ata_device *dev, const struct ata_acpi_gtm *gtm) { return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_acpi_cbl_80wire(struct ata_port *ap, const struct ata_acpi_gtm *gtm) { return 0; } extern void ata_port_schedule_eh(struct ata_port *ap); extern void ata_port_wait_eh(struct ata_port *ap); extern int ata_link_abort(struct ata_link *link); extern int ata_port_abort(struct ata_port *ap); extern int ata_port_freeze(struct ata_port *ap); extern int sata_async_notification(struct ata_port *ap); extern void ata_eh_freeze_port(struct ata_port *ap); extern void ata_eh_thaw_port(struct ata_port *ap); extern void ata_eh_qc_complete(struct ata_queued_cmd *qc); extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); extern void ata_eh_analyze_ncq_error(struct ata_link *link); extern void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset, ata_reset_fn_t softreset, ata_reset_fn_t hardreset, ata_postreset_fn_t postreset); extern void ata_std_error_handler(struct ata_port *ap); extern void ata_std_sched_eh(struct ata_port *ap); extern void ata_std_end_eh(struct ata_port *ap); extern int ata_link_nr_enabled(struct ata_link *link); # 1216 "include/linux/libata.h" extern const struct ata_port_operations ata_base_port_ops; extern const struct ata_port_operations sata_port_ops; extern struct device_attribute *ata_common_sdev_attrs[]; # 1245 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool sata_pmp_supported(struct ata_port *ap) { return ap->flags & ATA_FLAG_PMP; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) bool sata_pmp_attached(struct ata_port *ap) { return ap->nr_pmp_links != 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_is_host_link(const struct ata_link *link) { return link == &link->ap->link || link == link->ap->slave_link; } # 1276 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int sata_srst_pmp(struct ata_link *link) { if (sata_pmp_supported(link->ap) && ata_is_host_link(link)) return SATA_PMP_CTRL_PORT; return link->pmp; } __attribute__((format(printf, 3, 4))) int ata_port_printk(const struct ata_port *ap, const char *level, const char *fmt, ...); __attribute__((format(printf, 3, 4))) int ata_link_printk(const struct ata_link *link, const char *level, const char *fmt, ...); __attribute__((format(printf, 3, 4))) int ata_dev_printk(const struct ata_device *dev, const char *level, const char *fmt, ...); # 1329 "include/linux/libata.h" void ata_print_version(const struct device *dev, const char *version); extern __attribute__((format(printf, 2, 3))) void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...); extern __attribute__((format(printf, 2, 3))) void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...); extern void ata_ehi_clear_desc(struct ata_eh_info *ehi); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ata_ehi_hotplugged(struct ata_eh_info *ehi) { ehi->probe_mask |= (1 << ATA_MAX_DEVICES) - 1; ehi->flags |= ATA_EHI_HOTPLUGGED; ehi->action |= ATA_EH_RESET | ATA_EH_ENABLE_LINK; ehi->err_mask |= AC_ERR_ATA_BUS; } extern __attribute__((format(printf, 2, 3))) void ata_port_desc(struct ata_port *ap, const char *fmt, ...); extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset, const char *name); static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_tag_valid(unsigned int tag) { return (tag < ATA_MAX_QUEUE) ? 1 : 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_tag_internal(unsigned int tag) { return tag == ATA_TAG_INTERNAL; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_class_enabled(unsigned int class) { return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI || class == ATA_DEV_PMP || class == ATA_DEV_SEMB; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_class_disabled(unsigned int class) { return class == ATA_DEV_ATA_UNSUP || class == ATA_DEV_ATAPI_UNSUP || class == ATA_DEV_PMP_UNSUP || class == ATA_DEV_SEMB_UNSUP; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_class_absent(unsigned int class) { return !ata_class_enabled(class) && !ata_class_disabled(class); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_dev_enabled(const struct ata_device *dev) { return ata_class_enabled(dev->class); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_dev_disabled(const struct ata_device *dev) { return ata_class_disabled(dev->class); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_dev_absent(const struct ata_device *dev) { return ata_class_absent(dev->class); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_link_max_devices(const struct ata_link *link) { if (ata_is_host_link(link) && link->ap->flags & ATA_FLAG_SLAVE_POSS) return 2; return 1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_link_active(struct ata_link *link) { return ata_tag_valid(link->active_tag) || link->sactive; } # 1430 "include/linux/libata.h" enum ata_link_iter_mode { ATA_LITER_EDGE, ATA_LITER_HOST_FIRST, ATA_LITER_PMP_FIRST, }; enum ata_dev_iter_mode { ATA_DITER_ENABLED, ATA_DITER_ENABLED_REVERSE, ATA_DITER_ALL, ATA_DITER_ALL_REVERSE, }; extern struct ata_link *ata_link_next(struct ata_link *link, struct ata_port *ap, enum ata_link_iter_mode mode); extern struct ata_device *ata_dev_next(struct ata_device *dev, struct ata_link *link, enum ata_dev_iter_mode mode); # 1485 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_ncq_enabled(struct ata_device *dev) { return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ_OFF | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ata_qc_set_polling(struct ata_queued_cmd *qc) { qc->tf.ctl |= ATA_NIEN; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct ata_queued_cmd *__ata_qc_from_tag(struct ata_port *ap, unsigned int tag) { if (__builtin_expect(!!(ata_tag_valid(tag)), 1)) return &ap->qcmd[tag]; return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct ata_queued_cmd *ata_qc_from_tag(struct ata_port *ap, unsigned int tag) { struct ata_queued_cmd *qc = __ata_qc_from_tag(ap, tag); if (__builtin_expect(!!(!qc), 0) || !ap->ops->error_handler) return qc; if ((qc->flags & (ATA_QCFLAG_ACTIVE | ATA_QCFLAG_FAILED)) == ATA_QCFLAG_ACTIVE) return qc; return ((void *)0); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ata_qc_raw_nbytes(struct ata_queued_cmd *qc) { return qc->nbytes - ({ typeof(qc->extrabytes) _min1 = (qc->extrabytes); typeof(qc->nbytes) _min2 = (qc->nbytes); (void) (&_min1 == &_min2); _min1 < _min2 ? _min1 : _min2; }); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) { ({ void *__p = (tf); size_t __n = sizeof(*tf); if ((__n) != 0) { if (__builtin_constant_p((0)) && (0) == 0) __memzero((__p),(__n)); else memset((__p),(0),(__n)); } (__p); }); tf->ctl = dev->link->ap->ctl; if (dev->devno == 0) tf->device = ATA_DEVICE_OBS; else tf->device = ATA_DEVICE_OBS | ATA_DEV1; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) void ata_qc_reinit(struct ata_queued_cmd *qc) { qc->dma_dir = DMA_NONE; qc->sg = ((void *)0); qc->flags = 0; qc->cursg = ((void *)0); qc->cursg_ofs = 0; qc->nbytes = qc->extrabytes = qc->curbytes = 0; qc->n_elem = 0; qc->err_mask = 0; qc->sect_size = ATA_SECT_SIZE; ata_tf_init(qc->dev, &qc->tf); qc->result_tf.command = ATA_DRDY; qc->result_tf.feature = 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_try_flush_cache(const struct ata_device *dev) { return ata_id_wcache_enabled(dev->id) || ata_id_has_flush(dev->id) || ata_id_has_flush_ext(dev->id); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int ac_err_mask(u8 status) { if (status & (ATA_BUSY | ATA_DRQ)) return AC_ERR_HSM; if (status & (ATA_ERR | ATA_DF)) return AC_ERR_DEV; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned int __ac_err_mask(u8 status) { unsigned int mask = ac_err_mask(status); if (mask == 0) return AC_ERR_OTHER; return mask; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) struct ata_port *ata_shost_to_port(struct Scsi_Host *host) { return *(struct ata_port **)&host->hostdata[0]; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_check_ready(u8 status) { if (!(status & ATA_BUSY)) return 1; if (status == 0xff) return -19; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) unsigned long ata_deadline(unsigned long from_jiffies, unsigned long timeout_msecs) { return from_jiffies + msecs_to_jiffies(timeout_msecs); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_using_mwdma(struct ata_device *adev) { if (adev->dma_mode >= XFER_MW_DMA_0 && adev->dma_mode <= XFER_MW_DMA_4) return 1; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_using_udma(struct ata_device *adev) { if (adev->dma_mode >= XFER_UDMA_0 && adev->dma_mode <= XFER_UDMA_7) return 1; return 0; } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) int ata_dma_enabled(struct ata_device *adev) { return (adev->dma_mode == 0xFF ? 0 : 1); } extern const struct ata_port_operations sata_pmp_port_ops; extern int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc); extern void sata_pmp_error_handler(struct ata_port *ap); # 1652 "include/linux/libata.h" extern const struct ata_port_operations ata_sff_port_ops; extern const struct ata_port_operations ata_bmdma32_port_ops; extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device); extern u8 ata_sff_check_status(struct ata_port *ap); extern void ata_sff_pause(struct ata_port *ap); extern void ata_sff_dma_pause(struct ata_port *ap); extern int ata_sff_busy_sleep(struct ata_port *ap, unsigned long timeout_pat, unsigned long timeout); extern int ata_sff_wait_ready(struct ata_link *link, unsigned long deadline); extern void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf); extern void ata_sff_exec_command(struct ata_port *ap, const struct ata_taskfile *tf); extern unsigned int ata_sff_data_xfer(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw); extern unsigned int ata_sff_data_xfer32(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw); extern unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw); extern void ata_sff_irq_on(struct ata_port *ap); extern void ata_sff_irq_clear(struct ata_port *ap); extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, u8 status, int in_wq); extern void ata_sff_queue_work(struct work_struct *work); extern void ata_sff_queue_delayed_work(struct delayed_work *dwork, unsigned long delay); extern void ata_sff_queue_pio_task(struct ata_link *link, unsigned long delay); extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc); extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc); extern unsigned int ata_sff_port_intr(struct ata_port *ap, struct ata_queued_cmd *qc); extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance); extern void ata_sff_lost_interrupt(struct ata_port *ap); extern void ata_sff_freeze(struct ata_port *ap); extern void ata_sff_thaw(struct ata_port *ap); extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline); extern unsigned int ata_sff_dev_classify(struct ata_device *dev, int present, u8 *r_err); extern int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask, unsigned long deadline); extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes, unsigned long deadline); extern int sata_sff_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline); extern void ata_sff_postreset(struct ata_link *link, unsigned int *classes); extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc); extern void ata_sff_error_handler(struct ata_port *ap); extern void ata_sff_std_ports(struct ata_ioports *ioaddr); extern int ata_pci_sff_init_host(struct ata_host *host); extern int ata_pci_sff_prepare_host(struct pci_dev *pdev, const struct ata_port_info * const * ppi, struct ata_host **r_host); extern int ata_pci_sff_activate_host(struct ata_host *host, irq_handler_t irq_handler, struct scsi_host_template *sht); extern int ata_pci_sff_init_one(struct pci_dev *pdev, const struct ata_port_info * const * ppi, struct scsi_host_template *sht, void *host_priv, int hflags); extern const struct ata_port_operations ata_bmdma_port_ops; extern void ata_bmdma_qc_prep(struct ata_queued_cmd *qc); extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc); extern void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc); extern unsigned int ata_bmdma_port_intr(struct ata_port *ap, struct ata_queued_cmd *qc); extern irqreturn_t ata_bmdma_interrupt(int irq, void *dev_instance); extern void ata_bmdma_error_handler(struct ata_port *ap); extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc); extern void ata_bmdma_irq_clear(struct ata_port *ap); extern void ata_bmdma_setup(struct ata_queued_cmd *qc); extern void ata_bmdma_start(struct ata_queued_cmd *qc); extern void ata_bmdma_stop(struct ata_queued_cmd *qc); extern u8 ata_bmdma_status(struct ata_port *ap); extern int ata_bmdma_port_start(struct ata_port *ap); extern int ata_bmdma_port_start32(struct ata_port *ap); extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev); extern void ata_pci_bmdma_init(struct ata_host *host); extern int ata_pci_bmdma_prepare_host(struct pci_dev *pdev, const struct ata_port_info * const * ppi, struct ata_host **r_host); extern int ata_pci_bmdma_init_one(struct pci_dev *pdev, const struct ata_port_info * const * ppi, struct scsi_host_template *sht, void *host_priv, int hflags); # 1771 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 ata_sff_busy_wait(struct ata_port *ap, unsigned int bits, unsigned int max) { u8 status; do { (__builtin_constant_p(10) ? ((10) > (2 * 1000) ? __bad_udelay() : arm_delay_ops.const_udelay((10) * (((2199023UL) * 100) >> 11))) : arm_delay_ops.udelay(10)); status = ap->ops->sff_check_status(ap); max--; } while (status != 0xff && (status & bits) && (max > 0)); return status; } # 1795 "include/linux/libata.h" static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) u8 ata_wait_idle(struct ata_port *ap) { u8 status = ata_sff_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000); return status; } # 33 "drivers/ata/pata_optidma.c" 2 enum { READ_REG = 0, WRITE_REG = 1, CNTRL_REG = 3, STRAP_REG = 5, MISC_REG = 6 }; static int pci_clock; # 55 "drivers/ata/pata_optidma.c" static int optidma_pre_reset(struct ata_link *link, unsigned long deadline) { struct ata_port *ap = link->ap; struct pci_dev *pdev = ({ const typeof( ((struct pci_dev *)0)->dev ) *__mptr = (ap->host->dev); (struct pci_dev *)( (char *)__mptr - __builtin_offsetof(struct pci_dev,dev) );}); static const struct pci_bits optidma_enable_bits = { 0x40, 1, 0x08, 0x00 }; if (ap->port_no && !pci_test_config_bits(pdev, &optidma_enable_bits)) return -2; return ata_sff_prereset(link, deadline); } # 77 "drivers/ata/pata_optidma.c" static void optidma_unlock(struct ata_port *ap) { void *regio = ap->ioaddr.cmd_addr; ({ unsigned int __v = (( __u16)(__le16)(( __le16)__raw_readw(regio + 1))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }); ({ unsigned int __v = (( __u16)(__le16)(( __le16)__raw_readw(regio + 1))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }); ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(3, regio + 2); }); } # 94 "drivers/ata/pata_optidma.c" static void optidma_lock(struct ata_port *ap) { void *regio = ap->ioaddr.cmd_addr; ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(0x83, regio + 2); }); } # 116 "drivers/ata/pata_optidma.c" static void optidma_mode_setup(struct ata_port *ap, struct ata_device *adev, u8 mode) { struct ata_device *pair = ata_dev_pair(adev); int pio = adev->pio_mode - XFER_PIO_0; int dma = adev->dma_mode - XFER_MW_DMA_0; void *regio = ap->ioaddr.cmd_addr; u8 addr; static const u8 addr_timing[2][5] = { { 0x30, 0x20, 0x20, 0x10, 0x10 }, { 0x20, 0x20, 0x10, 0x10, 0x10 } }; static const u8 data_rec_timing[2][5] = { { 0x59, 0x46, 0x30, 0x20, 0x20 }, { 0x46, 0x32, 0x20, 0x20, 0x10 } }; static const u8 dma_data_rec_timing[2][3] = { { 0x76, 0x20, 0x20 }, { 0x54, 0x20, 0x10 } }; optidma_unlock(ap); # 148 "drivers/ata/pata_optidma.c" if (mode >= XFER_MW_DMA_0) addr = 0; else addr = addr_timing[pci_clock][pio]; if (pair) { u8 pair_addr; if (pair->dma_mode) pair_addr = 0; else pair_addr = addr_timing[pci_clock][pair->pio_mode - XFER_PIO_0]; if (pair_addr > addr) addr = pair_addr; } ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(adev->devno, regio + MISC_REG); }); if (mode < XFER_MW_DMA_0) { ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(data_rec_timing[pci_clock][pio], regio + READ_REG); }); ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(data_rec_timing[pci_clock][pio], regio + WRITE_REG); }); } else if (mode < XFER_UDMA_0) { ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(dma_data_rec_timing[pci_clock][dma], regio + READ_REG); }); ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(dma_data_rec_timing[pci_clock][dma], regio + WRITE_REG); }); } ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(addr | adev->devno, regio + MISC_REG); }); ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(0x85, regio + CNTRL_REG); }); optidma_lock(ap); } # 201 "drivers/ata/pata_optidma.c" static void optiplus_mode_setup(struct ata_port *ap, struct ata_device *adev, u8 mode) { struct pci_dev *pdev = ({ const typeof( ((struct pci_dev *)0)->dev ) *__mptr = (ap->host->dev); (struct pci_dev *)( (char *)__mptr - __builtin_offsetof(struct pci_dev,dev) );}); u8 udcfg; u8 udslave; int dev2 = 2 * adev->devno; int unit = 2 * ap->port_no + adev->devno; int udma = mode - XFER_UDMA_0; pci_read_config_byte(pdev, 0x44, &udcfg); if (mode <= XFER_UDMA_0) { udcfg &= ~(1 << unit); optidma_mode_setup(ap, adev, adev->dma_mode); } else { udcfg |= (1 << unit); if (ap->port_no) { pci_read_config_byte(pdev, 0x45, &udslave); udslave &= ~(0x03 << dev2); udslave |= (udma << dev2); pci_write_config_byte(pdev, 0x45, udslave); } else { udcfg &= ~(0x30 << dev2); udcfg |= (udma << dev2); } } pci_write_config_byte(pdev, 0x44, udcfg); } # 239 "drivers/ata/pata_optidma.c" static void optidma_set_pio_mode(struct ata_port *ap, struct ata_device *adev) { optidma_mode_setup(ap, adev, adev->pio_mode); } # 254 "drivers/ata/pata_optidma.c" static void optidma_set_dma_mode(struct ata_port *ap, struct ata_device *adev) { optidma_mode_setup(ap, adev, adev->dma_mode); } # 269 "drivers/ata/pata_optidma.c" static void optiplus_set_pio_mode(struct ata_port *ap, struct ata_device *adev) { optiplus_mode_setup(ap, adev, adev->pio_mode); } # 284 "drivers/ata/pata_optidma.c" static void optiplus_set_dma_mode(struct ata_port *ap, struct ata_device *adev) { optiplus_mode_setup(ap, adev, adev->dma_mode); } # 297 "drivers/ata/pata_optidma.c" static u8 optidma_make_bits43(struct ata_device *adev) { static const u8 bits43[5] = { 0, 0, 0, 1, 2 }; if (!ata_dev_enabled(adev)) return 0; if (adev->dma_mode) return adev->dma_mode - XFER_MW_DMA_0; return bits43[adev->pio_mode - XFER_PIO_0]; } # 318 "drivers/ata/pata_optidma.c" static int optidma_set_mode(struct ata_link *link, struct ata_device **r_failed) { struct ata_port *ap = link->ap; u8 r; int nybble = 4 * ap->port_no; struct pci_dev *pdev = ({ const typeof( ((struct pci_dev *)0)->dev ) *__mptr = (ap->host->dev); (struct pci_dev *)( (char *)__mptr - __builtin_offsetof(struct pci_dev,dev) );}); int rc = ata_do_set_mode(link, r_failed); if (rc == 0) { pci_read_config_byte(pdev, 0x43, &r); r &= (0x0F << nybble); r |= (optidma_make_bits43(&link->device[0]) + (optidma_make_bits43(&link->device[0]) << 2)) << nybble; pci_write_config_byte(pdev, 0x43, r); } return rc; } static struct scsi_host_template optidma_sht = { .module = (&__this_module), .name = "pata_optidma", .ioctl = ata_scsi_ioctl, .queuecommand = ata_scsi_queuecmd, .can_queue = ATA_DEF_QUEUE, .this_id = ATA_SHT_THIS_ID, .cmd_per_lun = ATA_SHT_CMD_PER_LUN, .emulated = ATA_SHT_EMULATED, .use_clustering = ATA_SHT_USE_CLUSTERING, .proc_name = "pata_optidma", .slave_configure = ata_scsi_slave_config, .slave_destroy = ata_scsi_slave_destroy, .bios_param = ata_std_bios_param, .unlock_native_capacity = ata_scsi_unlock_native_capacity, .sdev_attrs = ata_common_sdev_attrs, .sg_tablesize = LIBATA_MAX_PRD, .dma_boundary = 0xffffUL, }; static struct ata_port_operations optidma_port_ops = { .inherits = &ata_bmdma_port_ops, .cable_detect = ata_cable_40wire, .set_piomode = optidma_set_pio_mode, .set_dmamode = optidma_set_dma_mode, .set_mode = optidma_set_mode, .prereset = optidma_pre_reset, }; static struct ata_port_operations optiplus_port_ops = { .inherits = &optidma_port_ops, .set_piomode = optiplus_set_pio_mode, .set_dmamode = optiplus_set_dma_mode, }; static int optiplus_with_udma(struct pci_dev *pdev) { u8 r; int ret = 0; int ioport = 0x22; struct pci_dev *dev1; dev1 = pci_get_device(0x1045, 0xC701, ((void *)0)); if (dev1 == ((void *)0)) return 0; pci_read_config_byte(dev1, 0x08, &r); if (r < 0x10) goto done_nomsg; pci_read_config_byte(dev1, 0x5F, &r); ioport |= (r << 8); ({ do { __asm__ __volatile__ ("dsb" : : : "memory"); outer_sync(); } while (0); __raw_writeb(0x10,__typesafe_io(0xfee00000 + ((ioport) & ((resource_size_t)0xfffff)))); }); if ((({ __u8 __v = __raw_readb(__typesafe_io(0xfee00000 + ((ioport + 2) & ((resource_size_t)0xfffff)))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }) & 1) == 0) goto done; pci_read_config_byte(pdev, 0x42, &r); if ((r & 0x36) != 0x36) goto done; pci_read_config_byte(dev1, 0x52, &r); if (r & 0x80) ret = 1; done: printk("\001" "4" "UDMA not supported in this configuration.\n"); done_nomsg: pci_dev_put(dev1); return ret; } static int optidma_init_one(struct pci_dev *dev, const struct pci_device_id *id) { static const struct ata_port_info info_82c700 = { .flags = ATA_FLAG_SLAVE_POSS, .pio_mask = ATA_PIO4, .mwdma_mask = ATA_MWDMA2, .port_ops = &optidma_port_ops }; static const struct ata_port_info info_82c700_udma = { .flags = ATA_FLAG_SLAVE_POSS, .pio_mask = ATA_PIO4, .mwdma_mask = ATA_MWDMA2, .udma_mask = ATA_UDMA2, .port_ops = &optiplus_port_ops }; const struct ata_port_info *ppi[] = { &info_82c700, ((void *)0) }; int rc; ({ static bool __print_once; if (!__print_once) { __print_once = true; ata_print_version(&dev->dev, "0.3.2"); } }); rc = pcim_enable_device(dev); if (rc) return rc; ({ __u16 __v = (( __u16)(__le16)(( __le16) __raw_readw(__typesafe_io(0xfee00000 + ((0x1F1) & ((resource_size_t)0xfffff)))))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }); ({ __u16 __v = (( __u16)(__le16)(( __le16) __raw_readw(__typesafe_io(0xfee00000 + ((0x1F1) & ((resource_size_t)0xfffff)))))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }); pci_clock = ({ __u8 __v = __raw_readb(__typesafe_io(0xfee00000 + ((0x1F5) & ((resource_size_t)0xfffff)))); __asm__ __volatile__ ("dsb" : : : "memory"); __v; }) & 1; if (optiplus_with_udma(dev)) ppi[0] = &info_82c700_udma; return ata_pci_bmdma_init_one(dev, ppi, &optidma_sht, ((void *)0), 0); } static const struct pci_device_id optidma[] = { { 0x1045, (0xD568), (~0), (~0), 0, 0, }, { }, }; static struct pci_driver optidma_pci_driver = { .name = "pata_optidma", .id_table = optidma, .probe = optidma_init_one, .remove = ata_pci_remove_one, .suspend = ata_pci_device_suspend, .resume = ata_pci_device_resume, }; static int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) optidma_pci_driver_init(void) { return __pci_register_driver(&(optidma_pci_driver), (&__this_module), "pata_optidma"); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) initcall_t __inittest(void) { return optidma_pci_driver_init; } int init_module(void) __attribute__((alias("optidma_pci_driver_init")));; static void __attribute__ ((__section__(".exit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) optidma_pci_driver_exit(void) { pci_unregister_driver(&(optidma_pci_driver)); } static inline __attribute__((always_inline)) __attribute__((no_instrument_function)) exitcall_t __exittest(void) { return optidma_pci_driver_exit; } void cleanup_module(void) __attribute__((alias("optidma_pci_driver_exit")));;; static const char __UNIQUE_ID_author0[] __attribute__((__used__)) __attribute__((section(".modinfo"), unused, aligned(1))) = "author" "=" "Alan Cox"; static const char __UNIQUE_ID_description1[] __attribute__((__used__)) __attribute__((section(".modinfo"), unused, aligned(1))) = "description" "=" "low-level driver for Opti Firestar/Firestar Plus"; static const char __UNIQUE_ID_license2[] __attribute__((__used__)) __attribute__((section(".modinfo"), unused, aligned(1))) = "license" "=" "GPL"; extern const struct pci_device_id __mod_pci_device_table __attribute__ ((unused, alias("optidma"))); static const char __UNIQUE_ID_version3[] __attribute__((__used__)) __attribute__((section(".modinfo"), unused, aligned(1))) = "version" "=" "0.3.2";