# 1 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" # 1 "" # 1 "" # 1 "./include/generated/autoconf.h" 1 # 1 "" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" # 15 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" # 1 "/usr/lib/gcc/x86_64-redhat-linux/4.4.1/include/stdarg.h" 1 3 4 # 40 "/usr/lib/gcc/x86_64-redhat-linux/4.4.1/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 102 "/usr/lib/gcc/x86_64-redhat-linux/4.4.1/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/linkage.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler.h" extern void __chk_user_ptr(const volatile void __attribute__((noderef, address_space(1))) *); extern void __chk_io_ptr(const volatile void __attribute__((noderef, address_space(2))) *); # 42 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler-gcc.h" 1 # 87 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler-gcc.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler-gcc4.h" 1 # 87 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler-gcc.h" 2 # 43 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/compiler.h" 2 # 60 "/lnx/src/MM/mmotm-2010-0323-1534/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/linkage.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/linkage.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stringify.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/linkage.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/linkage.h" 2 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stddef.h" 1 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stddef.h" enum { false = 0, true = 1 }; # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/int-ll64.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/int-ll64.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitsperlong.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitsperlong.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitsperlong.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitsperlong.h" 2 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/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; __extension__ typedef __signed__ long long __s64; __extension__ typedef unsigned long long __u64; # 42 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/int-ll64.h" 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/types.h" 2 typedef unsigned short umode_t; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/types.h" 2 typedef u64 dma64_addr_t; typedef u64 dma_addr_t; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/types.h" 2 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/types.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/posix_types.h" 1 # 36 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/posix_types.h" typedef struct { unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))]; } __kernel_fd_set; typedef void (*__kernel_sighandler_t)(int); typedef int __kernel_key_t; typedef int __kernel_mqd_t; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/posix_types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/posix_types_64.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/posix_types_64.h" typedef unsigned long __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef unsigned long __kernel_nlink_t; typedef long __kernel_off_t; typedef int __kernel_pid_t; typedef int __kernel_ipc_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef unsigned long __kernel_size_t; typedef long __kernel_ssize_t; typedef long __kernel_ptrdiff_t; typedef long __kernel_time_t; typedef long __kernel_suseconds_t; typedef long __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef int __kernel_daddr_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; typedef long long __kernel_loff_t; typedef struct { int val[2]; } __kernel_fsid_t; typedef unsigned short __kernel_old_uid_t; typedef unsigned short __kernel_old_gid_t; typedef __kernel_uid_t __kernel_uid32_t; typedef __kernel_gid_t __kernel_gid32_t; typedef unsigned long __kernel_old_dev_t; static inline void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); fdsetp->fds_bits[_tmp] |= (1UL<<_rem); } static inline void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem); } static inline int __FD_ISSET(unsigned long fd, __const__ __kernel_fd_set *p) { unsigned long _tmp = fd / (8 * sizeof(unsigned long)); unsigned long _rem = fd % (8 * sizeof(unsigned long)); return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0; } static inline void __FD_ZERO(__kernel_fd_set *p) { unsigned long *tmp = p->fds_bits; int i; if (__builtin_constant_p((1024/(8 * sizeof(unsigned long))))) { switch ((1024/(8 * sizeof(unsigned long)))) { case 32: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0; tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0; tmp[16] = 0; tmp[17] = 0; tmp[18] = 0; tmp[19] = 0; tmp[20] = 0; tmp[21] = 0; tmp[22] = 0; tmp[23] = 0; tmp[24] = 0; tmp[25] = 0; tmp[26] = 0; tmp[27] = 0; tmp[28] = 0; tmp[29] = 0; tmp[30] = 0; tmp[31] = 0; return; case 16: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0; tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0; return; case 8: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; return; case 4: tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; return; } } i = (1024/(8 * sizeof(unsigned long))); while (i) { i--; *tmp = 0; tmp++; } } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/posix_types.h" 2 # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/posix_types.h" 2 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/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 __kernel_nlink_t 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; # 59 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 138 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/types.h" typedef unsigned long sector_t; typedef unsigned long blkcnt_t; # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; typedef unsigned __attribute__((bitwise)) gfp_t; typedef unsigned __attribute__((bitwise)) fmode_t; typedef u64 phys_addr_t; typedef phys_addr_t resource_size_t; typedef struct { volatile int counter; } atomic_t; typedef struct { volatile long counter; } atomic64_t; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/asm.h" 1 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" 2 # 42 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" struct alt_instr { u8 *instr; u8 *replacement; u8 cpuid; u8 instrlen; u8 replacementlen; u8 pad1; u32 pad2; }; extern void alternative_instructions(void); extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end); struct module; extern void alternatives_smp_module_add(struct module *mod, char *name, void *locks, void *locks_end, void *text, void *text_end); extern void alternatives_smp_module_del(struct module *mod); extern void alternatives_smp_switch(int smp); extern int alternatives_text_reserved(void *start, void *end); # 99 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpufeature.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/required-features.h" 1 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpufeature.h" 2 # 178 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpufeature.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" 1 # 179 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpufeature.h" 2 extern const char * const x86_cap_flags[9*32]; extern const char * const x86_power_flags[32]; # 100 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" 2 # 147 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" struct paravirt_patch_site; static inline void apply_paravirt(struct paravirt_patch_site *start, struct paravirt_patch_site *end) {} # 176 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/alternative.h" extern void *text_poke(void *addr, const void *opcode, size_t len); extern void *text_poke_smp(void *addr, const void *opcode, size_t len); # 17 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 59 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline __attribute__((always_inline)) void set_bit(unsigned int nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "orb %1,%0" : "+m" (*(volatile long *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)(1 << ((nr) & 7))) : "memory"); } else { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); } } # 82 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline void __set_bit(int nr, volatile unsigned long *addr) { asm volatile("bts %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); } # 97 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline __attribute__((always_inline)) void clear_bit(int nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "andb %1,%0" : "+m" (*(volatile long *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)~(1 << ((nr) & 7)))); } else { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); } } # 119 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline void clear_bit_unlock(unsigned nr, volatile unsigned long *addr) { __asm__ __volatile__("": : :"memory"); clear_bit(nr, addr); } static inline void __clear_bit(int nr, volatile unsigned long *addr) { asm volatile("btr %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); } # 142 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline void __clear_bit_unlock(unsigned nr, volatile unsigned long *addr) { __asm__ __volatile__("": : :"memory"); __clear_bit(nr, addr); } # 160 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline void __change_bit(int nr, volatile unsigned long *addr) { asm volatile("btc %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); } # 174 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline void change_bit(int nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "xorb %1,%0" : "+m" (*(volatile long *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)(1 << ((nr) & 7)))); } else { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "btc %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); } } # 195 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int test_and_set_bit(int nr, volatile unsigned long *addr) { int oldbit; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); return oldbit; } # 212 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline __attribute__((always_inline)) int test_and_set_bit_lock(int nr, volatile unsigned long *addr) { return test_and_set_bit(nr, addr); } # 227 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int __test_and_set_bit(int nr, volatile unsigned long *addr) { int oldbit; asm("bts %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr)); return oldbit; } # 246 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int test_and_clear_bit(int nr, volatile unsigned long *addr) { int oldbit; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); return oldbit; } # 266 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr) { int oldbit; asm volatile("btr %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr)); return oldbit; } static inline int __test_and_change_bit(int nr, volatile unsigned long *addr) { int oldbit; asm volatile("btc %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); return oldbit; } # 298 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int test_and_change_bit(int nr, volatile unsigned long *addr) { int oldbit; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "btc %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); return oldbit; } static inline __attribute__((always_inline)) int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) { return ((1UL << (nr % 64)) & (((unsigned long *)addr)[nr / 64])) != 0; } static inline int variable_test_bit(int nr, volatile const unsigned long *addr) { int oldbit; asm volatile("bt %2,%1\n\t" "sbb %0,%0" : "=r" (oldbit) : "m" (*(unsigned long *)addr), "Ir" (nr)); return oldbit; } # 347 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline unsigned long __ffs(unsigned long word) { asm("bsf %1,%0" : "=r" (word) : "rm" (word)); return word; } static inline unsigned long ffz(unsigned long word) { asm("bsf %1,%0" : "=r" (word) : "r" (~word)); return word; } static inline unsigned long __fls(unsigned long word) { asm("bsr %1,%0" : "=r" (word) : "rm" (word)); return word; } # 395 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int ffs(int x) { int r; asm("bsfl %1,%0\n\t" "cmovzl %2,%0" : "=r" (r) : "rm" (x), "r" (-1)); return r + 1; } # 422 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" static inline int fls(int x) { int r; asm("bsrl %1,%0\n\t" "cmovzl %2,%0" : "=&r" (r) : "rm" (x), "rm" (-1)); return r + 1; } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/sched.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/sched.h" static inline int sched_find_first_bit(const unsigned long *b) { if (b[0]) return __ffs(b[0]); return __ffs(b[1]) + 64; # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/sched.h" } # 444 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/arch_hweight.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/arch_hweight.h" static inline unsigned int __arch_hweight32(unsigned int w) { unsigned int res = 0; asm ("661:\n\t" "call __sw_hweight32" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(4*32+23)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" ".byte 0xf3,0x48,0x0f,0xb8,0xc7" "\n664:\n" ".previous" : "=""a" (res) : "D" (w)); return res; } static inline unsigned int __arch_hweight16(unsigned int w) { return __arch_hweight32(w & 0xffff); } static inline unsigned int __arch_hweight8(unsigned int w) { return __arch_hweight32(w & 0xff); } static inline unsigned long __arch_hweight64(__u64 w) { unsigned long res = 0; asm ("661:\n\t" "call __sw_hweight64" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(4*32+23)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" ".byte 0xf3,0x48,0x0f,0xb8,0xc7" "\n664:\n" ".previous" : "=""a" (res) : "D" (w)); return res; } # 448 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/const_hweight.h" 1 # 450 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/fls64.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/fls64.h" static inline __attribute__((always_inline)) int fls64(__u64 x) { if (x == 0) return 0; return __fls(x) + 1; } # 454 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/ext2-non-atomic.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/le.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/byteorder.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swab.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swab.h" 1 static inline __attribute__((__const__)) __u32 __arch_swab32(__u32 val) { # 21 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swab.h" asm("bswapl %0" : "=r" (val) : "0" (val)); return val; } static inline __attribute__((__const__)) __u64 __arch_swab64(__u64 val) { # 53 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swab.h" asm("bswapq %0" : "=r" (val) : "0" (val)); return val; } # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swab.h" 2 # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swab.h" static inline __attribute__((__const__)) __u16 __fswab16(__u16 val) { return ((__u16)( (((__u16)(val) & (__u16)0x00ffU) << 8) | (((__u16)(val) & (__u16)0xff00U) >> 8))); } static inline __attribute__((__const__)) __u32 __fswab32(__u32 val) { return __arch_swab32(val); } static inline __attribute__((__const__)) __u64 __fswab64(__u64 val) { return __arch_swab64(val); } static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) { return ((__u32)( (((__u32)(val) & (__u32)0x0000ffffUL) << 16) | (((__u32)(val) & (__u32)0xffff0000UL) >> 16))); } static inline __attribute__((__const__)) __u32 __fswahb32(__u32 val) { return ((__u32)( (((__u32)(val) & (__u32)0x00ff00ffUL) << 8) | (((__u32)(val) & (__u32)0xff00ff00UL) >> 8))); } # 148 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swab.h" static inline __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 __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 __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 __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 __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 void __swab16s(__u16 *p) { *p = __swab16p(p); } static inline void __swab32s(__u32 *p) { *p = __swab32p(p); } static inline void __swab64s(__u64 *p) { *p = __swab64p(p); } static inline void __swahw32s(__u32 *p) { *p = __swahw32p(p); } static inline void __swahb32s(__u32 *p) { *p = __swahb32p(p); } # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" 2 # 43 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" static inline __le64 __cpu_to_le64p(const __u64 *p) { return (__attribute__((force)) __le64)*p; } static inline __u64 __le64_to_cpup(const __le64 *p) { return (__attribute__((force)) __u64)*p; } static inline __le32 __cpu_to_le32p(const __u32 *p) { return (__attribute__((force)) __le32)*p; } static inline __u32 __le32_to_cpup(const __le32 *p) { return (__attribute__((force)) __u32)*p; } static inline __le16 __cpu_to_le16p(const __u16 *p) { return (__attribute__((force)) __le16)*p; } static inline __u16 __le16_to_cpup(const __le16 *p) { return (__attribute__((force)) __u16)*p; } static inline __be64 __cpu_to_be64p(const __u64 *p) { return (__attribute__((force)) __be64)__swab64p(p); } static inline __u64 __be64_to_cpup(const __be64 *p) { return __swab64p((__u64 *)p); } static inline __be32 __cpu_to_be32p(const __u32 *p) { return (__attribute__((force)) __be32)__swab32p(p); } static inline __u32 __be32_to_cpup(const __be32 *p) { return __swab32p((__u32 *)p); } static inline __be16 __cpu_to_be16p(const __u16 *p) { return (__attribute__((force)) __be16)__swab16p(p); } static inline __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 105 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/generic.h" 1 # 143 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/generic.h" static inline void le16_add_cpu(__le16 *var, u16 val) { *var = ((__attribute__((force)) __le16)(__u16)(((__attribute__((force)) __u16)(__le16)(*var)) + val)); } static inline void le32_add_cpu(__le32 *var, u32 val) { *var = ((__attribute__((force)) __le32)(__u32)(((__attribute__((force)) __u32)(__le32)(*var)) + val)); } static inline void le64_add_cpu(__le64 *var, u64 val) { *var = ((__attribute__((force)) __le64)(__u64)(((__attribute__((force)) __u64)(__le64)(*var)) + val)); } static inline void be16_add_cpu(__be16 *var, u16 val) { *var = ((__attribute__((force)) __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((__u16)((__attribute__((force)) __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16((__attribute__((force)) __u16)(__be16)(*var))) + val))) ? ((__u16)( (((__u16)(((__builtin_constant_p((__u16)((__attribute__((force)) __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16((__attribute__((force)) __u16)(__be16)(*var))) + val)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_constant_p((__u16)((__attribute__((force)) __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16((__attribute__((force)) __u16)(__be16)(*var))) + val)) & (__u16)0xff00U) >> 8))) : __fswab16(((__builtin_constant_p((__u16)((__attribute__((force)) __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)((__attribute__((force)) __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16((__attribute__((force)) __u16)(__be16)(*var))) + val)))); } static inline void be32_add_cpu(__be32 *var, u32 val) { *var = ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val))) ? ((__u32)( (((__u32)(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val)) & (__u32)0x000000ffUL) << 24) | (((__u32)(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val)) & (__u32)0xff000000UL) >> 24))) : __fswab32(((__builtin_constant_p((__u32)((__attribute__((force)) __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((__attribute__((force)) __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32((__attribute__((force)) __u32)(__be32)(*var))) + val)))); } static inline void be64_add_cpu(__be64 *var, u64 val) { *var = ((__attribute__((force)) __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val))) ? ((__u64)( (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(((__builtin_constant_p((__u64)((__attribute__((force)) __u64)(__be64)(*var))) ? ((__u64)( (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((__attribute__((force)) __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((__attribute__((force)) __u64)(__be64)(*var))) + val)))); } # 106 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/byteorder/little_endian.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/byteorder.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/le.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/ext2-non-atomic.h" 2 # 458 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bitops/minix.h" 1 # 465 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bitops.h" 2 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" 2 static __inline__ int get_bitmask_order(unsigned int count) { int order; order = fls(count); return order; } static __inline__ int get_count_order(unsigned int count) { int order; order = fls(count) - 1; if (count & (count - 1)) order++; return order; } static inline 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 __u32 rol32(__u32 word, unsigned int shift) { return (word << shift) | (word >> (32 - shift)); } static inline __u32 ror32(__u32 word, unsigned int shift) { return (word >> shift) | (word << (32 - shift)); } static inline __u16 rol16(__u16 word, unsigned int shift) { return (word << shift) | (word >> (16 - shift)); } static inline __u16 ror16(__u16 word, unsigned int shift) { return (word >> shift) | (word << (16 - shift)); } static inline __u8 rol8(__u8 word, unsigned int shift) { return (word << shift) | (word >> (8 - shift)); } static inline __u8 ror8(__u8 word, unsigned int shift) { return (word >> shift) | (word << (8 - shift)); } static inline unsigned fls_long(unsigned long l) { if (sizeof(l) == 4) return fls(l); return fls64(l); } # 122 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" static inline unsigned long __ffs64(u64 word) { return __ffs((unsigned long)word); } # 143 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" extern unsigned long find_first_bit(const unsigned long *addr, unsigned long size); # 153 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" extern unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size); # 165 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" extern unsigned long find_last_bit(const unsigned long *addr, unsigned long size); # 177 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" extern unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset); # 187 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitops.h" extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, unsigned long offset); # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/log2.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/log2.h" extern __attribute__((const, noreturn)) int ____ilog2_NaN(void); # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/log2.h" static inline __attribute__((const)) int __ilog2_u32(u32 n) { return fls(n) - 1; } static inline __attribute__((const)) int __ilog2_u64(u64 n) { return fls64(n) - 1; } static inline __attribute__((const)) bool is_power_of_2(unsigned long n) { return (n != 0 && ((n & (n - 1)) == 0)); } static inline __attribute__((const)) unsigned long __roundup_pow_of_two(unsigned long n) { return 1UL << fls_long(n - 1); } static inline __attribute__((const)) unsigned long __rounddown_pow_of_two(unsigned long n) { return 1UL << (fls_long(n) - 1); } # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/typecheck.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dynamic_debug.h" 1 extern long long dynamic_debug_enabled; extern long long dynamic_debug_enabled2; struct _ddebug { const char *modname; const char *function; const char *filename; const char *format; char primary_hash; char secondary_hash; unsigned int lineno:24; 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(char *mod_name); # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bug.h" 1 # 38 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bug.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bug.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bug.h" struct bug_entry { signed int bug_addr_disp; signed int file_disp; unsigned short line; unsigned short flags; }; # 64 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/bug.h" extern void warn_slowpath_fmt(const char *file, const int line, const char *fmt, ...) __attribute__((format(printf, 3, 4))); extern void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint, const char *fmt, ...) __attribute__((format(printf, 4, 5))); extern void warn_slowpath_null(const char *file, const int line); # 39 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bug.h" 2 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" 2 extern const char linux_banner[]; extern const char linux_proc_banner[]; # 118 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" extern int console_printk[]; struct completion; struct pt_regs; struct user; # 151 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" static inline void __might_sleep(const char *file, int line, int preempt_offset) { } # 166 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" static inline void might_fault(void) { do { do { } while (0); } while (0); } extern struct atomic_notifier_head panic_notifier_list; extern long (*panic_blink)(long time); void panic(const char * fmt, ...) __attribute__ ((noreturn, format (printf, 1, 2))) __attribute__((__cold__)); extern void oops_enter(void); extern void oops_exit(void); extern int oops_may_print(void); void do_exit(long error_code) __attribute__((noreturn)); void complete_and_exit(struct completion *, long) __attribute__((noreturn)); 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 strict_strtoul(const char *, unsigned int, unsigned long *); extern int strict_strtol(const char *, unsigned int, long *); extern int strict_strtoull(const char *, unsigned int, unsigned long long *); extern int strict_strtoll(const char *, unsigned int, long long *); extern int sprintf(char * buf, const char * fmt, ...) __attribute__ ((format (printf, 2, 3))); extern int vsprintf(char *buf, const char *, va_list) __attribute__ ((format (printf, 2, 0))); extern int snprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); extern int scnprintf(char * buf, size_t size, const char * fmt, ...) __attribute__ ((format (printf, 3, 4))); extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) __attribute__ ((format (printf, 3, 0))); extern char *kasprintf(gfp_t gfp, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); extern int sscanf(const char *, const char *, ...) __attribute__ ((format (scanf, 2, 3))); extern int vsscanf(const char *, const char *, va_list) __attribute__ ((format (scanf, 2, 0))); 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 __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); # 249 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" int vprintk(const char *fmt, va_list args) __attribute__ ((format (printf, 1, 0))); int printk(const char * fmt, ...) __attribute__ ((format (printf, 1, 2))) __attribute__((__cold__)); 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; # 273 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" void log_buf_kexec_setup(void); # 294 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" extern int printk_needs_cpu(int cpu); extern void printk_tick(void); extern void __attribute__((format(printf, 1, 2))) early_printk(const char *fmt, ...); unsigned long int_sqrt(unsigned long); static inline void console_silent(void) { (console_printk[0]) = 0; } static inline void console_verbose(void) { if ((console_printk[0])) (console_printk[0]) = 15; } 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 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 enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, SYSTEM_SUSPEND_DISK, } system_state; # 349 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" extern void dump_stack(void) __attribute__((__cold__)); 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); extern const char hex_asc[]; static inline char *pack_hex_byte(char *buf, u8 byte) { *buf++ = hex_asc[((byte) & 0xf0) >> 4]; *buf++ = hex_asc[((byte) & 0x0f)]; return buf; } # 483 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" void tracing_on(void); void tracing_off(void); void tracing_off_permanent(void); int tracing_is_on(void); extern void tracing_start(void); extern void tracing_stop(void); extern void ftrace_off_permanent(void); extern void ftrace_special(unsigned long arg1, unsigned long arg2, unsigned long arg3); static inline void __attribute__ ((format (printf, 1, 2))) ____trace_printk_check_format(const char *fmt, ...) { } # 542 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" extern int __trace_bprintk(unsigned long ip, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); extern int __trace_printk(unsigned long ip, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); extern void trace_dump_stack(void); # 569 "/lnx/src/MM/mmotm-2010-0323-1534/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(void); # 714 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" struct sysinfo; extern int do_sysinfo(struct sysinfo *info); # 746 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" extern int __build_bug_on_failed; # 776 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kernel.h" struct sysinfo { long uptime; unsigned long loads[3]; unsigned long totalram; unsigned long freeram; unsigned long sharedram; unsigned long bufferram; unsigned long totalswap; unsigned long freeswap; unsigned short procs; unsigned short pad; unsigned long totalhigh; unsigned long freehigh; unsigned int mem_unit; char _f[20-2*sizeof(long)-sizeof(int)]; }; # 16 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/init.h" 1 # 131 "/lnx/src/MM/mmotm-2010-0323-1534/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 int initcall_debug; # 218 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/init.h" struct obs_kernel_param { const char *str; int (*setup_func)(char *); int early; }; # 247 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/init.h" void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) parse_early_param(void); void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) parse_early_options(char *cmdline); # 17 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poison.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prefetch.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prefetch.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor-flags.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 struct task_struct; struct mm_struct; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" 1 # 62 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" struct vm86_regs { long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; long __null_ds; long __null_es; long __null_fs; long __null_gs; long orig_eax; long eip; unsigned short cs, __csh; long eflags; long esp; unsigned short ss, __ssh; unsigned short es, __esh; unsigned short ds, __dsh; unsigned short fs, __fsh; unsigned short gs, __gsh; }; struct revectored_struct { unsigned long __map[8]; }; struct vm86_struct { struct vm86_regs regs; unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; }; struct vm86plus_info_struct { unsigned long force_return_for_pic:1; unsigned long vm86dbg_active:1; unsigned long vm86dbg_TFpendig:1; unsigned long unused:28; unsigned long is_vm86pus:1; unsigned char vm86dbg_intxxtab[32]; }; struct vm86plus_struct { struct vm86_regs regs; unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; struct vm86plus_info_struct vm86plus; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace-abi.h" 1 # 89 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace-abi.h" struct ptrace_bts_config { __u32 size; __u32 flags; __u32 signal; __u32 bts_size; }; # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/segment.h" 1 # 146 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/segment.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cache.h" 1 # 147 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/segment.h" 2 # 212 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/segment.h" extern const char early_idt_handlers[32][10]; # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/const.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_types.h" 2 # 36 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_types.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_64_types.h" 1 # 54 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_64_types.h" void clear_page(void *page); void copy_page(void *to, void *from); extern unsigned long max_pfn; extern unsigned long phys_base; extern unsigned long __phys_addr(unsigned long); extern void init_extra_mapping_uc(unsigned long phys, unsigned long size); extern void init_extra_mapping_wb(unsigned long phys, unsigned long size); # 37 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_types.h" 2 extern int devmem_is_allowed(unsigned long pagenr); extern unsigned long max_low_pfn_mapped; extern unsigned long max_pfn_mapped; extern unsigned long init_memory_mapping(unsigned long start, unsigned long end); extern void initmem_init(unsigned long start_pfn, unsigned long end_pfn, int acpi, int k8); extern void free_initmem(void); # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" 2 # 99 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" struct pt_regs { unsigned long r15; unsigned long r14; unsigned long r13; unsigned long r12; unsigned long bp; unsigned long bx; unsigned long r11; unsigned long r10; unsigned long r9; unsigned long r8; unsigned long ax; unsigned long cx; unsigned long dx; unsigned long si; unsigned long di; unsigned long orig_ax; unsigned long ip; unsigned long cs; unsigned long flags; unsigned long sp; unsigned long ss; }; # 135 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" struct cpuinfo_x86; struct task_struct; extern unsigned long profile_pc(struct pt_regs *regs); extern unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs); extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code, int si_code); void signal_fault(struct pt_regs *regs, void __attribute__((noderef, address_space(1))) *frame, char *where); extern long syscall_trace_enter(struct pt_regs *); extern void syscall_trace_leave(struct pt_regs *); static inline unsigned long regs_return_value(struct pt_regs *regs) { return regs->ax; } # 161 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" static inline int user_mode(struct pt_regs *regs) { return !!(regs->cs & 3); } static inline int user_mode_vm(struct pt_regs *regs) { return user_mode(regs); } static inline int v8086_mode(struct pt_regs *regs) { return 0; } # 196 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) { return regs->sp; } static inline unsigned long instruction_pointer(struct pt_regs *regs) { return regs->ip; } static inline unsigned long frame_pointer(struct pt_regs *regs) { return regs->bp; } static inline unsigned long user_stack_pointer(struct pt_regs *regs) { return regs->sp; } extern int regs_query_register_offset(const char *name); extern const char *regs_query_register_name(unsigned int offset); # 234 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" static inline unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset) { if (__builtin_expect(!!(offset > (__builtin_offsetof(struct pt_regs,ss))), 0)) return 0; return *(unsigned long *)((unsigned long)regs + offset); } # 250 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" static inline int regs_within_kernel_stack(struct pt_regs *regs, unsigned long addr) { return ((addr & ~((((1UL) << 12) << 1) - 1)) == (kernel_stack_pointer(regs) & ~((((1UL) << 12) << 1) - 1))); } # 266 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n) { unsigned long *addr = (unsigned long *)kernel_stack_pointer(regs); addr += n; if (regs_within_kernel_stack(regs, (unsigned long)addr)) return *addr; else return 0; } # 286 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ptrace.h" struct user_desc; extern int do_get_thread_area(struct task_struct *p, int idx, struct user_desc __attribute__((noderef, address_space(1))) *info); extern int do_set_thread_area(struct task_struct *p, int idx, struct user_desc __attribute__((noderef, address_space(1))) *info, int can_allocate); # 131 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" 2 # 141 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" struct kernel_vm86_regs { struct pt_regs pt; unsigned short es, __esh; unsigned short ds, __dsh; unsigned short fs, __fsh; unsigned short gs, __gsh; }; struct kernel_vm86_struct { struct kernel_vm86_regs regs; # 166 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; struct vm86plus_info_struct vm86plus; struct pt_regs *regs32; # 183 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" }; # 199 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vm86.h" static inline int handle_vm86_trap(struct kernel_vm86_regs *a, long b, int c) { return 0; } # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/math_emu.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/math_emu.h" struct math_emu_info { long ___orig_eip; union { struct pt_regs *regs; struct kernel_vm86_regs *vm86; }; }; # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sigcontext.h" 1 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sigcontext.h" struct _fpx_sw_bytes { __u32 magic1; __u32 extended_size; __u64 xstate_bv; __u32 xstate_size; __u32 padding[7]; }; # 169 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sigcontext.h" struct _fpstate { __u16 cwd; __u16 swd; __u16 twd; __u16 fop; __u64 rip; __u64 rdp; __u32 mxcsr; __u32 mxcsr_mask; __u32 st_space[32]; __u32 xmm_space[64]; __u32 reserved2[12]; union { __u32 reserved3[12]; struct _fpx_sw_bytes sw_reserved; }; }; struct sigcontext { unsigned long r8; unsigned long r9; unsigned long r10; unsigned long r11; unsigned long r12; unsigned long r13; unsigned long r14; unsigned long r15; unsigned long di; unsigned long si; unsigned long bp; unsigned long bx; unsigned long dx; unsigned long ax; unsigned long cx; unsigned long sp; unsigned long ip; unsigned long flags; unsigned short cs; unsigned short gs; unsigned short fs; unsigned short __pad0; unsigned long err; unsigned long trapno; unsigned long oldmask; unsigned long cr2; # 225 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sigcontext.h" void __attribute__((noderef, address_space(1))) *fpstate; unsigned long reserved1[8]; }; # 266 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sigcontext.h" struct _xsave_hdr { __u64 xstate_bv; __u64 reserved1[2]; __u64 reserved2[5]; }; struct _ymmh_state { __u32 ymmh_space[64]; }; struct _xstate { struct _fpstate fpstate; struct _xsave_hdr xstate_hdr; struct _ymmh_state ymmh; }; # 15 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/current.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/percpu.h" 1 # 72 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/percpu.h" extern void __bad_percpu_size(void); # 299 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/percpu.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/percpu.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/threads.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/percpu.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu-defs.h" 1 # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/percpu.h" 2 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/percpu.h" extern unsigned long __per_cpu_offset[8]; # 68 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/percpu.h" extern void setup_per_cpu_areas(void); # 300 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/percpu.h" 2 extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(unsigned long) this_cpu_off; # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/current.h" 2 struct task_struct; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct task_struct *) current_task; static inline __attribute__((always_inline)) struct task_struct *get_current(void) { return ({ typeof(current_task) pfo_ret__; switch (sizeof(current_task)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "p" (&(current_task))); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; default: __bad_percpu_size(); } pfo_ret__; }); } # 16 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cmpxchg.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cmpxchg_64.h" 1 static inline void set_64bit(volatile unsigned long *ptr, unsigned long val) { *ptr = val; } extern void __xchg_wrong_size(void); extern void __cmpxchg_wrong_size(void); # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cmpxchg.h" 2 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/nops.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqflags.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqflags.h" extern void trace_softirqs_on(unsigned long ip); extern void trace_softirqs_off(unsigned long ip); extern void trace_hardirqs_on(void); extern void trace_hardirqs_off(void); # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqflags.h" extern void stop_critical_timings(void); extern void start_critical_timings(void); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irqflags.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irqflags.h" static inline unsigned long native_save_fl(void) { unsigned long flags; asm volatile("# __raw_save_flags\n\t" "pushf ; pop %0" : "=rm" (flags) : : "memory"); return flags; } static inline void native_restore_fl(unsigned long flags) { asm volatile("push %0 ; popf" : :"g" (flags) :"memory", "cc"); } static inline void native_irq_disable(void) { asm volatile("cli": : :"memory"); } static inline void native_irq_enable(void) { asm volatile("sti": : :"memory"); } static inline void native_safe_halt(void) { asm volatile("sti; hlt": : :"memory"); } static inline void native_halt(void) { asm volatile("hlt": : :"memory"); } # 64 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irqflags.h" static inline unsigned long __raw_local_save_flags(void) { return native_save_fl(); } static inline void raw_local_irq_restore(unsigned long flags) { native_restore_fl(flags); } static inline void raw_local_irq_disable(void) { native_irq_disable(); } static inline void raw_local_irq_enable(void) { native_irq_enable(); } static inline void raw_safe_halt(void) { native_safe_halt(); } static inline void halt(void) { native_halt(); } static inline unsigned long __raw_local_irq_save(void) { unsigned long flags = __raw_local_save_flags(); raw_local_irq_disable(); return flags; } # 162 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irqflags.h" static inline int raw_irqs_disabled_flags(unsigned long flags) { return !(flags & 0x00000200); } static inline int raw_irqs_disabled(void) { unsigned long flags = __raw_local_save_flags(); return raw_irqs_disabled_flags(flags); } # 58 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqflags.h" 2 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" 2 # 20 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" struct task_struct; struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *next); struct tss_struct; void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, struct tss_struct *tss); extern void show_regs_common(void); # 153 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" extern void native_load_gs_index(unsigned); # 201 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" static inline unsigned long get_limit(unsigned long segment) { unsigned long __limit; asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); return __limit + 1; } static inline void native_clts(void) { asm volatile("clts"); } # 220 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" static unsigned long __force_order; static inline unsigned long native_read_cr0(void) { unsigned long val; asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline void native_write_cr0(unsigned long val) { asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order)); } static inline unsigned long native_read_cr2(void) { unsigned long val; asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline void native_write_cr2(unsigned long val) { asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); } static inline unsigned long native_read_cr3(void) { unsigned long val; asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline void native_write_cr3(unsigned long val) { asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); } static inline unsigned long native_read_cr4(void) { unsigned long val; asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline unsigned long native_read_cr4_safe(void) { unsigned long val; # 276 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" val = native_read_cr4(); return val; } static inline void native_write_cr4(unsigned long val) { asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order)); } static inline unsigned long native_read_cr8(void) { unsigned long cr8; asm volatile("movq %%cr8,%0" : "=r" (cr8)); return cr8; } static inline void native_write_cr8(unsigned long val) { asm volatile("movq %0,%%cr8" :: "r" (val) : "memory"); } static inline void native_wbinvd(void) { asm volatile("wbinvd": : :"memory"); } # 333 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" static inline void clflush(volatile void *__p) { asm volatile("clflush %0" : "+m" (*(volatile char __attribute__((force)) *)__p)); } void disable_hlt(void); void enable_hlt(void); void cpu_idle_wait(void); extern unsigned long arch_align_stack(unsigned long sp); extern void free_init_pages(char *what, unsigned long begin, unsigned long end); void default_idle(void); void stop_this_cpu(void *dummy); # 454 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/system.h" static inline void rdtsc_barrier(void) { asm volatile ("661:\n\t" ".byte 0x66,0x66,0x90\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(3*32+17)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "mfence" "\n664:\n" ".previous" : : : "memory"); asm volatile ("661:\n\t" ".byte 0x66,0x66,0x90\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(3*32+18)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" : : : "memory"); } # 18 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page_64.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" 2 struct page; static inline void clear_user_page(void *page, unsigned long vaddr, struct page *pg) { clear_page(page); } static inline void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage) { copy_page(to, from); } # 53 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" extern bool __virt_addr_valid(unsigned long kaddr); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/memory_model.h" 1 # 59 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/getorder.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/getorder.h" static inline __attribute__((__const__)) int get_order(unsigned long size) { int order; size = (size - 1) >> (12 - 1); order = -1; do { size >>= 1; order++; } while (size); return order; } # 60 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/page.h" 2 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" 1 # 174 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64_types.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64_types.h" typedef unsigned long pteval_t; typedef unsigned long pmdval_t; typedef unsigned long pudval_t; typedef unsigned long pgdval_t; typedef unsigned long pgprotval_t; typedef struct { pteval_t pte; } pte_t; # 175 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" 2 # 187 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" typedef struct pgprot { pgprotval_t pgprot; } pgprot_t; typedef struct { pgdval_t pgd; } pgd_t; static inline pgd_t native_make_pgd(pgdval_t val) { return (pgd_t) { val }; } static inline pgdval_t native_pgd_val(pgd_t pgd) { return pgd.pgd; } static inline pgdval_t pgd_flags(pgd_t pgd) { return native_pgd_val(pgd) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))); } typedef struct { pudval_t pud; } pud_t; static inline pud_t native_make_pud(pmdval_t val) { return (pud_t) { val }; } static inline pudval_t native_pud_val(pud_t pud) { return pud.pud; } # 228 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" typedef struct { pmdval_t pmd; } pmd_t; static inline pmd_t native_make_pmd(pmdval_t val) { return (pmd_t) { val }; } static inline pmdval_t native_pmd_val(pmd_t pmd) { return pmd.pmd; } # 248 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" static inline pudval_t pud_flags(pud_t pud) { return native_pud_val(pud) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))); } static inline pmdval_t pmd_flags(pmd_t pmd) { return native_pmd_val(pmd) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))); } static inline pte_t native_make_pte(pteval_t val) { return (pte_t) { .pte = val }; } static inline pteval_t native_pte_val(pte_t pte) { return pte.pte; } static inline pteval_t pte_flags(pte_t pte) { return native_pte_val(pte) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))); } typedef struct page *pgtable_t; extern pteval_t __supported_pte_mask; extern void set_nx(void); extern int nx_enabled; extern pgprot_t pgprot_writecombine(pgprot_t prot); struct file; pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, unsigned long size, pgprot_t vma_prot); int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, unsigned long size, pgprot_t *vma_prot); void set_pte_vaddr(unsigned long vaddr, pte_t pte); # 307 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" struct seq_file; extern void arch_report_meminfo(struct seq_file *m); enum { PG_LEVEL_NONE, PG_LEVEL_4K, PG_LEVEL_2M, PG_LEVEL_1G, PG_LEVEL_NUM }; extern void update_page_count(int level, unsigned long pages); # 330 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_types.h" extern pte_t *lookup_address(unsigned long address, unsigned int *level); # 20 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr-index.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ioctl.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ioctl.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/ioctl.h" 1 # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/ioctl.h" extern unsigned int __invalid_size_argument_for_IOC; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ioctl.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ioctl.h" 2 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/errno.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/errno.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/errno-base.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/errno.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/errno.h" 2 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpumask.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitmap.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/string.h" 1 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/string.h" extern char *strndup_user(const char __attribute__((noderef, address_space(1))) *, long); extern void *memdup_user(const void __attribute__((noderef, address_space(1))) *, size_t); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/string.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/string_64.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/string_64.h" static inline __attribute__((always_inline)) void *__inline_memcpy(void *to, const void *from, size_t n) { unsigned long d0, d1, d2; asm volatile("rep ; movsl\n\t" "testb $2,%b4\n\t" "je 1f\n\t" "movsw\n" "1:\ttestb $1,%b4\n\t" "je 2f\n\t" "movsb\n" "2:" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (n / 4), "q" (n), "1" ((long)to), "2" ((long)from) : "memory"); return to; } extern void *memcpy(void *to, const void *from, size_t len); # 55 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/string_64.h" void *memset(void *s, int c, size_t n); void *memmove(void *dest, const void *src, size_t count); int memcmp(const void *cs, const void *ct, size_t count); size_t strlen(const char *s); char *strcpy(char *dest, const char *src); char *strcat(char *dest, const char *src); int strcmp(const char *cs, const char *ct); # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/string.h" 2 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/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 * strchr(const char *,int); extern char * strnchr(const char *, size_t, int); extern char * strrchr(const char *,int); extern char * skip_spaces(const char *); extern char *strim(char *); static inline 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 *); # 109 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/string.h" extern void * memscan(void *,int,__kernel_size_t); extern int memcmp(const void *,const void *,__kernel_size_t); extern void * memchr(const void *,int,__kernel_size_t); 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); 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 bool strstarts(const char *str, const char *prefix) { return strncmp(str, prefix, strlen(prefix)) == 0; } # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitmap.h" 2 # 90 "/lnx/src/MM/mmotm-2010-0323-1534/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 __attribute__((noderef, address_space(1))) *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 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); # 154 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/bitmap.h" static inline void bitmap_zero(unsigned long *dst, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = 0UL; else { int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); memset(dst, 0, len); } } static inline 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) <= 64)) { int len = (nlongs - 1) * sizeof(unsigned long); memset(dst, 0xff, len); } dst[nlongs - 1] = ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); } static inline void bitmap_copy(unsigned long *dst, const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = *src; else { int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); memcpy(dst, src, len); } } static inline int bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return (*dst = *src1 & *src2) != 0; return __bitmap_and(dst, src1, src2, nbits); } static inline void bitmap_or(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = *src1 | *src2; else __bitmap_or(dst, src1, src2, nbits); } static inline void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline int bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return (*dst = *src1 & ~(*src2)) != 0; return __bitmap_andnot(dst, src1, src2, nbits); } static inline void bitmap_complement(unsigned long *dst, const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = ~(*src) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); else __bitmap_complement(dst, src, nbits); } static inline int bitmap_equal(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return ! ((*src1 ^ *src2) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_equal(src1, src2, nbits); } static inline int bitmap_intersects(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return ((*src1 & *src2) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )) != 0; else return __bitmap_intersects(src1, src2, nbits); } static inline int bitmap_subset(const unsigned long *src1, const unsigned long *src2, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return ! ((*src1 & ~(*src2)) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_subset(src1, src2, nbits); } static inline int bitmap_empty(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return ! (*src & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_empty(src, nbits); } static inline int bitmap_full(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return ! (~(*src) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); else return __bitmap_full(src, nbits); } static inline int bitmap_weight(const unsigned long *src, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) return hweight_long(*src & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL )); return __bitmap_weight(src, nbits); } static inline void bitmap_shift_right(unsigned long *dst, const unsigned long *src, int n, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = *src >> n; else __bitmap_shift_right(dst, src, n, nbits); } static inline void bitmap_shift_left(unsigned long *dst, const unsigned long *src, int n, int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64)) *dst = (*src << n) & ( ((nbits) % 64) ? (1UL<<((nbits) % 64))-1 : ~0UL ); else __bitmap_shift_left(dst, src, n, nbits); } static inline int bitmap_parse(const char *buf, unsigned int buflen, unsigned long *maskp, int nmaskbits) { return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); } # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" 2 typedef struct cpumask { unsigned long bits[(((8) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } cpumask_t; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" extern int nr_cpu_ids; # 78 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 104 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline unsigned int cpumask_check(unsigned int cpu) { return cpu; } # 157 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline unsigned int cpumask_first(const struct cpumask *srcp) { return find_first_bit(((srcp)->bits), 8); } # 169 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) { if (n != -1) cpumask_check(n); return find_next_bit(((srcp)->bits), 8, n+1); } # 184 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) { if (n != -1) cpumask_check(n); return find_next_zero_bit(((srcp)->bits), 8, 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); # 254 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) { set_bit(cpumask_check(cpu), ((dstp)->bits)); } static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp) { clear_bit(cpumask_check(cpu), ((dstp)->bits)); } # 286 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) { return test_and_set_bit(cpumask_check(cpu), ((cpumask)->bits)); } # 298 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask) { return test_and_clear_bit(cpumask_check(cpu), ((cpumask)->bits)); } static inline void cpumask_setall(struct cpumask *dstp) { bitmap_fill(((dstp)->bits), 8); } static inline void cpumask_clear(struct cpumask *dstp) { bitmap_zero(((dstp)->bits), 8); } static inline int cpumask_and(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_and(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 8); } static inline void cpumask_or(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_or(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 8); } static inline void cpumask_xor(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_xor(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 8); } static inline int cpumask_andnot(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_andnot(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), 8); } static inline void cpumask_complement(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_complement(((dstp)->bits), ((srcp)->bits), 8); } static inline bool cpumask_equal(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_equal(((src1p)->bits), ((src2p)->bits), 8); } static inline bool cpumask_intersects(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_intersects(((src1p)->bits), ((src2p)->bits), 8); } static inline int cpumask_subset(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_subset(((src1p)->bits), ((src2p)->bits), 8); } static inline bool cpumask_empty(const struct cpumask *srcp) { return bitmap_empty(((srcp)->bits), 8); } static inline bool cpumask_full(const struct cpumask *srcp) { return bitmap_full(((srcp)->bits), 8); } static inline unsigned int cpumask_weight(const struct cpumask *srcp) { return bitmap_weight(((srcp)->bits), 8); } static inline void cpumask_shift_right(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_right(((dstp)->bits), ((srcp)->bits), n, 8); } static inline void cpumask_shift_left(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_left(((dstp)->bits), ((srcp)->bits), n, 8); } static inline void cpumask_copy(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_copy(((dstp)->bits), ((srcp)->bits), 8); } # 529 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpumask_scnprintf(char *buf, int len, const struct cpumask *srcp) { return bitmap_scnprintf(buf, len, ((srcp)->bits), 8); } # 543 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpumask_parse_user(const char __attribute__((noderef, address_space(1))) *buf, int len, struct cpumask *dstp) { return bitmap_parse_user(buf, len, ((dstp)->bits), 8); } # 558 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpulist_scnprintf(char *buf, int len, const struct cpumask *srcp) { return bitmap_scnlistprintf(buf, len, ((srcp)->bits), 8); } # 573 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int cpulist_parse(const char *buf, struct cpumask *dstp) { return bitmap_parselist(buf, ((dstp)->bits), 8); } static inline size_t cpumask_size(void) { return (((8) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(long); } # 618 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" typedef struct cpumask cpumask_var_t[1]; static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) { return true; } static inline bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) { return true; } static inline bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags) { cpumask_clear(*mask); return true; } static inline bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node) { cpumask_clear(*mask); return true; } static inline void alloc_bootmem_cpumask_var(cpumask_var_t *mask) { } static inline void free_cpumask_var(cpumask_var_t mask) { } static inline void free_bootmem_cpumask_var(cpumask_var_t mask) { } extern const unsigned long cpu_all_bits[(((8) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; # 670 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 692 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline int __check_is_bitmap(const unsigned long *bitmap) { return 1; } # 704 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" extern const unsigned long cpu_bit_bitmap[64 +1][(((8) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; static inline const struct cpumask *get_cpu_mask(unsigned int cpu) { const unsigned long *p = cpu_bit_bitmap[1 + cpu % 64]; p -= cpu / 64; return ((struct cpumask *)(1 ? (p) : (void *)sizeof(__check_is_bitmap(p)))); } # 781 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" int __first_cpu(const cpumask_t *srcp); int __next_cpu(int n, const cpumask_t *srcp); int __any_online_cpu(const cpumask_t *mask); # 811 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cpumask.h" static inline void __cpu_set(int cpu, volatile cpumask_t *dstp) { set_bit(cpu, dstp->bits); } static inline void __cpu_clear(int cpu, volatile cpumask_t *dstp) { clear_bit(cpu, dstp->bits); } static inline void __cpus_setall(cpumask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline void __cpus_clear(cpumask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline int __cpu_test_and_set(int cpu, cpumask_t *addr) { return test_and_set_bit(cpu, addr->bits); } static inline 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 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 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 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 int __cpus_equal(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline int __cpus_intersects(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline int __cpus_subset(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline int __cpus_empty(const cpumask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline int __cpus_weight(const cpumask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline void __cpus_shift_left(cpumask_t *dstp, const cpumask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cpumask.h" 2 extern cpumask_var_t cpu_callin_mask; extern cpumask_var_t cpu_callout_mask; extern cpumask_var_t cpu_initialized_mask; extern cpumask_var_t cpu_sibling_setup_mask; extern void setup_cpu_local_masks(void); # 19 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 2 struct msr { union { struct { u32 l; u32 h; }; u64 q; }; }; struct msr_info { u32 msr_no; struct msr reg; struct msr *msrs; int err; }; struct msr_regs_info { u32 *regs; int err; }; static inline unsigned long long native_read_tscp(unsigned int *aux) { unsigned long low, high; asm volatile(".byte 0x0f,0x01,0xf9" : "=a" (low), "=d" (high), "=c" (*aux)); return low | ((u64)high << 32); } # 68 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" static inline unsigned long long native_read_msr(unsigned int msr) { unsigned low, high; asm volatile("rdmsr" : "=a" (low), "=d" (high) : "c" (msr)); return ((low) | ((u64)(high) << 32)); } static inline unsigned long long native_read_msr_safe(unsigned int msr, int *err) { unsigned low, high; asm volatile("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "2b" "," "3b" "\n" " .previous\n" : [err] "=r" (*err), "=a" (low), "=d" (high) : "c" (msr), [fault] "i" (-5)); return ((low) | ((u64)(high) << 32)); } static inline void native_write_msr(unsigned int msr, unsigned low, unsigned high) { asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory"); } __attribute__((no_instrument_function)) static inline int native_write_msr_safe(unsigned int msr, unsigned low, unsigned high) { int err; asm volatile("2: wrmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "2b" "," "3b" "\n" " .previous\n" : [err] "=a" (err) : "c" (msr), "0" (low), "d" (high), [fault] "i" (-5) : "memory"); return err; } extern unsigned long long native_read_tsc(void); extern int native_rdmsr_safe_regs(u32 regs[8]); extern int native_wrmsr_safe_regs(u32 regs[8]); static inline __attribute__((always_inline)) unsigned long long __native_read_tsc(void) { unsigned low, high; asm volatile("rdtsc" : "=a" (low), "=d" (high)); return ((low) | ((u64)(high) << 32)); } static inline unsigned long long native_read_pmc(int counter) { unsigned low, high; asm volatile("rdpmc" : "=a" (low), "=d" (high) : "c" (counter)); return ((low) | ((u64)(high) << 32)); } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/errno.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/errno.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/errno.h" 2 # 142 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" 2 # 155 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" static inline void wrmsr(unsigned msr, unsigned low, unsigned high) { native_write_msr(msr, low, high); } # 167 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high) { return native_write_msr_safe(msr, low, high); } # 182 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) { int err; *p = native_read_msr_safe(msr, &err); return err; } static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p) { u32 gprs[8] = { 0 }; int err; gprs[1] = msr; gprs[7] = 0x9c5a203a; err = native_rdmsr_safe_regs(gprs); *p = gprs[0] | ((u64)gprs[2] << 32); return err; } static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val) { u32 gprs[8] = { 0 }; gprs[0] = (u32)val; gprs[1] = msr; gprs[2] = val >> 32; gprs[7] = 0x9c5a203a; return native_wrmsr_safe_regs(gprs); } static inline int rdmsr_safe_regs(u32 regs[8]) { return native_rdmsr_safe_regs(regs); } static inline int wrmsr_safe_regs(u32 regs[8]) { return native_wrmsr_safe_regs(regs); } # 259 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msr.h" struct msr *msrs_alloc(void); void msrs_free(struct msr *msrs); int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs); void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs); int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); int rdmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]); int wrmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]); # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/desc_defs.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/desc_defs.h" struct desc_struct { union { struct { unsigned int a; unsigned int b; }; struct { u16 limit0; u16 base0; unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1; unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8; }; }; } __attribute__((packed)); enum { GATE_INTERRUPT = 0xE, GATE_TRAP = 0xF, GATE_CALL = 0xC, GATE_TASK = 0x5, }; struct gate_struct64 { u16 offset_low; u16 segment; unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1; u16 offset_middle; u32 offset_high; u32 zero1; } __attribute__((packed)); enum { DESC_TSS = 0x9, DESC_LDT = 0x2, DESCTYPE_S = 0x10, }; struct ldttss_desc64 { u16 limit0; u16 base0; unsigned base1 : 8, type : 5, dpl : 2, p : 1; unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8; u32 base3; u32 zero1; } __attribute__((packed)); typedef struct gate_struct64 gate_desc; typedef struct ldttss_desc64 ldt_desc; typedef struct ldttss_desc64 tss_desc; # 94 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/desc_defs.h" struct desc_ptr { unsigned short size; unsigned long address; } __attribute__((packed)) ; # 23 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ds.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ds.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/err.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/errno.h" 1 # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/err.h" 2 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/err.h" static inline void * ERR_PTR(long error) { return (void *) error; } static inline long PTR_ERR(const void *ptr) { return (long) ptr; } static inline long IS_ERR(const void *ptr) { return __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); } static inline long IS_ERR_OR_NULL(const void *ptr) { return !ptr || __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); } # 49 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/err.h" static inline void * ERR_CAST(const void *ptr) { return (void *) ptr; } # 29 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ds.h" 2 # 296 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ds.h" struct cpuinfo_x86; static inline void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) ds_init_intel(struct cpuinfo_x86 *ignored) {} static inline void ds_switch_to(struct task_struct *prev, struct task_struct *next) {} # 25 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/personality.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/personality.h" struct exec_domain; struct pt_regs; extern int register_exec_domain(struct exec_domain *); extern int unregister_exec_domain(struct exec_domain *); extern int __set_personality(unsigned long); # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/personality.h" enum { ADDR_NO_RANDOMIZE = 0x0040000, FDPIC_FUNCPTRS = 0x0080000, MMAP_PAGE_ZERO = 0x0100000, ADDR_COMPAT_LAYOUT = 0x0200000, READ_IMPLIES_EXEC = 0x0400000, ADDR_LIMIT_32BIT = 0x0800000, SHORT_INODE = 0x1000000, WHOLE_SECONDS = 0x2000000, STICKY_TIMEOUTS = 0x4000000, ADDR_LIMIT_3GB = 0x8000000, }; # 54 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/personality.h" enum { PER_LINUX = 0x0000, PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE, PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, PER_BSD = 0x0006, PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, PER_LINUX32 = 0x0008, PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS, PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS, PER_IRIX64 = 0x000b | STICKY_TIMEOUTS, PER_RISCOS = 0x000c, PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_OSF4 = 0x000f, PER_HPUX = 0x0010, PER_MASK = 0x00ff, }; # 89 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/personality.h" typedef void (*handler_t)(int, struct pt_regs *); struct exec_domain { const char *name; handler_t handler; unsigned char pers_low; unsigned char pers_high; unsigned long *signal_map; unsigned long *signal_invmap; struct map_segment *err_map; struct map_segment *socktype_map; struct map_segment *sockopt_map; struct map_segment *af_map; struct module *module; struct exec_domain *next; }; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cache.h" 1 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/math64.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/div64.h" 1 # 57 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/div64.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/div64.h" 1 # 58 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/div64.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/math64.h" 2 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/math64.h" static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) { *remainder = dividend % divisor; return dividend / divisor; } static inline s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder) { *remainder = dividend % divisor; return dividend / divisor; } static inline u64 div64_u64(u64 dividend, u64 divisor) { return dividend / divisor; } # 66 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/math64.h" static inline u64 div_u64(u64 dividend, u32 divisor) { u32 remainder; return div_u64_rem(dividend, divisor, &remainder); } static inline 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)) 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; } # 31 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" 2 static inline void *current_text_addr(void) { void *pc; asm volatile("mov $1f, %0; 1:":"=r" (pc)); return pc; } # 61 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" struct cpuinfo_x86 { __u8 x86; __u8 x86_vendor; __u8 x86_model; __u8 x86_mask; # 79 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" int x86_tlbsize; __u8 x86_virt_bits; __u8 x86_phys_bits; __u8 x86_coreid_bits; __u32 extended_cpuid_level; int cpuid_level; __u32 x86_capability[9]; char x86_vendor_id[16]; char x86_model_id[64]; int x86_cache_size; int x86_cache_alignment; int x86_power; unsigned long loops_per_jiffy; cpumask_var_t llc_shared_map; u16 x86_max_cores; u16 apicid; u16 initial_apicid; u16 x86_clflush_size; u16 booted_cores; u16 phys_proc_id; u16 cpu_core_id; u16 cpu_index; unsigned int x86_hyper_vendor; } __attribute__((__aligned__((1 << (6))))); # 136 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" extern struct cpuinfo_x86 boot_cpu_data; extern struct cpuinfo_x86 new_cpu_data; extern struct tss_struct doublefault_tss; extern __u32 cpu_caps_cleared[9]; extern __u32 cpu_caps_set[9]; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(struct cpuinfo_x86) cpu_info __attribute__((__aligned__((1 << (6))))); extern const struct seq_operations cpuinfo_op; static inline int hlt_works(int cpu) { return 1; } extern void cpu_detect(struct cpuinfo_x86 *c); extern struct pt_regs *idle_regs(struct pt_regs *); extern void early_cpu_init(void); extern void identify_boot_cpu(void); extern void identify_secondary_cpu(struct cpuinfo_x86 *); extern void print_cpu_info(struct cpuinfo_x86 *); extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c); extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c); extern unsigned short num_cache_leaves; extern void detect_extended_topology(struct cpuinfo_x86 *c); extern void detect_ht(struct cpuinfo_x86 *c); static inline void native_cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { asm volatile("cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (*eax), "2" (*ecx)); } static inline void load_cr3(pgd_t *pgdir) { (native_write_cr3(__phys_addr((unsigned long)(pgdir)))); } # 231 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" struct x86_hw_tss { u32 reserved1; u64 sp0; u64 sp1; u64 sp2; u64 reserved2; u64 ist[7]; u32 reserved3; u32 reserved4; u16 reserved5; u16 io_bitmap_base; } __attribute__((packed)) __attribute__((__aligned__((1 << (6))))); # 255 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" struct tss_struct { struct x86_hw_tss x86_tss; unsigned long io_bitmap[((65536/8)/sizeof(long)) + 1]; unsigned long stack[64]; } __attribute__((__aligned__((1 << (6))))); extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(struct tss_struct) init_tss __attribute__((__aligned__((1 << (6))))); struct orig_ist { unsigned long ist[7]; }; struct i387_fsave_struct { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20]; u32 status; }; struct i387_fxsave_struct { u16 cwd; u16 swd; u16 twd; u16 fop; union { struct { u64 rip; u64 rdp; }; struct { u32 fip; u32 fcs; u32 foo; u32 fos; }; }; u32 mxcsr; u32 mxcsr_mask; u32 st_space[32]; u32 xmm_space[64]; u32 padding[12]; union { u32 padding1[12]; u32 sw_reserved[12]; }; } __attribute__((aligned(16))); struct i387_soft_struct { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20]; u8 ftop; u8 changed; u8 lookahead; u8 no_update; u8 rm; u8 alimit; struct math_emu_info *info; u32 entry_eip; }; struct ymmh_struct { u32 ymmh_space[64]; }; struct xsave_hdr_struct { u64 xstate_bv; u64 reserved1[2]; u64 reserved2[5]; } __attribute__((packed)); struct xsave_struct { struct i387_fxsave_struct i387; struct xsave_hdr_struct xsave_hdr; struct ymmh_struct ymmh; } __attribute__ ((packed, aligned (64))); union thread_xstate { struct i387_fsave_struct fsave; struct i387_fxsave_struct fxsave; struct i387_soft_struct soft; struct xsave_struct xsave; }; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct orig_ist) orig_ist; union irq_stack_union { char irq_stack[(((1UL) << 12) << 2)]; struct { char gs_base[40]; unsigned long stack_canary; }; }; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" "..first"))) __typeof__(union irq_stack_union) irq_stack_union; extern typeof(irq_stack_union) init_per_cpu__irq_stack_union; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(char *) irq_stack_ptr; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(unsigned int) irq_count; extern unsigned long kernel_eflags; extern void ignore_sysret(void); # 422 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" extern unsigned int xstate_size; extern void free_thread_xstate(struct task_struct *); extern struct kmem_cache *task_xstate_cachep; struct perf_event; struct thread_struct { struct desc_struct tls_array[3]; unsigned long sp0; unsigned long sp; unsigned long usersp; unsigned short es; unsigned short ds; unsigned short fsindex; unsigned short gsindex; unsigned long fs; unsigned long gs; struct perf_event *ptrace_bps[4]; unsigned long debugreg6; unsigned long ptrace_dr7; unsigned long cr2; unsigned long trap_no; unsigned long error_code; union thread_xstate *xstate; # 472 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" unsigned long *io_bitmap_ptr; unsigned long iopl; unsigned io_bitmap_max; unsigned long debugctlmsr; struct ds_context *ds_ctx; }; static inline unsigned long native_get_debugreg(int regno) { unsigned long val = 0; switch (regno) { case 0: asm("mov %%db0, %0" :"=r" (val)); break; case 1: asm("mov %%db1, %0" :"=r" (val)); break; case 2: asm("mov %%db2, %0" :"=r" (val)); break; case 3: asm("mov %%db3, %0" :"=r" (val)); break; case 6: asm("mov %%db6, %0" :"=r" (val)); break; case 7: asm("mov %%db7, %0" :"=r" (val)); break; default: do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h"), "i" (506), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } return val; } static inline void native_set_debugreg(int regno, unsigned long value) { switch (regno) { case 0: asm("mov %0, %%db0" ::"r" (value)); break; case 1: asm("mov %0, %%db1" ::"r" (value)); break; case 2: asm("mov %0, %%db2" ::"r" (value)); break; case 3: asm("mov %0, %%db3" ::"r" (value)); break; case 6: asm("mov %0, %%db6" ::"r" (value)); break; case 7: asm("mov %0, %%db7" ::"r" (value)); break; default: do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h"), "i" (533), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } } static inline void native_set_iopl_mask(unsigned mask) { # 554 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" } static inline void native_load_sp0(struct tss_struct *tss, struct thread_struct *thread) { tss->x86_tss.sp0 = thread->sp0; } static inline void native_swapgs(void) { asm volatile("swapgs" ::: "memory"); } # 590 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" static inline void load_sp0(struct tss_struct *tss, struct thread_struct *thread) { native_load_sp0(tss, thread); } # 605 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" extern unsigned long mmu_cr4_features; static inline void set_in_cr4(unsigned long mask) { unsigned cr4; mmu_cr4_features |= mask; cr4 = (native_read_cr4()); cr4 |= mask; (native_write_cr4(cr4)); } static inline void clear_in_cr4(unsigned long mask) { unsigned cr4; mmu_cr4_features &= ~mask; cr4 = (native_read_cr4()); cr4 &= ~mask; (native_write_cr4(cr4)); } typedef struct { unsigned long seg; } mm_segment_t; extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); extern void release_thread(struct task_struct *); extern void prepare_to_copy(struct task_struct *tsk); unsigned long get_wchan(struct task_struct *p); static inline void cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { *eax = op; *ecx = 0; native_cpuid(eax, ebx, ecx, edx); } static inline void cpuid_count(unsigned int op, int count, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { *eax = op; *ecx = count; native_cpuid(eax, ebx, ecx, edx); } static inline unsigned int cpuid_eax(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return eax; } static inline unsigned int cpuid_ebx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return ebx; } static inline unsigned int cpuid_ecx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return ecx; } static inline unsigned int cpuid_edx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return edx; } static inline void rep_nop(void) { asm volatile("rep; nop" ::: "memory"); } static inline void cpu_relax(void) { rep_nop(); } static inline void sync_core(void) { int tmp; # 734 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" asm volatile("cpuid" : "=a" (tmp) : "0" (1) : "ebx", "ecx", "edx", "memory"); } static inline void __monitor(const void *eax, unsigned long ecx, unsigned long edx) { asm volatile(".byte 0x0f, 0x01, 0xc8;" :: "a" (eax), "c" (ecx), "d"(edx)); } static inline void __mwait(unsigned long eax, unsigned long ecx) { asm volatile(".byte 0x0f, 0x01, 0xc9;" :: "a" (eax), "c" (ecx)); } static inline void __sti_mwait(unsigned long eax, unsigned long ecx) { trace_hardirqs_on(); asm volatile("sti; .byte 0x0f, 0x01, 0xc9;" :: "a" (eax), "c" (ecx)); } extern void mwait_idle_with_hints(unsigned long eax, unsigned long ecx); extern void select_idle_routine(const struct cpuinfo_x86 *c); extern void init_c1e_mask(void); extern unsigned long boot_option_idle_override; extern unsigned long idle_halt; extern unsigned long idle_nomwait; # 782 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" static inline void wbinvd_halt(void) { asm volatile("mfence":::"memory"); if ((__builtin_constant_p((0*32+19)) && ( ((((0*32+19))>>5)==0 && (1UL<<(((0*32+19))&31) & ((1<<((0*32+ 0) & 31))|(1<<((0*32+ 3)) & 31)|(1<<((0*32+ 5) & 31))|(1<<((0*32+ 6) & 31))| (1<<((0*32+ 8) & 31))|(1<<((0*32+13)) & 31)|(1<<((0*32+24) & 31))|(1<<((0*32+15) & 31))| (1<<((0*32+25) & 31))|(1<<((0*32+26) & 31))))) || ((((0*32+19))>>5)==1 && (1UL<<(((0*32+19))&31) & ((1<<((1*32+29) & 31))|0))) || ((((0*32+19))>>5)==2 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==3 && (1UL<<(((0*32+19))&31) & ((1<<((3*32+20) & 31))))) || ((((0*32+19))>>5)==4 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==5 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==6 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==7 && (1UL<<(((0*32+19))&31) & 0)) ) ? 1 : (__builtin_constant_p(((0*32+19))) ? constant_test_bit(((0*32+19)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((0*32+19)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))) asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory"); else while (1) halt(); } extern void enable_sep_cpu(void); extern int sysenter_setup(void); extern void early_trap_init(void); extern struct desc_ptr early_gdt_descr; extern void cpu_set_gdt(int); extern void switch_to_new_gdt(int); extern void load_percpu_segment(int); extern void cpu_init(void); static inline unsigned long get_debugctlmsr(void) { unsigned long debugctlmsr = 0; ((debugctlmsr) = native_read_msr((0x000001d9))); return debugctlmsr; } static inline unsigned long get_debugctlmsr_on_cpu(int cpu) { u64 debugctlmsr = 0; u32 val1, val2; rdmsr_on_cpu(cpu, 0x000001d9, &val1, &val2); debugctlmsr = val1 | ((u64)val2 << 32); return debugctlmsr; } static inline void update_debugctlmsr(unsigned long debugctlmsr) { native_write_msr((0x000001d9), (u32)((u64)(debugctlmsr)), (u32)((u64)(debugctlmsr) >> 32)); } static inline void update_debugctlmsr_on_cpu(int cpu, unsigned long debugctlmsr) { wrmsr_on_cpu(cpu, 0x000001d9, (u32)((u64)debugctlmsr), (u32)((u64)debugctlmsr >> 32)); } extern unsigned int machine_id; extern unsigned int machine_submodel_id; extern unsigned int BIOS_revision; extern int bootloader_type; extern int bootloader_version; extern char ignore_fpu_irq; # 886 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" static inline void prefetch(const void *x) { asm volatile ("661:\n\t" "prefetcht0 (%1)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(0*32+25)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "prefetchnta (%1)" "\n664:\n" ".previous" : : "i" (0), "r" (x)); } static inline void prefetchw(const void *x) { asm volatile ("661:\n\t" "prefetcht0 (%1)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(1*32+31)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "prefetchw (%1)" "\n664:\n" ".previous" : : "i" (0), "r" (x)); } static inline void spin_lock_prefetch(const void *x) { prefetchw(x); } # 1007 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" extern unsigned long KSTK_ESP(struct task_struct *task); extern void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp); # 1025 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h" extern int get_tsc_mode(unsigned long adr); extern int set_tsc_mode(unsigned int val); extern int amd_get_nb_id(int cpu); struct aperfmperf { u64 aperf, mperf; }; static inline void get_aperfmperf(struct aperfmperf *am) { ({ static bool __warned; int __ret_warn_once = !!(!(__builtin_constant_p((3*32+28)) && ( ((((3*32+28))>>5)==0 && (1UL<<(((3*32+28))&31) & ((1<<((0*32+ 0) & 31))|(1<<((0*32+ 3)) & 31)|(1<<((0*32+ 5) & 31))|(1<<((0*32+ 6) & 31))| (1<<((0*32+ 8) & 31))|(1<<((0*32+13)) & 31)|(1<<((0*32+24) & 31))|(1<<((0*32+15) & 31))| (1<<((0*32+25) & 31))|(1<<((0*32+26) & 31))))) || ((((3*32+28))>>5)==1 && (1UL<<(((3*32+28))&31) & ((1<<((1*32+29) & 31))|0))) || ((((3*32+28))>>5)==2 && (1UL<<(((3*32+28))&31) & 0)) || ((((3*32+28))>>5)==3 && (1UL<<(((3*32+28))&31) & ((1<<((3*32+20) & 31))))) || ((((3*32+28))>>5)==4 && (1UL<<(((3*32+28))&31) & 0)) || ((((3*32+28))>>5)==5 && (1UL<<(((3*32+28))&31) & 0)) || ((((3*32+28))>>5)==6 && (1UL<<(((3*32+28))&31) & 0)) || ((((3*32+28))>>5)==7 && (1UL<<(((3*32+28))&31) & 0)) ) ? 1 : (__builtin_constant_p(((3*32+28))) ? constant_test_bit(((3*32+28)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((3*32+28)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))); if (__builtin_expect(!!(__ret_warn_once), 0)) if (({ int __ret_warn_on = !!(!__warned); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/processor.h", 1036); __builtin_expect(!!(__ret_warn_on), 0); })) __warned = true; __builtin_expect(!!(__ret_warn_once), 0); }); ((am->aperf) = native_read_msr((0x000000e8))); ((am->mperf) = native_read_msr((0x000000e7))); } static inline unsigned long calc_aperfmperf_ratio(struct aperfmperf *old, struct aperfmperf *new) { u64 aperf = new->aperf - old->aperf; u64 mperf = new->mperf - old->mperf; unsigned long ratio = aperf; mperf >>= 10; if (mperf) ratio = div64_u64(aperf, mperf); return ratio; } # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prefetch.h" 2 # 53 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prefetch.h" static inline void prefetch_range(void *addr, size_t len) { } # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" 2 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" struct list_head { struct list_head *next, *prev; }; static inline void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { next->prev = new; new->next = next; new->prev = prev; prev->next = new; } # 64 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 78 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } # 90 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; } # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->next = ((void *) 0x00100100 + (0xdead000000000000UL)); entry->prev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 120 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline 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 void list_replace_init(struct list_head *old, struct list_head *new) { list_replace(old, new); INIT_LIST_HEAD(old); } static inline void list_del_init(struct list_head *entry) { __list_del(entry->prev, entry->next); INIT_LIST_HEAD(entry); } static inline void list_move(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add(list, head); } static inline void list_move_tail(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add_tail(list, head); } static inline int list_is_last(const struct list_head *list, const struct list_head *head) { return list->next == head; } static inline int list_empty(const struct list_head *head) { return head->next == head; } # 202 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline int list_empty_careful(const struct list_head *head) { struct list_head *next = head->next; return (next == head) && (next == head->prev); } static inline 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 int list_is_singular(const struct list_head *head) { return !list_empty(head) && (head->next == head->prev); } static inline 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; } # 257 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline 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 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 void list_splice(const struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head, head->next); } static inline void list_splice_tail(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head->prev, head); } # 316 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline 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); } } # 333 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" static inline 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); } } # 554 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list.h" struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; static inline void INIT_HLIST_NODE(struct hlist_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline int hlist_unhashed(const struct hlist_node *h) { return !h->pprev; } static inline int hlist_empty(const struct hlist_head *h) { return !h->first; } static inline 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 void hlist_del(struct hlist_node *n) { __hlist_del(n); n->next = ((void *) 0x00100100 + (0xdead000000000000UL)); n->pprev = ((void *) 0x00200200 + (0xdead000000000000UL)); } static inline void hlist_del_init(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); INIT_HLIST_NODE(n); } } static inline 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 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 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 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" 1 # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 1 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/thread_info.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/thread_info.h" struct timespec; struct compat_timespec; struct restart_block { long (*fn)(struct restart_block *); union { struct { unsigned long arg0, arg1, arg2, arg3; }; struct { u32 *uaddr; u32 val; u32 flags; u32 bitset; u64 time; u32 *uaddr2; } futex; struct { clockid_t index; struct timespec __attribute__((noderef, address_space(1))) *rmtp; struct compat_timespec __attribute__((noderef, address_space(1))) *compat_rmtp; u64 expires; } nanosleep; struct { struct pollfd __attribute__((noderef, address_space(1))) *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 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" 1 # 20 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" struct task_struct; struct exec_domain; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ftrace.h" 1 # 36 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ftrace.h" extern void mcount(void); static inline unsigned long ftrace_call_adjust(unsigned long addr) { return addr - 1; } # 24 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cmpxchg.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" 2 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_read(const atomic_t *v) { return v->counter; } # 35 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline void atomic_set(atomic_t *v, int i) { v->counter = i; } # 47 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline void atomic_add(int i, atomic_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addl %1,%0" : "+m" (v->counter) : "ir" (i)); } # 61 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline void atomic_sub(int i, atomic_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "subl %1,%0" : "+m" (v->counter) : "ir" (i)); } # 77 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_sub_and_test(int i, atomic_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "subl %2,%0; sete %1" : "+m" (v->counter), "=qm" (c) : "ir" (i) : "memory"); return c; } static inline void atomic_inc(atomic_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "incl %0" : "+m" (v->counter)); } static inline void atomic_dec(atomic_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "decl %0" : "+m" (v->counter)); } # 119 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "decl %0; sete %1" : "+m" (v->counter), "=qm" (c) : : "memory"); return c != 0; } # 137 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_inc_and_test(atomic_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "incl %0; sete %1" : "+m" (v->counter), "=qm" (c) : : "memory"); return c != 0; } # 156 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_add_negative(int i, atomic_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addl %2,%0; sets %1" : "+m" (v->counter), "=qm" (c) : "ir" (i) : "memory"); return c; } # 173 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_add_return(int i, atomic_t *v) { int __i; __i = i; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "xaddl %0, %1" : "+r" (i), "+m" (v->counter) : : "memory"); return i + __i; # 196 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" } # 205 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_sub_return(int i, atomic_t *v) { return atomic_add_return(-i, v); } static inline int atomic_cmpxchg(atomic_t *v, int old, int new) { return ({ __typeof__(*(((&v->counter)))) __ret; __typeof__(*(((&v->counter)))) __old = (((old))); __typeof__(*(((&v->counter)))) __new = (((new))); switch ((sizeof(*&v->counter))) { case 1: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgb %b1,%2" : "=a"(__ret) : "q"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 2: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgw %w1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 4: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgl %k1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 8: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgq %1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; default: __cmpxchg_wrong_size(); } __ret; }); } static inline int atomic_xchg(atomic_t *v, int new) { return ({ __typeof(*((&v->counter))) __x = ((new)); switch (sizeof(*&v->counter)) { case 1: asm volatile("xchgb %b0,%1" : "=q" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; default: __xchg_wrong_size(); } __x; }); } # 232 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline int atomic_add_unless(atomic_t *v, int a, int u) { int c, old; c = atomic_read(v); for (;;) { if (__builtin_expect(!!(c == (u)), 0)) break; old = atomic_cmpxchg((v), c, c + (a)); if (__builtin_expect(!!(old == c), 1)) break; c = old; } return c != (u); } # 256 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline short int atomic_inc_short(short int *v) { asm(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addw $1, %0" : "+m" (*v)); return *v; } # 271 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" static inline void atomic_or_long(unsigned long *v1, unsigned long v2) { asm(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "orq %1, %0" : "+m" (*v1) : "r" (v2)); } # 296 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cmpxchg.h" 1 # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" 2 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline long atomic64_read(const atomic64_t *v) { return v->counter; } # 31 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline void atomic64_set(atomic64_t *v, long i) { v->counter = i; } # 43 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline void atomic64_add(long i, atomic64_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addq %1,%0" : "=m" (v->counter) : "er" (i), "m" (v->counter)); } # 57 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline void atomic64_sub(long i, atomic64_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "subq %1,%0" : "=m" (v->counter) : "er" (i), "m" (v->counter)); } # 73 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline int atomic64_sub_and_test(long i, atomic64_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "subq %2,%0; sete %1" : "=m" (v->counter), "=qm" (c) : "er" (i), "m" (v->counter) : "memory"); return c; } static inline void atomic64_inc(atomic64_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "incq %0" : "=m" (v->counter) : "m" (v->counter)); } static inline void atomic64_dec(atomic64_t *v) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "decq %0" : "=m" (v->counter) : "m" (v->counter)); } # 117 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline int atomic64_dec_and_test(atomic64_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "decq %0; sete %1" : "=m" (v->counter), "=qm" (c) : "m" (v->counter) : "memory"); return c != 0; } # 135 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline int atomic64_inc_and_test(atomic64_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "incq %0; sete %1" : "=m" (v->counter), "=qm" (c) : "m" (v->counter) : "memory"); return c != 0; } # 154 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline int atomic64_add_negative(long i, atomic64_t *v) { unsigned char c; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addq %2,%0; sets %1" : "=m" (v->counter), "=qm" (c) : "er" (i), "m" (v->counter) : "memory"); return c; } # 171 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline long atomic64_add_return(long i, atomic64_t *v) { long __i = i; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "xaddq %0, %1;" : "+r" (i), "+m" (v->counter) : : "memory"); return i + __i; } static inline long atomic64_sub_return(long i, atomic64_t *v) { return atomic64_add_return(-i, v); } static inline long atomic64_cmpxchg(atomic64_t *v, long old, long new) { return ({ __typeof__(*(((&v->counter)))) __ret; __typeof__(*(((&v->counter)))) __old = (((old))); __typeof__(*(((&v->counter)))) __new = (((new))); switch ((sizeof(*&v->counter))) { case 1: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgb %b1,%2" : "=a"(__ret) : "q"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 2: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgw %w1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 4: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgl %k1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; case 8: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgq %1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&v->counter))))), "0"(__old) : "memory"); break; default: __cmpxchg_wrong_size(); } __ret; }); } static inline long atomic64_xchg(atomic64_t *v, long new) { return ({ __typeof(*((&v->counter))) __x = ((new)); switch (sizeof(*&v->counter)) { case 1: asm volatile("xchgb %b0,%1" : "=q" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (__x) : "m" (*((volatile long *)((&v->counter)))), "0" (__x) : "memory"); break; default: __xchg_wrong_size(); } __x; }); } # 207 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic64_64.h" static inline int atomic64_add_unless(atomic64_t *v, long a, long u) { long c, old; c = atomic64_read(v); for (;;) { if (__builtin_expect(!!(c == (u)), 0)) break; old = atomic64_cmpxchg((v), c, c + (a)); if (__builtin_expect(!!(old == c), 1)) break; c = old; } return c != (u); } # 297 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/atomic-long.h" 1 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/atomic-long.h" typedef atomic64_t atomic_long_t; static inline long atomic_long_read(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)atomic64_read(v); } static inline void atomic_long_set(atomic_long_t *l, long i) { atomic64_t *v = (atomic64_t *)l; atomic64_set(v, i); } static inline void atomic_long_inc(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; atomic64_inc(v); } static inline void atomic_long_dec(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; atomic64_dec(v); } static inline void atomic_long_add(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; atomic64_add(i, v); } static inline void atomic_long_sub(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; atomic64_sub(i, v); } static inline int atomic_long_sub_and_test(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return atomic64_sub_and_test(i, v); } static inline int atomic_long_dec_and_test(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return atomic64_dec_and_test(v); } static inline int atomic_long_inc_and_test(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return atomic64_inc_and_test(v); } static inline int atomic_long_add_negative(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return atomic64_add_negative(i, v); } static inline long atomic_long_add_return(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)atomic64_add_return(i, v); } static inline long atomic_long_sub_return(long i, atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)atomic64_sub_return(i, v); } static inline long atomic_long_inc_return(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)(atomic64_add_return(1, (v))); } static inline long atomic_long_dec_return(atomic_long_t *l) { atomic64_t *v = (atomic64_t *)l; return (long)(atomic64_sub_return(1, (v))); } static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u) { atomic64_t *v = (atomic64_t *)l; return (long)atomic64_add_unless(v, a, u); } # 300 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/atomic.h" 2 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" 2 struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; __u32 flags; __u32 status; __u32 cpu; int preempt_count; mm_segment_t addr_limit; struct restart_block restart_block; void __attribute__((noderef, address_space(1))) *sysenter_return; int uaccess_err; }; # 213 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(unsigned long) kernel_stack; static inline struct thread_info *current_thread_info(void) { struct thread_info *ti; ti = (void *)(({ typeof(kernel_stack) pfo_ret__; switch (sizeof(kernel_stack)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "p" (&(kernel_stack))); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(kernel_stack))); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(kernel_stack))); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "p" (&(kernel_stack))); break; default: __bad_percpu_size(); } pfo_ret__; }) + (5*8) - (((1UL) << 12) << 1)); return ti; } # 253 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/thread_info.h" static inline void set_restore_sigmask(void) { struct thread_info *ti = current_thread_info(); ti->status |= 0x0008; set_bit(2, (unsigned long *)&ti->flags); } extern void arch_task_cache_init(void); extern void free_thread_info(struct thread_info *ti); extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/thread_info.h" 2 # 65 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/thread_info.h" static inline void set_ti_thread_flag(struct thread_info *ti, int flag) { set_bit(flag, (unsigned long *)&ti->flags); } static inline void clear_ti_thread_flag(struct thread_info *ti, int flag) { clear_bit(flag, (unsigned long *)&ti->flags); } static inline 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 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 int test_ti_thread_flag(struct thread_info *ti, int flag) { return (__builtin_constant_p((flag)) ? constant_test_bit((flag), ((unsigned long *)&ti->flags)) : variable_test_bit((flag), ((unsigned long *)&ti->flags))); } # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" 2 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" void preempt_schedule(void); # 98 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" struct preempt_notifier; # 114 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" struct preempt_ops { void (*sched_in)(struct preempt_notifier *notifier, int cpu); void (*sched_out)(struct preempt_notifier *notifier, struct task_struct *next); }; # 127 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/preempt.h" struct preempt_notifier { struct hlist_node link; struct preempt_ops *ops; }; void preempt_notifier_register(struct preempt_notifier *notifier); void preempt_notifier_unregister(struct preempt_notifier *notifier); static inline void preempt_notifier_init(struct preempt_notifier *notifier, struct preempt_ops *ops) { INIT_HLIST_NODE(¬ifier->link); notifier->ops = ops; } # 51 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 80 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock_types.h" 1 typedef struct arch_spinlock { unsigned int slock; } arch_spinlock_t; typedef struct { unsigned int lock; } arch_rwlock_t; # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/lockdep.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/lockdep.h" struct task_struct; struct lockdep_map; extern int prove_locking; extern int lock_stat; # 337 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/lockdep.h" static inline void lockdep_off(void) { } static inline void lockdep_on(void) { } # 378 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/lockdep.h" struct lock_class_key { }; # 428 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/lockdep.h" extern void early_init_irq_lock_class(void); extern void early_boot_irqs_off(void); extern void early_boot_irqs_on(void); extern void print_irqtrace_events(struct task_struct *curr); # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" 2 typedef struct raw_spinlock { arch_spinlock_t raw_lock; # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" } raw_spinlock_t; # 64 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" typedef struct spinlock { union { struct raw_spinlock rlock; # 75 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" }; } spinlock_t; # 94 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_types.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_types.h" typedef struct { arch_rwlock_t raw_lock; # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_types.h" } rwlock_t; # 95 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_types.h" 2 # 81 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwlock.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/paravirt.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" 2 # 61 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" static inline __attribute__((always_inline)) void __ticket_spin_lock(arch_spinlock_t *lock) { short inc = 0x0100; asm volatile ( ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "xaddw %w0, %1\n" "1:\t" "cmpb %h0, %b0\n\t" "je 2f\n\t" "rep ; nop\n\t" "movb %1, %b0\n\t" "jmp 1b\n" "2:" : "+Q" (inc), "+m" (lock->slock) : : "memory", "cc"); } static inline __attribute__((always_inline)) int __ticket_spin_trylock(arch_spinlock_t *lock) { int tmp, new; asm volatile("movzwl %2, %0\n\t" "cmpb %h0,%b0\n\t" "leal 0x100(%" "q" "0), %1\n\t" "jne 1f\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgw %w1,%2\n\t" "1:" "sete %b1\n\t" "movzbl %b1,%0\n\t" : "=&a" (tmp), "=&q" (new), "+m" (lock->slock) : : "memory", "cc"); return tmp; } static inline __attribute__((always_inline)) void __ticket_spin_unlock(arch_spinlock_t *lock) { asm volatile( "incb %0" : "+m" (lock->slock) : : "memory", "cc"); } # 161 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" static inline int __ticket_spin_is_locked(arch_spinlock_t *lock) { int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock)); return !!(((tmp >> 8) ^ tmp) & ((1 << 8) - 1)); } static inline int __ticket_spin_is_contended(arch_spinlock_t *lock) { int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock)); return (((tmp >> 8) - tmp) & ((1 << 8) - 1)) > 1; } static inline int arch_spin_is_locked(arch_spinlock_t *lock) { return __ticket_spin_is_locked(lock); } static inline int arch_spin_is_contended(arch_spinlock_t *lock) { return __ticket_spin_is_contended(lock); } static inline __attribute__((always_inline)) void arch_spin_lock(arch_spinlock_t *lock) { __ticket_spin_lock(lock); } static inline __attribute__((always_inline)) int arch_spin_trylock(arch_spinlock_t *lock) { return __ticket_spin_trylock(lock); } static inline __attribute__((always_inline)) void arch_spin_unlock(arch_spinlock_t *lock) { __ticket_spin_unlock(lock); } static inline __attribute__((always_inline)) void arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long flags) { arch_spin_lock(lock); } static inline void arch_spin_unlock_wait(arch_spinlock_t *lock) { while (arch_spin_is_locked(lock)) cpu_relax(); } # 235 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" static inline int arch_read_can_lock(arch_rwlock_t *lock) { return (int)(lock)->lock > 0; } static inline int arch_write_can_lock(arch_rwlock_t *lock) { return (lock)->lock == 0x01000000; } static inline void arch_read_lock(arch_rwlock_t *rw) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " subl $1,(%0)\n\t" "jns 1f\n" "call __read_lock_failed\n\t" "1:\n" ::"D" (rw) : "memory"); } static inline void arch_write_lock(arch_rwlock_t *rw) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " subl %1,(%0)\n\t" "jz 1f\n" "call __write_lock_failed\n\t" "1:\n" ::"D" (rw), "i" (0x01000000) : "memory"); } static inline int arch_read_trylock(arch_rwlock_t *lock) { atomic_t *count = (atomic_t *)lock; if ((atomic_sub_return(1, count)) >= 0) return 1; atomic_inc(count); return 0; } static inline int arch_write_trylock(arch_rwlock_t *lock) { atomic_t *count = (atomic_t *)lock; if (atomic_sub_and_test(0x01000000, count)) return 1; atomic_add(0x01000000, count); return 0; } static inline void arch_read_unlock(arch_rwlock_t *rw) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "incl %0" :"+m" (rw->lock) : : "memory"); } static inline void arch_write_unlock(arch_rwlock_t *rw) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "addl %1, %0" : "+m" (rw->lock) : "i" (0x01000000) : "memory"); } # 306 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/spinlock.h" static inline void smp_mb__after_lock(void) { } # 87 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 136 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" static inline void do_raw_spin_lock(raw_spinlock_t *lock) __attribute__((context(lock,0,1))) { __context__(lock,1); arch_spin_lock(&lock->raw_lock); } static inline void do_raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long *flags) __attribute__((context(lock,0,1))) { __context__(lock,1); arch_spin_lock_flags(&lock->raw_lock, *flags); } static inline int do_raw_spin_trylock(raw_spinlock_t *lock) { return arch_spin_trylock(&(lock)->raw_lock); } static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __attribute__((context(lock,1,0))) { arch_spin_unlock(&lock->raw_lock); __context__(lock,-1); } # 256 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock.h" 1 # 257 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_api_smp.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/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) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nest_lock(raw_spinlock_t *lock, struct lockdep_map *map) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_spin_lock_bh(raw_spinlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_spin_lock_irq(raw_spinlock_t *lock) __attribute__((context(lock,0,1))); unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave(raw_spinlock_t *lock) __attribute__((context(lock,0,1))); unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave_nested(raw_spinlock_t *lock, int subclass) __attribute__((context(lock,0,1))); 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) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_bh(raw_spinlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irq(raw_spinlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) __attribute__((context(lock,1,0))); # 86 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_api_smp.h" static inline int __raw_spin_trylock(raw_spinlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); if (do_raw_spin_trylock(lock)) { do { } while (0); return 1; } do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); return 0; } # 104 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_api_smp.h" static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock) { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); # 119 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_api_smp.h" do_raw_spin_lock_flags(lock, &flags); return flags; } static inline void __raw_spin_lock_irq(raw_spinlock_t *lock) { do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline void __raw_spin_lock_bh(raw_spinlock_t *lock) { local_bh_disable(); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline void __raw_spin_lock(raw_spinlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do_raw_spin_lock(lock); } static inline void __raw_spin_unlock(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) { do { } while (0); do_raw_spin_unlock(lock); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); trace_hardirqs_off(); } else { trace_hardirqs_on(); raw_local_irq_restore(flags); } } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_spin_unlock_irq(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_spin_unlock_bh(raw_spinlock_t *lock) { do { } while (0); do_raw_spin_unlock(lock); do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock) { local_bh_disable(); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); if (do_raw_spin_trylock(lock)) { do { } while (0); return 1; } do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); return 0; } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_api_smp.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_api_smp.h" void __attribute__((section(".spinlock.text"))) _raw_read_lock(rwlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_write_lock(rwlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_read_lock_bh(rwlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_write_lock_bh(rwlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_read_lock_irq(rwlock_t *lock) __attribute__((context(lock,0,1))); void __attribute__((section(".spinlock.text"))) _raw_write_lock_irq(rwlock_t *lock) __attribute__((context(lock,0,1))); unsigned long __attribute__((section(".spinlock.text"))) _raw_read_lock_irqsave(rwlock_t *lock) __attribute__((context(lock,0,1))); unsigned long __attribute__((section(".spinlock.text"))) _raw_write_lock_irqsave(rwlock_t *lock) __attribute__((context(lock,0,1))); 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) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_write_unlock(rwlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_read_unlock_bh(rwlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_write_unlock_bh(rwlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irq(rwlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irq(rwlock_t *lock) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) __attribute__((context(lock,1,0))); void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) __attribute__((context(lock,1,0))); # 117 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_api_smp.h" static inline int __raw_read_trylock(rwlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); if (arch_read_trylock(&(lock)->raw_lock)) { do { } while (0); return 1; } do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); return 0; } static inline int __raw_write_trylock(rwlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); if (arch_write_trylock(&(lock)->raw_lock)) { do { } while (0); return 1; } do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); return 0; } # 146 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwlock_api_smp.h" static inline void __raw_read_lock(rwlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_read_lock(&(lock)->raw_lock); } while (0); } static inline unsigned long __raw_read_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__((lock),1); arch_read_lock(&((lock))->raw_lock); } while (0); return flags; } static inline void __raw_read_lock_irq(rwlock_t *lock) { do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_read_lock(&(lock)->raw_lock); } while (0); } static inline void __raw_read_lock_bh(rwlock_t *lock) { local_bh_disable(); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_read_lock(&(lock)->raw_lock); } while (0); } static inline unsigned long __raw_write_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__((lock),1); arch_write_lock(&((lock))->raw_lock); } while (0); return flags; } static inline void __raw_write_lock_irq(rwlock_t *lock) { do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_write_lock(&(lock)->raw_lock); } while (0); } static inline void __raw_write_lock_bh(rwlock_t *lock) { local_bh_disable(); do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_write_lock(&(lock)->raw_lock); } while (0); } static inline void __raw_write_lock(rwlock_t *lock) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); do { } while (0); do {__context__(lock,1); arch_write_lock(&(lock)->raw_lock); } while (0); } static inline void __raw_write_unlock(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_read_unlock(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); trace_hardirqs_off(); } else { trace_hardirqs_on(); raw_local_irq_restore(flags); } } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_read_unlock_irq(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_read_unlock_bh(rwlock_t *lock) { do { } while (0); do {arch_read_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } static inline void __raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); trace_hardirqs_off(); } else { trace_hardirqs_on(); raw_local_irq_restore(flags); } } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_write_unlock_irq(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void __raw_write_unlock_bh(rwlock_t *lock) { do { } while (0); do {arch_write_unlock(&(lock)->raw_lock); __context__(lock,-1); } while (0); do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); local_bh_enable_ip((unsigned long)__builtin_return_address(0)); } # 195 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock_api_smp.h" 2 # 263 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" 2 # 271 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" static inline raw_spinlock_t *spinlock_check(spinlock_t *lock) { return &lock->rlock; } static inline void spin_lock(spinlock_t *lock) { _raw_spin_lock(&lock->rlock); } static inline void spin_lock_bh(spinlock_t *lock) { _raw_spin_lock_bh(&lock->rlock); } static inline int spin_trylock(spinlock_t *lock) { return ((_raw_spin_trylock(&lock->rlock)) ? ({ __context__(&lock->rlock,1); 1; }) : 0); } # 307 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" static inline void spin_lock_irq(spinlock_t *lock) { _raw_spin_lock_irq(&lock->rlock); } # 322 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" static inline void spin_unlock(spinlock_t *lock) { _raw_spin_unlock(&lock->rlock); } static inline void spin_unlock_bh(spinlock_t *lock) { _raw_spin_unlock_bh(&lock->rlock); } static inline void spin_unlock_irq(spinlock_t *lock) { _raw_spin_unlock_irq(&lock->rlock); } static inline 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 int spin_trylock_bh(spinlock_t *lock) { return ((_raw_spin_trylock_bh(&lock->rlock)) ? ({ __context__(&lock->rlock,1); 1; }) : 0); } static inline int spin_trylock_irq(spinlock_t *lock) { return ({ do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0); ((_raw_spin_trylock(&lock->rlock)) ? ({ __context__(&lock->rlock,1); 1; }) : 0) ? 1 : ({ do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0); 0; }); }); } static inline void spin_unlock_wait(spinlock_t *lock) { arch_spin_unlock_wait(&(&lock->rlock)->raw_lock); } static inline int spin_is_locked(spinlock_t *lock) { return arch_spin_is_locked(&(&lock->rlock)->raw_lock); } static inline int spin_is_contended(spinlock_t *lock) { return arch_spin_is_contended(&(&lock->rlock)->raw_lock); } static inline int spin_can_lock(spinlock_t *lock) { return (!arch_spin_is_locked(&(&lock->rlock)->raw_lock)); } static inline void assert_spin_locked(spinlock_t *lock) { do { if (__builtin_expect(!!(!arch_spin_is_locked(&(&lock->rlock)->raw_lock)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h"), "i" (379), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); } # 395 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/spinlock.h" extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); # 38 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seqlock.h" 1 # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seqlock.h" typedef struct { unsigned sequence; spinlock_t lock; } seqlock_t; # 60 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seqlock.h" static inline void write_seqlock(seqlock_t *sl) { spin_lock(&sl->lock); ++sl->sequence; __asm__ __volatile__("": : :"memory"); } static inline void write_sequnlock(seqlock_t *sl) { __asm__ __volatile__("": : :"memory"); sl->sequence++; spin_unlock(&sl->lock); } static inline int write_tryseqlock(seqlock_t *sl) { int ret = spin_trylock(&sl->lock); if (ret) { ++sl->sequence; __asm__ __volatile__("": : :"memory"); } return ret; } static inline __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl) { unsigned ret; repeat: ret = sl->sequence; __asm__ __volatile__("": : :"memory"); if (__builtin_expect(!!(ret & 1), 0)) { cpu_relax(); goto repeat; } return ret; } static inline __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned start) { __asm__ __volatile__("": : :"memory"); return (sl->sequence != start); } # 121 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seqlock.h" typedef struct seqcount { unsigned sequence; } seqcount_t; static inline unsigned read_seqcount_begin(const seqcount_t *s) { unsigned ret; repeat: ret = s->sequence; __asm__ __volatile__("": : :"memory"); if (__builtin_expect(!!(ret & 1), 0)) { cpu_relax(); goto repeat; } return ret; } static inline int read_seqcount_retry(const seqcount_t *s, unsigned start) { __asm__ __volatile__("": : :"memory"); return s->sequence != start; } static inline void write_seqcount_begin(seqcount_t *s) { s->sequence++; __asm__ __volatile__("": : :"memory"); } static inline void write_seqcount_end(seqcount_t *s) { __asm__ __volatile__("": : :"memory"); s->sequence++; } # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/completion.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/completion.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" 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; # 80 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" extern void __init_waitqueue_head(wait_queue_head_t *q, struct lock_class_key *); # 98 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" static inline 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 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 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 void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new) { list_add(&new->task_list, &head->task_list); } static inline 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 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); 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); # 409 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" static inline void add_wait_queue_exclusive_locked(wait_queue_head_t *q, wait_queue_t * wait) { wait->flags |= 0x01; __add_wait_queue_tail(q, wait); } static inline void remove_wait_queue_locked(wait_queue_head_t *q, wait_queue_t * wait) { __remove_wait_queue(q, wait); } 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); # 489 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" static inline int wait_on_bit(void *word, int bit, int (*action)(void *), unsigned mode) { if (!(__builtin_constant_p((bit)) ? constant_test_bit((bit), (word)) : variable_test_bit((bit), (word)))) return 0; return out_of_line_wait_on_bit(word, bit, action, mode); } # 513 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/wait.h" static inline 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); } # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/completion.h" 2 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/completion.h" struct completion { unsigned int done; wait_queue_head_t wait; }; # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/completion.h" static inline void init_completion(struct completion *x) { x->done = 0; do { static struct lock_class_key __key; __init_waitqueue_head((&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 unsigned long wait_for_completion_interruptible_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 *); # 43 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" 2 # 53 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" struct rcu_head { struct rcu_head *next; void (*func)(struct rcu_head *head); }; extern void synchronize_rcu_bh(void); extern void synchronize_sched(void); extern void rcu_barrier(void); extern void rcu_barrier_bh(void); extern void rcu_barrier_sched(void); extern void synchronize_sched_expedited(void); extern int sched_expedited_torture_stats(char *page); extern void rcu_init(void); extern int rcu_scheduler_active; extern void rcu_scheduler_starting(void); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcutree.h" 1 # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcutree.h" struct notifier_block; extern void rcu_sched_qs(int cpu); extern void rcu_bh_qs(int cpu); extern int rcu_needs_cpu(int cpu); extern int rcu_expedited_torture_stats(char *page); # 55 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcutree.h" static inline void __rcu_read_lock(void) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); } static inline void __rcu_read_unlock(void) { do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline void exit_rcu(void) { } static inline int rcu_preempt_depth(void) { return 0; } static inline void __rcu_read_lock_bh(void) { local_bh_disable(); } static inline void __rcu_read_unlock_bh(void) { local_bh_enable(); } extern void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)); extern void synchronize_rcu_expedited(void); static inline void synchronize_rcu_bh_expedited(void) { synchronize_sched_expedited(); } extern void rcu_check_callbacks(int cpu, int user); 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); static inline void rcu_enter_nohz(void) { } static inline void rcu_exit_nohz(void) { } static inline int rcu_blocking_is_gp(void) { return cpumask_weight(cpu_online_mask) == 1; } # 74 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" 2 # 164 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" static inline int rcu_read_lock_held(void) { return 1; } static inline int rcu_read_lock_bh_held(void) { return 1; } static inline int rcu_read_lock_sched_held(void) { return !rcu_scheduler_active || (current_thread_info()->preempt_count) != 0; } # 241 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" static inline void rcu_read_lock(void) { __rcu_read_lock(); __context__(RCU,1); do { } while (0); } # 263 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" static inline void rcu_read_unlock(void) { do { } while (0); __context__(RCU,-1); __rcu_read_unlock(); } # 281 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" static inline void rcu_read_lock_bh(void) { __rcu_read_lock_bh(); __context__(RCU_BH,1); do { } while (0); } static inline void rcu_read_unlock_bh(void) { do { } while (0); __context__(RCU_BH,-1); __rcu_read_unlock_bh(); } # 309 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" static inline void rcu_read_lock_sched(void) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); __context__(RCU_SCHED,1); do { } while (0); } static inline __attribute__((no_instrument_function)) void rcu_read_lock_sched_notrace(void) { do { do { (current_thread_info()->preempt_count) += (1); } while (0); __asm__ __volatile__("": : :"memory"); } while (0); __context__(RCU_SCHED,1); } static inline void rcu_read_unlock_sched(void) { do { } while (0); __context__(RCU_SCHED,-1); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } static inline __attribute__((no_instrument_function)) void rcu_read_unlock_sched_notrace(void) { __context__(RCU_SCHED,-1); do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } # 409 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" struct rcu_synchronize { struct rcu_head head; struct completion completion; }; extern void wakeme_after_rcu(struct rcu_head *head); # 427 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" extern void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *head)); # 448 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rcupdate.h" extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" 2 static inline void __list_add_rcu(struct list_head *new, struct list_head *prev, struct list_head *next) { new->next = next; new->prev = prev; ({ if (!__builtin_constant_p(new) || ((new) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (prev->next) = (new); }); next->prev = new; } # 43 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); } # 64 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void list_add_tail_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head->prev, head); } # 94 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void list_del_rcu(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->prev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 120 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void hlist_del_init_rcu(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); n->pprev = ((void *)0); } } # 136 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void list_replace_rcu(struct list_head *old, struct list_head *new) { new->next = old->next; new->prev = old->prev; ({ if (!__builtin_constant_p(new) || ((new) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (new->prev->next) = (new); }); new->next->prev = new; old->prev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 163 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline 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(head)) return; INIT_LIST_HEAD(list); # 185 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" sync(); # 195 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" last->next = at; ({ if (!__builtin_constant_p(first) || ((first) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (head->next) = (first); }); first->prev = head; at->prev = last; } # 297 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 310 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline 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; ({ if (!__builtin_constant_p(new) || ((new) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (*new->pprev) = (new); }); if (next) new->next->pprev = &new->next; old->pprev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 342 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline 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; ({ if (!__builtin_constant_p(n) || ((n) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (h->first) = (n); }); if (first) first->pprev = &n->next; } # 372 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void hlist_add_before_rcu(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; ({ if (!__builtin_constant_p(n) || ((n) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (*(n->pprev)) = (n); }); next->pprev = &n->next; } # 399 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist.h" static inline void hlist_add_after_rcu(struct hlist_node *prev, struct hlist_node *n) { n->next = prev->next; n->pprev = &prev->next; ({ if (!__builtin_constant_p(n) || ((n) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (prev->next) = (n); }); if (n->next) n->next->pprev = &n->next; } # 18 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/times.h" 1 struct tms { __kernel_clock_t tms_utime; __kernel_clock_t tms_stime; __kernel_clock_t tms_cutime; __kernel_clock_t tms_cstime; }; # 20 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" 1 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" struct __kernel_sockaddr_storage { unsigned short ss_family; char __data[128 - sizeof(unsigned short)]; } __attribute__ ((aligned((__alignof__ (struct sockaddr *))))); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/socket.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/socket.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sockios.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/sockios.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sockios.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/socket.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/socket.h" 2 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sockios.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sockios.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sockios.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sockios.h" 2 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/uio.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/uio.h" struct iovec { void __attribute__((noderef, address_space(1))) *iov_base; __kernel_size_t iov_len; }; # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/uio.h" struct kvec { void *iov_base; size_t iov_len; }; # 43 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/uio.h" static inline 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); # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" 2 # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" struct seq_file; extern void socket_seq_show(struct seq_file *seq); typedef unsigned short sa_family_t; struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; struct linger { int l_onoff; int l_linger; }; # 61 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" struct msghdr { void * msg_name; int msg_namelen; struct iovec * msg_iov; __kernel_size_t msg_iovlen; void * msg_control; __kernel_size_t msg_controllen; unsigned msg_flags; }; struct mmsghdr { struct msghdr msg_hdr; unsigned msg_len; }; struct cmsghdr { __kernel_size_t cmsg_len; int cmsg_level; int cmsg_type; }; # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, struct cmsghdr *__cmsg) { struct cmsghdr * __ptr; __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_len)+sizeof(long)-1) & ~(sizeof(long)-1) )); if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size) return (struct cmsghdr *)0; return __ptr; } static inline struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) { return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); } struct ucred { __u32 pid; __u32 uid; __u32 gid; }; # 308 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/socket.h" extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov, int offset, int len); extern int csum_partial_copy_fromiovecend(unsigned char *kdata, struct iovec *iov, int offset, unsigned int len, __wsum *csump); extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata, int offset, int len); extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __attribute__((noderef, address_space(1))) *uaddr, int __attribute__((noderef, address_space(1))) *ulen); extern int move_addr_to_kernel(void __attribute__((noderef, address_space(1))) *uaddr, int ulen, struct sockaddr *kaddr); extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); struct timespec; extern int __sys_recvmmsg(int fd, struct mmsghdr __attribute__((noderef, address_space(1))) *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hdlc/ioctl.h" 1 # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hdlc/ioctl.h" typedef struct { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; } sync_serial_settings; typedef struct { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; unsigned int slot_map; } te1_settings; typedef struct { unsigned short encoding; unsigned short parity; } raw_hdlc_proto; typedef struct { unsigned int t391; unsigned int t392; unsigned int n391; unsigned int n392; unsigned int n393; unsigned short lmi; unsigned short dce; } fr_proto; typedef struct { unsigned int dlci; } fr_proto_pvc; typedef struct { unsigned int dlci; char master[16]; }fr_proto_pvc_info; typedef struct { unsigned int interval; unsigned int timeout; } cisco_proto; # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" 2 # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" enum { IF_OPER_UNKNOWN, IF_OPER_NOTPRESENT, IF_OPER_DOWN, IF_OPER_LOWERLAYERDOWN, IF_OPER_TESTING, IF_OPER_DORMANT, IF_OPER_UP, }; enum { IF_LINK_MODE_DEFAULT, IF_LINK_MODE_DORMANT, }; # 129 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; struct if_settings { unsigned int type; unsigned int size; union { raw_hdlc_proto __attribute__((noderef, address_space(1))) *raw_hdlc; cisco_proto __attribute__((noderef, address_space(1))) *cisco; fr_proto __attribute__((noderef, address_space(1))) *fr; fr_proto_pvc __attribute__((noderef, address_space(1))) *fr_pvc; fr_proto_pvc_info __attribute__((noderef, address_space(1))) *fr_pvc_info; sync_serial_settings __attribute__((noderef, address_space(1))) *sync; te1_settings __attribute__((noderef, address_space(1))) *te1; } ifs_ifsu; }; # 163 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" struct ifreq { union { char ifrn_name[16]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[16]; char ifru_newname[16]; void __attribute__((noderef, address_space(1))) * ifru_data; struct if_settings ifru_settings; } ifr_ifru; }; # 212 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if.h" struct ifconf { int ifc_len; union { char __attribute__((noderef, address_space(1))) *ifcu_buf; struct ifreq __attribute__((noderef, address_space(1))) *ifcu_req; } ifc_ifcu; }; # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_ether.h" 1 # 117 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_ether.h" struct ethhdr { unsigned char h_dest[6]; unsigned char h_source[6]; __be16 h_proto; } __attribute__((packed)); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemcheck.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/auxvec.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/auxvec.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/auxvec.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prio_tree.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prio_tree.h" struct raw_prio_tree_node { struct prio_tree_node *left; struct prio_tree_node *right; struct prio_tree_node *parent; }; struct prio_tree_node { struct prio_tree_node *left; struct prio_tree_node *right; struct prio_tree_node *parent; unsigned long start; unsigned long last; }; struct prio_tree_root { struct prio_tree_node *prio_tree_node; unsigned short index_bits; unsigned short raw; }; struct prio_tree_iter { struct prio_tree_node *cur; unsigned long mask; unsigned long value; int size_level; struct prio_tree_root *root; unsigned long r_index; unsigned long h_index; }; static inline void prio_tree_iter_init(struct prio_tree_iter *iter, struct prio_tree_root *root, unsigned long r_index, unsigned long h_index) { iter->root = root; iter->r_index = r_index; iter->h_index = h_index; iter->cur = ((void *)0); } # 84 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/prio_tree.h" static inline int prio_tree_empty(const struct prio_tree_root *root) { return root->prio_tree_node == ((void *)0); } static inline int prio_tree_root(const struct prio_tree_node *node) { return node->parent == node; } static inline int prio_tree_left_empty(const struct prio_tree_node *node) { return node->left == node; } static inline int prio_tree_right_empty(const struct prio_tree_node *node) { return node->right == node; } struct prio_tree_node *prio_tree_replace(struct prio_tree_root *root, struct prio_tree_node *old, struct prio_tree_node *node); struct prio_tree_node *prio_tree_insert(struct prio_tree_root *root, struct prio_tree_node *node); void prio_tree_remove(struct prio_tree_root *root, struct prio_tree_node *node); struct prio_tree_node *prio_tree_next(struct prio_tree_iter *iter); # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rbtree.h" 1 # 100 "/lnx/src/MM/mmotm-2010-0323-1534/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; }; # 123 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rbtree.h" static inline void rb_set_parent(struct rb_node *rb, struct rb_node *p) { rb->rb_parent_color = (rb->rb_parent_color & 3) | (unsigned long)p; } static inline void rb_set_color(struct rb_node *rb, int color) { rb->rb_parent_color = (rb->rb_parent_color & ~1) | color; } # 139 "/lnx/src/MM/mmotm-2010-0323-1534/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 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; } # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwsem.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwsem.h" struct rw_semaphore; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwsem.h" 1 # 46 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwsem.h" struct rwsem_waiter; extern struct rw_semaphore * rwsem_down_read_failed(struct rw_semaphore *sem); extern struct rw_semaphore * rwsem_down_write_failed(struct rw_semaphore *sem); extern struct rw_semaphore * rwsem_wake(struct rw_semaphore *); extern struct rw_semaphore * rwsem_downgrade_wake(struct rw_semaphore *sem); # 77 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwsem.h" typedef signed long rwsem_count_t; struct rw_semaphore { rwsem_count_t count; spinlock_t wait_lock; struct list_head wait_list; }; # 104 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwsem.h" extern void __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key); # 117 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/rwsem.h" static inline void __down_read(struct rw_semaphore *sem) { asm volatile("# beginning down_read\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " " "incq" " " "(%1)\n\t" " jns 1f\n" " call call_rwsem_down_read_failed\n" "1:\n\t" "# ending down_read\n\t" : "+m" (sem->count) : "a" (sem) : "memory", "cc"); } static inline int __down_read_trylock(struct rw_semaphore *sem) { rwsem_count_t result, tmp; asm volatile("# beginning __down_read_trylock\n\t" " mov %0,%1\n\t" "1:\n\t" " mov %1,%2\n\t" " add %3,%2\n\t" " jle 2f\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " cmpxchg %2,%0\n\t" " jnz 1b\n\t" "2:\n\t" "# ending __down_read_trylock\n\t" : "+m" (sem->count), "=&a" (result), "=&r" (tmp) : "i" (0x00000001L) : "memory", "cc"); return result >= 0 ? 1 : 0; } static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) { rwsem_count_t tmp; tmp = ((-0xffffffffL -1) + 0x00000001L); asm volatile("# beginning down_write\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " xadd %1,(%2)\n\t" " test %1,%1\n\t" " jz 1f\n" " call call_rwsem_down_write_failed\n" "1:\n" "# ending down_write" : "+m" (sem->count), "=d" (tmp) : "a" (sem), "1" (tmp) : "memory", "cc"); } static inline void __down_write(struct rw_semaphore *sem) { __down_write_nested(sem, 0); } static inline int __down_write_trylock(struct rw_semaphore *sem) { rwsem_count_t ret = ({ __typeof__(*(((&sem->count)))) __ret; __typeof__(*(((&sem->count)))) __old = (((0x00000000L))); __typeof__(*(((&sem->count)))) __new = (((((-0xffffffffL -1) + 0x00000001L)))); switch ((sizeof(*&sem->count))) { case 1: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgb %b1,%2" : "=a"(__ret) : "q"(__new), "m"(*((volatile long *)(((&sem->count))))), "0"(__old) : "memory"); break; case 2: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgw %w1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&sem->count))))), "0"(__old) : "memory"); break; case 4: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgl %k1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&sem->count))))), "0"(__old) : "memory"); break; case 8: asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgq %1,%2" : "=a"(__ret) : "r"(__new), "m"(*((volatile long *)(((&sem->count))))), "0"(__old) : "memory"); break; default: __cmpxchg_wrong_size(); } __ret; }); if (ret == 0x00000000L) return 1; return 0; } static inline void __up_read(struct rw_semaphore *sem) { rwsem_count_t tmp = -0x00000001L; asm volatile("# beginning __up_read\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " xadd %1,(%2)\n\t" " jns 1f\n\t" " call call_rwsem_wake\n" "1:\n" "# ending __up_read\n" : "+m" (sem->count), "=d" (tmp) : "a" (sem), "1" (tmp) : "memory", "cc"); } static inline void __up_write(struct rw_semaphore *sem) { rwsem_count_t tmp; asm volatile("# beginning __up_write\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " xadd %1,(%2)\n\t" " jz 1f\n" " call call_rwsem_wake\n" "1:\n\t" "# ending __up_write\n" : "+m" (sem->count), "=d" (tmp) : "a" (sem), "1" (-((-0xffffffffL -1) + 0x00000001L)) : "memory", "cc"); } static inline void __downgrade_write(struct rw_semaphore *sem) { asm volatile("# beginning __downgrade_write\n\t" ".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " " "addq" " " "%2,(%1)\n\t" " jns 1f\n\t" " call call_rwsem_downgrade_wake\n" "1:\n\t" "# ending __downgrade_write\n" : "+m" (sem->count) : "a" (sem), "er" (-(-0xffffffffL -1)) : "memory", "cc"); } static inline void rwsem_atomic_add(rwsem_count_t delta, struct rw_semaphore *sem) { asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " " " "addq" " " "%1,%0" : "+m" (sem->count) : "er" (delta)); } static inline rwsem_count_t rwsem_atomic_update(rwsem_count_t delta, struct rw_semaphore *sem) { rwsem_count_t tmp = delta; asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661f\n" ".previous\n" "661:\n\tlock; " "xadd %0,%1" : "+r" (tmp), "+m" (sem->count) : : "memory"); return tmp + delta; } static inline int rwsem_is_locked(struct rw_semaphore *sem) { return (sem->count != 0); } # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rwsem.h" 2 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); # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-debug-flags.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-debug-flags.h" enum page_debug_flags { PAGE_DEBUG_FLAG_POISON, }; # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmu.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mutex.h" 1 # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mutex.h" struct mutex { atomic_t count; spinlock_t wait_lock; struct list_head wait_list; struct thread_info *owner; # 63 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mutex.h" }; struct mutex_waiter { struct list_head list; struct task_struct *task; }; # 107 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mutex.h" extern void __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key); static inline int mutex_is_locked(struct mutex *lock) { return atomic_read(&lock->count) != 1; } # 136 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mutex.h" extern void mutex_lock(struct mutex *lock); extern int mutex_lock_interruptible(struct mutex *lock); extern int mutex_lock_killable(struct mutex *lock); # 151 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmu.h" 2 typedef struct { void *ldt; int size; struct mutex lock; void *vdso; } mm_context_t; void leave_mm(int cpu); # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" 2 struct address_space; # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" struct page { unsigned long flags; atomic_t _count; union { atomic_t _mapcount; struct { u16 inuse; u16 objects; }; }; union { struct { unsigned long private; struct address_space *mapping; }; spinlock_t ptl; struct kmem_cache *slab; struct page *first_page; }; union { unsigned long index; void *freelist; }; struct list_head lru; # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" }; struct vm_region { struct rb_node vm_rb; unsigned long 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 { struct mm_struct * vm_mm; unsigned long vm_start; unsigned long vm_end; struct vm_area_struct *vm_next; pgprot_t vm_page_prot; unsigned long vm_flags; struct rb_node vm_rb; union { struct { struct list_head list; void *parent; struct vm_area_struct *head; } vm_set; struct raw_prio_tree_node prio_tree_node; } 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; unsigned long vm_truncate_count; struct mempolicy *vm_policy; }; 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 mm_rss_stat { atomic_long_t count[NR_MM_COUNTERS]; }; struct task_rss_stat { int events; int 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; pgd_t * pgd; atomic_t mm_users; atomic_t mm_count; int map_count; struct rw_semaphore mmap_sem; spinlock_t page_table_lock; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm, locked_vm, shared_vm, exec_vm; unsigned long stack_vm, reserved_vm, def_flags, 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*(2 + 19 + 1))]; struct mm_rss_stat rss_stat; struct linux_binfmt *binfmt; cpumask_t cpu_vm_mask; mm_context_t context; # 280 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" unsigned int faultstamp; unsigned int token_priority; unsigned int last_interval; unsigned long flags; struct core_state *core_state; spinlock_t ioctx_lock; struct hlist_head ioctx_list; # 302 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm_types.h" struct task_struct *owner; struct file *exe_file; unsigned long num_exe_file_vmas; struct mmu_notifier_mm *mmu_notifier_mm; }; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemcheck.h" 2 # 92 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemcheck.h" static inline void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node) { } static inline void kmemcheck_free_shadow(struct page *page, int order) { } static inline void kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object, size_t size) { } static inline void kmemcheck_slab_free(struct kmem_cache *s, void *object, size_t size) { } static inline void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order, gfp_t gfpflags) { } static inline bool kmemcheck_page_is_tracked(struct page *p) { return false; } static inline void kmemcheck_mark_unallocated(void *address, unsigned int n) { } static inline void kmemcheck_mark_uninitialized(void *address, unsigned int n) { } static inline void kmemcheck_mark_initialized(void *address, unsigned int n) { } static inline void kmemcheck_mark_freed(void *address, unsigned int n) { } static inline void kmemcheck_mark_unallocated_pages(struct page *p, unsigned int n) { } static inline void kmemcheck_mark_uninitialized_pages(struct page *p, unsigned int n) { } static inline void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n) { } static inline bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size) { return true; } # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; }; extern struct timezone sys_tz; # 45 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" static inline 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 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 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 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; } extern struct timespec xtime; extern struct timespec wall_to_monotonic; extern seqlock_t xtime_lock; extern void read_persistent_clock(struct timespec *ts); extern void read_boot_clock(struct timespec *ts); extern int update_persistent_clock(struct timespec now); extern int no_sync_cmos_clock __attribute__((__section__(".data..read_mostly"))); 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); # 131 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" static inline u32 arch_gettimeoffset(void) { return 0; } extern void do_gettimeofday(struct timeval *tv); extern int do_settimeofday(struct timespec *tv); extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); extern long do_utimes(int dfd, char __attribute__((noderef, address_space(1))) *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 getboottime(struct timespec *ts); extern void monotonic_to_bootbased(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 void update_wall_time(void); extern void update_xtime_cache(u64 nsec); extern void timekeeping_leap_insert(int leapsecond); 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); # 194 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" static inline s64 timespec_to_ns(const struct timespec *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } # 206 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" static inline 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); # 236 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" static inline __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; } # 259 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/time.h" struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/socket.h" 1 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 2 # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" typedef enum { SS_FREE = 0, SS_UNCONNECTED, SS_CONNECTING, SS_CONNECTED, SS_DISCONNECTING } socket_state; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/random.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/random.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqnr.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqnr.h" extern int nr_irqs; extern struct irq_desc *irq_to_desc(unsigned int irq); # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/random.h" 2 # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/random.h" struct rand_pool_info { int entropy_count; int buf_size; __u32 buf[0]; }; extern void rand_initialize_irq(int irq); extern void add_input_randomness(unsigned int type, unsigned int code, unsigned int value); extern void add_interrupt_randomness(int irq); extern void get_random_bytes(void *buf, int nbytes); void generate_random_uuid(unsigned char uuid_out[16]); extern __u32 secure_ip_id(__be32 daddr); extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr, __be16 dport); extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr, __be16 sport, __be16 dport); extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr, __be16 sport, __be16 dport); extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr, __be16 sport, __be16 dport); extern const struct file_operations random_fops, urandom_fops; unsigned int get_random_int(void); unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len); u32 random32(void); void srandom32(u32 seed); # 59 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fcntl.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fcntl.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/fcntl.h" 1 # 123 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/fcntl.h" struct f_owner_ex { int type; pid_t pid; }; # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fcntl.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fcntl.h" 2 # 61 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 2 struct poll_table_struct; struct pipe_inode_info; struct inode; struct net; # 90 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" enum sock_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, SOCK_DCCP = 6, SOCK_PACKET = 10, }; # 113 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" enum sock_shutdown_cmd { SHUT_RD = 0, SHUT_WR = 1, SHUT_RDWR = 2, }; # 130 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" struct socket { socket_state state; ; short type; ; unsigned long flags; struct fasync_struct *fasync_list; wait_queue_head_t wait; struct file *file; struct sock *sk; const struct proto_ops *ops; }; struct vm_area_struct; struct page; struct kiocb; struct sockaddr; struct msghdr; struct module; struct proto_ops { int family; struct module *owner; int (*release) (struct socket *sock); int (*bind) (struct socket *sock, struct sockaddr *myaddr, int sockaddr_len); int (*connect) (struct socket *sock, struct sockaddr *vaddr, int sockaddr_len, int flags); int (*socketpair)(struct socket *sock1, struct socket *sock2); int (*accept) (struct socket *sock, struct socket *newsock, int flags); int (*getname) (struct socket *sock, struct sockaddr *addr, int *sockaddr_len, int peer); unsigned int (*poll) (struct file *file, struct socket *sock, struct poll_table_struct *wait); int (*ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); int (*compat_ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); int (*listen) (struct socket *sock, int len); int (*shutdown) (struct socket *sock, int flags); int (*setsockopt)(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); int (*getsockopt)(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen); int (*compat_setsockopt)(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); int (*compat_getsockopt)(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen); int (*sendmsg) (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t total_len); int (*recvmsg) (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t total_len, int flags); int (*mmap) (struct file *file, struct socket *sock, struct vm_area_struct * vma); ssize_t (*sendpage) (struct socket *sock, struct page *page, int offset, size_t size, int flags); ssize_t (*splice_read)(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); }; struct net_proto_family { int family; int (*create)(struct net *net, struct socket *sock, int protocol, int kern); struct module *owner; }; struct iovec; struct kvec; enum { SOCK_WAKE_IO, SOCK_WAKE_WAITD, SOCK_WAKE_SPACE, SOCK_WAKE_URG, }; extern int sock_wake_async(struct socket *sk, int how, int band); extern int sock_register(const struct net_proto_family *fam); extern void sock_unregister(int family); extern int sock_create(int family, int type, int proto, struct socket **res); extern int sock_create_kern(int family, int type, int proto, struct socket **res); extern int sock_create_lite(int family, int type, int proto, struct socket **res); extern void sock_release(struct socket *sock); extern int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t len); extern int sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, int flags); extern int sock_map_fd(struct socket *sock, int flags); extern struct socket *sockfd_lookup(int fd, int *err); extern int net_ratelimit(void); extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len); extern int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len, int flags); extern int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen); extern int kernel_listen(struct socket *sock, int backlog); extern int kernel_accept(struct socket *sock, struct socket **newsock, int flags); extern int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen, int flags); extern int kernel_getsockname(struct socket *sock, struct sockaddr *addr, int *addrlen); extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr, int *addrlen); extern int kernel_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen); extern int kernel_setsockopt(struct socket *sock, int level, int optname, char *optval, unsigned int optlen); extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg); extern int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how); # 286 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysctl.h" 1 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysctl.h" struct completion; struct __sysctl_args { int __attribute__((noderef, address_space(1))) *name; int nlen; void __attribute__((noderef, address_space(1))) *oldval; size_t __attribute__((noderef, address_space(1))) *oldlenp; void __attribute__((noderef, address_space(1))) *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, }; struct ctl_table; struct nsproxy; struct ctl_table_root; struct ctl_table_set { struct list_head list; struct ctl_table_set *parent; int (*is_seen)(struct ctl_table_set *); }; extern void setup_sysctl_set(struct ctl_table_set *p, struct ctl_table_set *parent, int (*is_seen)(struct ctl_table_set *)); struct ctl_table_header; extern void sysctl_head_get(struct ctl_table_header *); extern void sysctl_head_put(struct ctl_table_header *); extern int sysctl_is_seen(struct ctl_table_header *); extern struct ctl_table_header *sysctl_head_grab(struct ctl_table_header *); extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev); extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces, struct ctl_table_header *prev); extern void sysctl_head_finish(struct ctl_table_header *prev); extern int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op); typedef struct ctl_table ctl_table; typedef int proc_handler (struct ctl_table *ctl, int write, void __attribute__((noderef, address_space(1))) *buffer, size_t *lenp, loff_t *ppos); extern int proc_dostring(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_dointvec(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_dointvec_minmax(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_dointvec_jiffies(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_dointvec_ms_jiffies(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_doulongvec_minmax(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); # 1012 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysctl.h" struct ctl_table { const char *procname; void *data; int maxlen; mode_t mode; struct ctl_table *child; struct ctl_table *parent; proc_handler *proc_handler; void *extra1; void *extra2; }; struct ctl_table_root { struct list_head root_list; struct ctl_table_set default_set; struct ctl_table_set *(*lookup)(struct ctl_table_root *root, struct nsproxy *namespaces); int (*permissions)(struct ctl_table_root *root, struct nsproxy *namespaces, struct ctl_table *table); }; struct ctl_table_header { struct ctl_table *ctl_table; struct list_head ctl_entry; int used; int count; struct completion *unregistering; struct ctl_table *ctl_table_arg; struct ctl_table_root *root; struct ctl_table_set *set; struct ctl_table *attached_by; struct ctl_table *attached_to; struct ctl_table_header *parent; }; struct ctl_path { const char *procname; }; void register_sysctl_root(struct ctl_table_root *root); struct ctl_table_header *__register_sysctl_paths( struct ctl_table_root *root, struct nsproxy *namespaces, const struct ctl_path *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); int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table); # 287 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ratelimit.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/param.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/param.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/param.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/param.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/param.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ratelimit.h" 2 struct ratelimit_state { spinlock_t lock; int interval; int burst; int printed; int missed; unsigned long begin; }; # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ratelimit.h" extern int ___ratelimit(struct ratelimit_state *rs, const char *func); # 288 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/net.h" 2 extern struct ratelimit_state net_ratelimit_state; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stat.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/stat.h" 1 # 68 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/stat.h" struct stat { unsigned long st_dev; unsigned long st_ino; unsigned long st_nlink; unsigned int st_mode; unsigned int st_uid; unsigned int st_gid; unsigned int __pad0; unsigned long st_rdev; long st_size; long st_blksize; 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; long __unused[3]; }; 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 int st_size; unsigned int st_atime; unsigned int st_mtime; unsigned int st_ctime; }; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stat.h" 2 # 62 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/stat.h" struct kstat { u64 ino; dev_t dev; umode_t mode; unsigned int nlink; uid_t uid; gid_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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmod.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmod.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/numa.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" 1 # 96 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" typedef struct { unsigned long bits[((((1 << 6)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } nodemask_t; extern nodemask_t _unused_nodemask_arg_; static inline void __node_set(int node, volatile nodemask_t *dstp) { set_bit(node, dstp->bits); } static inline void __node_clear(int node, volatile nodemask_t *dstp) { clear_bit(node, dstp->bits); } static inline void __nodes_setall(nodemask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline void __nodes_clear(nodemask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline int __node_test_and_set(int node, nodemask_t *addr) { return test_and_set_bit(node, addr->bits); } static inline 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 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 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 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 void __nodes_complement(nodemask_t *dstp, const nodemask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline int __nodes_equal(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline int __nodes_intersects(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline int __nodes_subset(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline int __nodes_empty(const nodemask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline int __nodes_full(const nodemask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline int __nodes_weight(const nodemask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline 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 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 int __first_node(const nodemask_t *srcp) { return ({ int __min1 = ((1 << 6)); int __min2 = (find_first_bit(srcp->bits, (1 << 6))); __min1 < __min2 ? __min1: __min2; }); } static inline int __next_node(int n, const nodemask_t *srcp) { return ({ int __min1 = ((1 << 6)); int __min2 = (find_next_bit(srcp->bits, (1 << 6), n+1)); __min1 < __min2 ? __min1: __min2; }); } static inline void init_nodemask_of_node(nodemask_t *mask, int node) { __nodes_clear(&(*mask), (1 << 6)); __node_set((node), &(*mask)); } # 264 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" static inline int __first_unset_node(const nodemask_t *maskp) { return ({ int __min1 = ((1 << 6)); int __min2 = (find_first_zero_bit(maskp->bits, (1 << 6))); __min1 < __min2 ? __min1: __min2; }); } # 298 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" static inline int __nodemask_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline int __nodemask_parse_user(const char __attribute__((noderef, address_space(1))) *buf, int len, nodemask_t *dstp, int nbits) { return bitmap_parse_user(buf, len, dstp->bits, nbits); } static inline int __nodelist_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline 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 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 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 void __nodes_fold(nodemask_t *dstp, const nodemask_t *origp, int sz, int nbits) { bitmap_fold(dstp->bits, origp->bits, sz, nbits); } # 372 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" enum node_states { N_POSSIBLE, N_ONLINE, N_NORMAL_MEMORY, N_HIGH_MEMORY = N_NORMAL_MEMORY, N_CPU, NR_NODE_STATES }; extern nodemask_t node_states[NR_NODE_STATES]; static inline int node_state(int node, enum node_states state) { return (__builtin_constant_p(((node))) ? constant_test_bit(((node)), ((node_states[state]).bits)) : variable_test_bit(((node)), ((node_states[state]).bits))); } static inline void node_set_state(int node, enum node_states state) { __node_set(node, &node_states[state]); } static inline void node_clear_state(int node, enum node_states state) { __node_clear(node, &node_states[state]); } static inline int num_node_state(enum node_states state) { return __nodes_weight(&(node_states[state]), (1 << 6)); } extern int nr_node_ids; extern int nr_online_nodes; static inline void node_set_online(int nid) { node_set_state(nid, N_ONLINE); nr_online_nodes = num_node_state(N_ONLINE); } static inline void node_set_offline(int nid) { node_clear_state(nid, N_ONLINE); nr_online_nodes = num_node_state(N_ONLINE); } # 491 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nodemask.h" struct nodemask_scratch { nodemask_t mask1; nodemask_t mask2; }; # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pageblock-flags.h" 1 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pageblock-flags.h" enum pageblock_bits { PB_migrate, PB_migrate_end = PB_migrate + 3 - 1, NR_PAGEBLOCK_BITS }; # 60 "/lnx/src/MM/mmotm-2010-0323-1534/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 # 1 "include/generated/bounds.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" extern int page_group_by_mobility_disabled; static inline 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[5]; unsigned long nr_free; }; struct pglist_data; # 71 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zone_padding { char x[0]; } __attribute__((__aligned__(1 << (7)))); 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_WRITEBACK_TEMP, NR_ISOLATED_ANON, NR_ISOLATED_FILE, NR_SHMEM, NUMA_HIT, NUMA_MISS, NUMA_FOREIGN, NUMA_INTERLEAVE_HIT, NUMA_LOCAL, NUMA_OTHER, NR_VM_ZONE_STAT_ITEMS }; # 130 "/lnx/src/MM/mmotm-2010-0323-1534/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 int is_file_lru(enum lru_list l) { return (l == LRU_INACTIVE_FILE || l == LRU_ACTIVE_FILE); } static inline int is_active_lru(enum lru_list l) { return (l == LRU_ACTIVE_ANON || l == LRU_ACTIVE_FILE); } static inline int is_unevictable_lru(enum lru_list l) { return (l == LRU_UNEVICTABLE); } 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[3]; }; struct per_cpu_pageset { struct per_cpu_pages pcp; s8 expire; s8 stat_threshold; s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS]; }; enum zone_type { # 211 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" ZONE_DMA, ZONE_DMA32, ZONE_NORMAL, # 238 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" ZONE_MOVABLE, __MAX_NR_ZONES }; # 262 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zone_reclaim_stat { # 271 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" unsigned long recent_rotated[2]; unsigned long recent_scanned[2]; unsigned long nr_saved_scan[NR_LRU_LISTS]; }; struct zone { unsigned long watermark[NR_WMARK]; # 294 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" unsigned long lowmem_reserve[4]; int node; unsigned long min_unmapped_pages; unsigned long min_slab_pages; struct per_cpu_pageset __attribute__((noderef, address_space(3))) *pageset; spinlock_t lock; int all_unreclaimable; seqlock_t span_seqlock; struct free_area free_area[11]; # 325 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zone_padding _pad1_; spinlock_t lru_lock; struct zone_lru { struct list_head list; } lru[NR_LRU_LISTS]; struct zone_reclaim_stat reclaim_stat; unsigned long pages_scanned; unsigned long flags; atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; # 354 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" int prev_priority; unsigned int inactive_ratio; struct zone_padding _pad2_; # 390 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 411 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" unsigned long spanned_pages; unsigned long present_pages; const char *name; } __attribute__((__aligned__(1 << (7)))); typedef enum { ZONE_RECLAIM_LOCKED, ZONE_OOM_LOCKED, } zone_flags_t; static inline void zone_set_flag(struct zone *zone, zone_flags_t flag) { set_bit(flag, &zone->flags); } static inline int zone_test_and_set_flag(struct zone *zone, zone_flags_t flag) { return test_and_set_bit(flag, &zone->flags); } static inline void zone_clear_flag(struct zone *zone, zone_flags_t flag) { clear_bit(flag, &zone->flags); } static inline int zone_is_reclaim_locked(const struct zone *zone) { return (__builtin_constant_p((ZONE_RECLAIM_LOCKED)) ? constant_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags))); } static inline int zone_is_oom_locked(const struct zone *zone) { return (__builtin_constant_p((ZONE_OOM_LOCKED)) ? constant_test_bit((ZONE_OOM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_OOM_LOCKED), (&zone->flags))); } # 531 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zonelist_cache { unsigned short z_to_n[((1 << 6) * 4)]; unsigned long fullzones[(((((1 << 6) * 4)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; unsigned long last_full_zap; }; # 545 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zoneref { struct zone *zone; int zone_idx; }; # 567 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zonelist { struct zonelist_cache *zlcache_ptr; struct zoneref _zonerefs[((1 << 6) * 4) + 1]; struct zonelist_cache zlcache; }; struct node_active_region { unsigned long start_pfn; unsigned long end_pfn; int nid; }; extern struct page *mem_map; # 599 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[4]; struct zonelist node_zonelists[2]; int nr_zones; # 621 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" spinlock_t node_size_lock; unsigned long node_start_pfn; unsigned long node_present_pages; unsigned long node_spanned_pages; int node_id; wait_queue_head_t kswapd_wait; struct task_struct *kswapd; int kswapd_max_order; } pg_data_t; # 642 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 1 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" 1 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" 1 # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" struct srcu_struct_array { int c[2]; }; struct srcu_struct { int completed; struct srcu_struct_array __attribute__((noderef, address_space(3))) *per_cpu_ref; struct mutex mutex; }; # 68 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" int init_srcu_struct(struct srcu_struct *sp); void cleanup_srcu_struct(struct srcu_struct *sp); int __srcu_read_lock(struct srcu_struct *sp) __attribute__((context(sp,0,1))); void __srcu_read_unlock(struct srcu_struct *sp, int idx) __attribute__((context(sp,1,0))); void synchronize_srcu(struct srcu_struct *sp); void synchronize_srcu_expedited(struct srcu_struct *sp); long srcu_batches_completed(struct srcu_struct *sp); # 101 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" static inline int srcu_read_lock_held(struct srcu_struct *sp) { return 1; } # 123 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" static inline int srcu_read_lock(struct srcu_struct *sp) __attribute__((context(sp,0,1))) { int retval = __srcu_read_lock(sp); do { } while (0); return retval; } # 138 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/srcu.h" static inline void srcu_read_unlock(struct srcu_struct *sp, int idx) __attribute__((context(sp,1,0))) { do { } while (0); __srcu_read_unlock(sp, idx); } # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" 2 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); # 115 "/lnx/src/MM/mmotm-2010-0323-1534/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" static inline int notifier_from_errno(int err) { if (err) return 0x8000 | (0x0001 - err); return 0x0001; } static inline int notifier_to_errno(int ret) { ret &= ~0x8000; return ret > 0x0001 ? 0x0001 - ret : 0; } # 269 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/notifier.h" extern struct blocking_notifier_head reboot_notifier_list; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; struct mem_section; # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" static inline void pgdat_resize_lock(struct pglist_data *pgdat, unsigned long *flags) { do { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); *flags = _raw_spin_lock_irqsave(spinlock_check(&pgdat->node_size_lock)); } while (0); } while (0); } static inline void pgdat_resize_unlock(struct pglist_data *pgdat, unsigned long *flags) { spin_unlock_irqrestore(&pgdat->node_size_lock, *flags); } static inline void pgdat_resize_init(struct pglist_data *pgdat) { do { spinlock_check(&pgdat->node_size_lock); do { *(&(&pgdat->node_size_lock)->rlock) = (raw_spinlock_t) { .raw_lock = { 0 }, }; } while (0); } while (0); } static inline unsigned zone_span_seqbegin(struct zone *zone) { return read_seqbegin(&zone->span_seqlock); } static inline int zone_span_seqretry(struct zone *zone, unsigned iv) { return read_seqretry(&zone->span_seqlock, iv); } static inline void zone_span_writelock(struct zone *zone) { write_seqlock(&zone->span_seqlock); } static inline void zone_span_writeunlock(struct zone *zone) { write_sequnlock(&zone->span_seqlock); } static inline void zone_seqlock_init(struct zone *zone) { do { (&zone->span_seqlock)->sequence = 0; do { spinlock_check(&(&zone->span_seqlock)->lock); do { *(&(&(&zone->span_seqlock)->lock)->rlock) = (raw_spinlock_t) { .raw_lock = { 0 }, }; } while (0); } while (0); } while (0); } extern int zone_grow_free_lists(struct zone *zone, unsigned long new_nr_pages); extern int zone_grow_waitqueues(struct zone *zone, unsigned long nr_pages); extern int add_one_highpage(struct page *page, int pfn, int bad_ppro); extern void online_page(struct page *page); extern int online_pages(unsigned long, unsigned long); extern void __offline_isolated_pages(unsigned long, unsigned long); extern int __add_pages(int nid, struct zone *zone, unsigned long start_pfn, unsigned long nr_pages); extern int __remove_pages(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages); extern int memory_add_physaddr_to_nid(u64 start); # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" extern pg_data_t *node_data[]; static inline void arch_refresh_nodedata(int nid, pg_data_t *pgdat) { node_data[nid] = pgdat; } # 149 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" static inline void register_page_bootmem_info_node(struct pglist_data *pgdat) { } static inline void put_page_bootmem(struct page *page) { } # 198 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/memory_hotplug.h" static inline int is_mem_section_removable(unsigned long pfn, unsigned long nr_pages) { return 0; } extern int add_memory(int nid, u64 start, u64 size); extern int arch_add_memory(int nid, u64 start, u64 size); 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); # 643 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 void get_zone_counts(unsigned long *active, unsigned long *inactive, unsigned long *free); void build_all_zonelists(void); void wakeup_kswapd(struct zone *zone, int order); int zone_watermark_ok(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); void memory_present(int nid, unsigned long start, unsigned long end); # 673 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" static inline int populated_zone(struct zone *zone) { return (!!zone->present_pages); } extern int movable_zone; static inline int zone_movable_is_highmem(void) { return 0; } static inline int is_highmem_idx(enum zone_type idx) { return 0; } static inline int is_normal_idx(enum zone_type idx) { return (idx == ZONE_NORMAL); } static inline int is_highmem(struct zone *zone) { return 0; } static inline int is_normal(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; } static inline int is_dma32(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + ZONE_DMA32; } static inline int is_dma(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + ZONE_DMA; } struct ctl_table; int min_free_kbytes_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int sysctl_lowmem_reserve_ratio[4 -1]; int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern int numa_zonelist_order_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); extern char numa_zonelist_order[]; # 772 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone_64.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone_64.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmdebug.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone_64.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec_def.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec_def.h" struct mpf_intel { char signature[4]; unsigned int physptr; unsigned char length; unsigned char specification; unsigned char checksum; unsigned char feature1; unsigned char feature2; unsigned char feature3; unsigned char feature4; unsigned char feature5; }; struct mpc_table { char signature[4]; unsigned short length; char spec; char checksum; char oem[8]; char productid[12]; unsigned int oemptr; unsigned short oemsize; unsigned short oemcount; unsigned int lapic; unsigned int reserved; }; # 74 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec_def.h" struct mpc_cpu { unsigned char type; unsigned char apicid; unsigned char apicver; unsigned char cpuflag; unsigned int cpufeature; unsigned int featureflag; unsigned int reserved[2]; }; struct mpc_bus { unsigned char type; unsigned char busid; unsigned char bustype[6]; }; # 112 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec_def.h" struct mpc_ioapic { unsigned char type; unsigned char apicid; unsigned char apicver; unsigned char flags; unsigned int apicaddr; }; struct mpc_intsrc { unsigned char type; unsigned char irqtype; unsigned short irqflag; unsigned char srcbus; unsigned char srcbusirq; unsigned char dstapic; unsigned char dstirq; }; enum mp_irq_source_types { mp_INT = 0, mp_NMI = 1, mp_SMI = 2, mp_ExtINT = 3 }; struct mpc_lintsrc { unsigned char type; unsigned char irqtype; unsigned short irqflag; unsigned char srcbusid; unsigned char srcbusirq; unsigned char destapic; unsigned char destapiclint; }; struct mpc_oemtable { char signature[4]; unsigned short length; char rev; char checksum; char mpc[8]; }; # 175 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec_def.h" enum mp_bustype { MP_BUS_ISA = 1, MP_BUS_EISA, MP_BUS_PCI, MP_BUS_MCA, }; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/screen_info.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/screen_info.h" struct screen_info { __u8 orig_x; __u8 orig_y; __u16 ext_mem_k; __u16 orig_video_page; __u8 orig_video_mode; __u8 orig_video_cols; __u8 flags; __u8 unused2; __u16 orig_video_ega_bx; __u16 unused3; __u8 orig_video_lines; __u8 orig_video_isVGA; __u16 orig_video_points; __u16 lfb_width; __u16 lfb_height; __u16 lfb_depth; __u32 lfb_base; __u32 lfb_size; __u16 cl_magic, cl_offset; __u16 lfb_linelength; __u8 red_size; __u8 red_pos; __u8 green_size; __u8 green_pos; __u8 blue_size; __u8 blue_pos; __u8 rsvd_size; __u8 rsvd_pos; __u16 vesapm_seg; __u16 vesapm_off; __u16 pages; __u16 vesa_attributes; __u32 capabilities; __u8 _reserved[6]; } __attribute__((packed)); # 72 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/screen_info.h" extern struct screen_info screen_info; # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/apm_bios.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/apm_bios.h" typedef unsigned short apm_event_t; typedef unsigned short apm_eventinfo_t; struct apm_bios_info { __u16 version; __u16 cseg; __u32 offset; __u16 cseg_16; __u16 dseg; __u16 flags; __u16 cseg_len; __u16 cseg_16_len; __u16 dseg_len; }; # 52 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/apm_bios.h" struct apm_info { struct apm_bios_info bios; unsigned short connection_version; int get_power_status_broken; int get_power_status_swabinminutes; int allow_ints; int forbid_idle; int realmode_power_off; int disabled; }; # 111 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/apm_bios.h" extern struct apm_info apm_info; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/edd.h" 1 # 71 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/edd.h" struct edd_device_params { __u16 length; __u16 info_flags; __u32 num_default_cylinders; __u32 num_default_heads; __u32 sectors_per_track; __u64 number_of_sectors; __u16 bytes_per_sector; __u32 dpte_ptr; __u16 key; __u8 device_path_info_length; __u8 reserved2; __u16 reserved3; __u8 host_bus_type[4]; __u8 interface_type[8]; union { struct { __u16 base_address; __u16 reserved1; __u32 reserved2; } __attribute__ ((packed)) isa; struct { __u8 bus; __u8 slot; __u8 function; __u8 channel; __u32 reserved; } __attribute__ ((packed)) pci; struct { __u64 reserved; } __attribute__ ((packed)) ibnd; struct { __u64 reserved; } __attribute__ ((packed)) xprs; struct { __u64 reserved; } __attribute__ ((packed)) htpt; struct { __u64 reserved; } __attribute__ ((packed)) unknown; } interface_path; union { struct { __u8 device; __u8 reserved1; __u16 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) ata; struct { __u8 device; __u8 lun; __u8 reserved1; __u8 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) atapi; struct { __u16 id; __u64 lun; __u16 reserved1; __u32 reserved2; } __attribute__ ((packed)) scsi; struct { __u64 serial_number; __u64 reserved; } __attribute__ ((packed)) usb; struct { __u64 eui; __u64 reserved; } __attribute__ ((packed)) i1394; struct { __u64 wwid; __u64 lun; } __attribute__ ((packed)) fibre; struct { __u64 identity_tag; __u64 reserved; } __attribute__ ((packed)) i2o; struct { __u32 array_number; __u32 reserved1; __u64 reserved2; } __attribute__ ((packed)) raid; struct { __u8 device; __u8 reserved1; __u16 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) sata; struct { __u64 reserved1; __u64 reserved2; } __attribute__ ((packed)) unknown; } device_path; __u8 reserved4; __u8 checksum; } __attribute__ ((packed)); struct edd_info { __u8 device; __u8 version; __u16 interface_support; __u16 legacy_max_cylinder; __u8 legacy_max_head; __u8 legacy_sectors_per_track; struct edd_device_params params; } __attribute__ ((packed)); struct edd { unsigned int mbr_signature[16]; struct edd_info edd_info[6]; unsigned char mbr_signature_nr; unsigned char edd_info_nr; }; extern struct edd edd; # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/e820.h" 1 # 53 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/e820.h" struct e820entry { __u64 addr; __u64 size; __u32 type; } __attribute__((packed)); struct e820map { __u32 nr_map; struct e820entry map[128]; }; # 72 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/e820.h" extern struct e820map e820; extern struct e820map e820_saved; extern unsigned long pci_mem_start; extern int e820_any_mapped(u64 start, u64 end, unsigned type); extern int e820_all_mapped(u64 start, u64 end, unsigned type); extern void e820_add_region(u64 start, u64 size, int type); extern void e820_print_map(char *who); extern int sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, u32 *pnr_map); extern u64 e820_update_range(u64 start, u64 size, unsigned old_type, unsigned new_type); extern u64 e820_remove_range(u64 start, u64 size, unsigned old_type, int checktype); extern void update_e820(void); extern void e820_setup_gap(void); extern int e820_search_gap(unsigned long *gapstart, unsigned long *gapsize, unsigned long start_addr, unsigned long long end_addr); struct setup_data; extern void parse_e820_ext(struct setup_data *data, unsigned long pa_data); extern void e820_mark_nosave_regions(unsigned long limit_pfn); extern void early_memtest(unsigned long start, unsigned long end); extern unsigned long end_user_pfn; extern u64 find_e820_area(u64 start, u64 end, u64 size, u64 align); extern u64 find_e820_area_size(u64 start, u64 *sizep, u64 align); extern u64 early_reserve_e820(u64 startt, u64 sizet, u64 align); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/early_res.h" 1 extern void reserve_early(u64 start, u64 end, char *name); extern void reserve_early_overlap_ok(u64 start, u64 end, char *name); extern void free_early(u64 start, u64 end); void free_early_partial(u64 start, u64 end); extern void early_res_to_bootmem(u64 start, u64 end); void reserve_early_without_check(u64 start, u64 end, char *name); u64 find_early_area(u64 ei_start, u64 ei_last, u64 start, u64 end, u64 size, u64 align); u64 find_early_area_size(u64 ei_start, u64 ei_last, u64 start, u64 *sizep, u64 align); u64 find_fw_memmap_area(u64 start, u64 end, u64 size, u64 align); u64 get_max_mapped(void); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/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 resource_size_t cap_resource(u64 val) { if (val > ((resource_size_t)~0)) return ((resource_size_t)~0); return val; } # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/early_res.h" 2 int get_free_all_memory_range(struct range **rangep, int nodeid); # 116 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/e820.h" 2 extern unsigned long e820_end_of_ram_pfn(void); extern unsigned long e820_end_of_low_ram_pfn(void); extern int e820_find_active_region(const struct e820entry *ei, unsigned long start_pfn, unsigned long last_pfn, unsigned long *ei_startpfn, unsigned long *ei_endpfn); extern void e820_register_active_regions(int nid, unsigned long start_pfn, unsigned long end_pfn); extern u64 e820_hole_size(u64 start, u64 end); extern void finish_e820_parsing(void); extern void e820_reserve_resources(void); extern void e820_reserve_resources_late(void); extern void setup_memory_map(void); extern char *default_machine_specific_memory_setup(void); static inline bool is_ISA_range(u64 s, u64 e) { return s >= 0xa0000 && e <= 0x100000; } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ioport.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/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; }; struct resource_list { struct resource_list *next; struct resource *res; struct pci_dev *dev; }; # 112 "/lnx/src/MM/mmotm-2010-0323-1534/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 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); int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size); resource_size_t resource_alignment(struct resource *res); static inline resource_size_t resource_size(const struct resource *res) { return res->end - res->start + 1; } static inline unsigned long resource_type(const struct resource *res) { return res->flags & 0x00001f00; } # 153 "/lnx/src/MM/mmotm-2010-0323-1534/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 int __attribute__((deprecated)) 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 *)); # 147 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/e820.h" 2 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ist.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ist.h" struct ist_info { __u32 signature; __u32 command; __u32 event; __u32 perf_level; }; extern struct ist_info ist_info; # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/video/edid.h" 1 struct edid_info { unsigned char dummy[128]; }; extern struct edid_info edid_info; # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/bootparam.h" 2 struct setup_data { __u64 next; __u32 type; __u32 len; __u8 data[0]; }; struct setup_header { __u8 setup_sects; __u16 root_flags; __u32 syssize; __u16 ram_size; __u16 vid_mode; __u16 root_dev; __u16 boot_flag; __u16 jump; __u32 header; __u16 version; __u32 realmode_swtch; __u16 start_sys; __u16 kernel_version; __u8 type_of_loader; __u8 loadflags; __u16 setup_move_size; __u32 code32_start; __u32 ramdisk_image; __u32 ramdisk_size; __u32 bootsect_kludge; __u16 heap_end_ptr; __u8 ext_loader_ver; __u8 ext_loader_type; __u32 cmd_line_ptr; __u32 initrd_addr_max; __u32 kernel_alignment; __u8 relocatable_kernel; __u8 _pad2[3]; __u32 cmdline_size; __u32 hardware_subarch; __u64 hardware_subarch_data; __u32 payload_offset; __u32 payload_length; __u64 setup_data; } __attribute__((packed)); struct sys_desc_table { __u16 length; __u8 table[14]; }; struct efi_info { __u32 efi_loader_signature; __u32 efi_systab; __u32 efi_memdesc_size; __u32 efi_memdesc_version; __u32 efi_memmap; __u32 efi_memmap_size; __u32 efi_systab_hi; __u32 efi_memmap_hi; }; struct boot_params { struct screen_info screen_info; struct apm_bios_info apm_bios_info; __u8 _pad2[4]; __u64 tboot_addr; struct ist_info ist_info; __u8 _pad3[16]; __u8 hd0_info[16]; __u8 hd1_info[16]; struct sys_desc_table sys_desc_table; __u8 _pad4[144]; struct edid_info edid_info; struct efi_info efi_info; __u32 alt_mem_k; __u32 scratch; __u8 e820_entries; __u8 eddbuf_entries; __u8 edd_mbr_sig_buf_entries; __u8 _pad6[6]; struct setup_header hdr; __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; __u32 edd_mbr_sig_buffer[16]; struct e820entry e820_map[128]; __u8 _pad8[48]; struct edd_info eddbuf[6]; __u8 _pad9[276]; } __attribute__((packed)); enum { X86_SUBARCH_PC = 0, X86_SUBARCH_LGUEST, X86_SUBARCH_XEN, X86_SUBARCH_MRST, X86_NR_SUBARCHS, }; # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" 2 struct mpc_bus; struct mpc_cpu; struct mpc_table; # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_init_mpparse { void (*mpc_record)(unsigned int mode); void (*setup_ioapic_ids)(void); int (*mpc_apic_id)(struct mpc_cpu *m); void (*smp_read_mpc_oem)(struct mpc_table *mpc); void (*mpc_oem_pci_bus)(struct mpc_bus *m); void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name); void (*find_smp_config)(void); void (*get_smp_config)(unsigned int early); }; # 41 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_init_resources { void (*probe_roms)(void); void (*reserve_resources)(void); char *(*memory_setup)(void); }; # 54 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_init_irqs { void (*pre_vector_init)(void); void (*intr_init)(void); void (*trap_init)(void); }; struct x86_init_oem { void (*arch_setup)(void); void (*banner)(void); }; struct x86_init_paging { void (*pagetable_setup_start)(pgd_t *base); void (*pagetable_setup_done)(pgd_t *base); }; # 87 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_init_timers { void (*setup_percpu_clockev)(void); void (*tsc_pre_init)(void); void (*timer_init)(void); }; struct x86_init_iommu { int (*iommu_init)(void); }; # 108 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_init_pci { int (*arch_init)(void); int (*init)(void); void (*init_irq)(void); void (*fixup_irqs)(void); }; struct x86_init_ops { struct x86_init_resources resources; struct x86_init_mpparse mpparse; struct x86_init_irqs irqs; struct x86_init_oem oem; struct x86_init_paging paging; struct x86_init_timers timers; struct x86_init_iommu iommu; struct x86_init_pci pci; }; struct x86_cpuinit_ops { void (*setup_percpu_clockev)(void); }; # 146 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/x86_init.h" struct x86_platform_ops { unsigned long (*calibrate_tsc)(void); unsigned long (*get_wallclock)(void); int (*set_wallclock)(unsigned long nowtime); void (*iommu_shutdown)(void); bool (*is_untracked_pat_range)(u64 start, u64 end); void (*nmi_init)(void); }; extern struct x86_init_ops x86_init; extern struct x86_cpuinit_ops x86_cpuinit; extern struct x86_platform_ops x86_platform; extern void x86_init_noop(void); extern void x86_init_uint_noop(unsigned int unused); # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" 2 extern int apic_version[255]; extern int pic_mode; # 49 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" extern unsigned long mp_bus_not_pci[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; extern unsigned int boot_cpu_physical_apicid; extern unsigned int max_physical_apicid; extern int mpc_default_type; extern unsigned long mp_lapic_addr; extern int smp_found_config; static inline void get_smp_config(void) { x86_init.mpparse.get_smp_config(0); } static inline void early_get_smp_config(void) { x86_init.mpparse.get_smp_config(1); } static inline void find_smp_config(void) { x86_init.mpparse.find_smp_config(); } extern void early_reserve_e820_mpc_new(void); extern int enable_update_mptable; extern int default_mpc_apic_id(struct mpc_cpu *m); extern void default_smp_read_mpc_oem(struct mpc_table *mpc); extern void default_mpc_oem_bus_info(struct mpc_bus *m, char *str); extern void default_find_smp_config(void); extern void default_get_smp_config(unsigned int early); # 99 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) generic_processor_info(int apicid, int version); # 114 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" static inline int acpi_probe_gsi(void) { return 0; } struct physid_mask { unsigned long mask[(((255) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; }; typedef struct physid_mask physid_mask_t; # 161 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" static inline unsigned long physids_coerce(physid_mask_t *map) { return map->mask[0]; } static inline void physids_promote(unsigned long physids, physid_mask_t *map) { bitmap_zero((*map).mask, 255); map->mask[0] = physids; } # 180 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mpspec.h" static inline void physid_set_mask_of_physid(int physid, physid_mask_t *map) { bitmap_zero((*map).mask, 255); set_bit(physid, (*map).mask); } extern physid_mask_t phys_cpu_present_map; extern int generic_mps_oem_check(struct mpc_table *, char *, char *); extern int default_acpi_madt_oem_check(char *, char *); # 13 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/delay.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/delay.h" extern unsigned long loops_per_jiffy; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/delay.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/delay.h" extern void __bad_udelay(void); extern void __bad_ndelay(void); extern void __udelay(unsigned long usecs); extern void __ndelay(unsigned long nsecs); extern void __const_udelay(unsigned long xloops); extern void __delay(unsigned long loops); # 29 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/delay.h" void use_tsc_delay(void); # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/delay.h" 2 # 44 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/delay.h" extern unsigned long lpj_fine; void calibrate_delay(void); void msleep(unsigned int msecs); unsigned long msleep_interruptible(unsigned int msecs); static inline void ssleep(unsigned int seconds) { msleep(seconds * 1000); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/workqueue.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jiffies.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timex.h" 1 # 64 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; }; # 173 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timex.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/timex.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/tsc.h" 1 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/tsc.h" typedef unsigned long long cycles_t; extern unsigned int cpu_khz; extern unsigned int tsc_khz; extern void disable_TSC(void); static inline cycles_t get_cycles(void) { unsigned long long ret = 0; ((ret) = __native_read_tsc()); return ret; } static inline __attribute__((always_inline)) cycles_t vget_cycles(void) { # 45 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/tsc.h" return (cycles_t)__native_read_tsc(); } extern void tsc_init(void); extern void mark_tsc_unstable(char *reason); extern int unsynchronized_tsc(void); extern int check_tsc_unstable(void); extern unsigned long native_calibrate_tsc(void); extern void check_tsc_sync_source(int cpu); extern void check_tsc_sync_target(void); extern int notsc_setup(char *); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/timex.h" 2 # 174 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timex.h" 2 # 233 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timex.h" extern unsigned long tick_usec; extern unsigned long tick_nsec; extern int time_status; extern void ntp_init(void); extern void ntp_clear(void); static inline int ntp_synced(void) { return !(time_status & 0x0040); } # 266 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timex.h" extern u64 tick_length; extern void second_overflow(void); extern void update_ntp_one_tick(void); extern int do_adjtimex(struct timex *); int read_current_timer(unsigned long *timer_val); # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jiffies.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/param.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jiffies.h" 2 # 81 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jiffies.h" extern u64 __attribute__((section(".data"))) jiffies_64; extern unsigned long volatile __attribute__((section(".data"))) jiffies; static inline u64 get_jiffies_64(void) { return (u64)jiffies; } # 183 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jiffies.h" extern unsigned long preset_lpj; # 296 "/lnx/src/MM/mmotm-2010-0323-1534/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(long x); 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 unsigned long nsecs_to_jiffies(u64 n); # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" 2 # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" union ktime { s64 tv64; # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" }; typedef union ktime ktime_t; # 81 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" static inline ktime_t ktime_set(const long secs, const unsigned long nsecs) { if (__builtin_expect(!!(secs >= (((s64)~((u64)1 << 63)) / 1000000000L)), 0)) return (ktime_t){ .tv64 = ((s64)~((u64)1 << 63)) }; return (ktime_t) { .tv64 = (s64)secs * 1000000000L + (s64)nsecs }; } # 113 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" static inline ktime_t timespec_to_ktime(struct timespec ts) { return ktime_set(ts.tv_sec, ts.tv_nsec); } static inline ktime_t timeval_to_ktime(struct timeval tv) { return ktime_set(tv.tv_sec, tv.tv_usec * 1000L); } # 287 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" static inline int ktime_equal(const ktime_t cmp1, const ktime_t cmp2) { return cmp1.tv64 == cmp2.tv64; } static inline 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 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 ktime_t ktime_add_us(const ktime_t kt, const u64 usec) { return ({ (ktime_t){ .tv64 = (kt).tv64 + (usec * 1000) }; }); } static inline 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); # 325 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ktime.h" extern void ktime_get_ts(struct timespec *ts); static inline ktime_t ns_to_ktime(u64 ns) { static const ktime_t ktime_zero = { .tv64 = 0 }; return ({ (ktime_t){ .tv64 = (ktime_zero).tv64 + (ns) }; }); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debugobjects.h" struct debug_obj { struct hlist_node node; enum debug_obj_state state; void *object; struct debug_obj_descr *descr; }; # 45 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debugobjects.h" struct debug_obj_descr { const char *name; 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); }; # 66 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debugobjects.h" static inline void debug_object_init (void *addr, struct debug_obj_descr *descr) { } static inline void debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { } static inline void debug_object_activate (void *addr, struct debug_obj_descr *descr) { } static inline void debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { } static inline void debug_object_destroy (void *addr, struct debug_obj_descr *descr) { } static inline void debug_object_free (void *addr, struct debug_obj_descr *descr) { } static inline void debug_objects_early_init(void) { } static inline void debug_objects_mem_init(void) { } static inline void debug_check_no_obj_freed(const void *address, unsigned long size) { } # 8 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" }; extern struct tvec_base boot_tvec_bases; # 65 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" void init_timer_key(struct timer_list *timer, const char *name, struct lock_class_key *key); void init_timer_deferrable_key(struct timer_list *timer, const char *name, struct lock_class_key *key); # 122 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" static inline void destroy_timer_on_stack(struct timer_list *timer) { } static inline void init_timer_on_stack_key(struct timer_list *timer, const char *name, struct lock_class_key *key) { init_timer_key(timer, name, key); } static inline void setup_timer_key(struct timer_list * timer, const char *name, struct lock_class_key *key, void (*function)(unsigned long), unsigned long data) { timer->function = function; timer->data = data; init_timer_key(timer, name, key); } static inline void setup_timer_on_stack_key(struct timer_list *timer, const char *name, struct lock_class_key *key, void (*function)(unsigned long), unsigned long data) { timer->function = function; timer->data = data; init_timer_on_stack_key(timer, name, key); } # 163 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" static inline 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); # 189 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" extern unsigned long get_next_timer_interrupt(unsigned long now); # 221 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/timer.h" static inline void init_timer_stats(void) { } static inline void timer_stats_timer_set_start_info(struct timer_list *timer) { } static inline void timer_stats_timer_clear_start_info(struct timer_list *timer) { } 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/workqueue.h" 2 struct workqueue_struct; struct work_struct; typedef void (*work_func_t)(struct work_struct *work); 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; }; static inline 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; }; # 100 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/workqueue.h" static inline void __init_work(struct work_struct *work, int onstack) { } static inline void destroy_work_on_stack(struct work_struct *work) { } # 183 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/workqueue.h" extern struct workqueue_struct * __create_workqueue_key(const char *name, int singlethread, int freezeable, int rt, struct lock_class_key *key, const char *lock_name); # 214 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/workqueue.h" extern void destroy_workqueue(struct workqueue_struct *wq); extern int queue_work(struct workqueue_struct *wq, struct work_struct *work); extern int queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work); extern int queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay); extern int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay); extern void flush_workqueue(struct workqueue_struct *wq); extern void flush_scheduled_work(void); extern void flush_delayed_work(struct delayed_work *work); extern int schedule_work(struct work_struct *work); extern int schedule_work_on(int cpu, struct work_struct *work); extern int schedule_delayed_work(struct delayed_work *work, unsigned long delay); extern int schedule_delayed_work_on(int cpu, struct delayed_work *work, unsigned long delay); extern int schedule_on_each_cpu(work_func_t func); extern int current_is_keventd(void); extern int keventd_up(void); extern void init_workqueues(void); int execute_in_process_context(work_func_t fn, struct execute_work *); extern int flush_work(struct work_struct *work); extern int cancel_work_sync(struct work_struct *work); static inline int cancel_delayed_work(struct delayed_work *work) { int ret; ret = del_timer_sync(&work->timer); if (ret) clear_bit(0, ((unsigned long *)(&(&work->work)->data))); return ret; } static inline int __cancel_delayed_work(struct delayed_work *work) { int ret; ret = del_timer(&work->timer); if (ret) clear_bit(0, ((unsigned long *)(&(&work->work)->data))); return ret; } extern int cancel_delayed_work_sync(struct delayed_work *work); static inline void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, struct delayed_work *work) { cancel_delayed_work_sync(work); } static inline void cancel_rearming_delayed_work(struct delayed_work *work) { cancel_delayed_work_sync(work); } long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg); # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" 2 # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" extern void (*pm_idle)(void); extern void (*pm_power_off)(void); extern void (*pm_power_off_prepare)(void); struct device; typedef struct pm_message { int event; } pm_message_t; # 198 "/lnx/src/MM/mmotm-2010-0323-1534/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_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); }; # 392 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" enum dpm_state { DPM_INVALID, DPM_ON, DPM_PREPARING, DPM_RESUMING, DPM_SUSPENDING, DPM_OFF, DPM_OFF_IRQ, }; # 425 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" enum rpm_status { RPM_ACTIVE = 0, RPM_RESUMING, RPM_SUSPENDED, RPM_SUSPENDING, }; # 444 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" enum rpm_request { RPM_REQ_NONE = 0, RPM_REQ_IDLE, RPM_REQ_SUSPEND, RPM_REQ_RESUME, }; struct dev_pm_info { pm_message_t power_state; unsigned int can_wakeup:1; unsigned int should_wakeup:1; unsigned async_suspend:1; enum dpm_state status; # 480 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" }; # 560 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm.h" static inline int dpm_suspend_start(pm_message_t state) { return 0; } static inline void device_pm_wait_for_dev(struct device *a, struct device *b) {} enum dpm_order { DPM_ORDER_NONE, DPM_ORDER_DEV_AFTER_PARENT, DPM_ORDER_PARENT_BEFORE_DEV, DPM_ORDER_DEV_LAST, }; extern unsigned int pm_flags; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apicdef.h" 1 # 172 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apicdef.h" struct local_apic { struct { unsigned int __reserved[4]; } __reserved_01; struct { unsigned int __reserved[4]; } __reserved_02; struct { unsigned int __reserved_1 : 24, phys_apic_id : 4, __reserved_2 : 4; unsigned int __reserved[3]; } id; const struct { unsigned int version : 8, __reserved_1 : 8, max_lvt : 8, __reserved_2 : 8; unsigned int __reserved[3]; } version; struct { unsigned int __reserved[4]; } __reserved_03; struct { unsigned int __reserved[4]; } __reserved_04; struct { unsigned int __reserved[4]; } __reserved_05; struct { unsigned int __reserved[4]; } __reserved_06; struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } tpr; const struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } apr; const struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } ppr; struct { unsigned int eoi; unsigned int __reserved[3]; } eoi; struct { unsigned int __reserved[4]; } __reserved_07; struct { unsigned int __reserved_1 : 24, logical_dest : 8; unsigned int __reserved_2[3]; } ldr; struct { unsigned int __reserved_1 : 28, model : 4; unsigned int __reserved_2[3]; } dfr; struct { unsigned int spurious_vector : 8, apic_enabled : 1, focus_cpu : 1, __reserved_2 : 22; unsigned int __reserved_3[3]; } svr; struct { unsigned int bitfield; unsigned int __reserved[3]; } isr [8]; struct { unsigned int bitfield; unsigned int __reserved[3]; } tmr [8]; struct { unsigned int bitfield; unsigned int __reserved[3]; } irr [8]; union { struct { unsigned int send_cs_error : 1, receive_cs_error : 1, send_accept_error : 1, receive_accept_error : 1, __reserved_1 : 1, send_illegal_vector : 1, receive_illegal_vector : 1, illegal_register_address : 1, __reserved_2 : 24; unsigned int __reserved_3[3]; } error_bits; struct { unsigned int errors; unsigned int __reserved_3[3]; } all_errors; } esr; struct { unsigned int __reserved[4]; } __reserved_08; struct { unsigned int __reserved[4]; } __reserved_09; struct { unsigned int __reserved[4]; } __reserved_10; struct { unsigned int __reserved[4]; } __reserved_11; struct { unsigned int __reserved[4]; } __reserved_12; struct { unsigned int __reserved[4]; } __reserved_13; struct { unsigned int __reserved[4]; } __reserved_14; struct { unsigned int vector : 8, delivery_mode : 3, destination_mode : 1, delivery_status : 1, __reserved_1 : 1, level : 1, trigger : 1, __reserved_2 : 2, shorthand : 2, __reserved_3 : 12; unsigned int __reserved_4[3]; } icr1; struct { union { unsigned int __reserved_1 : 24, phys_dest : 4, __reserved_2 : 4; unsigned int __reserved_3 : 24, logical_dest : 8; } dest; unsigned int __reserved_4[3]; } icr2; struct { unsigned int vector : 8, __reserved_1 : 4, delivery_status : 1, __reserved_2 : 3, mask : 1, timer_mode : 1, __reserved_3 : 14; unsigned int __reserved_4[3]; } lvt_timer; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_thermal; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_pc; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, polarity : 1, remote_irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; unsigned int __reserved_3[3]; } lvt_lint0; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, polarity : 1, remote_irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; unsigned int __reserved_3[3]; } lvt_lint1; struct { unsigned int vector : 8, __reserved_1 : 4, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_error; struct { unsigned int initial_count; unsigned int __reserved_2[3]; } timer_icr; const struct { unsigned int curr_count; unsigned int __reserved_2[3]; } timer_ccr; struct { unsigned int __reserved[4]; } __reserved_16; struct { unsigned int __reserved[4]; } __reserved_17; struct { unsigned int __reserved[4]; } __reserved_18; struct { unsigned int __reserved[4]; } __reserved_19; struct { unsigned int divisor : 4, __reserved_1 : 28; unsigned int __reserved_2[3]; } timer_dcr; struct { unsigned int __reserved[4]; } __reserved_20; } __attribute__ ((packed)); # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/acpi/pdc_intel.h" 1 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/numa.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/numa_64.h" 1 struct bootnode { u64 start; u64 end; }; extern int compute_hash_shift(struct bootnode *nodes, int numblks, int *nodeids); extern void numa_init_array(void); extern int numa_off; extern s16 apicid_to_node[32768]; extern unsigned long numa_free_all_bootmem(void); extern void setup_node_bootmem(int nodeid, unsigned long start, unsigned long end); # 34 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/numa_64.h" extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_cpu_to_node(void); extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) numa_set_node(int cpu, int node); extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) numa_clear_node(int cpu); extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) numa_add_cpu(int cpu); extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) numa_remove_cpu(int cpu); # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/numa.h" 2 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" 2 # 57 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" int __acpi_acquire_global_lock(unsigned int *lock); int __acpi_release_global_lock(unsigned int *lock); # 173 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" static inline void acpi_noirq_set(void) { } static inline void acpi_disable_pci(void) { } static inline void disable_acpi(void) { } struct bootnode; # 191 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/acpi.h" static inline void acpi_fake_nodes(const struct bootnode *fake_nodes, int num_nodes) { } # 20 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vsyscall.h" 1 enum vsyscall_num { __NR_vgettimeofday, __NR_vtime, __NR_vgetcpu, }; # 33 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vsyscall.h" extern int __vgetcpu_mode; extern volatile unsigned long __jiffies; extern int vgetcpu_mode; extern struct timezone sys_tz; extern void map_vsyscall(void); # 27 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" 2 # 73 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" enum fixed_addresses { VSYSCALL_LAST_PAGE, VSYSCALL_FIRST_PAGE = VSYSCALL_LAST_PAGE + (((-2UL << 20)-(-10UL << 20)) >> 12) - 1, VSYSCALL_HPET, FIX_DBGP_BASE, FIX_EARLYCON_MEM_BASE, FIX_OHCI1394_BASE, FIX_APIC_BASE, FIX_IO_APIC_BASE_0, FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + 128 - 1, # 117 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" FIX_TEXT_POKE1, FIX_TEXT_POKE0, __end_of_permanent_fixed_addresses, # 130 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" FIX_BTMAP_END = (__end_of_permanent_fixed_addresses ^ (__end_of_permanent_fixed_addresses + (64 * 4) - 1)) & -512 ? __end_of_permanent_fixed_addresses + (64 * 4) - (__end_of_permanent_fixed_addresses & ((64 * 4) - 1)) : __end_of_permanent_fixed_addresses, FIX_BTMAP_BEGIN = FIX_BTMAP_END + (64 * 4) - 1, __end_of_fixed_addresses }; extern void reserve_top_address(unsigned long reserve); extern int fixmaps_set; extern pte_t *kmap_pte; extern pgprot_t kmap_prot; extern pte_t *pkmap_page_table; void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags); static inline void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags) { native_set_fixmap(idx, phys, flags); } # 188 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" extern void __this_fixmap_does_not_exist(void); static inline __attribute__((always_inline)) unsigned long fix_to_virt(const unsigned int idx) { # 206 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h" if (idx >= __end_of_fixed_addresses) __this_fixmap_does_not_exist(); return (((-2UL << 20)-((1UL) << 12)) - ((idx) << 12)); } static inline unsigned long virt_to_fix(const unsigned long vaddr) { do { if (__builtin_expect(!!(vaddr >= ((-2UL << 20)-((1UL) << 12)) || vaddr < (((-2UL << 20)-((1UL) << 12)) - (__end_of_permanent_fixed_addresses << 12))), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/fixmap.h"), "i" (214), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); return ((((-2UL << 20)-((1UL) << 12)) - ((vaddr)&(~(((1UL) << 12)-1)))) >> 12); } # 14 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 2 # 42 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" static inline void generic_apic_probe(void) { } extern unsigned int apic_verbosity; extern int local_apic_timer_c2_ok; extern int disable_apic; extern void __inquire_remote_apic(int apicid); static inline void default_inquire_remote_apic(int apicid) { if (apic_verbosity >= 2) __inquire_remote_apic(apicid); } # 76 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" static inline bool apic_from_smp_config(void) { return smp_found_config && !disable_apic; } # 89 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" extern int is_vsmp_box(void); extern void xapic_wait_icr_idle(void); extern u32 safe_xapic_wait_icr_idle(void); extern void xapic_icr_write(u32, u32); extern int setup_profiling_timer(unsigned int); static inline void native_apic_mem_write(u32 reg, u32 v) { volatile u32 *addr = (volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg); asm volatile ("661:\n\t" "movl %0, %1" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(3*32+19)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "xchgl %0, %1" "\n664:\n" ".previous" : "=r" (v), "=m" (*addr) : "i" (0), "0" (v), "m" (*addr)); } static inline u32 native_apic_mem_read(u32 reg) { return *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)); } extern void native_apic_wait_icr_idle(void); extern u32 native_safe_apic_wait_icr_idle(void); extern void native_apic_icr_write(u32 low, u32 id); extern u64 native_apic_icr_read(void); extern int x2apic_mode; # 201 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" static inline void check_x2apic(void) { } static inline void enable_x2apic(void) { } static inline int x2apic_enabled(void) { return 0; } static inline void x2apic_force_phys(void) { } extern void enable_IR_x2apic(void); extern int get_physical_broadcast(void); extern void apic_disable(void); extern int lapic_get_maxlvt(void); extern void clear_local_APIC(void); extern void connect_bsp_APIC(void); extern void disconnect_bsp_APIC(int virt_wire_setup); extern void disable_local_APIC(void); extern void lapic_shutdown(void); extern int verify_local_APIC(void); extern void cache_APIC_registers(void); extern void sync_Arb_IDs(void); extern void init_bsp_APIC(void); extern void setup_local_APIC(void); extern void end_local_APIC_setup(void); extern void init_apic_mappings(void); extern void setup_boot_APIC_clock(void); extern void setup_secondary_APIC_clock(void); extern int APIC_init_uniprocessor(void); extern void enable_NMI_through_LVT0(void); extern void early_init_lapic_mapping(void); extern int apic_is_clustered_box(void); extern u8 setup_APIC_eilvt_mce(u8 vector, u8 msg_type, u8 mask); extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask); # 285 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" struct apic { char *name; int (*probe)(void); int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id); int (*apic_id_registered)(void); u32 irq_delivery_mode; u32 irq_dest_mode; const struct cpumask *(*target_cpus)(void); int disable_esr; int dest_logical; unsigned long (*check_apicid_used)(physid_mask_t *map, int apicid); unsigned long (*check_apicid_present)(int apicid); void (*vector_allocation_domain)(int cpu, struct cpumask *retmask); void (*init_apic_ldr)(void); void (*ioapic_phys_id_map)(physid_mask_t *phys_map, physid_mask_t *retmap); void (*setup_apic_routing)(void); int (*multi_timer_check)(int apic, int irq); int (*apicid_to_node)(int logical_apicid); int (*cpu_to_logical_apicid)(int cpu); int (*cpu_present_to_apicid)(int mps_cpu); void (*apicid_to_cpu_present)(int phys_apicid, physid_mask_t *retmap); void (*setup_portio_remap)(void); int (*check_phys_apicid_present)(int phys_apicid); void (*enable_apic_mode)(void); int (*phys_pkg_id)(int cpuid_apic, int index_msb); int (*mps_oem_check)(struct mpc_table *mpc, char *oem, char *productid); unsigned int (*get_apic_id)(unsigned long x); unsigned long (*set_apic_id)(unsigned int id); unsigned long apic_id_mask; unsigned int (*cpu_mask_to_apicid)(const struct cpumask *cpumask); unsigned int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask, const struct cpumask *andmask); void (*send_IPI_mask)(const struct cpumask *mask, int vector); void (*send_IPI_mask_allbutself)(const struct cpumask *mask, int vector); void (*send_IPI_allbutself)(int vector); void (*send_IPI_all)(int vector); void (*send_IPI_self)(int vector); int (*wakeup_secondary_cpu)(int apicid, unsigned long start_eip); int trampoline_phys_low; int trampoline_phys_high; void (*wait_for_init_deassert)(atomic_t *deassert); void (*smp_callin_clear_local_apic)(void); void (*inquire_remote_apic)(int apicid); u32 (*read)(u32 reg); void (*write)(u32 reg, u32 v); u64 (*icr_read)(void); void (*icr_write)(u32 low, u32 high); void (*wait_icr_idle)(void); u32 (*safe_wait_icr_idle)(void); }; extern struct apic *apic; extern atomic_t init_deasserted; extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip); static inline u32 apic_read(u32 reg) { return apic->read(reg); } static inline void apic_write(u32 reg, u32 val) { apic->write(reg, val); } static inline u64 apic_icr_read(void) { return apic->icr_read(); } static inline void apic_icr_write(u32 low, u32 high) { apic->icr_write(low, high); } static inline void apic_wait_icr_idle(void) { apic->wait_icr_idle(); } static inline u32 safe_apic_wait_icr_idle(void) { return apic->safe_wait_icr_idle(); } static inline void ack_APIC_irq(void) { apic_write(0xB0, 0); } static inline unsigned default_get_apic_id(unsigned long x) { unsigned int ver = ((apic_read(0x30)) & 0xFFu); if (((ver) >= 0x14) || (__builtin_constant_p((3*32+26)) && ( ((((3*32+26))>>5)==0 && (1UL<<(((3*32+26))&31) & ((1<<((0*32+ 0) & 31))|(1<<((0*32+ 3)) & 31)|(1<<((0*32+ 5) & 31))|(1<<((0*32+ 6) & 31))| (1<<((0*32+ 8) & 31))|(1<<((0*32+13)) & 31)|(1<<((0*32+24) & 31))|(1<<((0*32+15) & 31))| (1<<((0*32+25) & 31))|(1<<((0*32+26) & 31))))) || ((((3*32+26))>>5)==1 && (1UL<<(((3*32+26))&31) & ((1<<((1*32+29) & 31))|0))) || ((((3*32+26))>>5)==2 && (1UL<<(((3*32+26))&31) & 0)) || ((((3*32+26))>>5)==3 && (1UL<<(((3*32+26))&31) & ((1<<((3*32+20) & 31))))) || ((((3*32+26))>>5)==4 && (1UL<<(((3*32+26))&31) & 0)) || ((((3*32+26))>>5)==5 && (1UL<<(((3*32+26))&31) & 0)) || ((((3*32+26))>>5)==6 && (1UL<<(((3*32+26))&31) & 0)) || ((((3*32+26))>>5)==7 && (1UL<<(((3*32+26))&31) & 0)) ) ? 1 : (__builtin_constant_p(((3*32+26))) ? constant_test_bit(((3*32+26)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((3*32+26)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))) return (x >> 24) & 0xFF; else return (x >> 24) & 0x0F; } # 437 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" extern struct apic apic_flat; extern struct apic apic_physflat; extern struct apic apic_x2apic_cluster; extern struct apic apic_x2apic_phys; extern int default_acpi_madt_oem_check(char *, char *); extern void apic_send_IPI_self(int vector); extern struct apic apic_x2apic_uv_x; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(int) x2apic_extra_bits; extern int default_cpu_present_to_apicid(int mps_cpu); extern int default_check_phys_apicid_present(int phys_apicid); static inline void default_wait_for_init_deassert(atomic_t *deassert) { while (!atomic_read(deassert)) cpu_relax(); return; } extern void generic_bigsmp_probe(void); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" 1 # 465 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" 2 static inline const struct cpumask *default_target_cpus(void) { return cpu_online_mask; } extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(u16) x86_bios_cpu_apicid; extern __typeof__(u16) *x86_bios_cpu_apicid_early_ptr; extern __typeof__(u16) x86_bios_cpu_apicid_early_map[]; static inline unsigned int read_apic_id(void) { unsigned int reg; reg = apic_read(0x20); return apic->get_apic_id(reg); } extern void default_setup_apic_routing(void); extern struct apic apic_noop; # 520 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" static inline unsigned int default_cpu_mask_to_apicid(const struct cpumask *cpumask) { return ((cpumask)->bits)[0] & 0xFFu; } static inline unsigned int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask, const struct cpumask *andmask) { unsigned long mask1 = ((cpumask)->bits)[0]; unsigned long mask2 = ((andmask)->bits)[0]; unsigned long mask3 = ((cpu_online_mask)->bits)[0]; return (unsigned int)(mask1 & mask2 & mask3); } static inline unsigned long default_check_apicid_used(physid_mask_t *map, int apicid) { return (__builtin_constant_p((apicid)) ? constant_test_bit((apicid), ((*map).mask)) : variable_test_bit((apicid), ((*map).mask))); } static inline unsigned long default_check_apicid_present(int bit) { return (__builtin_constant_p((bit)) ? constant_test_bit((bit), ((phys_cpu_present_map).mask)) : variable_test_bit((bit), ((phys_cpu_present_map).mask))); } static inline void default_ioapic_phys_id_map(physid_mask_t *phys_map, physid_mask_t *retmap) { *retmap = *phys_map; } static inline int default_cpu_to_logical_apicid(int cpu) { return 1 << cpu; } static inline int __default_cpu_present_to_apicid(int mps_cpu) { if (mps_cpu < nr_cpu_ids && (__builtin_constant_p((cpumask_check((mps_cpu)))) ? constant_test_bit((cpumask_check((mps_cpu))), ((((cpu_present_mask))->bits))) : variable_test_bit((cpumask_check((mps_cpu))), ((((cpu_present_mask))->bits))))) return (int)(*({ do { const void __attribute__((noderef, address_space(3))) *__vpp_verify = (typeof((&(x86_bios_cpu_apicid))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(x86_bios_cpu_apicid))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_bios_cpu_apicid)))); (typeof((typeof(*(&(x86_bios_cpu_apicid))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_bios_cpu_apicid)))) (__ptr + (((__per_cpu_offset[mps_cpu])))); }); })); else return 0xFFFFu; } static inline int __default_check_phys_apicid_present(int phys_apicid) { return (__builtin_constant_p((phys_apicid)) ? constant_test_bit((phys_apicid), ((phys_cpu_present_map).mask)) : variable_test_bit((phys_apicid), ((phys_cpu_present_map).mask))); } # 584 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/apic.h" extern int default_cpu_present_to_apicid(int mps_cpu); extern int default_check_phys_apicid_present(int phys_apicid); # 14 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io_apic.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq_vectors.h" 1 # 136 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq_vectors.h" static inline int invalid_vm86_irq(int irq) { return irq < 3 || irq > 15; } # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io_apic.h" 2 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io_apic.h" union IO_APIC_reg_00 { u32 raw; struct { u32 __reserved_2 : 14, LTS : 1, delivery_type : 1, __reserved_1 : 8, ID : 8; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_01 { u32 raw; struct { u32 version : 8, __reserved_2 : 7, PRQ : 1, entries : 8, __reserved_1 : 8; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_02 { u32 raw; struct { u32 __reserved_2 : 24, arbitration : 4, __reserved_1 : 4; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_03 { u32 raw; struct { u32 boot_DT : 1, __reserved_1 : 31; } __attribute__ ((packed)) bits; }; enum ioapic_irq_destination_types { dest_Fixed = 0, dest_LowestPrio = 1, dest_SMI = 2, dest__reserved_1 = 3, dest_NMI = 4, dest_INIT = 5, dest__reserved_2 = 6, dest_ExtINT = 7 }; struct IO_APIC_route_entry { __u32 vector : 8, delivery_mode : 3, dest_mode : 1, delivery_status : 1, polarity : 1, irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; __u32 __reserved_3 : 24, dest : 8; } __attribute__ ((packed)); struct IR_IO_APIC_route_entry { __u64 vector : 8, zero : 3, index2 : 1, delivery_status : 1, polarity : 1, irr : 1, trigger : 1, mask : 1, reserved : 31, format : 1, index : 15; } __attribute__ ((packed)); extern int nr_ioapics; extern int nr_ioapic_registers[128]; extern struct mpc_ioapic mp_ioapics[128]; extern int mp_irq_entries; extern struct mpc_intsrc mp_irqs[(256 * 4)]; extern int mpc_default_type; extern int sis_apic_bug; extern int skip_ioapic_setup; extern int noioapicquirk; extern int noioapicreroute; extern int timer_through_8259; # 153 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io_apic.h" extern u8 io_apic_unique_id(u8 id); extern int io_apic_get_unique_id(int ioapic, int apic_id); extern int io_apic_get_version(int ioapic); extern int io_apic_get_redir_entries(int ioapic); struct io_apic_irq_attr; extern int io_apic_set_pci_routing(struct device *dev, int irq, struct io_apic_irq_attr *irq_attr); void setup_IO_APIC_irq_extra(u32 gsi); extern int (*ioapic_renumber_irq)(int ioapic, int irq); extern void ioapic_init_mappings(void); extern void ioapic_insert_resources(void); extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); extern int save_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); extern void mask_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); extern int restore_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); extern void probe_nr_irqs_gsi(void); extern int setup_ioapic_entry(int apic, int irq, struct IO_APIC_route_entry *entry, unsigned int destination, int trigger, int polarity, int vector, int pin); extern void ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e); extern void setup_ioapic_ids_from_mpc(void); struct mp_ioapic_gsi{ int gsi_base; int gsi_end; }; extern struct mp_ioapic_gsi mp_gsi_routing[]; int mp_find_ioapic(int gsi); int mp_find_ioapic_pin(int ioapic, int gsi); void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) mp_register_ioapic(int id, u32 address, u32 gsi_base); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pre_init_apic_IRQ0(void); # 16 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" 2 extern int smp_num_siblings; extern unsigned int num_processors; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(cpumask_var_t) cpu_sibling_map; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(cpumask_var_t) cpu_core_map; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(u16) cpu_llc_id; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(int) cpu_number; static inline struct cpumask *cpu_sibling_mask(int cpu) { return (*({ do { const void __attribute__((noderef, address_space(3))) *__vpp_verify = (typeof((&(cpu_sibling_map))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(cpu_sibling_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(cpu_sibling_map)))); (typeof((typeof(*(&(cpu_sibling_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(cpu_sibling_map)))) (__ptr + (((__per_cpu_offset[cpu])))); }); })); } static inline struct cpumask *cpu_core_mask(int cpu) { return (*({ do { const void __attribute__((noderef, address_space(3))) *__vpp_verify = (typeof((&(cpu_core_map))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(cpu_core_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(cpu_core_map)))); (typeof((typeof(*(&(cpu_core_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(cpu_core_map)))) (__ptr + (((__per_cpu_offset[cpu])))); }); })); } extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(u16) x86_cpu_to_apicid; extern __typeof__(u16) *x86_cpu_to_apicid_early_ptr; extern __typeof__(u16) x86_cpu_to_apicid_early_map[]; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(u16) x86_bios_cpu_apicid; extern __typeof__(u16) *x86_bios_cpu_apicid_early_ptr; extern __typeof__(u16) x86_bios_cpu_apicid_early_map[]; extern struct { void *sp; unsigned short ss; } stack_start; struct smp_ops { void (*smp_prepare_boot_cpu)(void); void (*smp_prepare_cpus)(unsigned max_cpus); void (*smp_cpus_done)(unsigned max_cpus); void (*smp_send_stop)(void); void (*smp_send_reschedule)(int cpu); int (*cpu_up)(unsigned cpu); int (*cpu_disable)(void); void (*cpu_die)(unsigned int cpu); void (*play_dead)(void); void (*send_call_func_ipi)(const struct cpumask *mask); void (*send_call_func_single_ipi)(int cpu); }; extern void set_cpu_sibling_map(int cpu); extern struct smp_ops smp_ops; static inline void smp_send_stop(void) { smp_ops.smp_send_stop(); } static inline void smp_prepare_boot_cpu(void) { smp_ops.smp_prepare_boot_cpu(); } static inline void smp_prepare_cpus(unsigned int max_cpus) { smp_ops.smp_prepare_cpus(max_cpus); } static inline void smp_cpus_done(unsigned int max_cpus) { smp_ops.smp_cpus_done(max_cpus); } static inline int __cpu_up(unsigned int cpu) { return smp_ops.cpu_up(cpu); } static inline int __cpu_disable(void) { return smp_ops.cpu_disable(); } static inline void __cpu_die(unsigned int cpu) { smp_ops.cpu_die(cpu); } static inline void play_dead(void) { smp_ops.play_dead(); } static inline void smp_send_reschedule(int cpu) { smp_ops.smp_send_reschedule(cpu); } static inline void arch_send_call_function_single_ipi(int cpu) { smp_ops.send_call_func_single_ipi(cpu); } static inline void arch_send_call_function_ipi_mask(const struct cpumask *mask) { smp_ops.send_call_func_ipi(mask); } void cpu_disable_common(void); void native_smp_prepare_boot_cpu(void); void native_smp_prepare_cpus(unsigned int max_cpus); void native_smp_cpus_done(unsigned int max_cpus); int native_cpu_up(unsigned int cpunum); int native_cpu_disable(void); void native_cpu_die(unsigned int cpu); void native_play_dead(void); void play_dead_common(void); void wbinvd_on_cpu(int cpu); int wbinvd_on_all_cpus(void); void native_send_call_func_ipi(const struct cpumask *mask); void native_send_call_func_single_ipi(int cpu); void smp_store_cpu_info(int id); static inline int num_booting_cpus(void) { return cpumask_weight(cpu_callout_mask); } # 161 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" extern unsigned disabled_cpus __attribute__ ((__section__(".cpuinit.data"))); # 196 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/smp.h" extern int hard_smp_processor_id(void); # 13 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone_64.h" 2 struct memnode { int shift; unsigned int mapsize; s16 *map; s16 embedded_map[64 - 8]; } __attribute__((__aligned__((1 << (6))))); extern struct memnode memnode; extern struct pglist_data *node_data[]; static inline __attribute__((pure)) int phys_to_nid(unsigned long addr) { unsigned nid; do { } while (0); nid = memnode.map[addr >> memnode.shift]; do { } while (0); return nid; } # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/mmzone.h" 2 # 773 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 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); # 808 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" static inline struct zone *zonelist_zone(struct zoneref *zoneref) { return zoneref->zone; } static inline int zonelist_zone_idx(struct zoneref *zoneref) { return zoneref->zone_idx; } static inline int zonelist_node_idx(struct zoneref *zoneref) { return zoneref->zone->node; } # 841 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct zoneref *next_zones_zonelist(struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes, struct zone **zone); # 858 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" static inline 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); } # 896 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sparsemem.h" 1 # 897 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" 2 # 939 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" struct page; struct page_cgroup; struct mem_section { # 954 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" unsigned long section_mem_map; unsigned long *pageblock_flags; struct page_cgroup *page_cgroup; unsigned long pad; }; # 979 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" extern struct mem_section *mem_section[((1UL << (46 - 27)) / (((1UL) << 12) / sizeof (struct mem_section)))]; static inline struct mem_section *__nr_to_section(unsigned long nr) { if (!mem_section[((nr) / (((1UL) << 12) / sizeof (struct mem_section)))]) return ((void *)0); return &mem_section[((nr) / (((1UL) << 12) / sizeof (struct mem_section)))][nr & ((((1UL) << 12) / sizeof (struct mem_section)) - 1)]; } extern int __section_nr(struct mem_section* ms); extern unsigned long usemap_size(void); # 1004 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" static inline struct page *__section_mem_map_addr(struct mem_section *section) { unsigned long map = section->section_mem_map; map &= (~((1UL<<2)-1)); return (struct page *)map; } static inline int present_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<0))); } static inline int present_section_nr(unsigned long nr) { return present_section(__nr_to_section(nr)); } static inline int valid_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<1))); } static inline int valid_section_nr(unsigned long nr) { return valid_section(__nr_to_section(nr)); } static inline struct mem_section *__pfn_to_section(unsigned long pfn) { return __nr_to_section(((pfn) >> (27 - 12))); } static inline int pfn_valid(unsigned long pfn) { if (((pfn) >> (27 - 12)) >= (1UL << (46 - 27))) return 0; return valid_section(__nr_to_section(((pfn) >> (27 - 12)))); } static inline int pfn_present(unsigned long pfn) { if (((pfn) >> (27 - 12)) >= (1UL << (46 - 27))) return 0; return present_section(__nr_to_section(((pfn) >> (27 - 12)))); } # 1066 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" void sparse_init(void); # 1082 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 1116 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mmzone.h" static inline int memmap_valid_within(unsigned long pfn, struct page *page, struct zone *zone) { return 1; } # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/topology.h" 1 # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/topology.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp.h" extern void cpu_idle(void); struct call_single_data { struct list_head list; void (*func) (void *info); void *info; u16 flags; u16 priv; }; extern unsigned int total_cpus; int smp_call_function_single(int cpuid, void (*func) (void *info), void *info, int wait); # 46 "/lnx/src/MM/mmotm-2010-0323-1534/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); extern void smp_cpus_done(unsigned int max_cpus); int smp_call_function(void(*func)(void *info), void *info, int wait); void smp_call_function_many(const struct cpumask *mask, void (*func)(void *info), 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, void (*func)(void *info), void *info, int wait); void generic_smp_call_function_single_interrupt(void); void generic_smp_call_function_interrupt(void); void ipi_call_lock(void); void ipi_call_unlock(void); void ipi_call_lock_irq(void); void ipi_call_unlock_irq(void); int on_each_cpu(void (*func) (void *info), void *info, int wait); # 113 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp.h" void smp_prepare_boot_cpu(void); extern unsigned int setup_max_cpus; # 183 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp.h" extern void arch_disable_smp_support(void); void smp_setup_processor_id(void); # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/topology.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" 1 # 65 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(int) x86_cpu_to_node_map; extern __typeof__(int) *x86_cpu_to_node_map_early_ptr; extern __typeof__(int) x86_cpu_to_node_map_early_map[]; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(int) node_number; # 78 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" static inline int cpu_to_node(int cpu) { return (*({ do { const void __attribute__((noderef, address_space(3))) *__vpp_verify = (typeof((&(x86_cpu_to_node_map))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(x86_cpu_to_node_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_cpu_to_node_map)))); (typeof((typeof(*(&(x86_cpu_to_node_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_cpu_to_node_map)))) (__ptr + (((__per_cpu_offset[cpu])))); }); })); } static inline int early_cpu_to_node(int cpu) { return *((x86_cpu_to_node_map_early_ptr) ? &(x86_cpu_to_node_map_early_ptr)[cpu] : &(*({ do { const void __attribute__((noderef, address_space(3))) *__vpp_verify = (typeof((&(x86_cpu_to_node_map))))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((typeof(*(&(x86_cpu_to_node_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_cpu_to_node_map)))); (typeof((typeof(*(&(x86_cpu_to_node_map))) __attribute__((address_space(0))) __attribute__((force)) *)(&(x86_cpu_to_node_map)))) (__ptr + (((__per_cpu_offset[cpu])))); }); }))); } extern cpumask_var_t node_to_cpumask_map[(1 << 6)]; static inline const struct cpumask *cpumask_of_node(int node) { return node_to_cpumask_map[node]; } extern void setup_node_to_cpumask_map(void); # 183 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/topology.h" 1 # 184 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" 2 extern const struct cpumask *cpu_coregroup_mask(int cpu); # 197 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" static inline void arch_fix_phys_package_id(int num, u32 slot) { } struct pci_bus; void x86_pci_root_bus_res_quirks(struct pci_bus *b); # 211 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/topology.h" extern int get_mp_bus_to_node(int busnum); extern void set_mp_bus_to_node(int busnum, int node); # 35 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/topology.h" 2 # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/topology.h" int arch_update_cpu_topology(void); # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" 2 struct vm_area_struct; # 121 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" static inline int allocflags_to_migratetype(gfp_t gfp_flags) { ({ int __ret_warn_on = !!((gfp_flags & (((__attribute__((force)) gfp_t)0x80000u)|((__attribute__((force)) gfp_t)0x08u))) == (((__attribute__((force)) gfp_t)0x80000u)|((__attribute__((force)) gfp_t)0x08u))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h", 123); __builtin_expect(!!(__ret_warn_on), 0); }); if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) return 0; return (((gfp_flags & ((__attribute__((force)) gfp_t)0x08u)) != 0) << 1) | ((gfp_flags & ((__attribute__((force)) gfp_t)0x80000u)) != 0); } # 216 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" static inline enum zone_type gfp_zone(gfp_t flags) { enum zone_type z; int bit = flags & (((__attribute__((force)) gfp_t)0x01u)|((__attribute__((force)) gfp_t)0x02u)|((__attribute__((force)) gfp_t)0x04u)|((__attribute__((force)) gfp_t)0x08u)); z = (( (ZONE_NORMAL << 0 * 2) | (ZONE_DMA << ((__attribute__((force)) gfp_t)0x01u) * 2) | (ZONE_NORMAL << ((__attribute__((force)) gfp_t)0x02u) * 2) | (ZONE_DMA32 << ((__attribute__((force)) gfp_t)0x04u) * 2) | (ZONE_NORMAL << ((__attribute__((force)) gfp_t)0x08u) * 2) | (ZONE_DMA << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x01u)) * 2) | (ZONE_MOVABLE << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x02u)) * 2) | (ZONE_DMA32 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u)) * 2)) >> (bit * 2)) & ((1 << 2) - 1); if (__builtin_constant_p(bit)) do { ((void)sizeof(char[1 - 2*!!((( 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x04u)) | 1 << (((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x02u) | ((__attribute__((force)) gfp_t)0x01u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x01u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x02u))) >> bit) & 1)])); if ((( 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x04u)) | 1 << (((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x02u) | ((__attribute__((force)) gfp_t)0x01u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x01u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x02u)) | 1 << (((__attribute__((force)) gfp_t)0x08u) | ((__attribute__((force)) gfp_t)0x04u) | ((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x02u))) >> bit) & 1) __build_bug_on_failed = 1; } while(0); else { } return z; } # 241 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" static inline int gfp_zonelist(gfp_t flags) { if (1 && __builtin_expect(!!(flags & ((__attribute__((force)) gfp_t)0x40000u)), 0)) return 1; return 0; } # 258 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/gfp.h" static inline struct zonelist *node_zonelist(int nid, gfp_t flags) { return (node_data[nid])->node_zonelists + gfp_zonelist(flags); } static inline void arch_free_page(struct page *page, int order) { } static inline 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 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 struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (nid < 0) nid = ({ typeof(node_number) pfo_ret__; switch (sizeof(node_number)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (node_number)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (node_number)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (node_number)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (node_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); } static inline struct page *alloc_pages_exact_node(int nid, gfp_t gfp_mask, unsigned int order) { do { } while (0); return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); } extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); static inline struct page * alloc_pages(gfp_t gfp_mask, unsigned int order) { return alloc_pages_current(gfp_mask, order); } extern struct page *alloc_page_vma(gfp_t gfp_mask, struct vm_area_struct *vma, unsigned long addr); 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); 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); 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); extern gfp_t gfp_allowed_mask; extern void set_gfp_allowed_mask(gfp_t mask); extern gfp_t clear_gfp_allowed_mask(gfp_t mask); # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmod.h" 2 # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmod.h" static inline int request_module(const char *name, ...) { return -38; } static inline int request_module_nowait(const char *name, ...) { return -38; } struct key; struct file; enum umh_wait { UMH_NO_WAIT = -1, UMH_WAIT_EXEC = 0, UMH_WAIT_PROC = 1, }; struct subprocess_info { struct work_struct work; struct completion *complete; char *path; char **argv; char **envp; enum umh_wait wait; int retval; int (*init)(struct subprocess_info *info); void (*cleanup)(struct subprocess_info *info); void *data; }; struct subprocess_info *call_usermodehelper_setup(char *path, char **argv, char **envp, gfp_t gfp_mask); void call_usermodehelper_setfns(struct subprocess_info *info, int (*init)(struct subprocess_info *info), void (*cleanup)(struct subprocess_info *info), void *data); int call_usermodehelper_exec(struct subprocess_info *info, enum umh_wait wait); void call_usermodehelper_freeinfo(struct subprocess_info *info); static inline int call_usermodehelper_fns(char *path, char **argv, char **envp, enum umh_wait wait, int (*init)(struct subprocess_info *info), void (*cleanup)(struct subprocess_info *), void *data) { struct subprocess_info *info; gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? (((__attribute__((force)) gfp_t)0x20u)) : (((__attribute__((force)) gfp_t)0x10u) | ((__attribute__((force)) gfp_t)0x40u) | ((__attribute__((force)) gfp_t)0x80u)); info = call_usermodehelper_setup(path, argv, envp, gfp_mask); if (info == ((void *)0)) return -12; call_usermodehelper_setfns(info, init, cleanup, data); return call_usermodehelper_exec(info, wait); } static inline int call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait) { return call_usermodehelper_fns(path, argv, envp, wait, ((void *)0), ((void *)0), ((void *)0)); } extern void usermodehelper_init(void); extern int usermodehelper_disable(void); extern void usermodehelper_enable(void); # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf-em.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/user.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/user_64.h" 1 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/user_64.h" struct user_i387_struct { unsigned short cwd; unsigned short swd; unsigned short twd; unsigned short fop; __u64 rip; __u64 rdp; __u32 mxcsr; __u32 mxcsr_mask; __u32 st_space[32]; __u32 xmm_space[64]; __u32 padding[24]; }; struct user_regs_struct { unsigned long r15; unsigned long r14; unsigned long r13; unsigned long r12; unsigned long bp; unsigned long bx; unsigned long r11; unsigned long r10; unsigned long r9; unsigned long r8; unsigned long ax; unsigned long cx; unsigned long dx; unsigned long si; unsigned long di; unsigned long orig_ax; unsigned long ip; unsigned long cs; unsigned long flags; unsigned long sp; unsigned long ss; unsigned long fs_base; unsigned long gs_base; unsigned long ds; unsigned long es; unsigned long fs; unsigned long gs; }; struct user { struct user_regs_struct regs; int u_fpvalid; int pad0; struct user_i387_struct i387; 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; int pad1; unsigned long u_ar0; struct user_i387_struct *u_fpstate; unsigned long magic; char u_comm[32]; unsigned long u_debugreg[8]; unsigned long error_code; unsigned long fault_address; }; # 8 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/user.h" 2 struct user_ymmh_regs { __u32 ymmh_space[64]; }; struct user_xsave_hdr { __u64 xstate_bv; __u64 reserved1[2]; __u64 reserved2[5]; }; # 53 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/user.h" struct user_xstateregs { struct { __u64 fpx_space[58]; __u64 xstate_fx_sw[6]; } i387; struct user_xsave_hdr xsave_hdr; struct user_ymmh_regs ymmh; }; # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" 2 typedef unsigned long elf_greg_t; typedef elf_greg_t elf_gregset_t[(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))]; typedef struct user_i387_struct elf_fpregset_t; # 75 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vdso.h" 1 extern const char VDSO64_PRELINK[]; # 19 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vdso.h" extern const char VDSO32_PRELINK[]; # 36 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/vdso.h" extern void __attribute__((noderef, address_space(1))) __kernel_sigreturn; extern void __attribute__((noderef, address_space(1))) __kernel_rt_sigreturn; extern const char vdso32_int80_start, vdso32_int80_end; extern const char vdso32_syscall_start, vdso32_syscall_end; extern const char vdso32_sysenter_start, vdso32_sysenter_end; # 76 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" 2 extern unsigned int vdso_enabled; # 160 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" static inline void elf_common_init(struct thread_struct *t, struct pt_regs *regs, const u16 ds) { regs->ax = regs->bx = regs->cx = regs->dx = 0; regs->si = regs->di = regs->bp = 0; regs->r8 = regs->r9 = regs->r10 = regs->r11 = 0; regs->r12 = regs->r13 = regs->r14 = regs->r15 = 0; t->fs = t->gs = 0; t->fsindex = t->gsindex = 0; t->ds = t->es = ds; } void start_thread_ia32(struct pt_regs *regs, u32 new_ip, u32 new_sp); void set_personality_ia32(void); # 226 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" extern void set_personality_64bit(void); extern unsigned int sysctl_vsyscall32; extern int force_personality32; # 264 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" struct task_struct; # 311 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/elf.h" struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); extern int syscall32_setup_pages(struct linux_binprm *, int exstack); extern unsigned long arch_randomize_brk(struct mm_struct *mm); # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" 2 struct file; # 20 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" 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; # 149 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 172 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 311 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 400 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 426 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" extern Elf64_Dyn _DYNAMIC []; # 438 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/elf.h" static inline int elf_coredump_extra_notes_size(void) { return 0; } static inline int elf_coredump_extra_notes_write(struct file *file, loff_t *foffset) { return 0; } # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kobject.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kobject.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysfs.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysfs.h" struct kobject; struct module; struct attribute { const char *name; struct module *owner; mode_t mode; }; # 60 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysfs.h" struct attribute_group { const char *name; mode_t (*is_visible)(struct kobject *, struct attribute *, int); struct attribute **attrs; }; # 89 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sysfs.h" struct vm_area_struct; struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct kobject *, struct bin_attribute *, char *, loff_t, size_t); ssize_t (*write)(struct kobject *, struct bin_attribute *, char *, loff_t, size_t); int (*mmap)(struct kobject *, struct bin_attribute *attr, struct vm_area_struct *vma); }; # 115 "/lnx/src/MM/mmotm-2010-0323-1534/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); }; struct sysfs_dirent; int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *), void *data, struct module *owner); int sysfs_create_dir(struct kobject *kobj); void sysfs_remove_dir(struct kobject *kobj); int sysfs_rename_dir(struct kobject *kobj, const char *new_name); int sysfs_move_dir(struct kobject *kobj, struct kobject *new_parent_kobj); int sysfs_create_file(struct kobject *kobj, const struct attribute *attr); int sysfs_create_files(struct kobject *kobj, const struct attribute **attr); int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_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 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 sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name); int 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); int 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); 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 unsigned char *name); struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd); void sysfs_put(struct sysfs_dirent *sd); void sysfs_printk_last_file(void); int sysfs_init(void); # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kobject.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kref.h" 1 # 20 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kref.h" struct kref { atomic_t refcount; }; void kref_init(struct kref *kref); void kref_get(struct kref *kref); int kref_put(struct kref *kref, void (*release) (struct kref *kref)); # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kobject.h" 2 # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kobject.h" extern char uevent_helper[]; extern u64 uevent_seqnum; # 49 "/lnx/src/MM/mmotm-2010-0323-1534/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 int kobject_set_name(struct kobject *kobj, const char *name, ...) __attribute__((format(printf, 2, 3))); extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, va_list vargs); static inline const char *kobject_name(const struct kobject *kobj) { return kobj->name; } extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); extern int kobject_add(struct kobject *kobj, struct kobject *parent, const char *fmt, ...); extern 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 * kobject_create(void); extern struct kobject * kobject_create_and_add(const char *name, struct kobject *parent); extern int kobject_rename(struct kobject *, const char *new_name); extern int 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; }; 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; # 154 "/lnx/src/MM/mmotm-2010-0323-1534/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 kset_register(struct kset *kset); extern void kset_unregister(struct kset *kset); extern struct kset * kset_create_and_add(const char *name, const struct kset_uevent_ops *u, struct kobject *parent_kobj); static inline 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 struct kset *kset_get(struct kset *k) { return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0); } static inline void kset_put(struct kset *k) { kobject_put(&k->kobj); } static inline 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[]); int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) __attribute__((format (printf, 2, 3))); int kobject_action_type(const char *buf, size_t count, enum kobject_action *type); # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" 1 # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" struct kernel_param; typedef int (*param_set_fn)(const char *val, struct kernel_param *kp); typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp); struct kernel_param { const char *name; u16 perm; u16 flags; param_set_fn set; param_get_fn get; 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 *num; param_set_fn set; param_get_fn get; unsigned int elemsize; void *elem; }; # 143 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" extern int parse_args(const char *name, char *args, struct kernel_param *params, unsigned num, int (*unknown)(char *param, char *val)); extern void destroy_params(const struct kernel_param *params, unsigned num); # 165 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" extern int param_set_byte(const char *val, struct kernel_param *kp); extern int param_get_byte(char *buffer, struct kernel_param *kp); extern int param_set_short(const char *val, struct kernel_param *kp); extern int param_get_short(char *buffer, struct kernel_param *kp); extern int param_set_ushort(const char *val, struct kernel_param *kp); extern int param_get_ushort(char *buffer, struct kernel_param *kp); extern int param_set_int(const char *val, struct kernel_param *kp); extern int param_get_int(char *buffer, struct kernel_param *kp); extern int param_set_uint(const char *val, struct kernel_param *kp); extern int param_get_uint(char *buffer, struct kernel_param *kp); extern int param_set_long(const char *val, struct kernel_param *kp); extern int param_get_long(char *buffer, struct kernel_param *kp); extern int param_set_ulong(const char *val, struct kernel_param *kp); extern int param_get_ulong(char *buffer, struct kernel_param *kp); extern int param_set_charp(const char *val, struct kernel_param *kp); extern int param_get_charp(char *buffer, struct kernel_param *kp); extern int param_set_bool(const char *val, struct kernel_param *kp); extern int param_get_bool(char *buffer, struct kernel_param *kp); # 208 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" extern int param_set_invbool(const char *val, struct kernel_param *kp); extern int param_get_invbool(char *buffer, struct kernel_param *kp); # 226 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" extern int param_array_set(const char *val, struct kernel_param *kp); extern int param_array_get(char *buffer, struct kernel_param *kp); extern int param_set_copystring(const char *val, struct kernel_param *kp); extern int param_get_string(char *buffer, struct kernel_param *kp); struct module; # 243 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/moduleparam.h" static inline int module_param_sysfs_setup(struct module *mod, struct kernel_param *kparam, unsigned int num_params) { return 0; } static inline void module_param_sysfs_remove(struct module *mod) { } # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" 1 # 20 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" struct module; struct tracepoint; struct tracepoint { const char *name; int state; void (*regfunc)(void); void (*unregfunc)(void); void **funcs; } __attribute__((aligned(32))); # 99 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" extern void tracepoint_update_probe_range(struct tracepoint *begin, struct tracepoint *end); # 132 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" extern int tracepoint_probe_register(const char *name, void *probe); extern int tracepoint_probe_unregister(const char *name, void *probe); extern int tracepoint_probe_register_noupdate(const char *name, void *probe); extern int tracepoint_probe_unregister_noupdate(const char *name, void *probe); extern void tracepoint_probe_update_all(void); struct tracepoint_iter { struct module *module; struct tracepoint *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); extern int tracepoint_get_iter_range(struct tracepoint **tracepoint, struct tracepoint *begin, struct tracepoint *end); static inline void tracepoint_synchronize_unregister(void) { synchronize_sched(); } # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" 1 # 98 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" 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 *)); void kmem_cache_destroy(struct kmem_cache *); int kmem_cache_shrink(struct kmem_cache *); void kmem_cache_free(struct kmem_cache *, void *); unsigned int kmem_cache_size(struct kmem_cache *); const char *kmem_cache_name(struct kmem_cache *); int kmem_ptr_validate(struct kmem_cache *cachep, const void *ptr); # 141 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" void * __krealloc(const void *, size_t, gfp_t); void * krealloc(const void *, size_t, gfp_t); void kfree(const void *); void kzfree(const void *); size_t ksize(const void *); # 167 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemtrace.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemtrace.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" 2 # 47 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" ; # 81 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_kmalloc; static inline void trace_kmalloc(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags) { if (__builtin_expect(!!(__tracepoint_kmalloc.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kmalloc)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kmalloc)->funcs) *)&((&__tracepoint_kmalloc)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags))(*it_func))(call_site, ptr, bytes_req, bytes_alloc, gfp_flags); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kmalloc(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags)) { return tracepoint_probe_register("kmalloc", (void *)probe); } static inline int unregister_trace_kmalloc(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags)) { return tracepoint_probe_unregister("kmalloc", (void *)probe); }; extern struct tracepoint __tracepoint_kmem_cache_alloc; static inline void trace_kmem_cache_alloc(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags) { if (__builtin_expect(!!(__tracepoint_kmem_cache_alloc.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kmem_cache_alloc)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kmem_cache_alloc)->funcs) *)&((&__tracepoint_kmem_cache_alloc)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags))(*it_func))(call_site, ptr, bytes_req, bytes_alloc, gfp_flags); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kmem_cache_alloc(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags)) { return tracepoint_probe_register("kmem_cache_alloc", (void *)probe); } static inline int unregister_trace_kmem_cache_alloc(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags)) { return tracepoint_probe_unregister("kmem_cache_alloc", (void *)probe); }; ; # 135 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_kmalloc_node; static inline void trace_kmalloc_node(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node) { if (__builtin_expect(!!(__tracepoint_kmalloc_node.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kmalloc_node)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kmalloc_node)->funcs) *)&((&__tracepoint_kmalloc_node)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node))(*it_func))(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kmalloc_node(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node)) { return tracepoint_probe_register("kmalloc_node", (void *)probe); } static inline int unregister_trace_kmalloc_node(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node)) { return tracepoint_probe_unregister("kmalloc_node", (void *)probe); }; # 144 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_kmem_cache_alloc_node; static inline void trace_kmem_cache_alloc_node(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node) { if (__builtin_expect(!!(__tracepoint_kmem_cache_alloc_node.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kmem_cache_alloc_node)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kmem_cache_alloc_node)->funcs) *)&((&__tracepoint_kmem_cache_alloc_node)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node))(*it_func))(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kmem_cache_alloc_node(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node)) { return tracepoint_probe_register("kmem_cache_alloc_node", (void *)probe); } static inline int unregister_trace_kmem_cache_alloc_node(void (*probe)(unsigned long call_site, const void *ptr, size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags, int node)) { return tracepoint_probe_unregister("kmem_cache_alloc_node", (void *)probe); }; # 153 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" ; # 172 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_kfree; static inline void trace_kfree(unsigned long call_site, const void *ptr) { if (__builtin_expect(!!(__tracepoint_kfree.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kfree)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kfree)->funcs) *)&((&__tracepoint_kfree)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr))(*it_func))(call_site, ptr); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kfree(void (*probe)(unsigned long call_site, const void *ptr)) { return tracepoint_probe_register("kfree", (void *)probe); } static inline int unregister_trace_kfree(void (*probe)(unsigned long call_site, const void *ptr)) { return tracepoint_probe_unregister("kfree", (void *)probe); }; extern struct tracepoint __tracepoint_kmem_cache_free; static inline void trace_kmem_cache_free(unsigned long call_site, const void *ptr) { if (__builtin_expect(!!(__tracepoint_kmem_cache_free.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_kmem_cache_free)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_kmem_cache_free)->funcs) *)&((&__tracepoint_kmem_cache_free)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(unsigned long call_site, const void *ptr))(*it_func))(call_site, ptr); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_kmem_cache_free(void (*probe)(unsigned long call_site, const void *ptr)) { return tracepoint_probe_register("kmem_cache_free", (void *)probe); } static inline int unregister_trace_kmem_cache_free(void (*probe)(unsigned long call_site, const void *ptr)) { return tracepoint_probe_unregister("kmem_cache_free", (void *)probe); }; extern struct tracepoint __tracepoint_mm_page_free_direct; static inline void trace_mm_page_free_direct(struct page *page, unsigned int order) { if (__builtin_expect(!!(__tracepoint_mm_page_free_direct.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_page_free_direct)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_page_free_direct)->funcs) *)&((&__tracepoint_mm_page_free_direct)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, unsigned int order))(*it_func))(page, order); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_page_free_direct(void (*probe)(struct page *page, unsigned int order)) { return tracepoint_probe_register("mm_page_free_direct", (void *)probe); } static inline int unregister_trace_mm_page_free_direct(void (*probe)(struct page *page, unsigned int order)) { return tracepoint_probe_unregister("mm_page_free_direct", (void *)probe); }; # 208 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_mm_pagevec_free; static inline void trace_mm_pagevec_free(struct page *page, int cold) { if (__builtin_expect(!!(__tracepoint_mm_pagevec_free.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_pagevec_free)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_pagevec_free)->funcs) *)&((&__tracepoint_mm_pagevec_free)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, int cold))(*it_func))(page, cold); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_pagevec_free(void (*probe)(struct page *page, int cold)) { return tracepoint_probe_register("mm_pagevec_free", (void *)probe); } static inline int unregister_trace_mm_pagevec_free(void (*probe)(struct page *page, int cold)) { return tracepoint_probe_unregister("mm_pagevec_free", (void *)probe); }; # 230 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_mm_page_alloc; static inline void trace_mm_page_alloc(struct page *page, unsigned int order, gfp_t gfp_flags, int migratetype) { if (__builtin_expect(!!(__tracepoint_mm_page_alloc.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_page_alloc)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_page_alloc)->funcs) *)&((&__tracepoint_mm_page_alloc)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, unsigned int order, gfp_t gfp_flags, int migratetype))(*it_func))(page, order, gfp_flags, migratetype); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_page_alloc(void (*probe)(struct page *page, unsigned int order, gfp_t gfp_flags, int migratetype)) { return tracepoint_probe_register("mm_page_alloc", (void *)probe); } static inline int unregister_trace_mm_page_alloc(void (*probe)(struct page *page, unsigned int order, gfp_t gfp_flags, int migratetype)) { return tracepoint_probe_unregister("mm_page_alloc", (void *)probe); }; # 259 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" ; # 285 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_mm_page_alloc_zone_locked; static inline void trace_mm_page_alloc_zone_locked(struct page *page, unsigned int order, int migratetype) { if (__builtin_expect(!!(__tracepoint_mm_page_alloc_zone_locked.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_page_alloc_zone_locked)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_page_alloc_zone_locked)->funcs) *)&((&__tracepoint_mm_page_alloc_zone_locked)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, unsigned int order, int migratetype))(*it_func))(page, order, migratetype); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_page_alloc_zone_locked(void (*probe)(struct page *page, unsigned int order, int migratetype)) { return tracepoint_probe_register("mm_page_alloc_zone_locked", (void *)probe); } static inline int unregister_trace_mm_page_alloc_zone_locked(void (*probe)(struct page *page, unsigned int order, int migratetype)) { return tracepoint_probe_unregister("mm_page_alloc_zone_locked", (void *)probe); }; extern struct tracepoint __tracepoint_mm_page_pcpu_drain; static inline void trace_mm_page_pcpu_drain(struct page *page, unsigned int order, int migratetype) { if (__builtin_expect(!!(__tracepoint_mm_page_pcpu_drain.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_page_pcpu_drain)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_page_pcpu_drain)->funcs) *)&((&__tracepoint_mm_page_pcpu_drain)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, unsigned int order, int migratetype))(*it_func))(page, order, migratetype); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_page_pcpu_drain(void (*probe)(struct page *page, unsigned int order, int migratetype)) { return tracepoint_probe_register("mm_page_pcpu_drain", (void *)probe); } static inline int unregister_trace_mm_page_pcpu_drain(void (*probe)(struct page *page, unsigned int order, int migratetype)) { return tracepoint_probe_unregister("mm_page_pcpu_drain", (void *)probe); }; # 303 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" extern struct tracepoint __tracepoint_mm_page_alloc_extfrag; static inline void trace_mm_page_alloc_extfrag(struct page *page, int alloc_order, int fallback_order, int alloc_migratetype, int fallback_migratetype) { if (__builtin_expect(!!(__tracepoint_mm_page_alloc_extfrag.state), 0)) do { void **it_func; rcu_read_lock_sched_notrace(); it_func = ({ typeof((&__tracepoint_mm_page_alloc_extfrag)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_mm_page_alloc_extfrag)->funcs) *)&((&__tracepoint_mm_page_alloc_extfrag)->funcs)); do { } while (0); (_________p1); }); if (it_func) { do { ((void(*)(struct page *page, int alloc_order, int fallback_order, int alloc_migratetype, int fallback_migratetype))(*it_func))(page, alloc_order, fallback_order, alloc_migratetype, fallback_migratetype); } while (*(++it_func)); } rcu_read_unlock_sched_notrace(); } while (0); } static inline int register_trace_mm_page_alloc_extfrag(void (*probe)(struct page *page, int alloc_order, int fallback_order, int alloc_migratetype, int fallback_migratetype)) { return tracepoint_probe_register("mm_page_alloc_extfrag", (void *)probe); } static inline int unregister_trace_mm_page_alloc_extfrag(void (*probe)(struct page *page, int alloc_order, int fallback_order, int alloc_migratetype, int fallback_migratetype)) { return tracepoint_probe_unregister("mm_page_alloc_extfrag", (void *)probe); }; # 344 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/define_trace.h" 1 # 344 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/kmem.h" 2 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemtrace.h" 2 extern void kmemtrace_init(void); # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemleak.h" 1 # 59 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kmemleak.h" static inline void kmemleak_init(void) { } static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count, gfp_t gfp) { } static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, int min_count, unsigned long flags, gfp_t gfp) { } static inline void kmemleak_free(const void *ptr) { } static inline void kmemleak_free_part(const void *ptr, size_t size) { } static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags) { } static inline void kmemleak_not_leak(const void *ptr) { } static inline void kmemleak_ignore(const void *ptr) { } static inline void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) { } static inline void kmemleak_erase(void **ptr) { } static inline void kmemleak_no_scan(const void *ptr) { } # 15 "/lnx/src/MM/mmotm-2010-0323-1534/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, FREE_SLAB, CPUSLAB_FLUSH, DEACTIVATE_FULL, DEACTIVATE_EMPTY, DEACTIVATE_TO_HEAD, DEACTIVATE_TO_TAIL, DEACTIVATE_REMOTE_FREES, ORDER_FALLBACK, NR_SLUB_STAT_ITEMS }; struct kmem_cache_cpu { void **freelist; struct page *page; int node; unsigned stat[NR_SLUB_STAT_ITEMS]; }; 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; int size; int objsize; int offset; struct kmem_cache_order_objects oo; struct kmem_cache_node local_node; struct kmem_cache_order_objects max; struct kmem_cache_order_objects min; gfp_t allocflags; int refcount; void (*ctor)(void *); int inuse; int align; unsigned long min_partial; const char *name; struct list_head list; struct kobject kobj; int remote_node_defrag_ratio; struct kmem_cache_node *node[(1 << 6)]; }; # 146 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" extern struct kmem_cache kmalloc_caches[(2 * (12 + 2) - 6)]; static inline __attribute__((always_inline)) int kmalloc_index(size_t size) { if (!size) return 0; if (size <= 8) return ( __builtin_constant_p(8) ? ( (8) < 1 ? ____ilog2_NaN() : (8) & (1ULL << 63) ? 63 : (8) & (1ULL << 62) ? 62 : (8) & (1ULL << 61) ? 61 : (8) & (1ULL << 60) ? 60 : (8) & (1ULL << 59) ? 59 : (8) & (1ULL << 58) ? 58 : (8) & (1ULL << 57) ? 57 : (8) & (1ULL << 56) ? 56 : (8) & (1ULL << 55) ? 55 : (8) & (1ULL << 54) ? 54 : (8) & (1ULL << 53) ? 53 : (8) & (1ULL << 52) ? 52 : (8) & (1ULL << 51) ? 51 : (8) & (1ULL << 50) ? 50 : (8) & (1ULL << 49) ? 49 : (8) & (1ULL << 48) ? 48 : (8) & (1ULL << 47) ? 47 : (8) & (1ULL << 46) ? 46 : (8) & (1ULL << 45) ? 45 : (8) & (1ULL << 44) ? 44 : (8) & (1ULL << 43) ? 43 : (8) & (1ULL << 42) ? 42 : (8) & (1ULL << 41) ? 41 : (8) & (1ULL << 40) ? 40 : (8) & (1ULL << 39) ? 39 : (8) & (1ULL << 38) ? 38 : (8) & (1ULL << 37) ? 37 : (8) & (1ULL << 36) ? 36 : (8) & (1ULL << 35) ? 35 : (8) & (1ULL << 34) ? 34 : (8) & (1ULL << 33) ? 33 : (8) & (1ULL << 32) ? 32 : (8) & (1ULL << 31) ? 31 : (8) & (1ULL << 30) ? 30 : (8) & (1ULL << 29) ? 29 : (8) & (1ULL << 28) ? 28 : (8) & (1ULL << 27) ? 27 : (8) & (1ULL << 26) ? 26 : (8) & (1ULL << 25) ? 25 : (8) & (1ULL << 24) ? 24 : (8) & (1ULL << 23) ? 23 : (8) & (1ULL << 22) ? 22 : (8) & (1ULL << 21) ? 21 : (8) & (1ULL << 20) ? 20 : (8) & (1ULL << 19) ? 19 : (8) & (1ULL << 18) ? 18 : (8) & (1ULL << 17) ? 17 : (8) & (1ULL << 16) ? 16 : (8) & (1ULL << 15) ? 15 : (8) & (1ULL << 14) ? 14 : (8) & (1ULL << 13) ? 13 : (8) & (1ULL << 12) ? 12 : (8) & (1ULL << 11) ? 11 : (8) & (1ULL << 10) ? 10 : (8) & (1ULL << 9) ? 9 : (8) & (1ULL << 8) ? 8 : (8) & (1ULL << 7) ? 7 : (8) & (1ULL << 6) ? 6 : (8) & (1ULL << 5) ? 5 : (8) & (1ULL << 4) ? 4 : (8) & (1ULL << 3) ? 3 : (8) & (1ULL << 2) ? 2 : (8) & (1ULL << 1) ? 1 : (8) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(8) <= 4) ? __ilog2_u32(8) : __ilog2_u64(8) ); if (8 <= 32 && size > 64 && size <= 96) return 1; if (8 <= 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; return -1; # 196 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" } static inline __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); extern void *kmem_cache_alloc_notrace(struct kmem_cache *s, gfp_t gfpflags); # 227 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" static inline __attribute__((always_inline)) void *kmalloc_large(size_t size, gfp_t flags) { unsigned int order = get_order(size); void *ret = (void *) __get_free_pages(flags | ((__attribute__((force)) gfp_t)0x4000u), order); kmemleak_alloc(ret, size, 1, flags); trace_kmalloc(({ __label__ __here; __here: (unsigned long)&&__here; }), ret, size, ((1UL) << 12) << order, flags); return ret; } static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) { void *ret; if (__builtin_constant_p(size)) { if (size > (2 * ((1UL) << 12))) return kmalloc_large(size, flags); if (!(flags & ((__attribute__((force)) gfp_t)0x01u))) { struct kmem_cache *s = kmalloc_slab(size); if (!s) return ((void *)16); ret = kmem_cache_alloc_notrace(s, flags); trace_kmalloc(({ __label__ __here; __here: (unsigned long)&&__here; }), ret, size, s->size, flags); return ret; } } return __kmalloc(size, flags); } void *__kmalloc_node(size_t size, gfp_t flags, int node); void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); extern void *kmem_cache_alloc_node_notrace(struct kmem_cache *s, gfp_t gfpflags, int node); # 280 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slub_def.h" static inline __attribute__((always_inline)) void *kmalloc_node(size_t size, gfp_t flags, int node) { void *ret; if (__builtin_constant_p(size) && size <= (2 * ((1UL) << 12)) && !(flags & ((__attribute__((force)) gfp_t)0x01u))) { struct kmem_cache *s = kmalloc_slab(size); if (!s) return ((void *)16); ret = kmem_cache_alloc_node_notrace(s, flags, node); trace_kmalloc_node(({ __label__ __here; __here: (unsigned long)&&__here; }), ret, size, s->size, flags, node); return ret; } return __kmalloc_node(size, flags, node); } # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" 2 # 225 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" static inline void *kcalloc(size_t n, size_t size, gfp_t flags) { if (size != 0 && n > (~0UL) / size) return ((void *)0); return __kmalloc(n * size, flags | ((__attribute__((force)) gfp_t)0x8000u)); } # 271 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long); # 289 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, unsigned long); # 308 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/slab.h" static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags) { return kmem_cache_alloc(k, flags | ((__attribute__((force)) gfp_t)0x8000u)); } static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | ((__attribute__((force)) gfp_t)0x8000u)); } static inline void *kzalloc_node(size_t size, gfp_t flags, int node) { return kmalloc_node(size, flags | ((__attribute__((force)) gfp_t)0x8000u), node); } void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) kmem_cache_init_late(void); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pfn.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu.h" 2 # 64 "/lnx/src/MM/mmotm-2010-0323-1534/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 *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 struct pcpu_alloc_info * __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_build_alloc_info( size_t reserved_size, ssize_t dyn_size, size_t atom_size, pcpu_fc_cpu_distance_fn_t cpu_distance_fn); 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); extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_embed_first_chunk(size_t reserved_size, ssize_t dyn_size, size_t atom_size, pcpu_fc_cpu_distance_fn_t cpu_distance_fn, pcpu_fc_alloc_fn_t alloc_fn, pcpu_fc_free_fn_t free_fn); extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pcpu_page_first_chunk(size_t reserved_size, pcpu_fc_alloc_fn_t alloc_fn, pcpu_fc_free_fn_t free_fn, pcpu_fc_populate_pte_fn_t populate_pte_fn); # 137 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu.h" extern void __attribute__((noderef, address_space(3))) *__alloc_reserved_percpu(size_t size, size_t align); extern void __attribute__((noderef, address_space(3))) *__alloc_percpu(size_t size, size_t align); extern void free_percpu(void __attribute__((noderef, address_space(3))) *__pdata); extern phys_addr_t per_cpu_ptr_to_phys(void *addr); # 242 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu.h" extern void __bad_size_call_parameter(void); # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/module.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/module.h" 1 struct mod_arch_specific { }; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/module.h" 2 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/module.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/tracepoint.h" 1 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/module.h" 2 # 117 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/module.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/define_trace.h" 1 # 118 "/lnx/src/MM/mmotm-2010-0323-1534/include/trace/events/module.h" 2 # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" 2 # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" struct kernel_symbol { unsigned long value; const char *name; }; struct modversion_info { unsigned long crc; char name[(64 - sizeof(unsigned long))]; }; struct module; struct module_attribute { struct attribute attr; ssize_t (*show)(struct module_attribute *, struct module *, char *); ssize_t (*store)(struct module_attribute *, struct module *, const char *, size_t count); void (*setup)(struct module *, const char *); int (*test)(struct module *); void (*free)(struct module *); }; struct module_kobject { struct kobject kobj; struct module *mod; struct kobject *drivers_dir; struct module_param_attrs *mp; }; 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); # 172 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" const struct exception_table_entry *search_exception_tables(unsigned long add); struct notifier_block; # 545 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" static inline const struct exception_table_entry * search_module_extables(unsigned long addr) { return ((void *)0); } static inline struct module *__module_address(unsigned long addr) { return ((void *)0); } static inline struct module *__module_text_address(unsigned long addr) { return ((void *)0); } static inline bool is_module_address(unsigned long addr) { return false; } static inline bool is_module_text_address(unsigned long addr) { return false; } static inline void __module_get(struct module *module) { } static inline int try_module_get(struct module *module) { return 1; } static inline void module_put(struct module *module) { } static inline const char *module_address_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char **modname, char *namebuf) { return ((void *)0); } static inline int lookup_module_symbol_name(unsigned long addr, char *symname) { return -34; } static inline int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name) { return -34; } static inline int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *name, char *module_name, int *exported) { return -34; } static inline unsigned long module_kallsyms_lookup_name(const char *name) { return 0; } static inline int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *, unsigned long), void *data) { return 0; } static inline int register_module_notifier(struct notifier_block * nb) { return 0; } static inline int unregister_module_notifier(struct notifier_block * nb) { return 0; } static inline void print_modules(void) { } static inline void module_update_tracepoints(void) { } static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter) { return 0; } struct device_driver; struct module; extern struct kset *module_kset; extern struct kobj_type module_ktype; extern int module_sysfs_initialized; int mod_sysfs_init(struct module *mod); int mod_sysfs_setup(struct module *mod, struct kernel_param *kparam, unsigned int num_params); int module_add_modinfo_attrs(struct module *mod); void module_remove_modinfo_attrs(struct module *mod); # 706 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/module.h" int module_bug_finalize(const Elf64_Ehdr *, const Elf64_Shdr *, struct module *); void module_bug_cleanup(struct module *); # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" 2 struct ts_config; # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" struct ts_state { unsigned int offset; char cb[40]; }; # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" struct ts_ops { const char *name; struct ts_config * (*init)(const void *, unsigned int, gfp_t, int); unsigned int (*find)(struct ts_config *, struct ts_state *); void (*destroy)(struct ts_config *); void * (*get_pattern)(struct ts_config *); unsigned int (*get_pattern_len)(struct ts_config *); struct module *owner; struct list_head list; }; # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" struct ts_config { struct ts_ops *ops; int flags; # 74 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" unsigned int (*get_next_block)(unsigned int consumed, const u8 **dst, struct ts_config *conf, struct ts_state *state); # 87 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" void (*finish)(struct ts_config *conf, struct ts_state *state); }; # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" static inline unsigned int textsearch_next(struct ts_config *conf, struct ts_state *state) { unsigned int ret = conf->ops->find(conf, state); if (conf->finish) conf->finish(conf, state); return ret; } # 122 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/textsearch.h" static inline unsigned int textsearch_find(struct ts_config *conf, struct ts_state *state) { state->offset = 0; return textsearch_next(conf, state); } static inline void *textsearch_get_pattern(struct ts_config *conf) { return conf->ops->get_pattern(conf); } static inline unsigned int textsearch_get_pattern_len(struct ts_config *conf) { return conf->ops->get_pattern_len(conf); } extern int textsearch_register(struct ts_ops *); extern int textsearch_unregister(struct ts_ops *); extern struct ts_config *textsearch_prepare(const char *, const void *, unsigned int, gfp_t, int); extern void textsearch_destroy(struct ts_config *conf); extern unsigned int textsearch_find_continuous(struct ts_config *, struct ts_state *, const void *, unsigned int); static inline struct ts_config *alloc_ts_config(size_t payload, gfp_t gfp_mask) { struct ts_config *conf; conf = kzalloc((((sizeof(*conf)) + 8 -1) & ~(8 -1)) + payload, gfp_mask); if (conf == ((void *)0)) return ERR_PTR(-12); return conf; } static inline void *ts_config_priv(struct ts_config *conf) { return ((u8 *) conf + (((sizeof(struct ts_config)) + 8 -1) & ~(8 -1))); } # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/checksum.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/checksum.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" 1 # 95 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" struct exception_table_entry { unsigned long insn, fixup; }; extern int fixup_exception(struct pt_regs *regs); # 116 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" extern int __get_user_1(void); extern int __get_user_2(void); extern int __get_user_4(void); extern int __get_user_8(void); extern int __get_user_bad(void); # 221 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" extern void __put_user_bad(void); extern void __put_user_1(void); extern void __put_user_2(void); extern void __put_user_4(void); extern void __put_user_8(void); # 432 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" struct __large_struct { unsigned long buf[100]; }; # 573 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess_64.h" 1 # 20 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess_64.h" unsigned long copy_user_generic_string(void *to, const void *from, unsigned len); unsigned long copy_user_generic_unrolled(void *to, const void *from, unsigned len); static inline __attribute__((always_inline)) unsigned long copy_user_generic(void *to, const void *from, unsigned len) { unsigned ret; asm volatile ("661:\n\t" "call %P[old]" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "661b\n" " " ".quad" " " "663f\n" " .byte " "(3*32+16)" "\n" " .byte 662b-661b\n" " .byte 664f-663f\n" " .byte 0xff + (664f-663f) - (662b-661b)\n" ".previous\n" ".section .altinstr_replacement, \"ax\"\n" "663:\n\t" "call %P[new]" "\n664:\n" ".previous" : "=a" (ret), "=D" (to), "=S" (from), "=d" (len) : [old] "i" (copy_user_generic_unrolled), [new] "i" (copy_user_generic_string), "1" (to), "2" (from), "3" (len) : "memory", "rcx", "r8", "r9", "r10", "r11"); return ret; } unsigned long _copy_to_user(void __attribute__((noderef, address_space(1))) *to, const void *from, unsigned len); unsigned long _copy_from_user(void *to, const void __attribute__((noderef, address_space(1))) *from, unsigned len); unsigned long copy_in_user(void __attribute__((noderef, address_space(1))) *to, const void __attribute__((noderef, address_space(1))) *from, unsigned len); static inline unsigned long copy_from_user(void *to, const void __attribute__((noderef, address_space(1))) *from, unsigned long n) { int sz = __builtin_object_size(to, 0); might_fault(); if (__builtin_expect(!!(sz == -1 || sz >= n), 1)) n = _copy_from_user(to, from, n); return n; } static inline __attribute__((always_inline)) int copy_to_user(void __attribute__((noderef, address_space(1))) *dst, const void *src, unsigned size) { might_fault(); return _copy_to_user(dst, src, size); } static inline __attribute__((always_inline)) int __copy_from_user(void *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size) { int ret = 0; might_fault(); if (!__builtin_constant_p(size)) return copy_user_generic(dst, (__attribute__((force)) void *)src, size); switch (size) { case 1:asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u8 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u8 __attribute__((noderef, address_space(1))) *)src))), "i" (1), "0" (ret)); return ret; case 2:asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u16 __attribute__((noderef, address_space(1))) *)src))), "i" (2), "0" (ret)); return ret; case 4:asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u32 __attribute__((noderef, address_space(1))) *)src))), "i" (4), "0" (ret)); return ret; case 8:asm volatile("1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""q"" %""""1,%""""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)src))), "i" (8), "0" (ret)); return ret; case 10: asm volatile("1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""q"" %""""1,%""""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)src))), "i" (10), "0" (ret)); if (__builtin_expect(!!(ret), 0)) return ret; asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)(8 + (char *)dst)) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u16 __attribute__((noderef, address_space(1))) *)(8 + (char __attribute__((noderef, address_space(1))) *)src)))), "i" (2), "0" (ret)); return ret; case 16: asm volatile("1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""q"" %""""1,%""""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)src))), "i" (16), "0" (ret)); if (__builtin_expect(!!(ret), 0)) return ret; asm volatile("1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""q"" %""""1,%""""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u64 *)(8 + (char *)dst)) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)(8 + (char __attribute__((noderef, address_space(1))) *)src)))), "i" (8), "0" (ret)); return ret; default: return copy_user_generic(dst, (__attribute__((force)) void *)src, size); } } static inline __attribute__((always_inline)) int __copy_to_user(void __attribute__((noderef, address_space(1))) *dst, const void *src, unsigned size) { int ret = 0; might_fault(); if (!__builtin_constant_p(size)) return copy_user_generic((__attribute__((force)) void *)dst, src, size); switch (size) { case 1:asm volatile("1: mov""b"" %""b""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "iq"(*(u8 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u8 __attribute__((noderef, address_space(1))) *)dst))), "i" (1), "0" (ret)); return ret; case 2:asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u16 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u16 __attribute__((noderef, address_space(1))) *)dst))), "i" (2), "0" (ret)); return ret; case 4:asm volatile("1: mov""l"" %""k""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u32 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u32 __attribute__((noderef, address_space(1))) *)dst))), "i" (4), "0" (ret)); return ret; case 8:asm volatile("1: mov""q"" %""""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "er"(*(u64 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)dst))), "i" (8), "0" (ret)); return ret; case 10: asm volatile("1: mov""q"" %""""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "er"(*(u64 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)dst))), "i" (10), "0" (ret)); if (__builtin_expect(!!(ret), 0)) return ret; asm("":::"memory"); asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(4[(u16 *)src]), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)(4 + (u16 __attribute__((noderef, address_space(1))) *)dst))), "i" (2), "0" (ret)); return ret; case 16: asm volatile("1: mov""q"" %""""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "er"(*(u64 *)src), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)dst))), "i" (16), "0" (ret)); if (__builtin_expect(!!(ret), 0)) return ret; asm("":::"memory"); asm volatile("1: mov""q"" %""""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "er"(1[(u64 *)src]), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)(1 + (u64 __attribute__((noderef, address_space(1))) *)dst))), "i" (8), "0" (ret)); return ret; default: return copy_user_generic((__attribute__((force)) void *)dst, src, size); } } static inline __attribute__((always_inline)) int __copy_in_user(void __attribute__((noderef, address_space(1))) *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size) { int ret = 0; might_fault(); if (!__builtin_constant_p(size)) return copy_user_generic((__attribute__((force)) void *)dst, (__attribute__((force)) void *)src, size); switch (size) { case 1: { u8 tmp; asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(tmp) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u8 __attribute__((noderef, address_space(1))) *)src))), "i" (1), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("1: mov""b"" %""b""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "iq"(tmp), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u8 __attribute__((noderef, address_space(1))) *)dst))), "i" (1), "0" (ret)); return ret; } case 2: { u16 tmp; asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(tmp) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u16 __attribute__((noderef, address_space(1))) *)src))), "i" (2), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(tmp), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u16 __attribute__((noderef, address_space(1))) *)dst))), "i" (2), "0" (ret)); return ret; } case 4: { u32 tmp; asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(tmp) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u32 __attribute__((noderef, address_space(1))) *)src))), "i" (4), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("1: mov""l"" %""k""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(tmp), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u32 __attribute__((noderef, address_space(1))) *)dst))), "i" (4), "0" (ret)); return ret; } case 8: { u64 tmp; asm volatile("1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""q"" %""""1,%""""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(tmp) : "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)src))), "i" (8), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("1: mov""q"" %""""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "er"(tmp), "m" ((*(struct __large_struct __attribute__((noderef, address_space(1))) *)((u64 __attribute__((noderef, address_space(1))) *)dst))), "i" (8), "0" (ret)); return ret; } default: return copy_user_generic((__attribute__((force)) void *)dst, (__attribute__((force)) void *)src, size); } } long strncpy_from_user(char *dst, const char __attribute__((noderef, address_space(1))) *src, long count); long __strncpy_from_user(char *dst, const char __attribute__((noderef, address_space(1))) *src, long count); long strnlen_user(const char __attribute__((noderef, address_space(1))) *str, long n); long __strnlen_user(const char __attribute__((noderef, address_space(1))) *str, long n); long strlen_user(const char __attribute__((noderef, address_space(1))) *str); unsigned long clear_user(void __attribute__((noderef, address_space(1))) *mem, unsigned long len); unsigned long __clear_user(void __attribute__((noderef, address_space(1))) *mem, unsigned long len); static inline __attribute__((always_inline)) int __copy_from_user_inatomic(void *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size) { return copy_user_generic(dst, (__attribute__((force)) const void *)src, size); } static inline __attribute__((always_inline)) int __copy_to_user_inatomic(void __attribute__((noderef, address_space(1))) *dst, const void *src, unsigned size) { return copy_user_generic((__attribute__((force)) void *)dst, src, size); } extern long __copy_user_nocache(void *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size, int zerorest); static inline int __copy_from_user_nocache(void *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size) { do { do { } while (0); } while (0); return __copy_user_nocache(dst, src, size, 1); } static inline int __copy_from_user_inatomic_nocache(void *dst, const void __attribute__((noderef, address_space(1))) *src, unsigned size) { return __copy_user_nocache(dst, src, size, 0); } unsigned long copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest); # 574 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/uaccess.h" 2 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/checksum.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" static inline __sum16 csum_fold(__wsum sum) { asm(" addl %1,%0\n" " adcl $0xffff,%0" : "=r" (sum) : "r" ((__attribute__((force)) u32)sum << 16), "0" ((__attribute__((force)) u32)sum & 0xffff0000)); return (__attribute__((force)) __sum16)(~(__attribute__((force)) u32)sum >> 16); } # 45 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) { unsigned int sum; asm(" movl (%1), %0\n" " subl $4, %2\n" " jbe 2f\n" " addl 4(%1), %0\n" " adcl 8(%1), %0\n" " adcl 12(%1), %0\n" "1: adcl 16(%1), %0\n" " lea 4(%1), %1\n" " decl %2\n" " jne 1b\n" " adcl $0, %0\n" " movl %0, %2\n" " shrl $16, %0\n" " addw %w2, %w0\n" " adcl $0, %0\n" " notl %0\n" "2:" : "=r" (sum), "=r" (iph), "=r" (ihl) : "1" (iph), "2" (ihl) : "memory"); return (__attribute__((force)) __sum16)sum; } # 86 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, unsigned short proto, __wsum sum) { asm(" addl %1, %0\n" " adcl %2, %0\n" " adcl %3, %0\n" " adcl $0, %0\n" : "=r" (sum) : "g" (daddr), "g" (saddr), "g" ((len + proto)<<8), "0" (sum)); return sum; } # 112 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len, unsigned short proto, __wsum sum) { return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); } # 129 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" extern __wsum csum_partial(const void *buff, int len, __wsum sum); extern __wsum csum_partial_copy_generic(const void *src, const void *dst, int len, __wsum sum, int *src_err_ptr, int *dst_err_ptr); extern __wsum csum_partial_copy_from_user(const void __attribute__((noderef, address_space(1))) *src, void *dst, int len, __wsum isum, int *errp); extern __wsum csum_partial_copy_to_user(const void *src, void __attribute__((noderef, address_space(1))) *dst, int len, __wsum isum, int *errp); extern __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum); # 160 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" extern __sum16 ip_compute_csum(const void *buff, int len); # 175 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum_64.h" struct in6_addr; extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, unsigned short proto, __wsum sum); static inline unsigned add32_with_carry(unsigned a, unsigned b) { asm("addl %2,%0\n\t" "adcl $0,%0" : "=r" (a) : "0" (a), "r" (b)); return a; } # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/checksum.h" 2 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/checksum.h" 2 # 60 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/checksum.h" static inline __wsum csum_add(__wsum csum, __wsum addend) { u32 res = (__attribute__((force)) u32)csum; res += (__attribute__((force)) u32)addend; return (__attribute__((force)) __wsum)(res + (res < (__attribute__((force)) u32)addend)); } static inline __wsum csum_sub(__wsum csum, __wsum addend) { return csum_add(csum, ~addend); } static inline __wsum csum_block_add(__wsum csum, __wsum csum2, int offset) { u32 sum = (__attribute__((force)) u32)csum2; if (offset&1) sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); return csum_add(csum, (__attribute__((force)) __wsum)sum); } static inline __wsum csum_block_sub(__wsum csum, __wsum csum2, int offset) { u32 sum = (__attribute__((force)) u32)csum2; if (offset&1) sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); return csum_sub(csum, (__attribute__((force)) __wsum)sum); } static inline __wsum csum_unfold(__sum16 n) { return (__attribute__((force)) __wsum)n; } static inline void csum_replace4(__sum16 *sum, __be32 from, __be32 to) { __be32 diff[] = { ~from, to }; *sum = csum_fold(csum_partial(diff, sizeof(diff), ~csum_unfold(*sum))); } static inline void csum_replace2(__sum16 *sum, __be16 from, __be16 to) { csum_replace4(sum, (__attribute__((force)) __be32)from, (__attribute__((force)) __be32)to); } struct sk_buff; extern void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb, __be32 from, __be32 to, int pseudohdr); static inline void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb, __be16 from, __be16 to, int pseudohdr) { inet_proto_csum_replace4(sum, skb, (__attribute__((force)) __be32)from, (__attribute__((force)) __be32)to, pseudohdr); } # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" 1 # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/klist.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/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 (4))); # 36 "/lnx/src/MM/mmotm-2010-0323-1534/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/device.h" 1 struct dev_archdata { struct dma_map_ops *dma_ops; }; struct pdev_archdata { }; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" 2 struct device; struct device_private; struct device_driver; struct driver_private; struct class; struct class_private; struct bus_type; struct bus_type_private; 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 bus_create_file(struct bus_type *, struct bus_attribute *); extern void bus_remove_file(struct bus_type *, struct bus_attribute *); struct bus_type { const char *name; 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 bus_type_private *p; }; extern int bus_register(struct bus_type *bus); extern void bus_unregister(struct bus_type *bus); extern int bus_rescan_devices(struct bus_type *bus); 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); 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); # 118 "/lnx/src/MM/mmotm-2010-0323-1534/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); struct device_driver { const char *name; struct bus_type *bus; struct module *owner; const char *mod_name; bool suppress_bind_attrs; 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 driver_register(struct device_driver *drv); extern void driver_unregister(struct device_driver *drv); extern struct device_driver *get_driver(struct device_driver *drv); extern void put_driver(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 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 driver_add_kobj(struct device_driver *drv, struct kobject *kobj, const char *fmt, ...); extern int 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)); struct class { const char *name; struct module *owner; struct class_attribute *class_attrs; struct device_attribute *dev_attrs; struct kobject *dev_kobj; int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(struct device *dev, mode_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 dev_pm_ops *pm; struct class_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 __class_register(struct class *class, struct lock_class_key *key); extern void class_unregister(struct class *class); # 229 "/lnx/src/MM/mmotm-2010-0323-1534/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); }; extern int 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; }; # 281 "/lnx/src/MM/mmotm-2010-0323-1534/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 class_interface_register(struct class_interface *); extern void class_interface_unregister(struct class_interface *); extern struct class * __class_create(struct module *owner, const char *name, struct lock_class_key *key); extern void class_destroy(struct class *cls); # 317 "/lnx/src/MM/mmotm-2010-0323-1534/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, mode_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); }; 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 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); 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 void * 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); struct device_dma_parameters { unsigned int max_segment_size; unsigned long segment_boundary_mask; }; struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; struct device_type *type; struct mutex mutex; struct bus_type *bus; struct device_driver *driver; void *platform_data; struct dev_pm_info power; int numa_node; 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; dev_t devt; 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); }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm_wakeup.h" 1 # 63 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pm_wakeup.h" static inline void device_init_wakeup(struct device *dev, bool val) { dev->power.can_wakeup = val; } static inline void device_set_wakeup_capable(struct device *dev, bool capable) { } static inline bool device_can_wakeup(struct device *dev) { return dev->power.can_wakeup; } static inline void device_set_wakeup_enable(struct device *dev, bool enable) { } static inline bool device_may_wakeup(struct device *dev) { return false; } # 450 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" 2 static inline const char *dev_name(const struct device *dev) { if (dev->init_name) return dev->init_name; return kobject_name(&dev->kobj); } extern int dev_set_name(struct device *dev, const char *name, ...) __attribute__((format(printf, 2, 3))); static inline int dev_to_node(struct device *dev) { return dev->numa_node; } static inline void set_dev_node(struct device *dev, int node) { dev->numa_node = node; } # 482 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/device.h" static inline unsigned int dev_get_uevent_suppress(const struct device *dev) { return dev->kobj.uevent_suppress; } static inline void dev_set_uevent_suppress(struct device *dev, int val) { dev->kobj.uevent_suppress = val; } static inline int device_is_registered(struct device *dev) { return dev->kobj.state_in_sysfs; } static inline void device_enable_async_suspend(struct device *dev) { if (dev->power.status == DPM_ON) dev->power.async_suspend = true; } static inline void device_disable_async_suspend(struct device *dev) { if (dev->power.status == DPM_ON) dev->power.async_suspend = false; } static inline bool device_async_suspend_enabled(struct device *dev) { return !!dev->power.async_suspend; } static inline void device_lock(struct device *dev) { mutex_lock(&dev->mutex); } static inline int device_trylock(struct device *dev) { return mutex_trylock(&dev->mutex); } static inline void device_unlock(struct device *dev) { mutex_unlock(&dev->mutex); } void driver_init(void); extern int device_register(struct device *dev); extern void device_unregister(struct device *dev); extern void device_initialize(struct device *dev); extern int 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, 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, mode_t *mode, const char **tmp); extern void *dev_get_drvdata(const struct device *dev); extern void dev_set_drvdata(struct device *dev, void *data); extern struct device *__root_device_register(const char *name, struct module *owner); static inline struct device *root_device_register(const char *name) { return __root_device_register(name, ((struct module *)0)); } extern void root_device_unregister(struct device *root); static inline void *dev_get_platdata(const struct device *dev) { return dev->platform_data; } extern int device_bind_driver(struct device *dev); extern void device_release_driver(struct device *dev); extern int device_attach(struct device *dev); extern int driver_attach(struct device_driver *drv); extern int 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 struct device *device_create(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...) __attribute__((format(printf, 5, 6))); 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 void wait_for_device_probe(void); 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 void sysdev_shutdown(void); extern const char *dev_driver_string(const struct device *dev); # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-attrs.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/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; static inline 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); # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-attrs.h" 2 enum dma_attr { DMA_ATTR_WRITE_BARRIER, DMA_ATTR_WEAK_ORDERING, DMA_ATTR_MAX, }; struct dma_attrs { unsigned long flags[(((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; }; static inline void init_dma_attrs(struct dma_attrs *attrs) { bitmap_zero(attrs->flags, (((DMA_ATTR_MAX) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))); } static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-attrs.h"), "i" (49), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); __set_bit(attr, attrs->flags); } static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-attrs.h"), "i" (62), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); return (__builtin_constant_p((attr)) ? constant_test_bit((attr), (attrs->flags)) : variable_test_bit((attr), (attrs->flags))); } # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/scatterlist.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/scatterlist.h" 1 struct scatterlist { unsigned long page_link; unsigned int offset; unsigned int length; dma_addr_t dma_address; unsigned int dma_length; }; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/scatterlist.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debug_locks.h" 1 struct task_struct; extern int debug_locks; extern int debug_locks_silent; static inline int __debug_locks_off(void) { return ({ __typeof(*((&debug_locks))) __x = ((0)); switch (sizeof(*&debug_locks)) { case 1: asm volatile("xchgb %b0,%1" : "=q" (__x) : "m" (*((volatile long *)((&debug_locks)))), "0" (__x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (__x) : "m" (*((volatile long *)((&debug_locks)))), "0" (__x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (__x) : "m" (*((volatile long *)((&debug_locks)))), "0" (__x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (__x) : "m" (*((volatile long *)((&debug_locks)))), "0" (__x) : "memory"); break; default: __xchg_wrong_size(); } __x; }); } extern int debug_locks_off(void); # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debug_locks.h" struct task_struct; # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/debug_locks.h" static inline void debug_show_all_locks(void) { } static inline void __debug_show_held_locks(struct task_struct *task) { } static inline void debug_show_held_locks(struct task_struct *task) { } static inline void debug_check_no_locks_freed(const void *from, unsigned long len) { } static inline void debug_check_no_locks_held(struct task_struct *task) { } # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 2 struct mempolicy; struct anon_vma; struct file_ra_state; struct user_struct; struct writeback_control; struct rlimit; 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 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" extern unsigned long empty_zero_page[((1UL) << 12) / sizeof(unsigned long)]; extern spinlock_t pgd_lock; extern struct list_head pgd_list; # 85 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline int pte_dirty(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 6); } static inline int pte_young(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 5); } static inline int pte_write(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 1); } static inline int pte_file(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 6); } static inline int pte_huge(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 7); } static inline int pte_global(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 8); } static inline int pte_exec(pte_t pte) { return !(pte_flags(pte) & (((pteval_t)(1)) << 63)); } static inline int pte_special(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 9); } static inline unsigned long pte_pfn(pte_t pte) { return (native_pte_val(pte) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))) >> 12; } static inline unsigned long pmd_pfn(pmd_t pmd) { return (native_pmd_val(pmd) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1)))) >> 12; } static inline int pmd_large(pmd_t pte) { return (pmd_flags(pte) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0))) == ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0)); } static inline pte_t pte_set_flags(pte_t pte, pteval_t set) { pteval_t v = native_pte_val(pte); return native_make_pte(v | set); } static inline pte_t pte_clear_flags(pte_t pte, pteval_t clear) { pteval_t v = native_pte_val(pte); return native_make_pte(v & ~clear); } static inline pte_t pte_mkclean(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 6)); } static inline pte_t pte_mkold(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 5)); } static inline pte_t pte_wrprotect(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 1)); } static inline pte_t pte_mkexec(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 63)); } static inline pte_t pte_mkdirty(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 6)); } static inline pte_t pte_mkyoung(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 5)); } static inline pte_t pte_mkwrite(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 1)); } static inline pte_t pte_mkhuge(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 7)); } static inline pte_t pte_clrhuge(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 7)); } static inline pte_t pte_mkglobal(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 8)); } static inline pte_t pte_clrglobal(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 8)); } static inline pte_t pte_mkspecial(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 9)); } static inline pgprotval_t massage_pgprot(pgprot_t pgprot) { pgprotval_t protval = ((pgprot).pgprot); if (protval & (((pteval_t)(1)) << 0)) protval &= __supported_pte_mask; return protval; } static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot) { return native_make_pte(((phys_addr_t)page_nr << 12) | massage_pgprot(pgprot)); } static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) { return native_make_pmd(((phys_addr_t)page_nr << 12) | massage_pgprot(pgprot)); } static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { pteval_t val = native_pte_val(pte); val &= (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); val |= massage_pgprot(newprot) & ~(((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); return native_make_pte(val); } static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) { pgprotval_t preservebits = ((oldprot).pgprot) & (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); pgprotval_t addbits = ((newprot).pgprot); return ((pgprot_t) { (preservebits | addbits) } ); } static inline int is_new_memtype_allowed(u64 paddr, unsigned long size, unsigned long flags, unsigned long new_flags) { if (x86_platform.is_untracked_pat_range(paddr, paddr + size)) return 1; if ((flags == ((((pteval_t)(1)) << 4)) && new_flags == (0)) || (flags == ((((pteval_t)(1)) << 3)) && new_flags == (0))) { return 0; } return 1; } pmd_t *populate_extra_pmd(unsigned long vaddr); pte_t *populate_extra_pte(unsigned long vaddr); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64_types.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" 2 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" extern pud_t level3_kernel_pgt[512]; extern pud_t level3_ident_pgt[512]; extern pmd_t level2_kernel_pgt[512]; extern pmd_t level2_fixmap_pgt[512]; extern pmd_t level2_ident_pgt[512]; extern pgd_t init_level4_pgt[]; extern void paging_init(void); # 41 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" struct mm_struct; void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte); static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { *ptep = native_make_pte(0); } static inline void native_set_pte(pte_t *ptep, pte_t pte) { *ptep = pte; } static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) { native_set_pte(ptep, pte); } static inline pte_t native_ptep_get_and_clear(pte_t *xp) { return native_make_pte(({ __typeof(*((&xp->pte))) __x = ((0)); switch (sizeof(*&xp->pte)) { case 1: asm volatile("xchgb %b0,%1" : "=q" (__x) : "m" (*((volatile long *)((&xp->pte)))), "0" (__x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (__x) : "m" (*((volatile long *)((&xp->pte)))), "0" (__x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (__x) : "m" (*((volatile long *)((&xp->pte)))), "0" (__x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (__x) : "m" (*((volatile long *)((&xp->pte)))), "0" (__x) : "memory"); break; default: __xchg_wrong_size(); } __x; })); } static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd) { *pmdp = pmd; } static inline void native_pmd_clear(pmd_t *pmd) { native_set_pmd(pmd, native_make_pmd(0)); } static inline void native_set_pud(pud_t *pudp, pud_t pud) { *pudp = pud; } static inline void native_pud_clear(pud_t *pud) { native_set_pud(pud, native_make_pud(0)); } static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd) { *pgdp = pgd; } static inline void native_pgd_clear(pgd_t *pgd) { native_set_pgd(pgd, native_make_pgd(0)); } # 113 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" static inline int pgd_large(pgd_t pgd) { return 0; } # 154 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable_64.h" extern int kern_addr_valid(unsigned long addr); extern void cleanup_highmap(void); # 304 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" 2 static inline int pte_none(pte_t pte) { return !pte.pte; } static inline int pte_same(pte_t a, pte_t b) { return a.pte == b.pte; } static inline int pte_present(pte_t a) { return pte_flags(a) & ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 8)); } static inline int pte_hidden(pte_t pte) { return pte_flags(pte) & (((pteval_t)(0))); } static inline int pmd_present(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 0); } static inline int pmd_none(pmd_t pmd) { return (unsigned long)native_pmd_val(pmd) == 0; } static inline unsigned long pmd_page_vaddr(pmd_t pmd) { return (unsigned long)((void *)((unsigned long)(native_pmd_val(pmd) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))))+((unsigned long)(0xffff880000000000UL)))); } # 359 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline unsigned long pmd_index(unsigned long address) { return (address >> 21) & (512 - 1); } # 379 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline unsigned long pte_index(unsigned long address) { return (address >> 12) & (512 - 1); } static inline pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address) { return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address); } static inline int pmd_bad(pmd_t pmd) { return (pmd_flags(pmd) & ~(((pteval_t)(1)) << 2)) != ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); } static inline unsigned long pages_to_mb(unsigned long npg) { return npg >> (20 - 12); } static inline int pud_none(pud_t pud) { return native_pud_val(pud) == 0; } static inline int pud_present(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 0); } static inline unsigned long pud_page_vaddr(pud_t pud) { return (unsigned long)((void *)((unsigned long)((unsigned long)native_pud_val(pud) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))))+((unsigned long)(0xffff880000000000UL)))); } # 425 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address) { return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address); } static inline int pud_large(pud_t pud) { return (native_pud_val(pud) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0))) == ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0)); } static inline int pud_bad(pud_t pud) { return (pud_flags(pud) & ~(((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)) | (((pteval_t)(1)) << 2))) != 0; } # 448 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline int pgd_present(pgd_t pgd) { return pgd_flags(pgd) & (((pteval_t)(1)) << 0); } static inline unsigned long pgd_page_vaddr(pgd_t pgd) { return (unsigned long)((void *)((unsigned long)((unsigned long)native_pgd_val(pgd) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 46) - 1))))+((unsigned long)(0xffff880000000000UL)))); } # 465 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline unsigned long pud_index(unsigned long address) { return (address >> 30) & (512 - 1); } static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) { return (pud_t *)pgd_page_vaddr(*pgd) + pud_index(address); } static inline int pgd_bad(pgd_t pgd) { return (pgd_flags(pgd) & ~(((pteval_t)(1)) << 2)) != ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); } static inline int pgd_none(pgd_t pgd) { return !native_pgd_val(pgd); } # 513 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" extern int direct_gbpages; static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep) { pte_t res = *ptep; native_pte_clear(((void *)0), 0, ptep); return res; } static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep , pte_t pte) { native_set_pte(ptep, pte); } # 556 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" struct vm_area_struct; extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty); extern int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep); extern int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { pte_t pte = native_ptep_get_and_clear(ptep); do { } while (0); return pte; } static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full) { pte_t pte; if (full) { pte = native_local_ptep_get_and_clear(ptep); } else { pte = ptep_get_and_clear(mm, addr, ptep); } return pte; } static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { clear_bit(1, (unsigned long *)&ptep->pte); do { } while (0); } # 616 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count) { memcpy(dst, src, count * sizeof(pgd_t)); } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/pgtable.h" 1 # 170 "/lnx/src/MM/mmotm-2010-0323-1534/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 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 int pud_none_or_clear_bad(pud_t *pud) { if (pud_none(*pud)) return 1; if (__builtin_expect(!!(pud_bad(*pud)), 0)) { pud_clear_bad(pud); return 1; } return 0; } static inline int pmd_none_or_clear_bad(pmd_t *pmd) { if (pmd_none(*pmd)) return 1; if (__builtin_expect(!!(pmd_bad(*pmd)), 0)) { pmd_clear_bad(pmd); return 1; } return 0; } static inline 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 void __ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { native_set_pte_at(mm, addr, ptep, pte); } # 245 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/pgtable.h" static inline 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 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); } # 340 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/pgtable.h" extern int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, unsigned long pfn, unsigned long size); extern int track_pfn_vma_copy(struct vm_area_struct *vma); extern void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn, unsigned long size); # 623 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/pgtable.h" 2 # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 2 # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern struct kmem_cache *vm_area_cachep; # 135 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern pgprot_t protection_map[16]; # 149 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) { return (vma->vm_flags & 0x40000000); } static inline int is_pfn_mapping(struct vm_area_struct *vma) { return (vma->vm_flags & 0x00000400); } # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" struct vm_fault { unsigned int flags; unsigned long pgoff; void __attribute__((noderef, address_space(1))) *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); # 207 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new); # 219 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" struct mempolicy *(*get_policy)(struct vm_area_struct *vma, unsigned long addr); int (*migrate)(struct vm_area_struct *vma, const nodemask_t *from, const nodemask_t *to, unsigned long flags); }; struct mmu_gather; struct inode; # 236 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" 1 # 75 "/lnx/src/MM/mmotm-2010-0323-1534/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_buddy, PG_swapbacked, PG_unevictable, PG_mlocked, PG_uncached, PG_hwpoison, __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, PG_slub_frozen = PG_active, PG_slub_debug = PG_error, }; # 199 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" struct page; static inline int PageLocked(struct page *page) { return (__builtin_constant_p((PG_locked)) ? constant_test_bit((PG_locked), (&page->flags)) : variable_test_bit((PG_locked), (&page->flags))); } static inline int TestSetPageLocked(struct page *page) { return test_and_set_bit(PG_locked, &page->flags); } static inline int PageError(struct page *page) { return (__builtin_constant_p((PG_error)) ? constant_test_bit((PG_error), (&page->flags)) : variable_test_bit((PG_error), (&page->flags))); } static inline void SetPageError(struct page *page) { set_bit(PG_error, &page->flags); } static inline void ClearPageError(struct page *page) { clear_bit(PG_error, &page->flags); } static inline int PageReferenced(struct page *page) { return (__builtin_constant_p((PG_referenced)) ? constant_test_bit((PG_referenced), (&page->flags)) : variable_test_bit((PG_referenced), (&page->flags))); } static inline void SetPageReferenced(struct page *page) { set_bit(PG_referenced, &page->flags); } static inline void ClearPageReferenced(struct page *page) { clear_bit(PG_referenced, &page->flags); } static inline int TestClearPageReferenced(struct page *page) { return test_and_clear_bit(PG_referenced, &page->flags); } static inline int PageDirty(struct page *page) { return (__builtin_constant_p((PG_dirty)) ? constant_test_bit((PG_dirty), (&page->flags)) : variable_test_bit((PG_dirty), (&page->flags))); } static inline void SetPageDirty(struct page *page) { set_bit(PG_dirty, &page->flags); } static inline void ClearPageDirty(struct page *page) { clear_bit(PG_dirty, &page->flags); } static inline int TestSetPageDirty(struct page *page) { return test_and_set_bit(PG_dirty, &page->flags); } static inline int TestClearPageDirty(struct page *page) { return test_and_clear_bit(PG_dirty, &page->flags); } static inline void __ClearPageDirty(struct page *page) { __clear_bit(PG_dirty, &page->flags); } static inline int PageLRU(struct page *page) { return (__builtin_constant_p((PG_lru)) ? constant_test_bit((PG_lru), (&page->flags)) : variable_test_bit((PG_lru), (&page->flags))); } static inline void SetPageLRU(struct page *page) { set_bit(PG_lru, &page->flags); } static inline void ClearPageLRU(struct page *page) { clear_bit(PG_lru, &page->flags); } static inline void __ClearPageLRU(struct page *page) { __clear_bit(PG_lru, &page->flags); } static inline int PageActive(struct page *page) { return (__builtin_constant_p((PG_active)) ? constant_test_bit((PG_active), (&page->flags)) : variable_test_bit((PG_active), (&page->flags))); } static inline void SetPageActive(struct page *page) { set_bit(PG_active, &page->flags); } static inline void ClearPageActive(struct page *page) { clear_bit(PG_active, &page->flags); } static inline void __ClearPageActive(struct page *page) { __clear_bit(PG_active, &page->flags); } static inline int TestClearPageActive(struct page *page) { return test_and_clear_bit(PG_active, &page->flags); } static inline int PageSlab(struct page *page) { return (__builtin_constant_p((PG_slab)) ? constant_test_bit((PG_slab), (&page->flags)) : variable_test_bit((PG_slab), (&page->flags))); } static inline void __SetPageSlab(struct page *page) { __set_bit(PG_slab, &page->flags); } static inline void __ClearPageSlab(struct page *page) { __clear_bit(PG_slab, &page->flags); } static inline int PageChecked(struct page *page) { return (__builtin_constant_p((PG_checked)) ? constant_test_bit((PG_checked), (&page->flags)) : variable_test_bit((PG_checked), (&page->flags))); } static inline void SetPageChecked(struct page *page) { set_bit(PG_checked, &page->flags); } static inline void ClearPageChecked(struct page *page) { clear_bit(PG_checked, &page->flags); } static inline int PagePinned(struct page *page) { return (__builtin_constant_p((PG_pinned)) ? constant_test_bit((PG_pinned), (&page->flags)) : variable_test_bit((PG_pinned), (&page->flags))); } static inline void SetPagePinned(struct page *page) { set_bit(PG_pinned, &page->flags); } static inline void ClearPagePinned(struct page *page) { clear_bit(PG_pinned, &page->flags); } static inline int TestSetPagePinned(struct page *page) { return test_and_set_bit(PG_pinned, &page->flags); } static inline int TestClearPagePinned(struct page *page) { return test_and_clear_bit(PG_pinned, &page->flags); } static inline int PageSavePinned(struct page *page) { return (__builtin_constant_p((PG_savepinned)) ? constant_test_bit((PG_savepinned), (&page->flags)) : variable_test_bit((PG_savepinned), (&page->flags))); } static inline void SetPageSavePinned(struct page *page) { set_bit(PG_savepinned, &page->flags); } static inline void ClearPageSavePinned(struct page *page) { clear_bit(PG_savepinned, &page->flags); }; static inline int PageReserved(struct page *page) { return (__builtin_constant_p((PG_reserved)) ? constant_test_bit((PG_reserved), (&page->flags)) : variable_test_bit((PG_reserved), (&page->flags))); } static inline void SetPageReserved(struct page *page) { set_bit(PG_reserved, &page->flags); } static inline void ClearPageReserved(struct page *page) { clear_bit(PG_reserved, &page->flags); } static inline void __ClearPageReserved(struct page *page) { __clear_bit(PG_reserved, &page->flags); } static inline int PageSwapBacked(struct page *page) { return (__builtin_constant_p((PG_swapbacked)) ? constant_test_bit((PG_swapbacked), (&page->flags)) : variable_test_bit((PG_swapbacked), (&page->flags))); } static inline void SetPageSwapBacked(struct page *page) { set_bit(PG_swapbacked, &page->flags); } static inline void ClearPageSwapBacked(struct page *page) { clear_bit(PG_swapbacked, &page->flags); } static inline void __ClearPageSwapBacked(struct page *page) { __clear_bit(PG_swapbacked, &page->flags); } static inline int PageSlobFree(struct page *page) { return (__builtin_constant_p((PG_slob_free)) ? constant_test_bit((PG_slob_free), (&page->flags)) : variable_test_bit((PG_slob_free), (&page->flags))); } static inline void __SetPageSlobFree(struct page *page) { __set_bit(PG_slob_free, &page->flags); } static inline void __ClearPageSlobFree(struct page *page) { __clear_bit(PG_slob_free, &page->flags); } static inline int PageSlubFrozen(struct page *page) { return (__builtin_constant_p((PG_slub_frozen)) ? constant_test_bit((PG_slub_frozen), (&page->flags)) : variable_test_bit((PG_slub_frozen), (&page->flags))); } static inline void __SetPageSlubFrozen(struct page *page) { __set_bit(PG_slub_frozen, &page->flags); } static inline void __ClearPageSlubFrozen(struct page *page) { __clear_bit(PG_slub_frozen, &page->flags); } static inline int PageSlubDebug(struct page *page) { return (__builtin_constant_p((PG_slub_debug)) ? constant_test_bit((PG_slub_debug), (&page->flags)) : variable_test_bit((PG_slub_debug), (&page->flags))); } static inline void __SetPageSlubDebug(struct page *page) { __set_bit(PG_slub_debug, &page->flags); } static inline void __ClearPageSlubDebug(struct page *page) { __clear_bit(PG_slub_debug, &page->flags); } static inline int PagePrivate(struct page *page) { return (__builtin_constant_p((PG_private)) ? constant_test_bit((PG_private), (&page->flags)) : variable_test_bit((PG_private), (&page->flags))); } static inline void SetPagePrivate(struct page *page) { set_bit(PG_private, &page->flags); } static inline void ClearPagePrivate(struct page *page) { clear_bit(PG_private, &page->flags); } static inline void __SetPagePrivate(struct page *page) { __set_bit(PG_private, &page->flags); } static inline void __ClearPagePrivate(struct page *page) { __clear_bit(PG_private, &page->flags); } static inline int PagePrivate2(struct page *page) { return (__builtin_constant_p((PG_private_2)) ? constant_test_bit((PG_private_2), (&page->flags)) : variable_test_bit((PG_private_2), (&page->flags))); } static inline void SetPagePrivate2(struct page *page) { set_bit(PG_private_2, &page->flags); } static inline void ClearPagePrivate2(struct page *page) { clear_bit(PG_private_2, &page->flags); } static inline int TestSetPagePrivate2(struct page *page) { return test_and_set_bit(PG_private_2, &page->flags); } static inline int TestClearPagePrivate2(struct page *page) { return test_and_clear_bit(PG_private_2, &page->flags); } static inline int PageOwnerPriv1(struct page *page) { return (__builtin_constant_p((PG_owner_priv_1)) ? constant_test_bit((PG_owner_priv_1), (&page->flags)) : variable_test_bit((PG_owner_priv_1), (&page->flags))); } static inline void SetPageOwnerPriv1(struct page *page) { set_bit(PG_owner_priv_1, &page->flags); } static inline void ClearPageOwnerPriv1(struct page *page) { clear_bit(PG_owner_priv_1, &page->flags); } static inline int TestClearPageOwnerPriv1(struct page *page) { return test_and_clear_bit(PG_owner_priv_1, &page->flags); } static inline int PageWriteback(struct page *page) { return (__builtin_constant_p((PG_writeback)) ? constant_test_bit((PG_writeback), (&page->flags)) : variable_test_bit((PG_writeback), (&page->flags))); } static inline int TestSetPageWriteback(struct page *page) { return test_and_set_bit(PG_writeback, &page->flags); } static inline int TestClearPageWriteback(struct page *page) { return test_and_clear_bit(PG_writeback, &page->flags); } static inline int PageBuddy(struct page *page) { return (__builtin_constant_p((PG_buddy)) ? constant_test_bit((PG_buddy), (&page->flags)) : variable_test_bit((PG_buddy), (&page->flags))); } static inline void __SetPageBuddy(struct page *page) { __set_bit(PG_buddy, &page->flags); } static inline void __ClearPageBuddy(struct page *page) { __clear_bit(PG_buddy, &page->flags); } static inline int PageMappedToDisk(struct page *page) { return (__builtin_constant_p((PG_mappedtodisk)) ? constant_test_bit((PG_mappedtodisk), (&page->flags)) : variable_test_bit((PG_mappedtodisk), (&page->flags))); } static inline void SetPageMappedToDisk(struct page *page) { set_bit(PG_mappedtodisk, &page->flags); } static inline void ClearPageMappedToDisk(struct page *page) { clear_bit(PG_mappedtodisk, &page->flags); } static inline int PageReclaim(struct page *page) { return (__builtin_constant_p((PG_reclaim)) ? constant_test_bit((PG_reclaim), (&page->flags)) : variable_test_bit((PG_reclaim), (&page->flags))); } static inline void SetPageReclaim(struct page *page) { set_bit(PG_reclaim, &page->flags); } static inline void ClearPageReclaim(struct page *page) { clear_bit(PG_reclaim, &page->flags); } static inline int TestClearPageReclaim(struct page *page) { return test_and_clear_bit(PG_reclaim, &page->flags); } static inline int PageReadahead(struct page *page) { return (__builtin_constant_p((PG_reclaim)) ? constant_test_bit((PG_reclaim), (&page->flags)) : variable_test_bit((PG_reclaim), (&page->flags))); } static inline void SetPageReadahead(struct page *page) { set_bit(PG_reclaim, &page->flags); } static inline void ClearPageReadahead(struct page *page) { clear_bit(PG_reclaim, &page->flags); } # 249 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" static inline int PageHighMem(struct page *page) { return 0; } static inline int PageSwapCache(struct page *page) { return 0; } static inline void SetPageSwapCache(struct page *page) { } static inline void ClearPageSwapCache(struct page *page) { } static inline int PageUnevictable(struct page *page) { return (__builtin_constant_p((PG_unevictable)) ? constant_test_bit((PG_unevictable), (&page->flags)) : variable_test_bit((PG_unevictable), (&page->flags))); } static inline void SetPageUnevictable(struct page *page) { set_bit(PG_unevictable, &page->flags); } static inline void ClearPageUnevictable(struct page *page) { clear_bit(PG_unevictable, &page->flags); } static inline void __ClearPageUnevictable(struct page *page) { __clear_bit(PG_unevictable, &page->flags); } static inline int TestClearPageUnevictable(struct page *page) { return test_and_clear_bit(PG_unevictable, &page->flags); } static inline int PageMlocked(struct page *page) { return (__builtin_constant_p((PG_mlocked)) ? constant_test_bit((PG_mlocked), (&page->flags)) : variable_test_bit((PG_mlocked), (&page->flags))); } static inline void SetPageMlocked(struct page *page) { set_bit(PG_mlocked, &page->flags); } static inline void ClearPageMlocked(struct page *page) { clear_bit(PG_mlocked, &page->flags); } static inline void __ClearPageMlocked(struct page *page) { __clear_bit(PG_mlocked, &page->flags); } static inline int TestSetPageMlocked(struct page *page) { return test_and_set_bit(PG_mlocked, &page->flags); } static inline int TestClearPageMlocked(struct page *page) { return test_and_clear_bit(PG_mlocked, &page->flags); } static inline int __TestClearPageMlocked(struct page *page) { return __test_and_clear_bit(PG_mlocked, &page->flags); } static inline int PageUncached(struct page *page) { return (__builtin_constant_p((PG_uncached)) ? constant_test_bit((PG_uncached), (&page->flags)) : variable_test_bit((PG_uncached), (&page->flags))); } static inline void SetPageUncached(struct page *page) { set_bit(PG_uncached, &page->flags); } static inline void ClearPageUncached(struct page *page) { clear_bit(PG_uncached, &page->flags); } static inline int PageHWPoison(struct page *page) { return (__builtin_constant_p((PG_hwpoison)) ? constant_test_bit((PG_hwpoison), (&page->flags)) : variable_test_bit((PG_hwpoison), (&page->flags))); } static inline void SetPageHWPoison(struct page *page) { set_bit(PG_hwpoison, &page->flags); } static inline void ClearPageHWPoison(struct page *page) { clear_bit(PG_hwpoison, &page->flags); } static inline int TestSetPageHWPoison(struct page *page) { return test_and_set_bit(PG_hwpoison, &page->flags); } static inline int TestClearPageHWPoison(struct page *page) { return test_and_clear_bit(PG_hwpoison, &page->flags); } u64 stable_page_flags(struct page *page); static inline int PageUptodate(struct page *page) { int ret = (__builtin_constant_p((PG_uptodate)) ? constant_test_bit((PG_uptodate), (&(page)->flags)) : variable_test_bit((PG_uptodate), (&(page)->flags))); # 299 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" if (ret) __asm__ __volatile__("": : :"memory"); return ret; } static inline void __SetPageUptodate(struct page *page) { __asm__ __volatile__("": : :"memory"); __set_bit(PG_uptodate, &(page)->flags); } static inline void SetPageUptodate(struct page *page) { # 325 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" __asm__ __volatile__("": : :"memory"); set_bit(PG_uptodate, &(page)->flags); } static inline 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 void set_page_writeback(struct page *page) { test_set_page_writeback(page); } # 349 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" static inline int PageHead(struct page *page) { return (__builtin_constant_p((PG_head)) ? constant_test_bit((PG_head), (&page->flags)) : variable_test_bit((PG_head), (&page->flags))); } static inline void __SetPageHead(struct page *page) { __set_bit(PG_head, &page->flags); } static inline void __ClearPageHead(struct page *page) { __clear_bit(PG_head, &page->flags); } static inline int PageTail(struct page *page) { return (__builtin_constant_p((PG_tail)) ? constant_test_bit((PG_tail), (&page->flags)) : variable_test_bit((PG_tail), (&page->flags))); } static inline void __SetPageTail(struct page *page) { __set_bit(PG_tail, &page->flags); } static inline void __ClearPageTail(struct page *page) { __clear_bit(PG_tail, &page->flags); } static inline int PageCompound(struct page *page) { return page->flags & ((1L << PG_head) | (1L << PG_tail)); } # 429 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/page-flags.h" static inline int page_has_private(struct page *page) { return !!(page->flags & (1 << PG_private | 1 << PG_private_2)); } # 237 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 2 # 254 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline int put_page_testzero(struct page *page) { do { } while (0); return atomic_dec_and_test(&page->_count); } static inline 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 int is_vmalloc_addr(const void *x) { unsigned long addr = (unsigned long)x; return addr >= (0xffffc90000000000UL) && addr < (0xffffe8ffffffffffUL); } extern int is_vmalloc_or_module_addr(const void *x); static inline struct page *compound_head(struct page *page) { if (__builtin_expect(!!(PageTail(page)), 0)) return page->first_page; return page; } static inline int page_count(struct page *page) { return atomic_read(&compound_head(page)->_count); } static inline void get_page(struct page *page) { page = compound_head(page); do { } while (0); atomic_inc(&page->_count); } static inline struct page *virt_to_head_page(const void *x) { struct page *page = (((struct page *)(0xffffea0000000000UL)) + (__phys_addr((unsigned long)(x)) >> 12)); return compound_head(page); } static inline void init_page_count(struct page *page) { atomic_set(&page->_count, 1); } void put_page(struct page *page); void put_pages_list(struct list_head *pages); void split_page(struct page *page, unsigned int order); typedef void compound_page_dtor(struct page *); static inline void set_compound_page_dtor(struct page *page, compound_page_dtor *dtor) { page[1].lru.next = (void *)dtor; } static inline compound_page_dtor *get_compound_page_dtor(struct page *page) { return (compound_page_dtor *)page[1].lru.next; } static inline int compound_order(struct page *page) { if (!PageHead(page)) return 0; return (unsigned long)page[1].lru.prev; } static inline void set_compound_order(struct page *page, unsigned long order) { page[1].lru.prev = (void *)order; } # 514 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline enum zone_type page_zonenum(struct page *page) { return (page->flags >> (((((sizeof(unsigned long)*8) - 0) - 6) - 2) * (2 != 0))) & ((1UL << 2) - 1); } # 527 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline int page_zone_id(struct page *page) { return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 6) < ((((sizeof(unsigned long)*8) - 0) - 6) - 2))? (((sizeof(unsigned long)*8) - 0) - 6) : ((((sizeof(unsigned long)*8) - 0) - 6) - 2)) * ((6 + 2) != 0))) & ((1UL << (6 + 2)) - 1); } static inline int zone_to_nid(struct zone *zone) { return zone->node; } static inline int page_to_nid(struct page *page) { return (page->flags >> ((((sizeof(unsigned long)*8) - 0) - 6) * (6 != 0))) & ((1UL << 6) - 1); } static inline struct zone *page_zone(struct page *page) { return &(node_data[page_to_nid(page)])->node_zones[page_zonenum(page)]; } # 562 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline void set_page_zone(struct page *page, enum zone_type zone) { page->flags &= ~(((1UL << 2) - 1) << (((((sizeof(unsigned long)*8) - 0) - 6) - 2) * (2 != 0))); page->flags |= (zone & ((1UL << 2) - 1)) << (((((sizeof(unsigned long)*8) - 0) - 6) - 2) * (2 != 0)); } static inline void set_page_node(struct page *page, unsigned long node) { page->flags &= ~(((1UL << 6) - 1) << ((((sizeof(unsigned long)*8) - 0) - 6) * (6 != 0))); page->flags |= (node & ((1UL << 6) - 1)) << ((((sizeof(unsigned long)*8) - 0) - 6) * (6 != 0)); } static inline void set_page_section(struct page *page, unsigned long section) { page->flags &= ~(((1UL << 0) - 1) << (((sizeof(unsigned long)*8) - 0) * (0 != 0))); page->flags |= (section & ((1UL << 0) - 1)) << (((sizeof(unsigned long)*8) - 0) * (0 != 0)); } static inline 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); set_page_section(page, ((pfn) >> (27 - 12))); } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 1 # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" 2 # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, PGALLOC_DMA, PGALLOC_DMA32, PGALLOC_NORMAL , PGALLOC_MOVABLE, PGFREE, PGACTIVATE, PGDEACTIVATE, PGFAULT, PGMAJFAULT, PGREFILL_DMA, PGREFILL_DMA32, PGREFILL_NORMAL , PGREFILL_MOVABLE, PGSTEAL_DMA, PGSTEAL_DMA32, PGSTEAL_NORMAL , PGSTEAL_MOVABLE, PGSCAN_KSWAPD_DMA, PGSCAN_KSWAPD_DMA32, PGSCAN_KSWAPD_NORMAL , PGSCAN_KSWAPD_MOVABLE, PGSCAN_DIRECT_DMA, PGSCAN_DIRECT_DMA32, PGSCAN_DIRECT_NORMAL , PGSCAN_DIRECT_MOVABLE, PGSCAN_ZONE_RECLAIM_FAILED, PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, KSWAPD_SKIP_CONGESTION_WAIT, PAGEOUTRUN, ALLOCSTALL, PGROTATED, HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, UNEVICTABLE_PGCULLED, UNEVICTABLE_PGSCANNED, UNEVICTABLE_PGRESCUED, UNEVICTABLE_PGMLOCKED, UNEVICTABLE_PGMUNLOCKED, UNEVICTABLE_PGCLEARED, UNEVICTABLE_PGSTRANDED, UNEVICTABLE_MLOCKFREED, NR_VM_EVENT_ITEMS }; extern int sysctl_stat_interval; # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" struct vm_event_state { unsigned long event[NR_VM_EVENT_ITEMS]; }; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct vm_event_state) vm_event_states; static inline void __count_vm_event(enum vm_event_item item) { do { do { const void __attribute__((noderef, address_space(3))) *__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 { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline void count_vm_event(enum vm_event_item item) { do { do { const void __attribute__((noderef, address_space(3))) *__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 { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((((vm_event_states.event[item])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); } switch (sizeof((((vm_event_states.event[item]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" ((((vm_event_states.event[item])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline void __count_vm_events(enum vm_event_item item, long delta) { do { do { const void __attribute__((noderef, address_space(3))) *__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 { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline void count_vm_events(enum vm_event_item item, long delta) { do { do { const void __attribute__((noderef, address_space(3))) *__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 { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((vm_event_states.event[item]))) pao_T__; const int pao_ID__ = (__builtin_constant_p((delta)) && (((delta)) == 1 || ((delta)) == -1)) ? ((delta)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((delta)); } switch (sizeof(((vm_event_states.event[item])))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "qi" ((pao_T__)((delta)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "ri" ((pao_T__)((delta)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item])))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((vm_event_states.event[item]))) : "re" ((pao_T__)((delta)))); break; default: __bad_percpu_size(); } } 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); # 139 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" extern atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; static inline 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 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 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; } extern unsigned long global_reclaimable_pages(void); extern unsigned long zone_reclaimable_pages(struct zone *zone); static inline unsigned long node_page_state(int node, enum zone_stat_item item) { struct zone *zones = (node_data[node])->node_zones; return zone_page_state(&zones[ZONE_DMA], item) + zone_page_state(&zones[ZONE_DMA32], item) + zone_page_state(&zones[ZONE_NORMAL], item) + zone_page_state(&zones[ZONE_MOVABLE], item); } extern void zone_statistics(struct zone *, struct zone *); # 209 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmstat.h" static inline void zap_zone_vm_stats(struct zone *zone) { memset(zone->vm_stat, 0, sizeof(zone->vm_stat)); } 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); # 592 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 2 static inline __attribute__((always_inline)) void *lowmem_page_address(struct page *page) { return ((void *)((unsigned long)((unsigned long)((page) - ((struct page *)(0xffffea0000000000UL))) << 12)+((unsigned long)(0xffff880000000000UL)))); } # 643 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern struct address_space swapper_space; static inline struct address_space *page_mapping(struct page *page) { struct address_space *mapping = page->mapping; do { } while (0); if (__builtin_expect(!!(PageSwapCache(page)), 0)) mapping = &swapper_space; else if (__builtin_expect(!!((unsigned long)mapping & 1), 0)) mapping = ((void *)0); return mapping; } static inline void *page_rmapping(struct page *page) { return (void *)((unsigned long)page->mapping & ~(1 | 2)); } static inline int PageAnon(struct page *page) { return ((unsigned long)page->mapping & 1) != 0; } static inline unsigned long page_index(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return ((page)->private); return page->index; } static inline void reset_page_mapcount(struct page *page) { atomic_set(&(page)->_mapcount, -1); } static inline int page_mapcount(struct page *page) { return atomic_read(&(page)->_mapcount) + 1; } static inline int page_mapped(struct page *page) { return atomic_read(&(page)->_mapcount) >= 0; } # 723 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern void pagefault_out_of_memory(void); extern void show_free_areas(void); int shmem_lock(struct file *file, int lock, struct user_struct *user); struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); int shmem_zero_setup(struct vm_area_struct *); # 741 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 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; spinlock_t *i_mmap_lock; unsigned long truncate_count; }; 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); unsigned long zap_page_range(struct vm_area_struct *vma, unsigned long address, unsigned long size, struct zap_details *); unsigned long unmap_vmas(struct mmu_gather **tlb, struct vm_area_struct *start_vma, unsigned long start_addr, unsigned long end_addr, unsigned long *nr_accounted, struct zap_details *); # 780 "/lnx/src/MM/mmotm-2010-0323-1534/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, 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 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 int vmtruncate(struct inode *inode, loff_t offset); extern int vmtruncate_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); # 836 "/lnx/src/MM/mmotm-2010-0323-1534/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); 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 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); int set_page_dirty(struct page *page); int set_page_dirty_lock(struct page *page); int set_page_dirty_notag(struct page *page); int clear_page_dirty_for_io(struct page *page); 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); extern unsigned long do_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr); 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); # 882 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline void set_mm_counter(struct mm_struct *mm, int member, long value) { atomic_long_set(&mm->rss_stat.count[member], value); } unsigned long get_mm_counter(struct mm_struct *mm, int member); static inline void add_mm_counter(struct mm_struct *mm, int member, long value) { atomic_long_add(value, &mm->rss_stat.count[member]); } static inline void inc_mm_counter(struct mm_struct *mm, int member) { atomic_long_inc(&mm->rss_stat.count[member]); } static inline void dec_mm_counter(struct mm_struct *mm, int member) { atomic_long_dec(&mm->rss_stat.count[member]); } # 936 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline unsigned long get_mm_rss(struct mm_struct *mm) { return get_mm_counter(mm, MM_FILEPAGES) + get_mm_counter(mm, MM_ANONPAGES); } static inline 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 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 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 void update_hiwater_vm(struct mm_struct *mm) { if (mm->hiwater_vm < mm->total_vm) mm->hiwater_vm = mm->total_vm; } static inline 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 task_struct *task, struct mm_struct *mm); # 998 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" struct shrinker { int (*shrink)(int nr_to_scan, gfp_t gfp_mask); int seeks; struct list_head list; long nr; }; extern void register_shrinker(struct shrinker *); extern void unregister_shrinker(struct shrinker *); 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); # 1021 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); # 1031 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); int __pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address); int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); static inline 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 pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) { return (__builtin_expect(!!(pud_none(*pud)), 0) && __pmd_alloc(mm, pud, address))? ((void *)0): pmd_offset(pud, address); } # 1077 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline 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 void pgtable_page_dtor(struct page *page) { ((page)->mapping = ((void *)0)); dec_zone_page_state(page, NR_PAGETABLE); } # 1115 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 1146 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern void free_area_init_nodes(unsigned long *max_zone_pfn); extern void add_active_range(unsigned int nid, unsigned long start_pfn, unsigned long end_pfn); extern void remove_active_range(unsigned int nid, unsigned long start_pfn, unsigned long end_pfn); extern void remove_all_active_ranges(void); void sort_node_map(void); unsigned long __absent_pages_in_range(int nid, unsigned long start_pfn, unsigned long end_pfn); extern unsigned long absent_pages_in_range(unsigned long start_pfn, unsigned long end_pfn); extern void get_pfn_range_for_nid(unsigned int nid, unsigned long *start_pfn, unsigned long *end_pfn); extern unsigned long find_min_pfn_with_active_regions(void); extern void free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn); int add_from_early_node_map(struct range *range, int az, int nr_range, int nid); void *__alloc_memory_core_early(int nodeid, u64 size, u64 align, u64 goal, u64 limit); typedef int (*work_fn_t)(unsigned long, unsigned long, void *); extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data); extern void sparse_memory_present_with_active_regions(int nid); # 1179 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" extern int __attribute__ ((__section__(".meminit.text"))) __attribute__((__cold__)) early_pfn_to_nid(unsigned long pfn); extern int __attribute__ ((__section__(".meminit.text"))) __attribute__((__cold__)) __early_pfn_to_nid(unsigned long pfn); 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 void calculate_zone_inactive_ratio(struct zone *zone); extern void mem_init(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) mmap_init(void); extern void show_mem(void); extern void si_meminfo(struct sysinfo * val); extern void si_meminfo_node(struct sysinfo *val, int nid); extern int after_bootmem; extern void setup_per_cpu_pageset(void); extern void zone_pcp_update(struct zone *zone); extern atomic_long_t mmap_pages_allocated; extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t); void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old); void vma_prio_tree_insert(struct vm_area_struct *, struct prio_tree_root *); void vma_prio_tree_remove(struct vm_area_struct *, struct prio_tree_root *); struct vm_area_struct *vma_prio_tree_next(struct vm_area_struct *vma, struct prio_tree_iter *iter); static inline void vma_nonlinear_insert(struct vm_area_struct *vma, struct list_head *list) { vma->shared.vm_set.parent = ((void *)0); list_add_tail(&vma->shared.vm_set.list, list); } 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); 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 added_exe_file_vma(struct mm_struct *mm); extern void removed_exe_file_vma(struct mm_struct *mm); # 1258 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" 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 do_mmap_pgoff(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flag, unsigned long pgoff); extern unsigned long mmap_region(struct file *file, unsigned long addr, unsigned long len, unsigned long flags, unsigned int vm_flags, unsigned long pgoff); static inline unsigned long do_mmap(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flag, unsigned long offset) { unsigned long ret = -22; if ((offset + (((len)+((typeof(len))(((1UL) << 12))-1))&~((typeof(len))(((1UL) << 12))-1))) < offset) goto out; if (!(offset & ~(~(((1UL) << 12)-1)))) ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> 12); out: return ret; } extern int do_munmap(struct mm_struct *, unsigned long, size_t); extern unsigned long do_brk(unsigned long, unsigned long); extern unsigned long page_unuse(struct page *); 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 *); 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_stack_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 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 unsigned long vma_pages(struct vm_area_struct *vma) { return (vma->vm_end - vma->vm_start) >> 12; } pgprot_t vm_get_page_prot(unsigned long vm_flags); 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); 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); # 1401 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/mm.h" static inline void kernel_map_pages(struct page *page, int numpages, int enable) {} static inline void enable_debug_pagealloc(void) { } extern struct vm_area_struct *get_gate_vma(struct task_struct *tsk); int in_gate_area_no_task(unsigned long addr); int in_gate_area(struct task_struct *task, unsigned long addr); int drop_caches_sysctl_handler(struct ctl_table *, int, void __attribute__((noderef, address_space(1))) *, size_t *, loff_t *); unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, 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); extern int account_locked_memory(struct mm_struct *mm, struct rlimit *rlim, size_t size); extern void refund_locked_memory(struct mm_struct *mm, size_t size); enum mf_flags { MF_COUNT_INCREASED = 1 << 0, }; extern void memory_failure(unsigned long pfn, int trapno); extern int __memory_failure(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); # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" 1 # 54 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline unsigned char readb(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char __attribute__((force)) *)addr) :"memory"); return ret; } static inline unsigned short readw(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short __attribute__((force)) *)addr) :"memory"); return ret; } static inline unsigned int readl(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int __attribute__((force)) *)addr) :"memory"); return ret; } static inline unsigned char __readb(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char __attribute__((force)) *)addr) ); return ret; } static inline unsigned short __readw(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short __attribute__((force)) *)addr) ); return ret; } static inline unsigned int __readl(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int __attribute__((force)) *)addr) ); return ret; } static inline void writeb(unsigned char val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char __attribute__((force)) *)addr) :"memory"); } static inline void writew(unsigned short val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short __attribute__((force)) *)addr) :"memory"); } static inline void writel(unsigned int val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int __attribute__((force)) *)addr) :"memory"); } static inline void __writeb(unsigned char val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char __attribute__((force)) *)addr) ); } static inline void __writew(unsigned short val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short __attribute__((force)) *)addr) ); } static inline void __writel(unsigned int val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int __attribute__((force)) *)addr) ); } # 85 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline unsigned long readq(const volatile void __attribute__((noderef, address_space(2))) *addr) { unsigned long ret; asm volatile("mov" "q" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned long __attribute__((force)) *)addr) :"memory"); return ret; } static inline void writeq(unsigned long val, volatile void __attribute__((noderef, address_space(2))) *addr) { asm volatile("mov" "q" " %0,%1": :"r" (val), "m" (*(volatile unsigned long __attribute__((force)) *)addr) :"memory"); } # 131 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline phys_addr_t virt_to_phys(volatile void *address) { return __phys_addr((unsigned long)(address)); } # 149 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline void *phys_to_virt(phys_addr_t address) { return ((void *)((unsigned long)(address)+((unsigned long)(0xffff880000000000UL)))); } # 164 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline unsigned int isa_virt_to_bus(volatile void *address) { return (unsigned int)virt_to_phys(address); } # 194 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" extern void __attribute__((noderef, address_space(2))) *ioremap_nocache(resource_size_t offset, unsigned long size); extern void __attribute__((noderef, address_space(2))) *ioremap_cache(resource_size_t offset, unsigned long size); extern void __attribute__((noderef, address_space(2))) *ioremap_prot(resource_size_t offset, unsigned long size, unsigned long prot_val); static inline void __attribute__((noderef, address_space(2))) *ioremap(resource_size_t offset, unsigned long size) { return ioremap_nocache(offset, size); } extern void iounmap(volatile void __attribute__((noderef, address_space(2))) *addr); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/iomap.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/iomap.h" extern unsigned int ioread8(void __attribute__((noderef, address_space(2))) *); extern unsigned int ioread16(void __attribute__((noderef, address_space(2))) *); extern unsigned int ioread16be(void __attribute__((noderef, address_space(2))) *); extern unsigned int ioread32(void __attribute__((noderef, address_space(2))) *); extern unsigned int ioread32be(void __attribute__((noderef, address_space(2))) *); extern void iowrite8(u8, void __attribute__((noderef, address_space(2))) *); extern void iowrite16(u16, void __attribute__((noderef, address_space(2))) *); extern void iowrite16be(u16, void __attribute__((noderef, address_space(2))) *); extern void iowrite32(u32, void __attribute__((noderef, address_space(2))) *); extern void iowrite32be(u32, void __attribute__((noderef, address_space(2))) *); # 51 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/iomap.h" extern void ioread8_rep(void __attribute__((noderef, address_space(2))) *port, void *buf, unsigned long count); extern void ioread16_rep(void __attribute__((noderef, address_space(2))) *port, void *buf, unsigned long count); extern void ioread32_rep(void __attribute__((noderef, address_space(2))) *port, void *buf, unsigned long count); extern void iowrite8_rep(void __attribute__((noderef, address_space(2))) *port, const void *buf, unsigned long count); extern void iowrite16_rep(void __attribute__((noderef, address_space(2))) *port, const void *buf, unsigned long count); extern void iowrite32_rep(void __attribute__((noderef, address_space(2))) *port, const void *buf, unsigned long count); extern void __attribute__((noderef, address_space(2))) *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void __attribute__((noderef, address_space(2))) *); struct pci_dev; extern void __attribute__((noderef, address_space(2))) *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); extern void pci_iounmap(struct pci_dev *dev, void __attribute__((noderef, address_space(2))) *); # 213 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmalloc.h" 1 struct vm_area_struct; # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/vmalloc.h" struct vm_struct { struct vm_struct *next; void *addr; unsigned long size; unsigned long flags; struct page **pages; unsigned int nr_pages; unsigned long phys_addr; void *caller; }; extern void vm_unmap_ram(const void *mem, unsigned int count); extern void *vm_map_ram(struct page **pages, unsigned int count, int node, pgprot_t prot); extern void vm_unmap_aliases(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) vmalloc_init(void); extern void *vmalloc(unsigned long size); extern void *vmalloc_user(unsigned long size); extern void *vmalloc_node(unsigned long size, int node); extern void *vmalloc_exec(unsigned long size); extern void *vmalloc_32(unsigned long size); extern void *vmalloc_32_user(unsigned long size); extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot); extern void vfree(const void *addr); extern void *vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot); extern void vunmap(const void *addr); extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, unsigned long pgoff); void vmalloc_sync_all(void); static inline size_t get_vm_area_size(const struct vm_struct *area) { return area->size - ((1UL) << 12); } extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); extern struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags, void *caller); extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, unsigned long start, unsigned long end); extern struct vm_struct *__get_vm_area_caller(unsigned long size, unsigned long flags, unsigned long start, unsigned long end, void *caller); extern struct vm_struct *get_vm_area_node(unsigned long size, unsigned long flags, int node, gfp_t gfp_mask); extern struct vm_struct *remove_vm_area(const void *addr); extern int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages); extern int map_kernel_range_noflush(unsigned long start, unsigned long size, pgprot_t prot, struct page **pages); extern void unmap_kernel_range_noflush(unsigned long addr, unsigned long size); extern void unmap_kernel_range(unsigned long addr, unsigned long size); extern struct vm_struct *alloc_vm_area(size_t size); extern void free_vm_area(struct vm_struct *area); extern long vread(char *buf, char *addr, unsigned long count); extern long vwrite(char *buf, char *addr, unsigned long count); extern rwlock_t vmlist_lock; extern struct vm_struct *vmlist; extern __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) void vm_area_register_early(struct vm_struct *vm, size_t align); struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, const size_t *sizes, int nr_vms, size_t align, gfp_t gfp_mask); void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms); # 215 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" 2 static inline void memset_io(volatile void __attribute__((noderef, address_space(2))) *addr, unsigned char val, size_t count) { memset((void __attribute__((force)) *)addr, val, count); } static inline void memcpy_fromio(void *dst, const volatile void __attribute__((noderef, address_space(2))) *src, size_t count) { memcpy(dst, (const void __attribute__((force)) *)src, count); } static inline void memcpy_toio(volatile void __attribute__((noderef, address_space(2))) *dst, const void *src, size_t count) { memcpy((void __attribute__((force)) *)dst, src, count); } # 257 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline void flush_write_buffers(void) { } extern void native_io_delay(void); extern int io_delay_type; extern void io_delay_init(void); static inline void slow_down_io(void) { native_io_delay(); } # 327 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/io.h" static inline void outb(unsigned char value, int port) { asm volatile("out" "b" " %" "b" "0, %w1" : : "a"(value), "Nd"(port)); } static inline unsigned char inb(int port) { unsigned char value; asm volatile("in" "b" " %w1, %" "b" "0" : "=a"(value) : "Nd"(port)); return value; } static inline void outb_p(unsigned char value, int port) { outb(value, port); slow_down_io(); } static inline unsigned char inb_p(int port) { unsigned char value = inb(port); slow_down_io(); return value; } static inline void outsb(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "b" : "+S"(addr), "+c"(count) : "d"(port)); } static inline void insb(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "b" : "+D"(addr), "+c"(count) : "d"(port)); } static inline void outw(unsigned short value, int port) { asm volatile("out" "w" " %" "w" "0, %w1" : : "a"(value), "Nd"(port)); } static inline unsigned short inw(int port) { unsigned short value; asm volatile("in" "w" " %w1, %" "w" "0" : "=a"(value) : "Nd"(port)); return value; } static inline void outw_p(unsigned short value, int port) { outw(value, port); slow_down_io(); } static inline unsigned short inw_p(int port) { unsigned short value = inw(port); slow_down_io(); return value; } static inline void outsw(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "w" : "+S"(addr), "+c"(count) : "d"(port)); } static inline void insw(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "w" : "+D"(addr), "+c"(count) : "d"(port)); } static inline void outl(unsigned int value, int port) { asm volatile("out" "l" " %" "" "0, %w1" : : "a"(value), "Nd"(port)); } static inline unsigned int inl(int port) { unsigned int value; asm volatile("in" "l" " %w1, %" "" "0" : "=a"(value) : "Nd"(port)); return value; } static inline void outl_p(unsigned int value, int port) { outl(value, port); slow_down_io(); } static inline unsigned int inl_p(int port) { unsigned int value = inl(port); slow_down_io(); return value; } static inline void outsl(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "l" : "+S"(addr), "+c"(count) : "d"(port)); } static inline void insl(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "l" : "+D"(addr), "+c"(count) : "d"(port)); } extern void *xlate_dev_mem_ptr(unsigned long phys); extern void unxlate_dev_mem_ptr(unsigned long phys, void *addr); extern int ioremap_change_attr(unsigned long vaddr, unsigned long size, unsigned long prot_val); extern void __attribute__((noderef, address_space(2))) *ioremap_wc(resource_size_t offset, unsigned long size); extern void early_ioremap_init(void); extern void early_ioremap_reset(void); extern void __attribute__((noderef, address_space(2))) *early_ioremap(resource_size_t phys_addr, unsigned long size); extern void __attribute__((noderef, address_space(2))) *early_memremap(resource_size_t phys_addr, unsigned long size); extern void early_iounmap(void __attribute__((noderef, address_space(2))) *addr, unsigned long size); # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" 2 struct sg_table { struct scatterlist *sgl; unsigned int nents; unsigned int orig_nents; }; # 55 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h"), "i" (63), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); sg->page_link = page_link | (unsigned long) page; } # 85 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline 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 struct page *sg_page(struct scatterlist *sg) { return (struct page *)((sg)->page_link & ~0x3); } # 109 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline void sg_set_buf(struct scatterlist *sg, const void *buf, unsigned int buflen) { sg_set_page(sg, (((struct page *)(0xffffea0000000000UL)) + (__phys_addr((unsigned long)(buf)) >> 12)), buflen, ((unsigned long)(buf) & ~(~(((1UL) << 12)-1)))); } # 131 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents, struct scatterlist *sgl) { prv[prv_nents - 1].offset = 0; prv[prv_nents - 1].length = 0; prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01) & ~0x02; } # 160 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline void sg_mark_end(struct scatterlist *sg) { sg->page_link |= 0x02; sg->page_link &= ~0x01; } # 182 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline dma_addr_t sg_phys(struct scatterlist *sg) { return ((dma_addr_t)(unsigned long)((sg_page(sg)) - ((struct page *)(0xffffea0000000000UL))) << 12) + sg->offset; } # 197 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/scatterlist.h" static inline void *sg_virt(struct scatterlist *sg) { return lowmem_page_address(sg_page(sg)) + sg->offset; } 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); 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); # 248 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" 2 enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3, }; struct dma_map_ops { void* (*alloc_coherent)(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp); void (*free_coherent)(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); 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_single_range_for_cpu)(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction dir); void (*sync_single_range_for_device)(struct device *dev, dma_addr_t dma_handle, unsigned long offset, 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; }; typedef u64 DMA_nnBIT_MASK __attribute__((deprecated)); # 90 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" static inline int valid_dma_direction(int dma_direction) { return ((dma_direction == DMA_BIDIRECTIONAL) || (dma_direction == DMA_TO_DEVICE) || (dma_direction == DMA_FROM_DEVICE)); } static inline int is_device_dma_capable(struct device *dev) { return dev->dma_mask != ((void *)0) && *dev->dma_mask != 0x0ULL; } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-debug.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-debug.h" struct device; struct scatterlist; struct bus_type; extern void dma_debug_add_bus(struct bus_type *bus); extern void dma_debug_init(u32 num_entries); extern int dma_debug_resize_entries(u32 num_entries); extern 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); extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, size_t size, int direction, bool map_single); extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, int mapped_ents, int direction); extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, int nelems, int dir); extern void debug_dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t dma_addr, void *virt); extern void debug_dma_free_coherent(struct device *dev, size_t size, void *virt, dma_addr_t addr); extern void debug_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, int direction); extern void debug_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, int direction); extern void debug_dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction); extern void debug_dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, int direction); extern void debug_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, int direction); extern void debug_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, int direction); extern void debug_dma_dump_mappings(struct device *dev); # 12 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swiotlb.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swiotlb.h" 1 struct device; struct dma_attrs; struct scatterlist; extern int swiotlb_force; # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/swiotlb.h" extern void swiotlb_init(int verbose); extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, gfp_t flags); extern void swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle); extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs); extern void swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs); extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction); extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction); extern int swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, enum dma_data_direction dir, struct dma_attrs *attrs); extern void swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, enum dma_data_direction dir, struct dma_attrs *attrs); extern void swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, size_t size, enum dma_data_direction dir); extern void swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, int nelems, enum dma_data_direction dir); extern void swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, size_t size, enum dma_data_direction dir); extern void swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, int nelems, enum dma_data_direction dir); extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr, unsigned long offset, size_t size, enum dma_data_direction dir); extern void swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, unsigned long offset, size_t size, enum dma_data_direction dir); extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); extern int swiotlb_dma_supported(struct device *hwdev, u64 mask); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) swiotlb_free(void); extern void swiotlb_print_info(void); # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swiotlb.h" 2 extern int swiotlb; extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pci_swiotlb_detect(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) pci_swiotlb_init(void); # 21 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/swiotlb.h" static inline void dma_mark_clean(void *addr, size_t size) {} # 15 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-coherent.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" 2 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" extern int iommu_merge; extern struct device x86_dma_fallback_dev; extern int panic_on_overflow; extern struct dma_map_ops *dma_ops; static inline struct dma_map_ops *get_dma_ops(struct device *dev) { if (__builtin_expect(!!(!dev), 0) || !dev->archdata.dma_ops) return dma_ops; else return dev->archdata.dma_ops; } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h" static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (18), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); addr = ops->map_page(dev, (((struct page *)(0xffffea0000000000UL)) + (__phys_addr((unsigned long)(ptr)) >> 12)), (unsigned long)ptr & ~(~(((1UL) << 12)-1)), size, dir, attrs); debug_dma_map_page(dev, (((struct page *)(0xffffea0000000000UL)) + (__phys_addr((unsigned long)(ptr)) >> 12)), (unsigned long)ptr & ~(~(((1UL) << 12)-1)), size, dir, addr, true); return addr; } static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (35), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (51), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (64), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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(lowmem_page_address(page) + offset, size); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (78), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (90), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (102), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (114), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (128), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); if (ops->sync_single_range_for_cpu) { ops->sync_single_range_for_cpu(dev, addr, offset, size, dir); debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir); } else dma_sync_single_for_cpu(dev, addr, size, dir); } static inline 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) { struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (145), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); if (ops->sync_single_range_for_device) { ops->sync_single_range_for_device(dev, addr, offset, size, dir); debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir); } else dma_sync_single_for_device(dev, addr, size, dir); } static inline 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (160), "i" (sizeof(struct bug_entry))); do { } while (1); } 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 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:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/dma-mapping-common.h"), "i" (172), "i" (sizeof(struct bug_entry))); do { } while (1); } 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); } # 44 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h" 2 static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { struct dma_map_ops *ops = get_dma_ops(dev); if (ops->mapping_error) return ops->mapping_error(dev, dma_addr); return (dma_addr == 0); } extern int dma_supported(struct device *hwdev, u64 mask); extern int dma_set_mask(struct device *dev, u64 mask); extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_addr, gfp_t flag); static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) { if (!dev->dma_mask) return 0; return addr + size - 1 <= *dev->dma_mask; } static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) { return paddr; } static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr) { return daddr; } static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, enum dma_data_direction dir) { flush_write_buffers(); } static inline int dma_get_cache_alignment(void) { return boot_cpu_data.x86_clflush_size; } static inline unsigned long dma_alloc_coherent_mask(struct device *dev, gfp_t gfp) { unsigned long dma_mask = 0; dma_mask = dev->coherent_dma_mask; if (!dma_mask) dma_mask = (gfp & ((__attribute__((force)) gfp_t)0x01u)) ? (((24) == 64) ? ~0ULL : ((1ULL<<(24))-1)) : (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1)); return dma_mask; } static inline gfp_t dma_alloc_coherent_gfp_flags(struct device *dev, gfp_t gfp) { unsigned long dma_mask = dma_alloc_coherent_mask(dev, gfp); if (dma_mask <= (((24) == 64) ? ~0ULL : ((1ULL<<(24))-1))) gfp |= ((__attribute__((force)) gfp_t)0x01u); if (dma_mask <= (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1)) && !(gfp & ((__attribute__((force)) gfp_t)0x01u))) gfp |= ((__attribute__((force)) gfp_t)0x04u); return gfp; } static inline void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp) { struct dma_map_ops *ops = get_dma_ops(dev); void *memory; gfp &= ~(((__attribute__((force)) gfp_t)0x01u) | ((__attribute__((force)) gfp_t)0x02u) | ((__attribute__((force)) gfp_t)0x04u)); if ((0)) return memory; if (!dev) dev = &x86_dma_fallback_dev; if (!is_device_dma_capable(dev)) return ((void *)0); if (!ops->alloc_coherent) return ((void *)0); memory = ops->alloc_coherent(dev, size, dma_handle, dma_alloc_coherent_gfp_flags(dev, gfp)); debug_dma_alloc_coherent(dev, size, *dma_handle, memory); return memory; } static inline void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t bus) { struct dma_map_ops *ops = get_dma_ops(dev); ({ int __ret_warn_on = !!(({ unsigned long _flags; do { (_flags) = __raw_local_save_flags(); } while (0); raw_irqs_disabled_flags(_flags); })); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/dma-mapping.h", 155); __builtin_expect(!!(__ret_warn_on), 0); }); if ((0)) return; debug_dma_free_coherent(dev, size, vaddr, bus); if (ops->free_coherent) ops->free_coherent(dev, size, vaddr, bus); } # 104 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" 2 static inline void __attribute__((deprecated)) dma_sync_single(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { dma_sync_single_for_cpu(dev, addr, size, dir); } static inline void __attribute__((deprecated)) dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) { dma_sync_sg_for_cpu(dev, sg, nelems, dir); } static inline 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 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 unsigned int dma_get_max_seg_size(struct device *dev) { return dev->dma_parms ? dev->dma_parms->max_segment_size : 65536; } static inline 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 unsigned long dma_get_seg_boundary(struct device *dev) { return dev->dma_parms ? dev->dma_parms->segment_boundary_mask : 0xffffffff; } static inline 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; } # 177 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dma-mapping.h" static inline int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, int flags) { return 0; } static inline void dma_release_declared_memory(struct device *dev) { } static inline void * dma_mark_declared_memory_occupied(struct device *dev, dma_addr_t device_addr, size_t size) { return ERR_PTR(-16); } 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); static inline int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, gfp_t gfp) { return 0; } static inline void dmam_release_declared_memory(struct device *dev) { } # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" 2 typedef s32 dma_cookie_t; # 45 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" enum dma_status { DMA_SUCCESS, DMA_IN_PROGRESS, DMA_ERROR, }; enum dma_transaction_type { DMA_MEMCPY, DMA_XOR, DMA_PQ, DMA_XOR_VAL, DMA_PQ_VAL, DMA_MEMSET, DMA_INTERRUPT, DMA_PRIVATE, DMA_ASYNC_TX, DMA_SLAVE, }; # 96 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" enum dma_ctrl_flags { DMA_PREP_INTERRUPT = (1 << 0), DMA_CTRL_ACK = (1 << 1), DMA_COMPL_SKIP_SRC_UNMAP = (1 << 2), DMA_COMPL_SKIP_DEST_UNMAP = (1 << 3), DMA_COMPL_SRC_UNMAP_SINGLE = (1 << 4), DMA_COMPL_DEST_UNMAP_SINGLE = (1 << 5), DMA_PREP_PQ_DISABLE_P = (1 << 6), DMA_PREP_PQ_DISABLE_Q = (1 << 7), DMA_PREP_CONTINUE = (1 << 8), DMA_PREP_FENCE = (1 << 9), }; enum sum_check_bits { SUM_CHECK_P = 0, SUM_CHECK_Q = 1, }; enum sum_check_flags { SUM_CHECK_P_RESULT = (1 << SUM_CHECK_P), SUM_CHECK_Q_RESULT = (1 << SUM_CHECK_Q), }; typedef struct { unsigned long bits[((((DMA_SLAVE + 1)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } dma_cap_mask_t; struct dma_chan_percpu { unsigned long memcpy_count; unsigned long bytes_transferred; }; # 158 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" struct dma_chan { struct dma_device *device; dma_cookie_t cookie; int chan_id; struct dma_chan_dev *dev; struct list_head device_node; struct dma_chan_percpu __attribute__((noderef, address_space(3))) *local; int client_count; int table_count; void *private; }; # 180 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" struct dma_chan_dev { struct dma_chan *chan; struct device device; int dev_id; atomic_t *idr_ref; }; static inline const char *dma_chan_name(struct dma_chan *chan) { return dev_name(&chan->dev->device); } void dma_chan_cleanup(struct kref *kref); # 205 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param); typedef void (*dma_async_tx_callback)(void *dma_async_param); # 225 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" struct dma_async_tx_descriptor { dma_cookie_t cookie; enum dma_ctrl_flags flags; dma_addr_t phys; struct dma_chan *chan; dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); dma_async_tx_callback callback; void *callback_param; struct dma_async_tx_descriptor *next; struct dma_async_tx_descriptor *parent; spinlock_t lock; }; # 268 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" struct dma_device { unsigned int chancnt; unsigned int privatecnt; struct list_head channels; struct list_head global_node; dma_cap_mask_t cap_mask; unsigned short max_xor; unsigned short max_pq; u8 copy_align; u8 xor_align; u8 pq_align; u8 fill_align; int dev_id; struct device *dev; int (*device_alloc_chan_resources)(struct dma_chan *chan); void (*device_free_chan_resources)(struct dma_chan *chan); struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, size_t len, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_xor)( struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, unsigned int src_cnt, size_t len, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_xor_val)( struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt, size_t len, enum sum_check_flags *result, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_pq)( struct dma_chan *chan, dma_addr_t *dst, dma_addr_t *src, unsigned int src_cnt, const unsigned char *scf, size_t len, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_pq_val)( struct dma_chan *chan, dma_addr_t *pq, dma_addr_t *src, unsigned int src_cnt, const unsigned char *scf, size_t len, enum sum_check_flags *pqres, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_memset)( struct dma_chan *chan, dma_addr_t dest, int value, size_t len, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)( struct dma_chan *chan, unsigned long flags); struct dma_async_tx_descriptor *(*device_prep_slave_sg)( struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, enum dma_data_direction direction, unsigned long flags); void (*device_terminate_all)(struct dma_chan *chan); enum dma_status (*device_is_tx_complete)(struct dma_chan *chan, dma_cookie_t cookie, dma_cookie_t *last, dma_cookie_t *used); void (*device_issue_pending)(struct dma_chan *chan); }; static inline bool dmaengine_check_align(u8 align, size_t off1, size_t off2, size_t len) { size_t mask; if (!align) return true; mask = (1 << align) - 1; if (mask & (off1 | off2 | len)) return false; return true; } static inline bool is_dma_copy_aligned(struct dma_device *dev, size_t off1, size_t off2, size_t len) { return dmaengine_check_align(dev->copy_align, off1, off2, len); } static inline bool is_dma_xor_aligned(struct dma_device *dev, size_t off1, size_t off2, size_t len) { return dmaengine_check_align(dev->xor_align, off1, off2, len); } static inline bool is_dma_pq_aligned(struct dma_device *dev, size_t off1, size_t off2, size_t len) { return dmaengine_check_align(dev->pq_align, off1, off2, len); } static inline bool is_dma_fill_aligned(struct dma_device *dev, size_t off1, size_t off2, size_t len) { return dmaengine_check_align(dev->fill_align, off1, off2, len); } static inline void dma_set_maxpq(struct dma_device *dma, int maxpq, int has_pq_continue) { dma->max_pq = maxpq; if (has_pq_continue) dma->max_pq |= (1 << 15); } static inline bool dmaf_continue(enum dma_ctrl_flags flags) { return (flags & DMA_PREP_CONTINUE) == DMA_PREP_CONTINUE; } static inline bool dmaf_p_disabled_continue(enum dma_ctrl_flags flags) { enum dma_ctrl_flags mask = DMA_PREP_CONTINUE | DMA_PREP_PQ_DISABLE_P; return (flags & mask) == mask; } static inline bool dma_dev_has_pq_continue(struct dma_device *dma) { return (dma->max_pq & (1 << 15)) == (1 << 15); } static unsigned short dma_dev_to_maxpq(struct dma_device *dma) { return dma->max_pq & ~(1 << 15); } # 403 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" static inline int dma_maxpq(struct dma_device *dma, enum dma_ctrl_flags flags) { if (dma_dev_has_pq_continue(dma) || !dmaf_continue(flags)) return dma_dev_to_maxpq(dma); else if (dmaf_p_disabled_continue(flags)) return dma_dev_to_maxpq(dma) - 1; else if (dmaf_continue(flags)) return dma_dev_to_maxpq(dma) - 3; do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h"), "i" (411), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } void dmaengine_get(void); void dmaengine_put(void); # 462 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, void *dest, void *src, size_t len); dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan, struct page *page, unsigned int offset, void *kdata, size_t len); dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan, struct page *dest_pg, unsigned int dest_off, struct page *src_pg, unsigned int src_off, size_t len); void dma_async_tx_descriptor_init(struct dma_async_tx_descriptor *tx, struct dma_chan *chan); static inline void async_tx_ack(struct dma_async_tx_descriptor *tx) { tx->flags |= DMA_CTRL_ACK; } static inline void async_tx_clear_ack(struct dma_async_tx_descriptor *tx) { tx->flags &= ~DMA_CTRL_ACK; } static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) { return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK; } static inline int __first_dma_cap(const dma_cap_mask_t *srcp) { return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_first_bit(srcp->bits, (DMA_SLAVE + 1))); __min1 < __min2 ? __min1: __min2; }); } static inline int __next_dma_cap(int n, const dma_cap_mask_t *srcp) { return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_next_bit(srcp->bits, (DMA_SLAVE + 1), n+1)); __min1 < __min2 ? __min1: __min2; }); } static inline void __dma_cap_set(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp) { set_bit(tx_type, dstp->bits); } static inline void __dma_cap_clear(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp) { clear_bit(tx_type, dstp->bits); } static inline void __dma_cap_zero(dma_cap_mask_t *dstp) { bitmap_zero(dstp->bits, (DMA_SLAVE + 1)); } static inline int __dma_has_cap(enum dma_transaction_type tx_type, dma_cap_mask_t *srcp) { return (__builtin_constant_p((tx_type)) ? constant_test_bit((tx_type), (srcp->bits)) : variable_test_bit((tx_type), (srcp->bits))); } # 540 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" static inline void dma_async_issue_pending(struct dma_chan *chan) { chan->device->device_issue_pending(chan); } # 558 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" static inline enum dma_status dma_async_is_tx_complete(struct dma_chan *chan, dma_cookie_t cookie, dma_cookie_t *last, dma_cookie_t *used) { return chan->device->device_is_tx_complete(chan, cookie, last, used); } # 576 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" static inline enum dma_status dma_async_is_complete(dma_cookie_t cookie, dma_cookie_t last_complete, dma_cookie_t last_used) { if (last_complete <= last_used) { if ((cookie <= last_complete) || (cookie > last_used)) return DMA_SUCCESS; } else { if ((cookie <= last_complete) && (cookie > last_used)) return DMA_SUCCESS; } return DMA_IN_PROGRESS; } enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie); enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); void dma_issue_pending_all(void); # 606 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dmaengine.h" int dma_async_device_register(struct dma_device *device); void dma_async_device_unregister(struct dma_device *device); void dma_run_dependencies(struct dma_async_tx_descriptor *tx); struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type); struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param); void dma_release_channel(struct dma_chan *chan); struct dma_page_list { char __attribute__((noderef, address_space(1))) *base_address; int nr_pages; struct page **pages; }; struct dma_pinned_list { int nr_iovecs; struct dma_page_list page_list[0]; }; struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov, struct dma_pinned_list *pinned_list, unsigned char *kdata, size_t len); dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov, struct dma_pinned_list *pinned_list, struct page *page, unsigned int offset, size_t len); # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" 1 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" 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, }; # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" struct hrtimer { struct rb_node node; ktime_t _expires; ktime_t _softexpires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; unsigned long state; }; # 124 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" struct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; # 141 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" struct hrtimer_clock_base { struct hrtimer_cpu_base *cpu_base; clockid_t index; struct rb_root active; struct rb_node *first; ktime_t resolution; ktime_t (*get_time)(void); ktime_t softirq_time; }; # 171 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" struct hrtimer_cpu_base { raw_spinlock_t lock; struct hrtimer_clock_base clock_base[2]; # 183 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" }; static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) { timer->_expires = time; timer->_softexpires = time; } static inline void hrtimer_set_expires_range(struct hrtimer *timer, ktime_t time, ktime_t delta) { timer->_softexpires = time; timer->_expires = ktime_add_safe(time, delta); } static inline void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, unsigned long delta) { timer->_softexpires = time; timer->_expires = ktime_add_safe(time, ns_to_ktime(delta)); } static inline void hrtimer_set_expires_tv64(struct hrtimer *timer, s64 tv64) { timer->_expires.tv64 = tv64; timer->_softexpires.tv64 = tv64; } static inline void hrtimer_add_expires(struct hrtimer *timer, ktime_t time) { timer->_expires = ktime_add_safe(timer->_expires, time); timer->_softexpires = ktime_add_safe(timer->_softexpires, time); } static inline void hrtimer_add_expires_ns(struct hrtimer *timer, u64 ns) { timer->_expires = ({ (ktime_t){ .tv64 = (timer->_expires).tv64 + (ns) }; }); timer->_softexpires = ({ (ktime_t){ .tv64 = (timer->_softexpires).tv64 + (ns) }; }); } static inline ktime_t hrtimer_get_expires(const struct hrtimer *timer) { return timer->_expires; } static inline ktime_t hrtimer_get_softexpires(const struct hrtimer *timer) { return timer->_softexpires; } static inline s64 hrtimer_get_expires_tv64(const struct hrtimer *timer) { return timer->_expires.tv64; } static inline s64 hrtimer_get_softexpires_tv64(const struct hrtimer *timer) { return timer->_softexpires.tv64; } static inline s64 hrtimer_get_expires_ns(const struct hrtimer *timer) { return ((timer->_expires).tv64); } static inline ktime_t hrtimer_expires_remaining(const struct hrtimer *timer) { return ({ (ktime_t){ .tv64 = (timer->_expires).tv64 - (timer->base->get_time()).tv64 }; }); } # 293 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" static inline void clock_was_set(void) { } static inline void hrtimer_peek_ahead_timers(void) { } static inline void hres_timers_resume(void) { } static inline ktime_t hrtimer_cb_get_time(struct hrtimer *timer) { return timer->base->softirq_time; } static inline int hrtimer_is_hres_active(struct hrtimer *timer) { return 0; } extern ktime_t ktime_get(void); extern ktime_t ktime_get_real(void); extern __attribute__((noderef, address_space(3))) __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 void hrtimer_init_on_stack(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode) { hrtimer_init(timer, which_clock, mode); } static inline 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 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 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 int hrtimer_active(const struct hrtimer *timer) { return timer->state != 0x00; } static inline int hrtimer_is_queued(struct hrtimer *timer) { return timer->state & 0x01; } static inline 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 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 __attribute__((noderef, address_space(1))) *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(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); # 441 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hrtimer.h" extern void sysrq_timer_list_show(void); # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" 2 # 94 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" struct net_device; struct scatterlist; struct pipe_inode_info; struct nf_conntrack { atomic_t use; }; # 114 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" struct sk_buff_head { struct sk_buff *next; struct sk_buff *prev; __u32 qlen; spinlock_t lock; }; struct sk_buff; typedef struct skb_frag_struct skb_frag_t; struct skb_frag_struct { struct page *page; __u32 page_offset; __u32 size; }; # 161 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" struct skb_shared_hwtstamps { ktime_t hwtstamp; ktime_t syststamp; }; # 177 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" union skb_shared_tx { struct { __u8 hardware:1, software:1, in_progress:1; }; __u8 flags; }; struct skb_shared_info { atomic_t dataref; unsigned short nr_frags; unsigned short gso_size; dma_addr_t dma_head; unsigned short gso_segs; unsigned short gso_type; __be32 ip6_frag_id; union skb_shared_tx tx_flags; struct sk_buff *frag_list; struct skb_shared_hwtstamps hwtstamps; skb_frag_t frags[(65536/((1UL) << 12) + 2)]; dma_addr_t dma_maps[(65536/((1UL) << 12) + 2)]; void * destructor_arg; }; # 227 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" enum { SKB_FCLONE_UNAVAILABLE, SKB_FCLONE_ORIG, SKB_FCLONE_CLONE, }; enum { SKB_GSO_TCPV4 = 1 << 0, SKB_GSO_UDP = 1 << 1, SKB_GSO_DODGY = 1 << 2, SKB_GSO_TCP_ECN = 1 << 3, SKB_GSO_TCPV6 = 1 << 4, SKB_GSO_FCOE = 1 << 5, }; typedef unsigned int sk_buff_data_t; # 314 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" struct sk_buff { struct sk_buff *next; struct sk_buff *prev; ktime_t tstamp; struct sock *sk; struct net_device *dev; char cb[48] __attribute__((aligned(8))); unsigned long _skb_dst; struct sec_path *sp; unsigned int len, data_len; __u16 mac_len, hdr_len; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32 priority; ; __u8 local_df:1, cloned:1, ip_summed:2, nohdr:1, nfctinfo:3; __u8 pkt_type:3, fclone:2, ipvs_property:1, peeked:1, nf_trace:1; ; __be16 protocol; void (*destructor)(struct sk_buff *skb); struct nf_conntrack *nfct; struct sk_buff *nfct_reasm; int skb_iif; __u32 rxhash; ; __u16 queue_mapping:16; ; dma_cookie_t dma_cookie; __u32 secmark; union { __u32 mark; __u32 dropcount; }; __u16 vlan_tci; sk_buff_data_t transport_header; sk_buff_data_t network_header; sk_buff_data_t mac_header; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head, *data; unsigned int truesize; atomic_t users; }; # 423 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct dst_entry *skb_dst(const struct sk_buff *skb) { return (struct dst_entry *)skb->_skb_dst; } static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) { skb->_skb_dst = (unsigned long)dst; } static inline struct rtable *skb_rtable(const struct sk_buff *skb) { return (struct rtable *)skb_dst(skb); } extern void kfree_skb(struct sk_buff *skb); extern void consume_skb(struct sk_buff *skb); extern void __kfree_skb(struct sk_buff *skb); extern struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int fclone, int node); static inline struct sk_buff *alloc_skb(unsigned int size, gfp_t priority) { return __alloc_skb(size, priority, 0, -1); } static inline struct sk_buff *alloc_skb_fclone(unsigned int size, gfp_t priority) { return __alloc_skb(size, priority, 1, -1); } extern int skb_recycle_check(struct sk_buff *skb, int skb_size); extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); extern struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t priority); extern struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t priority); extern struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask); extern int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask); extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, unsigned int headroom); extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom, int newtailroom, gfp_t priority); extern int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len); extern int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer); extern int skb_pad(struct sk_buff *skb, int pad); extern void skb_over_panic(struct sk_buff *skb, int len, void *here); extern void skb_under_panic(struct sk_buff *skb, int len, void *here); extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, int getfrag(void *from, char *to, int offset, int len,int odd, struct sk_buff *skb), void *from, int length); struct skb_seq_state { __u32 lower_offset; __u32 upper_offset; __u32 frag_idx; __u32 stepped_offset; struct sk_buff *root_skb; struct sk_buff *cur_skb; __u8 *frag_data; }; extern void skb_prepare_seq_read(struct sk_buff *skb, unsigned int from, unsigned int to, struct skb_seq_state *st); extern unsigned int skb_seq_read(unsigned int consumed, const u8 **data, struct skb_seq_state *st); extern void skb_abort_seq_read(struct skb_seq_state *st); extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, unsigned int to, struct ts_config *config, struct ts_state *state); static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) { return skb->head + skb->end; } # 526 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) { return &((struct skb_shared_info *)(skb_end_pointer(skb)))->hwtstamps; } static inline union skb_shared_tx *skb_tx(struct sk_buff *skb) { return &((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags; } static inline int skb_queue_empty(const struct sk_buff_head *list) { return list->next == (struct sk_buff *)list; } # 554 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline bool skb_queue_is_last(const struct sk_buff_head *list, const struct sk_buff *skb) { return (skb->next == (struct sk_buff *) list); } # 567 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline bool skb_queue_is_first(const struct sk_buff_head *list, const struct sk_buff *skb) { return (skb->prev == (struct sk_buff *) list); } # 581 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_queue_next(const struct sk_buff_head *list, const struct sk_buff *skb) { do { if (__builtin_expect(!!(skb_queue_is_last(list, skb)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (587), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); return skb->next; } # 599 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_queue_prev(const struct sk_buff_head *list, const struct sk_buff *skb) { do { if (__builtin_expect(!!(skb_queue_is_first(list, skb)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (605), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); return skb->prev; } # 616 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_get(struct sk_buff *skb) { atomic_inc(&skb->users); return skb; } # 635 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_cloned(const struct sk_buff *skb) { return skb->cloned && (atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref) & ((1 << 16) - 1)) != 1; } # 648 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_header_cloned(const struct sk_buff *skb) { int dataref; if (!skb->cloned) return 0; dataref = atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref); dataref = (dataref & ((1 << 16) - 1)) - (dataref >> 16); return dataref != 1; } # 668 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_header_release(struct sk_buff *skb) { do { if (__builtin_expect(!!(skb->nohdr), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (670), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); skb->nohdr = 1; atomic_add(1 << 16, &((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref); } # 682 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_shared(const struct sk_buff *skb) { return atomic_read(&skb->users) != 1; } # 700 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_share_check(struct sk_buff *skb, gfp_t pri) { do { if (pri & ((__attribute__((force)) gfp_t)0x10u)) do { do { } while (0); } while (0); } while (0); if (skb_shared(skb)) { struct sk_buff *nskb = skb_clone(skb, pri); kfree_skb(skb); skb = nskb; } return skb; } # 732 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_unshare(struct sk_buff *skb, gfp_t pri) { do { if (pri & ((__attribute__((force)) gfp_t)0x10u)) do { do { } while (0); } while (0); } while (0); if (skb_cloned(skb)) { struct sk_buff *nskb = skb_copy(skb, pri); kfree_skb(skb); skb = nskb; } return skb; } # 757 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_peek(struct sk_buff_head *list_) { struct sk_buff *list = ((struct sk_buff *)list_)->next; if (list == (struct sk_buff *)list_) list = ((void *)0); return list; } # 778 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *skb_peek_tail(struct sk_buff_head *list_) { struct sk_buff *list = ((struct sk_buff *)list_)->prev; if (list == (struct sk_buff *)list_) list = ((void *)0); return list; } static inline __u32 skb_queue_len(const struct sk_buff_head *list_) { return list_->qlen; } # 807 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void __skb_queue_head_init(struct sk_buff_head *list) { list->prev = list->next = (struct sk_buff *)list; list->qlen = 0; } # 821 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_queue_head_init(struct sk_buff_head *list) { do { spinlock_check(&list->lock); do { *(&(&list->lock)->rlock) = (raw_spinlock_t) { .raw_lock = { 0 }, }; } while (0); } while (0); __skb_queue_head_init(list); } static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { skb_queue_head_init(list); do { (void)(class); } while (0); } extern void skb_insert(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); static inline void __skb_insert(struct sk_buff *newsk, struct sk_buff *prev, struct sk_buff *next, struct sk_buff_head *list) { newsk->next = next; newsk->prev = prev; next->prev = prev->next = newsk; list->qlen++; } static inline void __skb_queue_splice(const struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *next) { struct sk_buff *first = list->next; struct sk_buff *last = list->prev; first->prev = prev; prev->next = first; last->next = next; next->prev = last; } static inline void skb_queue_splice(const struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, (struct sk_buff *) head, head->next); head->qlen += list->qlen; } } # 886 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_queue_splice_init(struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, (struct sk_buff *) head, head->next); head->qlen += list->qlen; __skb_queue_head_init(list); } } static inline void skb_queue_splice_tail(const struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, head->prev, (struct sk_buff *) head); head->qlen += list->qlen; } } # 918 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_queue_splice_tail_init(struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, head->prev, (struct sk_buff *) head); head->qlen += list->qlen; __skb_queue_head_init(list); } } # 939 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void __skb_queue_after(struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *newsk) { __skb_insert(newsk, prev, prev->next, list); } extern void skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); static inline void __skb_queue_before(struct sk_buff_head *list, struct sk_buff *next, struct sk_buff *newsk) { __skb_insert(newsk, next->prev, next, list); } # 966 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk); static inline void __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk) { __skb_queue_after(list, (struct sk_buff *)list, newsk); } # 983 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk); static inline void __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk) { __skb_queue_before(list, (struct sk_buff *)list, newsk); } extern void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list); static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) { struct sk_buff *next, *prev; list->qlen--; next = skb->next; prev = skb->prev; skb->next = skb->prev = ((void *)0); next->prev = prev; prev->next = next; } # 1015 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern struct sk_buff *skb_dequeue(struct sk_buff_head *list); static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list) { struct sk_buff *skb = skb_peek(list); if (skb) __skb_unlink(skb, list); return skb; } # 1032 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list); static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list) { struct sk_buff *skb = skb_peek_tail(list); if (skb) __skb_unlink(skb, list); return skb; } static inline int skb_is_nonlinear(const struct sk_buff *skb) { return skb->data_len; } static inline unsigned int skb_headlen(const struct sk_buff *skb) { return skb->len - skb->data_len; } static inline int skb_pagelen(const struct sk_buff *skb) { int i, len = 0; for (i = (int)((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags - 1; i >= 0; i--) len += ((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i].size; return len + skb_headlen(skb); } static inline void skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size) { skb_frag_t *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i]; frag->page = page; frag->page_offset = off; frag->size = size; ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags = i + 1; } extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, int size); static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb) { return skb->head + skb->tail; } static inline void skb_reset_tail_pointer(struct sk_buff *skb) { skb->tail = skb->data - skb->head; } static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset) { skb_reset_tail_pointer(skb); skb->tail += offset; } # 1116 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) { unsigned char *tmp = skb_tail_pointer(skb); do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (1120), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); skb->tail += len; skb->len += len; return tmp; } extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len); static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) { skb->data -= len; skb->len += len; return skb->data; } extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len); static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len) { skb->len -= len; do { if (__builtin_expect(!!(skb->len < skb->data_len), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (1138), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); return skb->data += len; } extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta); static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len) { if (len > skb_headlen(skb) && !__pskb_pull_tail(skb, len - skb_headlen(skb))) return ((void *)0); skb->len -= len; return skb->data += len; } static inline unsigned char *pskb_pull(struct sk_buff *skb, unsigned int len) { return __builtin_expect(!!(len > skb->len), 0) ? ((void *)0) : __pskb_pull(skb, len); } static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len) { if (__builtin_expect(!!(len <= skb_headlen(skb)), 1)) return 1; if (__builtin_expect(!!(len > skb->len), 0)) return 0; return __pskb_pull_tail(skb, len - skb_headlen(skb)) != ((void *)0); } static inline unsigned int skb_headroom(const struct sk_buff *skb) { return skb->data - skb->head; } static inline int skb_tailroom(const struct sk_buff *skb) { return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail; } # 1197 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_reserve(struct sk_buff *skb, int len) { skb->data += len; skb->tail += len; } static inline unsigned char *skb_transport_header(const struct sk_buff *skb) { return skb->head + skb->transport_header; } static inline void skb_reset_transport_header(struct sk_buff *skb) { skb->transport_header = skb->data - skb->head; } static inline void skb_set_transport_header(struct sk_buff *skb, const int offset) { skb_reset_transport_header(skb); skb->transport_header += offset; } static inline unsigned char *skb_network_header(const struct sk_buff *skb) { return skb->head + skb->network_header; } static inline void skb_reset_network_header(struct sk_buff *skb) { skb->network_header = skb->data - skb->head; } static inline void skb_set_network_header(struct sk_buff *skb, const int offset) { skb_reset_network_header(skb); skb->network_header += offset; } static inline unsigned char *skb_mac_header(const struct sk_buff *skb) { return skb->head + skb->mac_header; } static inline int skb_mac_header_was_set(const struct sk_buff *skb) { return skb->mac_header != ~0U; } static inline void skb_reset_mac_header(struct sk_buff *skb) { skb->mac_header = skb->data - skb->head; } static inline void skb_set_mac_header(struct sk_buff *skb, const int offset) { skb_reset_mac_header(skb); skb->mac_header += offset; } # 1312 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_transport_offset(const struct sk_buff *skb) { return skb_transport_header(skb) - skb->data; } static inline u32 skb_network_header_len(const struct sk_buff *skb) { return skb->transport_header - skb->network_header; } static inline int skb_network_offset(const struct sk_buff *skb) { return skb_network_header(skb) - skb->data; } # 1370 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); static inline void __skb_trim(struct sk_buff *skb, unsigned int len) { if (__builtin_expect(!!(skb->data_len), 0)) { ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h", 1375); __builtin_expect(!!(__ret_warn_on), 0); }); return; } skb->len = len; skb_set_tail_pointer(skb, len); } extern void skb_trim(struct sk_buff *skb, unsigned int len); static inline int __pskb_trim(struct sk_buff *skb, unsigned int len) { if (skb->data_len) return ___pskb_trim(skb, len); __skb_trim(skb, len); return 0; } static inline int pskb_trim(struct sk_buff *skb, unsigned int len) { return (len < skb->len) ? __pskb_trim(skb, len) : 0; } # 1406 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void pskb_trim_unique(struct sk_buff *skb, unsigned int len) { int err = pskb_trim(skb, len); do { if (__builtin_expect(!!(err), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h"), "i" (1409), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); } # 1420 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_orphan(struct sk_buff *skb) { if (skb->destructor) skb->destructor(skb); skb->destructor = ((void *)0); skb->sk = ((void *)0); } # 1436 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern void skb_queue_purge(struct sk_buff_head *list); static inline void __skb_queue_purge(struct sk_buff_head *list) { struct sk_buff *skb; while ((skb = __skb_dequeue(list)) != ((void *)0)) kfree_skb(skb); } # 1456 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *__dev_alloc_skb(unsigned int length, gfp_t gfp_mask) { struct sk_buff *skb = alloc_skb(length + 32, gfp_mask); if (__builtin_expect(!!(skb), 1)) skb_reserve(skb, 32); return skb; } extern struct sk_buff *dev_alloc_skb(unsigned int length); extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int length, gfp_t gfp_mask); # 1483 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev, unsigned int length) { return __netdev_alloc_skb(dev, length, (((__attribute__((force)) gfp_t)0x20u))); } static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, unsigned int length) { struct sk_buff *skb = netdev_alloc_skb(dev, length + 2); if (2 && skb) skb_reserve(skb, 2); return skb; } extern struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask); # 1509 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline struct page *netdev_alloc_page(struct net_device *dev) { return __netdev_alloc_page(dev, (((__attribute__((force)) gfp_t)0x20u))); } static inline void netdev_free_page(struct net_device *dev, struct page *page) { __free_pages((page), 0); } # 1527 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_clone_writable(struct sk_buff *skb, unsigned int len) { return !skb_header_cloned(skb) && skb_headroom(skb) + len <= skb->hdr_len; } static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom, int cloned) { int delta = 0; if (headroom < 32) headroom = 32; if (headroom > skb_headroom(skb)) delta = headroom - skb_headroom(skb); if (delta || cloned) return pskb_expand_head(skb, (((delta)+((typeof(delta))(32)-1))&~((typeof(delta))(32)-1)), 0, (((__attribute__((force)) gfp_t)0x20u))); return 0; } # 1561 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_cow(struct sk_buff *skb, unsigned int headroom) { return __skb_cow(skb, headroom, skb_cloned(skb)); } # 1576 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_cow_head(struct sk_buff *skb, unsigned int headroom) { return __skb_cow(skb, headroom, skb_header_cloned(skb)); } # 1592 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_padto(struct sk_buff *skb, unsigned int len) { unsigned int size = skb->len; if (__builtin_expect(!!(size >= len), 1)) return 0; return skb_pad(skb, len - size); } static inline int skb_add_data(struct sk_buff *skb, char __attribute__((noderef, address_space(1))) *from, int copy) { const int off = skb->len; if (skb->ip_summed == 0) { int err = 0; __wsum csum = csum_partial_copy_from_user(from, skb_put(skb, copy), copy, 0, &err); if (!err) { skb->csum = csum_block_add(skb->csum, csum, off); return 0; } } else if (!copy_from_user(skb_put(skb, copy), from, copy)) return 0; __skb_trim(skb, off); return -14; } static inline int skb_can_coalesce(struct sk_buff *skb, int i, struct page *page, int off) { if (i) { struct skb_frag_struct *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i - 1]; return page == frag->page && off == frag->page_offset + frag->size; } return 0; } static inline int __skb_linearize(struct sk_buff *skb) { return __pskb_pull_tail(skb, skb->data_len) ? 0 : -12; } # 1644 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_linearize(struct sk_buff *skb) { return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0; } # 1656 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int skb_linearize_cow(struct sk_buff *skb) { return skb_is_nonlinear(skb) || skb_cloned(skb) ? __skb_linearize(skb) : 0; } # 1673 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int len) { if (skb->ip_summed == 2) skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); } unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); # 1691 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) { if (__builtin_expect(!!(len >= skb->len), 1)) return 0; if (skb->ip_summed == 2) skb->ip_summed = 0; return __pskb_trim(skb, len); } # 1725 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline bool skb_has_frags(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list != ((void *)0); } static inline void skb_frag_list_init(struct sk_buff *skb) { ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list = ((void *)0); } static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag) { frag->next = ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list; ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list = frag; } extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, int *peeked, int *err); extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, int *err); extern unsigned int datagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait); extern int skb_copy_datagram_iovec(const struct sk_buff *from, int offset, struct iovec *to, int size); extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen, struct iovec *iov); extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, const struct iovec *from, int from_offset, int len); extern int skb_copy_datagram_const_iovec(const struct sk_buff *from, int offset, const struct iovec *to, int to_offset, int size); extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); extern void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb); extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags); extern __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum); extern int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); extern int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len); extern __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, __wsum csum); extern int skb_splice_bits(struct sk_buff *skb, unsigned int offset, struct pipe_inode_info *pipe, unsigned int len, unsigned int flags); extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); extern void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len); extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen); extern struct sk_buff *skb_segment(struct sk_buff *skb, int features); static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, int len, void *buffer) { int hlen = skb_headlen(skb); if (hlen - offset >= len) return skb->data + offset; if (skb_copy_bits(skb, offset, buffer, len) < 0) return ((void *)0); return buffer; } static inline void skb_copy_from_linear_data(const struct sk_buff *skb, void *to, const unsigned int len) { memcpy(to, skb->data, len); } static inline void skb_copy_from_linear_data_offset(const struct sk_buff *skb, const int offset, void *to, const unsigned int len) { memcpy(to, skb->data + offset, len); } static inline void skb_copy_to_linear_data(struct sk_buff *skb, const void *from, const unsigned int len) { memcpy(skb->data, from, len); } static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, const int offset, const void *from, const unsigned int len) { memcpy(skb->data + offset, from, len); } extern void skb_init(void); static inline ktime_t skb_get_ktime(const struct sk_buff *skb) { return skb->tstamp; } # 1852 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_get_timestamp(const struct sk_buff *skb, struct timeval *stamp) { *stamp = ns_to_timeval((skb->tstamp).tv64); } static inline void skb_get_timestampns(const struct sk_buff *skb, struct timespec *stamp) { *stamp = ns_to_timespec((skb->tstamp).tv64); } static inline void __net_timestamp(struct sk_buff *skb) { skb->tstamp = ktime_get_real(); } static inline ktime_t net_timedelta(ktime_t t) { return ({ (ktime_t){ .tv64 = (ktime_get_real()).tv64 - (t).tv64 }; }); } static inline ktime_t net_invalid_timestamp(void) { return ktime_set(0, 0); } # 1890 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" extern void skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps); extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); extern __sum16 __skb_checksum_complete(struct sk_buff *skb); static inline int skb_csum_unnecessary(const struct sk_buff *skb) { return skb->ip_summed & 1; } # 1917 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline __sum16 skb_checksum_complete(struct sk_buff *skb) { return skb_csum_unnecessary(skb) ? 0 : __skb_checksum_complete(skb); } extern void nf_conntrack_destroy(struct nf_conntrack *nfct); static inline void nf_conntrack_put(struct nf_conntrack *nfct) { if (nfct && atomic_dec_and_test(&nfct->use)) nf_conntrack_destroy(nfct); } static inline void nf_conntrack_get(struct nf_conntrack *nfct) { if (nfct) atomic_inc(&nfct->use); } static inline void nf_conntrack_get_reasm(struct sk_buff *skb) { if (skb) atomic_inc(&skb->users); } static inline void nf_conntrack_put_reasm(struct sk_buff *skb) { if (skb) kfree_skb(skb); } # 1958 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void nf_reset(struct sk_buff *skb) { nf_conntrack_put(skb->nfct); skb->nfct = ((void *)0); nf_conntrack_put_reasm(skb->nfct_reasm); skb->nfct_reasm = ((void *)0); } static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src) { dst->nfct = src->nfct; nf_conntrack_get(src->nfct); dst->nfctinfo = src->nfctinfo; dst->nfct_reasm = src->nfct_reasm; nf_conntrack_get_reasm(src->nfct_reasm); } static inline void nf_copy(struct sk_buff *dst, const struct sk_buff *src) { nf_conntrack_put(dst->nfct); nf_conntrack_put_reasm(dst->nfct_reasm); __nf_copy(dst, src); } static inline void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from) { to->secmark = from->secmark; } static inline void skb_init_secmark(struct sk_buff *skb) { skb->secmark = 0; } # 2018 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/skbuff.h" static inline void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping) { skb->queue_mapping = queue_mapping; } static inline u16 skb_get_queue_mapping(const struct sk_buff *skb) { return skb->queue_mapping; } static inline void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from) { to->queue_mapping = from->queue_mapping; } static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue) { skb->queue_mapping = rx_queue + 1; } static inline u16 skb_get_rx_queue(const struct sk_buff *skb) { return skb->queue_mapping - 1; } static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) { return (skb->queue_mapping != 0); } extern u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb); static inline struct sec_path *skb_sec_path(struct sk_buff *skb) { return skb->sp; } static inline int skb_is_gso(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size; } static inline int skb_is_gso_v6(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO_TCPV6; } extern void __skb_warn_lro_forwarding(const struct sk_buff *skb); static inline bool skb_warn_if_lro(const struct sk_buff *skb) { struct skb_shared_info *shinfo = ((struct skb_shared_info *)(skb_end_pointer(skb))); if (shinfo->gso_size != 0 && __builtin_expect(!!(shinfo->gso_type == 0), 0)) { __skb_warn_lro_forwarding(skb); return true; } return false; } static inline void skb_forward_csum(struct sk_buff *skb) { if (skb->ip_summed == 2) skb->ip_summed = 0; } bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_ether.h" 2 static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) { return (struct ethhdr *)skb_mac_header(skb); } int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr); extern struct ctl_table ether_table[]; extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_packet.h" 1 struct sockaddr_pkt { unsigned short spkt_family; unsigned char spkt_device[14]; __be16 spkt_protocol; }; struct sockaddr_ll { unsigned short sll_family; __be16 sll_protocol; int sll_ifindex; unsigned short sll_hatype; unsigned char sll_pkttype; unsigned char sll_halen; unsigned char sll_addr[8]; }; # 51 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_packet.h" struct tpacket_stats { unsigned int tp_packets; unsigned int tp_drops; }; struct tpacket_auxdata { __u32 tp_status; __u32 tp_len; __u32 tp_snaplen; __u16 tp_mac; __u16 tp_net; __u16 tp_vlan_tci; }; # 78 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_packet.h" struct tpacket_hdr { unsigned long tp_status; unsigned int tp_len; unsigned int tp_snaplen; unsigned short tp_mac; unsigned short tp_net; unsigned int tp_sec; unsigned int tp_usec; }; struct tpacket2_hdr { __u32 tp_status; __u32 tp_len; __u32 tp_snaplen; __u16 tp_mac; __u16 tp_net; __u32 tp_sec; __u32 tp_nsec; __u16 tp_vlan_tci; }; enum tpacket_versions { TPACKET_V1, TPACKET_V2, }; # 123 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_packet.h" struct tpacket_req { unsigned int tp_block_size; unsigned int tp_block_nr; unsigned int tp_frame_size; unsigned int tp_frame_nr; }; struct packet_mreq { int mr_ifindex; unsigned short mr_type; unsigned short mr_alen; unsigned char mr_address[8]; }; # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_link.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" 1 # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" struct net; struct sockaddr_nl { sa_family_t nl_family; unsigned short nl_pad; __u32 nl_pid; __u32 nl_groups; }; struct nlmsghdr { __u32 nlmsg_len; __u16 nlmsg_type; __u16 nlmsg_flags; __u32 nlmsg_seq; __u32 nlmsg_pid; }; # 95 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" struct nlmsgerr { int error; struct nlmsghdr msg; }; struct nl_pktinfo { __u32 group; }; enum { NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED, }; # 126 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" struct nlattr { __u16 nla_len; __u16 nla_type; }; # 151 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" struct task_struct; # 40 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" typedef struct __user_cap_header_struct { __u32 version; int pid; } __attribute__((noderef, address_space(1))) *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } __attribute__((noderef, address_space(1))) *cap_user_data_t; # 72 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" struct vfs_cap_data { __le32 magic_etc; struct { __le32 permitted; __le32 inheritable; } data[2]; }; # 95 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" 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; }; # 442 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" static inline 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 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 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 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 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; } # 490 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" static inline 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 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 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 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 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 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 const kernel_cap_t __cap_empty_set; extern const kernel_cap_t __cap_full_set; extern const kernel_cap_t __cap_init_eff_set; # 563 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/capability.h" extern int capable(int cap); struct dentry; extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); # 152 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" 2 static inline struct nlmsghdr *nlmsg_hdr(const struct sk_buff *skb) { return (struct nlmsghdr *)skb->data; } struct netlink_skb_parms { struct ucred creds; __u32 pid; __u32 dst_group; kernel_cap_t eff_cap; __u32 loginuid; __u32 sessionid; __u32 sid; }; extern void netlink_table_grab(void); extern void netlink_table_ungrab(void); extern struct sock *netlink_kernel_create(struct net *net, int unit,unsigned int groups, void (*input)(struct sk_buff *skb), struct mutex *cb_mutex, struct module *module); extern void netlink_kernel_release(struct sock *sk); extern int __netlink_change_ngroups(struct sock *sk, unsigned int groups); extern int netlink_change_ngroups(struct sock *sk, unsigned int groups); extern void __netlink_clear_multicast_users(struct sock *sk, unsigned int group); extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group); extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); extern int netlink_has_listeners(struct sock *sk, unsigned int group); extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, __u32 group, gfp_t allocation); extern int netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code); extern int netlink_register_notifier(struct notifier_block *nb); extern int netlink_unregister_notifier(struct notifier_block *nb); struct sock *netlink_getsockbyfilp(struct file *filp); int netlink_attachskb(struct sock *sk, struct sk_buff *skb, long *timeo, struct sock *ssk); void netlink_detachskb(struct sock *sk, struct sk_buff *skb); int netlink_sendskb(struct sock *sk, struct sk_buff *skb); # 217 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" struct netlink_callback { struct sk_buff *skb; const struct nlmsghdr *nlh; int (*dump)(struct sk_buff * skb, struct netlink_callback *cb); int (*done)(struct netlink_callback *cb); int family; long args[6]; }; struct netlink_notify { struct net *net; int pid; int protocol; }; static __inline__ struct nlmsghdr * __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) { struct nlmsghdr *nlh; int size = ((len)+( ((((int) ( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) )))+4 -1) & ~(4 -1) )); nlh = (struct nlmsghdr*)skb_put(skb, ( ((size)+4 -1) & ~(4 -1) )); nlh->nlmsg_type = type; nlh->nlmsg_len = size; nlh->nlmsg_flags = flags; nlh->nlmsg_pid = pid; nlh->nlmsg_seq = seq; if (!__builtin_constant_p(size) || ( ((size)+4 -1) & ~(4 -1) ) - size != 0) memset(((void*)(((char*)nlh) + ((0)+( ((((int) ( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) )))+4 -1) & ~(4 -1) )))) + len, 0, ( ((size)+4 -1) & ~(4 -1) ) - size); return nlh; } # 258 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netlink.h" extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, const struct nlmsghdr *nlh, int (*dump)(struct sk_buff *skb, struct netlink_callback*), int (*done)(struct netlink_callback*)); extern void netlink_set_nonroot(int protocol, unsigned flag); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_link.h" 2 struct rtnl_link_stats { __u32 rx_packets; __u32 tx_packets; __u32 rx_bytes; __u32 tx_bytes; __u32 rx_errors; __u32 tx_errors; __u32 rx_dropped; __u32 tx_dropped; __u32 multicast; __u32 collisions; __u32 rx_length_errors; __u32 rx_over_errors; __u32 rx_crc_errors; __u32 rx_frame_errors; __u32 rx_fifo_errors; __u32 rx_missed_errors; __u32 tx_aborted_errors; __u32 tx_carrier_errors; __u32 tx_fifo_errors; __u32 tx_heartbeat_errors; __u32 tx_window_errors; __u32 rx_compressed; __u32 tx_compressed; }; struct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; }; struct rtnl_link_ifmap { __u64 mem_start; __u64 mem_end; __u64 base_addr; __u16 irq; __u8 dma; __u8 port; }; enum { IFLA_UNSPEC, IFLA_ADDRESS, IFLA_BROADCAST, IFLA_IFNAME, IFLA_MTU, IFLA_LINK, IFLA_QDISC, IFLA_STATS, IFLA_COST, IFLA_PRIORITY, IFLA_MASTER, IFLA_WIRELESS, IFLA_PROTINFO, IFLA_TXQLEN, IFLA_MAP, IFLA_WEIGHT, IFLA_OPERSTATE, IFLA_LINKMODE, IFLA_LINKINFO, IFLA_NET_NS_PID, IFLA_IFALIAS, IFLA_NUM_VF, IFLA_VF_MAC, IFLA_VF_VLAN, IFLA_VF_TX_RATE, IFLA_VFINFO, IFLA_STATS64, __IFLA_MAX }; # 161 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_link.h" enum { IFLA_INET6_UNSPEC, IFLA_INET6_FLAGS, IFLA_INET6_CONF, IFLA_INET6_STATS, IFLA_INET6_MCAST, IFLA_INET6_CACHEINFO, IFLA_INET6_ICMP6STATS, __IFLA_INET6_MAX }; struct ifla_cacheinfo { __u32 max_reasm_len; __u32 tstamp; __u32 reachable_time; __u32 retrans_time; }; enum { IFLA_INFO_UNSPEC, IFLA_INFO_KIND, IFLA_INFO_DATA, IFLA_INFO_XSTATS, __IFLA_INFO_MAX, }; enum { IFLA_VLAN_UNSPEC, IFLA_VLAN_ID, IFLA_VLAN_FLAGS, IFLA_VLAN_EGRESS_QOS, IFLA_VLAN_INGRESS_QOS, __IFLA_VLAN_MAX, }; struct ifla_vlan_flags { __u32 flags; __u32 mask; }; enum { IFLA_VLAN_QOS_UNSPEC, IFLA_VLAN_QOS_MAPPING, __IFLA_VLAN_QOS_MAX }; struct ifla_vlan_qos_mapping { __u32 from; __u32 to; }; enum { IFLA_MACVLAN_UNSPEC, IFLA_MACVLAN_MODE, __IFLA_MACVLAN_MAX, }; enum macvlan_mode { MACVLAN_MODE_PRIVATE = 1, MACVLAN_MODE_VEPA = 2, MACVLAN_MODE_BRIDGE = 4, }; struct ifla_vf_mac { __u32 vf; __u8 mac[32]; }; struct ifla_vf_vlan { __u32 vf; __u32 vlan; __u32 qos; }; struct ifla_vf_tx_rate { __u32 vf; __u32 rate; }; struct ifla_vf_info { __u32 vf; __u8 mac[32]; __u32 vlan; __u32 qos; __u32 tx_rate; }; # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 47 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" struct ethtool_cmd { __u32 cmd; __u32 supported; __u32 advertising; __u16 speed; __u8 duplex; __u8 port; __u8 phy_address; __u8 transceiver; __u8 autoneg; __u8 mdio_support; __u32 maxtxpkt; __u32 maxrxpkt; __u16 speed_hi; __u8 eth_tp_mdix; __u8 reserved2; __u32 lp_advertising; __u32 reserved[2]; }; static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, __u32 speed) { ep->speed = (__u16)speed; ep->speed_hi = (__u16)(speed >> 16); } static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep) { return (ep->speed_hi << 16) | ep->speed; } struct ethtool_drvinfo { __u32 cmd; char driver[32]; char version[32]; char fw_version[32]; char bus_info[32]; char reserved1[32]; char reserved2[12]; __u32 n_priv_flags; __u32 n_stats; __u32 testinfo_len; __u32 eedump_len; __u32 regdump_len; }; struct ethtool_wolinfo { __u32 cmd; __u32 supported; __u32 wolopts; __u8 sopass[6]; }; struct ethtool_value { __u32 cmd; __u32 data; }; struct ethtool_regs { __u32 cmd; __u32 version; __u32 len; __u8 data[0]; }; struct ethtool_eeprom { __u32 cmd; __u32 magic; __u32 offset; __u32 len; __u8 data[0]; }; struct ethtool_coalesce { __u32 cmd; __u32 rx_coalesce_usecs; __u32 rx_max_coalesced_frames; __u32 rx_coalesce_usecs_irq; __u32 rx_max_coalesced_frames_irq; __u32 tx_coalesce_usecs; __u32 tx_max_coalesced_frames; __u32 tx_coalesce_usecs_irq; __u32 tx_max_coalesced_frames_irq; __u32 stats_block_coalesce_usecs; # 172 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" __u32 use_adaptive_rx_coalesce; __u32 use_adaptive_tx_coalesce; __u32 pkt_rate_low; __u32 rx_coalesce_usecs_low; __u32 rx_max_coalesced_frames_low; __u32 tx_coalesce_usecs_low; __u32 tx_max_coalesced_frames_low; # 194 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" __u32 pkt_rate_high; __u32 rx_coalesce_usecs_high; __u32 rx_max_coalesced_frames_high; __u32 tx_coalesce_usecs_high; __u32 tx_max_coalesced_frames_high; __u32 rate_sample_interval; }; struct ethtool_ringparam { __u32 cmd; __u32 rx_max_pending; __u32 rx_mini_max_pending; __u32 rx_jumbo_max_pending; __u32 tx_max_pending; __u32 rx_pending; __u32 rx_mini_pending; __u32 rx_jumbo_pending; __u32 tx_pending; }; struct ethtool_pauseparam { __u32 cmd; # 242 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" __u32 autoneg; __u32 rx_pause; __u32 tx_pause; }; enum ethtool_stringset { ETH_SS_TEST = 0, ETH_SS_STATS, ETH_SS_PRIV_FLAGS, ETH_SS_NTUPLE_FILTERS, }; struct ethtool_gstrings { __u32 cmd; __u32 string_set; __u32 len; __u8 data[0]; }; struct ethtool_sset_info { __u32 cmd; __u32 reserved; __u64 sset_mask; __u32 data[0]; }; enum ethtool_test_flags { ETH_TEST_FL_OFFLINE = (1 << 0), ETH_TEST_FL_FAILED = (1 << 1), }; struct ethtool_test { __u32 cmd; __u32 flags; __u32 reserved; __u32 len; __u64 data[0]; }; struct ethtool_stats { __u32 cmd; __u32 n_stats; __u64 data[0]; }; struct ethtool_perm_addr { __u32 cmd; __u32 size; __u8 data[0]; }; # 310 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" enum ethtool_flags { ETH_FLAG_LRO = (1 << 15), ETH_FLAG_NTUPLE = (1 << 27), }; struct ethtool_tcpip4_spec { __be32 ip4src; __be32 ip4dst; __be16 psrc; __be16 pdst; __u8 tos; }; struct ethtool_ah_espip4_spec { __be32 ip4src; __be32 ip4dst; __be32 spi; __u8 tos; }; struct ethtool_rawip4_spec { __be32 ip4src; __be32 ip4dst; __u8 hdata[64]; }; struct ethtool_ether_spec { __be16 ether_type; __u8 frame_size; __u8 eframe[16]; }; struct ethtool_usrip4_spec { __be32 ip4src; __be32 ip4dst; __be32 l4_4_bytes; __u8 tos; __u8 ip_ver; __u8 proto; }; struct ethtool_rx_flow_spec { __u32 flow_type; union { struct ethtool_tcpip4_spec tcp_ip4_spec; struct ethtool_tcpip4_spec udp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_rawip4_spec raw_ip4_spec; struct ethtool_ether_spec ether_spec; struct ethtool_usrip4_spec usr_ip4_spec; __u8 hdata[64]; } h_u, m_u; __u64 ring_cookie; __u32 location; }; struct ethtool_rxnfc { __u32 cmd; __u32 flow_type; __u64 data; struct ethtool_rx_flow_spec fs; __u32 rule_cnt; __u32 rule_locs[0]; }; struct ethtool_rx_ntuple_flow_spec { __u32 flow_type; union { struct ethtool_tcpip4_spec tcp_ip4_spec; struct ethtool_tcpip4_spec udp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_rawip4_spec raw_ip4_spec; struct ethtool_ether_spec ether_spec; struct ethtool_usrip4_spec usr_ip4_spec; __u8 hdata[64]; } h_u, m_u; __u16 vlan_tag; __u16 vlan_tag_mask; __u64 data; __u64 data_mask; __s32 action; }; struct ethtool_rx_ntuple { __u32 cmd; struct ethtool_rx_ntuple_flow_spec fs; }; enum ethtool_flash_op_type { ETHTOOL_FLASH_ALL_REGIONS = 0, }; struct ethtool_flash { __u32 cmd; __u32 region; char data[128]; }; struct ethtool_rx_ntuple_flow_spec_container { struct ethtool_rx_ntuple_flow_spec fs; struct list_head list; }; struct ethtool_rx_ntuple_list { struct list_head list; unsigned int count; }; struct net_device; u32 ethtool_op_get_link(struct net_device *dev); u32 ethtool_op_get_rx_csum(struct net_device *dev); u32 ethtool_op_get_tx_csum(struct net_device *dev); int ethtool_op_set_tx_csum(struct net_device *dev, u32 data); int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data); int ethtool_op_set_tx_ipv6_csum(struct net_device *dev, u32 data); u32 ethtool_op_get_sg(struct net_device *dev); int ethtool_op_set_sg(struct net_device *dev, u32 data); u32 ethtool_op_get_tso(struct net_device *dev); int ethtool_op_set_tso(struct net_device *dev, u32 data); u32 ethtool_op_get_ufo(struct net_device *dev); int ethtool_op_set_ufo(struct net_device *dev, u32 data); u32 ethtool_op_get_flags(struct net_device *dev); int ethtool_op_set_flags(struct net_device *dev, u32 data); void ethtool_ntuple_flush(struct net_device *dev); # 521 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" struct ethtool_ops { int (*get_settings)(struct net_device *, struct ethtool_cmd *); int (*set_settings)(struct net_device *, struct ethtool_cmd *); void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); int (*get_regs_len)(struct net_device *); void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); u32 (*get_msglevel)(struct net_device *); void (*set_msglevel)(struct net_device *, u32); int (*nway_reset)(struct net_device *); u32 (*get_link)(struct net_device *); int (*get_eeprom_len)(struct net_device *); int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *); int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *); void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *); int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*); int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*); u32 (*get_rx_csum)(struct net_device *); int (*set_rx_csum)(struct net_device *, u32); u32 (*get_tx_csum)(struct net_device *); int (*set_tx_csum)(struct net_device *, u32); u32 (*get_sg)(struct net_device *); int (*set_sg)(struct net_device *, u32); u32 (*get_tso)(struct net_device *); int (*set_tso)(struct net_device *, u32); void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); void (*get_strings)(struct net_device *, u32 stringset, u8 *); int (*phys_id)(struct net_device *, u32); void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); int (*begin)(struct net_device *); void (*complete)(struct net_device *); u32 (*get_ufo)(struct net_device *); int (*set_ufo)(struct net_device *, u32); u32 (*get_flags)(struct net_device *); int (*set_flags)(struct net_device *, u32); u32 (*get_priv_flags)(struct net_device *); int (*set_priv_flags)(struct net_device *, u32); int (*get_sset_count)(struct net_device *, int); int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *); int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); int (*flash_device)(struct net_device *, struct ethtool_flash *); int (*reset)(struct net_device *, u32 *); int (*set_rx_ntuple)(struct net_device *, struct ethtool_rx_ntuple *); int (*get_rx_ntuple)(struct net_device *, u32 stringset, void *); }; # 771 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ethtool.h" enum ethtool_reset_flags { ETH_RESET_MGMT = 1 << 0, ETH_RESET_IRQ = 1 << 1, ETH_RESET_DMA = 1 << 2, ETH_RESET_FILTER = 1 << 3, ETH_RESET_OFFLOAD = 1 << 4, ETH_RESET_MAC = 1 << 5, ETH_RESET_PHY = 1 << 6, ETH_RESET_RAM = 1 << 7, ETH_RESET_DEDICATED = 0x0000ffff, ETH_RESET_ALL = 0xffffffff, }; # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/core.h" 1 struct ctl_table_header; struct prot_inuse; struct netns_core { struct ctl_table_header *sysctl_hdr; int sysctl_somaxconn; struct prot_inuse __attribute__((noderef, address_space(3))) *inuse; }; # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/mib.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/snmp.h" 1 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/snmp.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/snmp.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/snmp.h" enum { IPSTATS_MIB_NUM = 0, IPSTATS_MIB_INPKTS, IPSTATS_MIB_INHDRERRORS, IPSTATS_MIB_INTOOBIGERRORS, IPSTATS_MIB_INNOROUTES, IPSTATS_MIB_INADDRERRORS, IPSTATS_MIB_INUNKNOWNPROTOS, IPSTATS_MIB_INTRUNCATEDPKTS, IPSTATS_MIB_INDISCARDS, IPSTATS_MIB_INDELIVERS, IPSTATS_MIB_OUTFORWDATAGRAMS, IPSTATS_MIB_OUTPKTS, IPSTATS_MIB_OUTDISCARDS, IPSTATS_MIB_OUTNOROUTES, IPSTATS_MIB_REASMTIMEOUT, IPSTATS_MIB_REASMREQDS, IPSTATS_MIB_REASMOKS, IPSTATS_MIB_REASMFAILS, IPSTATS_MIB_FRAGOKS, IPSTATS_MIB_FRAGFAILS, IPSTATS_MIB_FRAGCREATES, IPSTATS_MIB_INMCASTPKTS, IPSTATS_MIB_OUTMCASTPKTS, IPSTATS_MIB_INBCASTPKTS, IPSTATS_MIB_OUTBCASTPKTS, IPSTATS_MIB_INOCTETS, IPSTATS_MIB_OUTOCTETS, IPSTATS_MIB_INMCASTOCTETS, IPSTATS_MIB_OUTMCASTOCTETS, IPSTATS_MIB_INBCASTOCTETS, IPSTATS_MIB_OUTBCASTOCTETS, __IPSTATS_MIB_MAX }; enum { ICMP_MIB_NUM = 0, ICMP_MIB_INMSGS, ICMP_MIB_INERRORS, ICMP_MIB_INDESTUNREACHS, ICMP_MIB_INTIMEEXCDS, ICMP_MIB_INPARMPROBS, ICMP_MIB_INSRCQUENCHS, ICMP_MIB_INREDIRECTS, ICMP_MIB_INECHOS, ICMP_MIB_INECHOREPS, ICMP_MIB_INTIMESTAMPS, ICMP_MIB_INTIMESTAMPREPS, ICMP_MIB_INADDRMASKS, ICMP_MIB_INADDRMASKREPS, ICMP_MIB_OUTMSGS, ICMP_MIB_OUTERRORS, ICMP_MIB_OUTDESTUNREACHS, ICMP_MIB_OUTTIMEEXCDS, ICMP_MIB_OUTPARMPROBS, ICMP_MIB_OUTSRCQUENCHS, ICMP_MIB_OUTREDIRECTS, ICMP_MIB_OUTECHOS, ICMP_MIB_OUTECHOREPS, ICMP_MIB_OUTTIMESTAMPS, ICMP_MIB_OUTTIMESTAMPREPS, ICMP_MIB_OUTADDRMASKS, ICMP_MIB_OUTADDRMASKREPS, __ICMP_MIB_MAX }; enum { ICMP6_MIB_NUM = 0, ICMP6_MIB_INMSGS, ICMP6_MIB_INERRORS, ICMP6_MIB_OUTMSGS, __ICMP6_MIB_MAX }; # 113 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/snmp.h" enum { TCP_MIB_NUM = 0, TCP_MIB_RTOALGORITHM, TCP_MIB_RTOMIN, TCP_MIB_RTOMAX, TCP_MIB_MAXCONN, TCP_MIB_ACTIVEOPENS, TCP_MIB_PASSIVEOPENS, TCP_MIB_ATTEMPTFAILS, TCP_MIB_ESTABRESETS, TCP_MIB_CURRESTAB, TCP_MIB_INSEGS, TCP_MIB_OUTSEGS, TCP_MIB_RETRANSSEGS, TCP_MIB_INERRS, TCP_MIB_OUTRSTS, __TCP_MIB_MAX }; enum { UDP_MIB_NUM = 0, UDP_MIB_INDATAGRAMS, UDP_MIB_NOPORTS, UDP_MIB_INERRORS, UDP_MIB_OUTDATAGRAMS, UDP_MIB_RCVBUFERRORS, UDP_MIB_SNDBUFERRORS, __UDP_MIB_MAX }; enum { LINUX_MIB_NUM = 0, LINUX_MIB_SYNCOOKIESSENT, LINUX_MIB_SYNCOOKIESRECV, LINUX_MIB_SYNCOOKIESFAILED, LINUX_MIB_EMBRYONICRSTS, LINUX_MIB_PRUNECALLED, LINUX_MIB_RCVPRUNED, LINUX_MIB_OFOPRUNED, LINUX_MIB_OUTOFWINDOWICMPS, LINUX_MIB_LOCKDROPPEDICMPS, LINUX_MIB_ARPFILTER, LINUX_MIB_TIMEWAITED, LINUX_MIB_TIMEWAITRECYCLED, LINUX_MIB_TIMEWAITKILLED, LINUX_MIB_PAWSPASSIVEREJECTED, LINUX_MIB_PAWSACTIVEREJECTED, LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_DELAYEDACKS, LINUX_MIB_DELAYEDACKLOCKED, LINUX_MIB_DELAYEDACKLOST, LINUX_MIB_LISTENOVERFLOWS, LINUX_MIB_LISTENDROPS, LINUX_MIB_TCPPREQUEUED, LINUX_MIB_TCPDIRECTCOPYFROMBACKLOG, LINUX_MIB_TCPDIRECTCOPYFROMPREQUEUE, LINUX_MIB_TCPPREQUEUEDROPPED, LINUX_MIB_TCPHPHITS, LINUX_MIB_TCPHPHITSTOUSER, LINUX_MIB_TCPPUREACKS, LINUX_MIB_TCPHPACKS, LINUX_MIB_TCPRENORECOVERY, LINUX_MIB_TCPSACKRECOVERY, LINUX_MIB_TCPSACKRENEGING, LINUX_MIB_TCPFACKREORDER, LINUX_MIB_TCPSACKREORDER, LINUX_MIB_TCPRENOREORDER, LINUX_MIB_TCPTSREORDER, LINUX_MIB_TCPFULLUNDO, LINUX_MIB_TCPPARTIALUNDO, LINUX_MIB_TCPDSACKUNDO, LINUX_MIB_TCPLOSSUNDO, LINUX_MIB_TCPLOSS, LINUX_MIB_TCPLOSTRETRANSMIT, LINUX_MIB_TCPRENOFAILURES, LINUX_MIB_TCPSACKFAILURES, LINUX_MIB_TCPLOSSFAILURES, LINUX_MIB_TCPFASTRETRANS, LINUX_MIB_TCPFORWARDRETRANS, LINUX_MIB_TCPSLOWSTARTRETRANS, LINUX_MIB_TCPTIMEOUTS, LINUX_MIB_TCPRENORECOVERYFAIL, LINUX_MIB_TCPSACKRECOVERYFAIL, LINUX_MIB_TCPSCHEDULERFAILED, LINUX_MIB_TCPRCVCOLLAPSED, LINUX_MIB_TCPDSACKOLDSENT, LINUX_MIB_TCPDSACKOFOSENT, LINUX_MIB_TCPDSACKRECV, LINUX_MIB_TCPDSACKOFORECV, LINUX_MIB_TCPABORTONSYN, LINUX_MIB_TCPABORTONDATA, LINUX_MIB_TCPABORTONCLOSE, LINUX_MIB_TCPABORTONMEMORY, LINUX_MIB_TCPABORTONTIMEOUT, LINUX_MIB_TCPABORTONLINGER, LINUX_MIB_TCPABORTFAILED, LINUX_MIB_TCPMEMORYPRESSURES, LINUX_MIB_TCPSACKDISCARD, LINUX_MIB_TCPDSACKIGNOREDOLD, LINUX_MIB_TCPDSACKIGNOREDNOUNDO, LINUX_MIB_TCPSPURIOUSRTOS, LINUX_MIB_TCPMD5NOTFOUND, LINUX_MIB_TCPMD5UNEXPECTED, LINUX_MIB_SACKSHIFTED, LINUX_MIB_SACKMERGED, LINUX_MIB_SACKSHIFTFALLBACK, LINUX_MIB_TCPBACKLOGDROP, LINUX_MIB_TCPMINTTLDROP, LINUX_MIB_TCPDEFERACCEPTDROP, __LINUX_MIB_MAX }; enum { LINUX_MIB_XFRMNUM = 0, LINUX_MIB_XFRMINERROR, LINUX_MIB_XFRMINBUFFERERROR, LINUX_MIB_XFRMINHDRERROR, LINUX_MIB_XFRMINNOSTATES, LINUX_MIB_XFRMINSTATEPROTOERROR, LINUX_MIB_XFRMINSTATEMODEERROR, LINUX_MIB_XFRMINSTATESEQERROR, LINUX_MIB_XFRMINSTATEEXPIRED, LINUX_MIB_XFRMINSTATEMISMATCH, LINUX_MIB_XFRMINSTATEINVALID, LINUX_MIB_XFRMINTMPLMISMATCH, LINUX_MIB_XFRMINNOPOLS, LINUX_MIB_XFRMINPOLBLOCK, LINUX_MIB_XFRMINPOLERROR, LINUX_MIB_XFRMOUTERROR, LINUX_MIB_XFRMOUTBUNDLEGENERROR, LINUX_MIB_XFRMOUTBUNDLECHECKERROR, LINUX_MIB_XFRMOUTNOSTATES, LINUX_MIB_XFRMOUTSTATEPROTOERROR, LINUX_MIB_XFRMOUTSTATEMODEERROR, LINUX_MIB_XFRMOUTSTATESEQERROR, LINUX_MIB_XFRMOUTSTATEEXPIRED, LINUX_MIB_XFRMOUTPOLBLOCK, LINUX_MIB_XFRMOUTPOLDEAD, LINUX_MIB_XFRMOUTPOLERROR, LINUX_MIB_XFRMFWDHDRERROR, __LINUX_MIB_XFRMMAX }; # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/snmp.h" 2 # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/snmp.h" struct snmp_mib { const char *name; int entry; }; # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/snmp.h" struct ipstats_mib { unsigned long mibs[__IPSTATS_MIB_MAX]; }; struct icmp_mib { unsigned long mibs[(__ICMP_MIB_MAX + 1)]; }; struct icmpmsg_mib { unsigned long mibs[512]; }; struct icmpv6_mib { unsigned long mibs[__ICMP6_MIB_MAX]; }; struct icmpv6msg_mib { unsigned long mibs[512]; }; struct tcp_mib { unsigned long mibs[__TCP_MIB_MAX]; }; struct udp_mib { unsigned long mibs[__UDP_MIB_MAX]; }; struct linux_mib { unsigned long mibs[__LINUX_MIB_MAX]; }; struct linux_xfrm_mib { unsigned long mibs[__LINUX_MIB_XFRMMAX]; }; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/mib.h" 2 struct netns_mib { __typeof__(struct tcp_mib) __attribute__((noderef, address_space(3))) *tcp_statistics[2]; __typeof__(struct ipstats_mib) __attribute__((noderef, address_space(3))) *ip_statistics[2]; __typeof__(struct linux_mib) __attribute__((noderef, address_space(3))) *net_statistics[2]; __typeof__(struct udp_mib) __attribute__((noderef, address_space(3))) *udp_statistics[2]; __typeof__(struct udp_mib) __attribute__((noderef, address_space(3))) *udplite_statistics[2]; __typeof__(struct icmp_mib) __attribute__((noderef, address_space(3))) *icmp_statistics[2]; __typeof__(struct icmpmsg_mib) __attribute__((noderef, address_space(3))) *icmpmsg_statistics[2]; # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/mib.h" }; # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/unix.h" 1 struct ctl_table_header; struct netns_unix { int sysctl_max_dgram_qlen; struct ctl_table_header *ctl; }; # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/packet.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/packet.h" struct netns_packet { spinlock_t sklist_lock; struct hlist_head sklist; }; # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv4.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_frag.h" 1 struct netns_frags { int nqueues; atomic_t mem; struct list_head lru_list; int timeout; int high_thresh; int low_thresh; }; struct inet_frag_queue { struct hlist_node list; struct netns_frags *net; struct list_head lru_list; spinlock_t lock; atomic_t refcnt; struct timer_list timer; struct sk_buff *fragments; ktime_t stamp; int len; int meat; __u8 last_in; }; struct inet_frags { struct hlist_head hash[64]; rwlock_t lock; u32 rnd; int qsize; int secret_interval; struct timer_list secret_timer; unsigned int (*hashfn)(struct inet_frag_queue *); void (*constructor)(struct inet_frag_queue *q, void *arg); void (*destructor)(struct inet_frag_queue *); void (*skb_free)(struct sk_buff *); int (*match)(struct inet_frag_queue *q, void *arg); void (*frag_expire)(unsigned long data); }; void inet_frags_init(struct inet_frags *); void inet_frags_fini(struct inet_frags *); void inet_frags_init_net(struct netns_frags *nf); void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f); void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f, int *work); int inet_frag_evictor(struct netns_frags *nf, struct inet_frags *f); struct inet_frag_queue *inet_frag_find(struct netns_frags *nf, struct inet_frags *f, void *key, unsigned int hash) __attribute__((context(&f->lock,1,0))); static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) { if (atomic_dec_and_test(&q->refcnt)) inet_frag_destroy(q, f, ((void *)0)); } # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv4.h" 2 struct ctl_table_header; struct ipv4_devconf; struct fib_rules_ops; struct hlist_head; struct sock; struct netns_ipv4 { struct ctl_table_header *forw_hdr; struct ctl_table_header *frags_hdr; struct ctl_table_header *ipv4_hdr; struct ctl_table_header *route_hdr; struct ipv4_devconf *devconf_all; struct ipv4_devconf *devconf_dflt; struct fib_rules_ops *rules_ops; struct hlist_head *fib_table_hash; struct sock *fibnl; struct sock **icmp_sk; struct sock *tcp_sock; struct netns_frags frags; struct xt_table *iptable_filter; struct xt_table *iptable_mangle; struct xt_table *iptable_raw; struct xt_table *arptable_filter; struct xt_table *iptable_security; struct xt_table *nat_table; struct hlist_head *nat_bysource; unsigned int nat_htable_size; int nat_vmalloced; int sysctl_icmp_echo_ignore_all; int sysctl_icmp_echo_ignore_broadcasts; int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; int sysctl_icmp_errors_use_inbound_ifaddr; int sysctl_rt_cache_rebuild_count; int current_rt_cache_rebuild_count; struct timer_list rt_secret_timer; atomic_t rt_genid; struct sock *mroute_sk; struct mfc_cache **mfc_cache_array; struct vif_device *vif_table; int maxvif; atomic_t cache_resolve_queue_len; int mroute_do_assert; int mroute_do_pim; int mroute_reg_vif_num; }; # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv6.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv6.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst_ops.h" 1 struct dst_entry; struct kmem_cachep; struct net_device; struct sk_buff; struct dst_ops { unsigned short family; __be16 protocol; unsigned gc_thresh; int (*gc)(struct dst_ops *ops); struct dst_entry * (*check)(struct dst_entry *, __u32 cookie); void (*destroy)(struct dst_entry *); void (*ifdown)(struct dst_entry *, struct net_device *dev, int how); struct dst_entry * (*negative_advice)(struct dst_entry *); void (*link_failure)(struct sk_buff *); void (*update_pmtu)(struct dst_entry *dst, u32 mtu); int (*local_out)(struct sk_buff *skb); atomic_t entries; struct kmem_cache *kmem_cachep; }; # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv6.h" 2 struct ctl_table_header; struct netns_sysctl_ipv6 { struct ctl_table_header *table; struct ctl_table_header *frags_hdr; int bindv6only; int flush_delay; int ip6_rt_max_size; int ip6_rt_gc_min_interval; int ip6_rt_gc_timeout; int ip6_rt_gc_interval; int ip6_rt_gc_elasticity; int ip6_rt_mtu_expires; int ip6_rt_min_advmss; int icmpv6_time; }; struct netns_ipv6 { struct netns_sysctl_ipv6 sysctl; struct ipv6_devconf *devconf_all; struct ipv6_devconf *devconf_dflt; struct netns_frags frags; struct xt_table *ip6table_filter; struct xt_table *ip6table_mangle; struct xt_table *ip6table_raw; struct xt_table *ip6table_security; struct rt6_info *ip6_null_entry; struct rt6_statistics *rt6_stats; struct timer_list ip6_fib_timer; struct hlist_head *fib_table_hash; struct fib6_table *fib6_main_tbl; struct dst_ops ip6_dst_ops; unsigned int ip6_rt_gc_expire; unsigned long ip6_rt_last_gc; struct sock **icmp_sk; struct sock *ndisc_sk; struct sock *tcp_sk; struct sock *igmp_sk; # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/ipv6.h" }; # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/dccp.h" 1 struct sock; struct netns_dccp { struct sock *v4_ctl_sk; struct sock *v6_ctl_sk; }; # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/x_tables.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in.h" enum { IPPROTO_IP = 0, IPPROTO_ICMP = 1, IPPROTO_IGMP = 2, IPPROTO_IPIP = 4, IPPROTO_TCP = 6, IPPROTO_EGP = 8, IPPROTO_PUP = 12, IPPROTO_UDP = 17, IPPROTO_IDP = 22, IPPROTO_DCCP = 33, IPPROTO_RSVP = 46, IPPROTO_GRE = 47, IPPROTO_IPV6 = 41, IPPROTO_ESP = 50, IPPROTO_AH = 51, IPPROTO_BEETPH = 94, IPPROTO_PIM = 103, IPPROTO_COMP = 108, IPPROTO_SCTP = 132, IPPROTO_UDPLITE = 136, IPPROTO_RAW = 255, IPPROTO_MAX }; struct in_addr { __be32 s_addr; }; # 123 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in.h" struct ip_mreq { struct in_addr imr_multiaddr; struct in_addr imr_interface; }; struct ip_mreqn { struct in_addr imr_multiaddr; struct in_addr imr_address; int imr_ifindex; }; struct ip_mreq_source { __be32 imr_multiaddr; __be32 imr_interface; __be32 imr_sourceaddr; }; struct ip_msfilter { __be32 imsf_multiaddr; __be32 imsf_interface; __u32 imsf_fmode; __u32 imsf_numsrc; __be32 imsf_slist[1]; }; struct group_req { __u32 gr_interface; struct __kernel_sockaddr_storage gr_group; }; struct group_source_req { __u32 gsr_interface; struct __kernel_sockaddr_storage gsr_group; struct __kernel_sockaddr_storage gsr_source; }; struct group_filter { __u32 gf_interface; struct __kernel_sockaddr_storage gf_group; __u32 gf_fmode; __u32 gf_numsrc; struct __kernel_sockaddr_storage gf_slist[1]; }; struct in_pktinfo { int ipi_ifindex; struct in_addr ipi_spec_dst; struct in_addr ipi_addr; }; struct sockaddr_in { sa_family_t sin_family; __be16 sin_port; struct in_addr sin_addr; unsigned char __pad[16 - sizeof(short int) - sizeof(unsigned short int) - sizeof(struct in_addr)]; }; # 252 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in.h" static inline bool ipv4_is_loopback(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((__u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xff000000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0x7f000000))) ? ((__u32)( (((__u32)((0x7f000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x7f000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x7f000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x7f000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x7f000000)))); } static inline bool ipv4_is_multicast(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xf0000000))) ? ((__u32)( (((__u32)((0xf0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xf0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xf0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xf0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xf0000000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000)))); } static inline bool ipv4_is_local_multicast(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000)))); } static inline bool ipv4_is_lbcast(__be32 addr) { return addr == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((((unsigned long int) 0xffffffff)))) ? ((__u32)( (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0xffffffff))))); } static inline bool ipv4_is_zeronet(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((__u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xff000000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0x00000000))) ? ((__u32)( (((__u32)((0x00000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x00000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x00000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x00000000)))); } static inline bool ipv4_is_private_10(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((__u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xff000000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0x0a000000))) ? ((__u32)( (((__u32)((0x0a000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0a000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0a000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0a000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x0a000000)))); } static inline bool ipv4_is_private_172(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xfff00000))) ? ((__u32)( (((__u32)((0xfff00000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xfff00000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfff00000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xfff00000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xfff00000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xac100000))) ? ((__u32)( (((__u32)((0xac100000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xac100000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xac100000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xac100000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xac100000)))); } static inline bool ipv4_is_private_192(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((__u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffff0000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xc0a80000))) ? ((__u32)( (((__u32)((0xc0a80000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0a80000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0a80000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0a80000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0a80000)))); } static inline bool ipv4_is_linklocal_169(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((__u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffff0000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xa9fe0000))) ? ((__u32)( (((__u32)((0xa9fe0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xa9fe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xa9fe0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xa9fe0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xa9fe0000)))); } static inline bool ipv4_is_anycast_6to4(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xc0586300))) ? ((__u32)( (((__u32)((0xc0586300)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0586300)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0586300)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0586300)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0586300)))); } static inline bool ipv4_is_test_192(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xc0000200))) ? ((__u32)( (((__u32)((0xc0000200)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0000200)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0000200)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0000200)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0000200)))); } static inline bool ipv4_is_test_198(__be32 addr) { return (addr & ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xfffe0000))) ? ((__u32)( (((__u32)((0xfffe0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xfffe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfffe0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xfffe0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xfffe0000))))) == ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((0xc6120000))) ? ((__u32)( (((__u32)((0xc6120000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc6120000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc6120000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc6120000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc6120000)))); } # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in6.h" 1 # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in6.h" struct in6_addr { union { __u8 u6_addr8[16]; __be16 u6_addr16[8]; __be32 u6_addr32[4]; } in6_u; }; extern const struct in6_addr in6addr_any; extern const struct in6_addr in6addr_loopback; extern const struct in6_addr in6addr_linklocal_allnodes; extern const struct in6_addr in6addr_linklocal_allrouters; struct sockaddr_in6 { unsigned short int sin6_family; __be16 sin6_port; __be32 sin6_flowinfo; struct in6_addr sin6_addr; __u32 sin6_scope_id; }; struct ipv6_mreq { struct in6_addr ipv6mr_multiaddr; int ipv6mr_ifindex; }; struct in6_flowlabel_req { struct in6_addr flr_dst; __be32 flr_label; __u8 flr_action; __u8 flr_share; __u16 flr_flags; __u16 flr_expires; __u16 flr_linger; __u32 __flr_pad; }; # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" 2 # 44 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" enum nf_inet_hooks { NF_INET_PRE_ROUTING, NF_INET_LOCAL_IN, NF_INET_FORWARD, NF_INET_LOCAL_OUT, NF_INET_POST_ROUTING, NF_INET_NUMHOOKS }; enum { NFPROTO_UNSPEC = 0, NFPROTO_IPV4 = 2, NFPROTO_ARP = 3, NFPROTO_BRIDGE = 7, NFPROTO_IPV6 = 10, NFPROTO_DECNET = 12, NFPROTO_NUMPROTO, }; union nf_inet_addr { __u32 all[4]; __be32 ip; __be32 ip6[4]; struct in_addr in; struct in6_addr in6; }; static inline int nf_inet_addr_cmp(const union nf_inet_addr *a1, const union nf_inet_addr *a2) { return a1->all[0] == a2->all[0] && a1->all[1] == a2->all[1] && a1->all[2] == a2->all[2] && a1->all[3] == a2->all[3]; } extern void netfilter_init(void); struct sk_buff; typedef unsigned int nf_hookfn(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)); struct nf_hook_ops { struct list_head list; nf_hookfn *hook; struct module *owner; u_int8_t pf; unsigned int hooknum; int priority; }; struct nf_sockopt_ops { struct list_head list; u_int8_t pf; int set_optmin; int set_optmax; int (*set)(struct sock *sk, int optval, void __attribute__((noderef, address_space(1))) *user, unsigned int len); int (*compat_set)(struct sock *sk, int optval, void __attribute__((noderef, address_space(1))) *user, unsigned int len); int get_optmin; int get_optmax; int (*get)(struct sock *sk, int optval, void __attribute__((noderef, address_space(1))) *user, int *len); int (*compat_get)(struct sock *sk, int optval, void __attribute__((noderef, address_space(1))) *user, int *len); struct module *owner; }; int nf_register_hook(struct nf_hook_ops *reg); void nf_unregister_hook(struct nf_hook_ops *reg); int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n); void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n); int nf_register_sockopt(struct nf_sockopt_ops *reg); void nf_unregister_sockopt(struct nf_sockopt_ops *reg); extern struct ctl_path nf_net_netfilter_sysctl_path[]; extern struct ctl_path nf_net_ipv4_netfilter_sysctl_path[]; extern struct list_head nf_hooks[NFPROTO_NUMPROTO][8]; int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev, int (*okfn)(struct sk_buff *), int thresh); # 162 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev, int (*okfn)(struct sk_buff *), int thresh) { return nf_hook_slow(pf, hook, skb, indev, outdev, okfn, thresh); } static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev, int (*okfn)(struct sk_buff *)) { return nf_hook_thresh(pf, hook, skb, indev, outdev, okfn, (-((int)(~0U>>1)) - 1)); } # 199 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" static inline int NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *in, struct net_device *out, int (*okfn)(struct sk_buff *), int thresh) { int ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, thresh); if (ret == 1) ret = okfn(skb); return ret; } static inline int NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *in, struct net_device *out, int (*okfn)(struct sk_buff *), bool cond) { int ret; if (!cond || (ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, (-((int)(~0U>>1)) - 1)) == 1)) ret = okfn(skb); return ret; } static inline int NF_HOOK(uint8_t pf, unsigned int hook, struct sk_buff *skb, struct net_device *in, struct net_device *out, int (*okfn)(struct sk_buff *)) { return NF_HOOK_THRESH(pf, hook, skb, in, out, okfn, (-((int)(~0U>>1)) - 1)); } int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __attribute__((noderef, address_space(1))) *opt, unsigned int len); int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __attribute__((noderef, address_space(1))) *opt, int *len); int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __attribute__((noderef, address_space(1))) *opt, unsigned int len); int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __attribute__((noderef, address_space(1))) *opt, int *len); extern int skb_make_writable(struct sk_buff *skb, unsigned int writable_len); struct flowi; struct nf_queue_entry; struct nf_afinfo { unsigned short family; __sum16 (*checksum)(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, u_int8_t protocol); __sum16 (*checksum_partial)(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, unsigned int len, u_int8_t protocol); int (*route)(struct dst_entry **dst, struct flowi *fl); void (*saveroute)(const struct sk_buff *skb, struct nf_queue_entry *entry); int (*reroute)(struct sk_buff *skb, const struct nf_queue_entry *entry); int route_key_size; }; extern const struct nf_afinfo *nf_afinfo[NFPROTO_NUMPROTO]; static inline const struct nf_afinfo *nf_get_afinfo(unsigned short family) { return ({ typeof(nf_afinfo[family]) _________p1 = (*(volatile typeof(nf_afinfo[family]) *)&(nf_afinfo[family])); do { } while (0); (_________p1); }); } static inline __sum16 nf_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, u_int8_t protocol, unsigned short family) { const struct nf_afinfo *afinfo; __sum16 csum = 0; rcu_read_lock(); afinfo = nf_get_afinfo(family); if (afinfo) csum = afinfo->checksum(skb, hook, dataoff, protocol); rcu_read_unlock(); return csum; } static inline __sum16 nf_checksum_partial(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, unsigned int len, u_int8_t protocol, unsigned short family) { const struct nf_afinfo *afinfo; __sum16 csum = 0; rcu_read_lock(); afinfo = nf_get_afinfo(family); if (afinfo) csum = afinfo->checksum_partial(skb, hook, dataoff, len, protocol); rcu_read_unlock(); return csum; } extern int nf_register_afinfo(const struct nf_afinfo *afinfo); extern void nf_unregister_afinfo(const struct nf_afinfo *afinfo); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/flow.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/flow.h" struct flowi { int oif; int iif; __u32 mark; union { struct { __be32 daddr; __be32 saddr; __u8 tos; __u8 scope; } ip4_u; struct { struct in6_addr daddr; struct in6_addr saddr; __be32 flowlabel; } ip6_u; struct { __le16 daddr; __le16 saddr; __u8 scope; } dn_u; } nl_u; # 49 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/flow.h" __u8 proto; __u8 flags; union { struct { __be16 sport; __be16 dport; } ports; struct { __u8 type; __u8 code; } icmpt; struct { __le16 sport; __le16 dport; } dnports; __be32 spi; struct { __u8 type; } mht; } uli_u; __u32 secid; } __attribute__((__aligned__(64/8))); struct net; struct sock; typedef int (*flow_resolve_t)(struct net *net, struct flowi *key, u16 family, u8 dir, void **objp, atomic_t **obj_refp); extern void *flow_cache_lookup(struct net *net, struct flowi *key, u16 family, u8 dir, flow_resolve_t resolver); extern void flow_cache_flush(void); extern atomic_t flow_cache_genid; static inline int flow_cache_uli_match(struct flowi *fl1, struct flowi *fl2) { return (fl1->proto == fl2->proto && !memcmp(&fl1->uli_u, &fl2->uli_u, sizeof(fl1->uli_u))); } # 310 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" 2 extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *); static inline void nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family) { # 326 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" } # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/limits.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 35 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct files_stat_struct { int nr_files; int nr_free_files; int max_files; }; struct inodes_stat_t { int nr_inodes; int nr_unused; int dummy[5]; }; # 377 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kdev_t.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/kdev_t.h" static inline int old_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < 256 && ((unsigned int) ((dev) & ((1U << 20) - 1))) < 256; } static inline u16 old_encode_dev(dev_t dev) { return (((unsigned int) ((dev) >> 20)) << 8) | ((unsigned int) ((dev) & ((1U << 20) - 1))); } static inline dev_t old_decode_dev(u16 val) { return ((((val >> 8) & 255) << 20) | (val & 255)); } static inline int new_valid_dev(dev_t dev) { return 1; } static inline 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 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 int huge_valid_dev(dev_t dev) { return 1; } static inline u64 huge_encode_dev(dev_t dev) { return new_encode_dev(dev); } static inline dev_t huge_decode_dev(u64 dev) { return new_decode_dev(dev); } static inline int sysv_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < (1<<14) && ((unsigned int) ((dev) & ((1U << 20) - 1))) < (1<<18); } static inline u32 sysv_encode_dev(dev_t dev) { return ((unsigned int) ((dev) & ((1U << 20) - 1))) | (((unsigned int) ((dev) >> 20)) << 18); } static inline unsigned sysv_major(u32 dev) { return (dev >> 18) & 0x3fff; } static inline unsigned sysv_minor(u32 dev) { return dev & 0x3ffff; } # 378 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" struct nameidata; struct path; struct vfsmount; # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" struct qstr { unsigned int hash; unsigned int 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 unsigned long partial_name_hash(unsigned long c, unsigned long prevhash) { return (prevhash + (c << 4) + (c >> 4)) * 11; } static inline unsigned long end_name_hash(unsigned long hash) { return (unsigned int) hash; } static inline unsigned int full_name_hash(const unsigned char *name, unsigned int len) { unsigned long hash = 0; while (len--) hash = partial_name_hash(*name++, hash); return end_name_hash(hash); } # 89 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" struct dentry { atomic_t d_count; unsigned int d_flags; spinlock_t d_lock; int d_mounted; struct inode *d_inode; struct hlist_node d_hash; struct dentry *d_parent; struct qstr d_name; struct list_head d_lru; union { struct list_head d_child; struct rcu_head d_rcu; } d_u; struct list_head d_subdirs; struct list_head d_alias; unsigned long d_time; const struct dentry_operations *d_op; struct super_block *d_sb; void *d_fsdata; unsigned char d_iname[32]; }; enum dentry_d_lock_class { DENTRY_D_LOCK_NORMAL, DENTRY_D_LOCK_NESTED }; struct dentry_operations { int (*d_revalidate)(struct dentry *, struct nameidata *); int (*d_hash) (struct dentry *, struct qstr *); int (*d_compare) (struct dentry *, struct qstr *, struct qstr *); int (*d_delete)(struct dentry *); void (*d_release)(struct dentry *); void (*d_iput)(struct dentry *, struct inode *); char *(*d_dname)(struct dentry *, char *, int); }; # 189 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" extern spinlock_t dcache_lock; extern seqlock_t rename_lock; # 208 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" static inline void __d_drop(struct dentry *dentry) { if (!(dentry->d_flags & 0x0010)) { dentry->d_flags |= 0x0010; hlist_del_rcu(&dentry->d_hash); } } static inline void d_drop(struct dentry *dentry) { spin_lock(&dcache_lock); spin_lock(&dentry->d_lock); __d_drop(dentry); spin_unlock(&dentry->d_lock); spin_unlock(&dcache_lock); } static inline 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_delete(struct dentry *); extern struct dentry * d_alloc(struct dentry *, 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_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_alloc_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 *); # 274 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" static inline void d_add(struct dentry *entry, struct inode *inode) { d_instantiate(entry, inode); d_rehash(entry); } # 288 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" static inline 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 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_lookup(struct dentry *, struct qstr *); extern struct dentry * d_hash_and_lookup(struct dentry *, struct qstr *); 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 *path, struct path *root, char *, int); extern char *d_path(const struct path *, char *, int); extern char *dentry_path(struct dentry *, char *, int); # 333 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" static inline struct dentry *dget(struct dentry *dentry) { if (dentry) { do { if (__builtin_expect(!!(!atomic_read(&dentry->d_count)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h"), "i" (336), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); atomic_inc(&dentry->d_count); } return dentry; } extern struct dentry * dget_locked(struct dentry *); # 351 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dcache.h" static inline int d_unhashed(struct dentry *dentry) { return (dentry->d_flags & 0x0010); } static inline int d_unlinked(struct dentry *dentry) { return d_unhashed(dentry) && !((dentry) == (dentry)->d_parent); } static inline struct dentry *dget_parent(struct dentry *dentry) { struct dentry *ret; spin_lock(&dentry->d_lock); ret = dget(dentry->d_parent); spin_unlock(&dentry->d_lock); return ret; } extern void dput(struct dentry *); static inline int d_mountpoint(struct dentry *dentry) { return dentry->d_mounted; } extern struct vfsmount *lookup_mnt(struct path *); extern struct dentry *lookup_create(struct nameidata *nd, int is_dir); extern int sysctl_vfs_cache_pressure; # 379 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/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 *); # 380 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/radix-tree.h" 1 # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/radix-tree.h" static inline void *radix_tree_ptr_to_indirect(void *ptr) { return (void *)((unsigned long)ptr | 1); } static inline void *radix_tree_indirect_to_ptr(void *ptr) { return (void *)((unsigned long)ptr & ~1); } static inline 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; }; # 137 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/radix-tree.h" static inline void *radix_tree_deref_slot(void **pslot) { void *ret = ({ typeof(*pslot) _________p1 = (*(volatile typeof(*pslot) *)&(*pslot)); do { } while (0); (_________p1); }); if (__builtin_expect(!!(radix_tree_is_indirect_ptr(ret)), 0)) ret = ((void *)-1UL); return ret; } # 152 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/radix-tree.h" static inline void radix_tree_replace_slot(void **pslot, void *item) { do { if (__builtin_expect(!!(radix_tree_is_indirect_ptr(item)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/radix-tree.h"), "i" (154), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); ({ if (!__builtin_constant_p(item) || ((item) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (*pslot) = (item); }); } 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 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); int radix_tree_tagged(struct radix_tree_root *root, unsigned int tag); static inline void radix_tree_preload_end(void) { do { do { __asm__ __volatile__("": : :"memory"); do { (current_thread_info()->preempt_count) -= (1); } while (0); } while (0); __asm__ __volatile__("": : :"memory"); do { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0)) preempt_schedule(); } while (0); } while (0); } # 385 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pid.h" 1 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; # 50 "/lnx/src/MM/mmotm-2010-0323-1534/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 rcu_head rcu; struct upid numbers[1]; }; extern struct pid init_struct_pid; struct pid_link { struct hlist_node node; struct pid *pid; }; static inline struct pid *get_pid(struct pid *pid) { if (pid) atomic_inc(&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 "/lnx/src/MM/mmotm-2010-0323-1534/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, int last); extern struct pid *alloc_pid(struct pid_namespace *ns); extern void free_pid(struct pid *pid); # 135 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pid.h" static inline 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; } # 154 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/pid.h" static inline 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); # 388 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/semaphore.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/semaphore.h" struct semaphore { spinlock_t lock; unsigned int count; struct list_head wait_list; }; # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/semaphore.h" static inline void sema_init(struct semaphore *sem, int val) { static struct lock_class_key __key; *sem = (struct semaphore) { .lock = (spinlock_t ) { { .rlock = { .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 down_interruptible(struct semaphore *sem); extern int down_killable(struct semaphore *sem); extern int down_trylock(struct semaphore *sem); extern int down_timeout(struct semaphore *sem, long jiffies); extern void up(struct semaphore *sem); # 391 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fiemap.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/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]; }; # 392 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 struct export_operations; struct hd_geometry; struct iovec; struct nameidata; struct kiocb; struct pipe_inode_info; struct poll_table_struct; struct kstatfs; struct vm_area_struct; struct vfsmount; struct cred; 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 int get_max_files(void); extern int sysctl_nr_open; extern struct inodes_stat_t inodes_stat; extern int leases_enable, lease_break_time; 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); # 455 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct iattr { unsigned int ia_valid; umode_t ia_mode; uid_t ia_uid; gid_t ia_gid; loff_t ia_size; struct timespec ia_atime; struct timespec ia_mtime; struct timespec ia_ctime; struct file *ia_file; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" 1 # 88 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" enum { QIF_BLIMITS_B = 0, QIF_SPACE_B, QIF_ILIMITS_B, QIF_INODES_B, QIF_BTIME_B, QIF_ITIME_B, }; # 108 "/lnx/src/MM/mmotm-2010-0323-1534/include/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; }; # 151 "/lnx/src/MM/mmotm-2010-0323-1534/include/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, }; # 178 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dqblk_xfs.h" 1 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 137 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; # 179 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dqblk_v1.h" 1 # 180 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dqblk_v2.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dqblk_qtree.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/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 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/dqblk_v2.h" 2 # 181 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" 2 typedef __kernel_uid32_t qid_t; typedef long long qsize_t; extern spinlock_t dq_data_lock; # 199 "/lnx/src/MM/mmotm-2010-0323-1534/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; extern void mark_info_dirty(struct super_block *sb, int type); static inline int info_dirty(struct mem_dqinfo *info) { return (__builtin_constant_p((16)) ? constant_test_bit((16), (&info->dqi_flags)) : variable_test_bit((16), (&info->dqi_flags))); } struct dqstats { int lookups; int drops; int reads; int writes; int cache_hits; int allocated_dquots; int free_dquots; int syncs; }; extern struct dqstats dqstats; # 266 "/lnx/src/MM/mmotm-2010-0323-1534/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; unsigned int dq_id; loff_t dq_off; unsigned long dq_flags; short dq_type; 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 quotactl_ops { int (*quota_on)(struct super_block *, int, int, char *, int); int (*quota_off)(struct super_block *, int, int); int (*quota_sync)(struct super_block *, int, 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 *, int, qid_t, struct if_dqblk *); int (*set_dqblk)(struct super_block *, int, qid_t, struct if_dqblk *); int (*get_xstate)(struct super_block *, struct fs_quota_stat *); int (*set_xstate)(struct super_block *, unsigned int, int); int (*get_xquota)(struct super_block *, int, qid_t, struct fs_disk_quota *); int (*set_xquota)(struct super_block *, int, qid_t, struct fs_disk_quota *); }; 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 }; # 355 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/quota.h" static inline unsigned int dquot_state_flag(unsigned int flags, int type) { return flags << _DQUOT_STATE_FLAGS * type; } static inline 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(short type, unsigned int id, dev_t dev, const char warntype); # 376 "/lnx/src/MM/mmotm-2010-0323-1534/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; }; # 477 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 2 # 504 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" enum positive_aop_returns { AOP_WRITEPAGE_ACTIVATE = 0x80000, AOP_TRUNCATED_PAGE = 0x80001, }; # 518 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct page; struct address_space; struct writeback_control; struct bdi_writeback; 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 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 size_t iov_iter_count(struct iov_iter *i) { return i->count; } # 564 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" typedef struct { size_t written; size_t count; union { char __attribute__((noderef, address_space(1))) *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 *); void (*sync_page)(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); 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 *); 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 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 prio_tree_root i_mmap; struct list_head i_mmap_nonlinear; spinlock_t i_mmap_lock; unsigned int truncate_count; 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; struct address_space *assoc_mapping; } __attribute__((aligned(sizeof(long)))); struct block_device { dev_t bd_dev; struct inode * bd_inode; struct super_block * bd_super; int bd_openers; struct mutex bd_mutex; struct list_head bd_inodes; void * bd_holder; int bd_holders; struct list_head bd_holder_list; 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 list_head bd_list; unsigned long bd_private; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; }; # 693 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" int mapping_tagged(struct address_space *mapping, int tag); static inline int mapping_mapped(struct address_space *mapping) { return !prio_tree_empty(&mapping->i_mmap) || !list_empty(&mapping->i_mmap_nonlinear); } static inline int mapping_writably_mapped(struct address_space *mapping) { return mapping->i_mmap_writable != 0; } # 726 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct posix_acl; struct inode { struct hlist_node i_hash; struct list_head i_list; struct list_head i_sb_list; struct list_head i_dentry; unsigned long i_ino; atomic_t i_count; unsigned int i_nlink; uid_t i_uid; gid_t i_gid; dev_t i_rdev; unsigned int i_blkbits; u64 i_version; loff_t i_size; struct timespec i_atime; struct timespec i_mtime; struct timespec i_ctime; blkcnt_t i_blocks; unsigned short i_bytes; umode_t i_mode; spinlock_t i_lock; struct mutex i_mutex; struct rw_semaphore i_alloc_sem; const struct inode_operations *i_op; const struct file_operations *i_fop; struct super_block *i_sb; struct file_lock *i_flock; struct address_space *i_mapping; 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; unsigned long i_state; unsigned long dirtied_when; unsigned int i_flags; atomic_t i_writecount; void *i_security; struct posix_acl *i_acl; struct posix_acl *i_default_acl; void *i_private; }; # 805 "/lnx/src/MM/mmotm-2010-0323-1534/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 }; # 824 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline loff_t i_size_read(const struct inode *inode) { # 843 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" return inode->i_size; } static inline void i_size_write(struct inode *inode, loff_t i_size) { # 863 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" inode->i_size = i_size; } static inline unsigned iminor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) & ((1U << 20) - 1))); } static inline 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; uid_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 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 rcu_head fu_rcuhead; } f_u; struct path f_path; const struct file_operations *f_op; spinlock_t f_lock; 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 address_space *f_mapping; }; extern spinlock_t files_lock; # 991 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void file_take_write(struct file *filp) {} static inline void file_release_write(struct file *filp) {} static inline void file_reset_write(struct file *filp) {} static inline void file_check_state(struct file *filp) {} static inline int file_check_writeable(struct file *filp) { return 0; } # 1032 "/lnx/src/MM/mmotm-2010-0323-1534/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 (*fl_compare_owner)(struct file_lock *, struct file_lock *); void (*fl_notify)(struct file_lock *); int (*fl_grant)(struct file_lock *, struct file_lock *, int); void (*fl_copy_lock)(struct file_lock *, struct file_lock *); void (*fl_release_private)(struct file_lock *); void (*fl_break)(struct file_lock *); int (*fl_mylease)(struct file_lock *, struct file_lock *); int (*fl_change)(struct file_lock **, int); }; struct lock_manager { struct list_head list; }; void locks_start_grace(struct lock_manager *); void locks_end_grace(struct lock_manager *); int locks_in_grace(void); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs_fs_i.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs.h" 1 # 40 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs.h" enum nfs_stat { NFS_OK = 0, NFSERR_PERM = 1, NFSERR_NOENT = 2, NFSERR_IO = 5, NFSERR_NXIO = 6, NFSERR_EAGAIN = 11, NFSERR_ACCES = 13, NFSERR_EXIST = 17, NFSERR_XDEV = 18, NFSERR_NODEV = 19, NFSERR_NOTDIR = 20, NFSERR_ISDIR = 21, NFSERR_INVAL = 22, NFSERR_FBIG = 27, NFSERR_NOSPC = 28, NFSERR_ROFS = 30, NFSERR_MLINK = 31, NFSERR_OPNOTSUPP = 45, NFSERR_NAMETOOLONG = 63, NFSERR_NOTEMPTY = 66, NFSERR_DQUOT = 69, NFSERR_STALE = 70, NFSERR_REMOTE = 71, NFSERR_WFLUSH = 99, NFSERR_BADHANDLE = 10001, NFSERR_NOT_SYNC = 10002, NFSERR_BAD_COOKIE = 10003, NFSERR_NOTSUPP = 10004, NFSERR_TOOSMALL = 10005, NFSERR_SERVERFAULT = 10006, NFSERR_BADTYPE = 10007, NFSERR_JUKEBOX = 10008, NFSERR_SAME = 10009, NFSERR_DENIED = 10010, NFSERR_EXPIRED = 10011, NFSERR_LOCKED = 10012, NFSERR_GRACE = 10013, NFSERR_FHEXPIRED = 10014, NFSERR_SHARE_DENIED = 10015, NFSERR_WRONGSEC = 10016, NFSERR_CLID_INUSE = 10017, NFSERR_RESOURCE = 10018, NFSERR_MOVED = 10019, NFSERR_NOFILEHANDLE = 10020, NFSERR_MINOR_VERS_MISMATCH = 10021, NFSERR_STALE_CLIENTID = 10022, NFSERR_STALE_STATEID = 10023, NFSERR_OLD_STATEID = 10024, NFSERR_BAD_STATEID = 10025, NFSERR_BAD_SEQID = 10026, NFSERR_NOT_SAME = 10027, NFSERR_LOCK_RANGE = 10028, NFSERR_SYMLINK = 10029, NFSERR_RESTOREFH = 10030, NFSERR_LEASE_MOVED = 10031, NFSERR_ATTRNOTSUPP = 10032, NFSERR_NO_GRACE = 10033, NFSERR_RECLAIM_BAD = 10034, NFSERR_RECLAIM_CONFLICT = 10035, NFSERR_BAD_XDR = 10036, NFSERR_LOCKS_HELD = 10037, NFSERR_OPENMODE = 10038, NFSERR_BADOWNER = 10039, NFSERR_BADCHAR = 10040, NFSERR_BADNAME = 10041, NFSERR_BAD_RANGE = 10042, NFSERR_LOCK_NOTSUPP = 10043, NFSERR_OP_ILLEGAL = 10044, NFSERR_DEADLOCK = 10045, NFSERR_FILE_OPEN = 10046, NFSERR_ADMIN_REVOKED = 10047, NFSERR_CB_PATH_DOWN = 10048, }; enum nfs_ftype { NFNON = 0, NFREG = 1, NFDIR = 2, NFBLK = 3, NFCHR = 4, NFLNK = 5, NFSOCK = 6, NFBAD = 7, NFFIFO = 8 }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sunrpc/msg_prot.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sunrpc/msg_prot.h" typedef u32 rpc_authflavor_t; enum rpc_auth_flavors { RPC_AUTH_NULL = 0, RPC_AUTH_UNIX = 1, RPC_AUTH_SHORT = 2, RPC_AUTH_DES = 3, RPC_AUTH_KRB = 4, RPC_AUTH_GSS = 6, RPC_AUTH_MAXFLAVOR = 8, RPC_AUTH_GSS_KRB5 = 390003, RPC_AUTH_GSS_KRB5I = 390004, RPC_AUTH_GSS_KRB5P = 390005, RPC_AUTH_GSS_LKEY = 390006, RPC_AUTH_GSS_LKEYI = 390007, RPC_AUTH_GSS_LKEYP = 390008, RPC_AUTH_GSS_SPKM = 390009, RPC_AUTH_GSS_SPKMI = 390010, RPC_AUTH_GSS_SPKMP = 390011, }; enum rpc_msg_type { RPC_CALL = 0, RPC_REPLY = 1 }; enum rpc_reply_stat { RPC_MSG_ACCEPTED = 0, RPC_MSG_DENIED = 1 }; enum rpc_accept_stat { RPC_SUCCESS = 0, RPC_PROG_UNAVAIL = 1, RPC_PROG_MISMATCH = 2, RPC_PROC_UNAVAIL = 3, RPC_GARBAGE_ARGS = 4, RPC_SYSTEM_ERR = 5, RPC_DROP_REPLY = 60000, }; enum rpc_reject_stat { RPC_MISMATCH = 0, RPC_AUTH_ERROR = 1 }; enum rpc_auth_stat { RPC_AUTH_OK = 0, RPC_AUTH_BADCRED = 1, RPC_AUTH_REJECTEDCRED = 2, RPC_AUTH_BADVERF = 3, RPC_AUTH_REJECTEDVERF = 4, RPC_AUTH_TOOWEAK = 5, RPCSEC_GSS_CREDPROBLEM = 13, RPCSEC_GSS_CTXPROBLEM = 14 }; # 102 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sunrpc/msg_prot.h" typedef __be32 rpc_fraghdr; # 193 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sunrpc/msg_prot.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/inet.h" 1 # 54 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/inet.h" extern __be32 in_aton(const char *str); extern int in4_pton(const char *src, int srclen, u8 *dst, int delim, const char **end); extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const char **end); # 194 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sunrpc/msg_prot.h" 2 # 131 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs.h" 2 struct nfs_fh { unsigned short size; unsigned char data[128]; }; static inline int nfs_compare_fh(const struct nfs_fh *a, const struct nfs_fh *b) { return a->size != b->size || memcmp(a->data, b->data, a->size) != 0; } static inline void nfs_copy_fh(struct nfs_fh *target, const struct nfs_fh *source) { target->size = source->size; memcpy(target->data, source->data, source->size); } # 165 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs.h" enum nfs3_stable_how { NFS_UNSTABLE = 0, NFS_DATA_SYNC = 1, NFS_FILE_SYNC = 2 }; # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/nfs_fs_i.h" 2 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; }; # 1060 "/lnx/src/MM/mmotm-2010-0323-1534/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 char 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; 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; }; # 1099 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" extern void send_sigio(struct fown_struct *fown, int fd, int band); extern int fcntl_getlk(struct file *, struct flock __attribute__((noderef, address_space(1))) *); extern int fcntl_setlk(unsigned int, struct file *, unsigned int, struct flock __attribute__((noderef, address_space(1))) *); extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg); extern int fcntl_getlease(struct file *filp); extern void locks_init_lock(struct file_lock *); 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); # 1282 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct fasync_struct { int magic; int fa_fd; struct fasync_struct *fa_next; struct file *fa_file; }; extern int fasync_helper(int, struct file *, int, struct fasync_struct **); extern void kill_fasync(struct fasync_struct **, int, int); 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); # 1314 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" extern struct list_head super_blocks; extern spinlock_t sb_lock; struct super_block { struct list_head s_list; dev_t s_dev; unsigned char s_dirt; 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; struct mutex s_lock; int s_count; int s_need_sync; atomic_t s_active; void *s_security; struct xattr_handler **s_xattr; struct list_head s_inodes; struct hlist_head s_anon; struct list_head s_files; struct list_head s_dentry_lru; int s_nr_dentry_unused; struct block_device *s_bdev; struct backing_dev_info *s_bdi; struct mtd_info *s_mtd; struct list_head s_instances; struct quota_info s_dquot; int s_frozen; wait_queue_head_t s_wait_unfrozen; char s_id[32]; void *s_fs_info; fmode_t s_mode; u32 s_time_gran; struct mutex s_vfs_rename_mutex; char *s_subtype; char *s_options; }; extern struct timespec current_fs_time(struct super_block *sb); enum { SB_UNFROZEN = 0, SB_FREEZE_WRITE = 1, SB_FREEZE_TRANS = 2, }; # 1410 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" extern void lock_super(struct super_block *); extern void unlock_super(struct super_block *); extern int vfs_create(struct inode *, struct dentry *, int, struct nameidata *); extern int vfs_mkdir(struct inode *, struct dentry *, int); extern int vfs_mknod(struct inode *, struct dentry *, int, 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 int file_permission(struct file *, int); 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); # 1471 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); struct block_device_operations; # 1485 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __attribute__((noderef, address_space(1))) *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __attribute__((noderef, address_space(1))) *, 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 *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); 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 *, struct dentry *, 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 **); }; struct inode_operations { int (*create) (struct inode *,struct dentry *,int, struct nameidata *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); 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 *,int); int (*rmdir) (struct inode *,struct dentry *); int (*mknod) (struct inode *,struct dentry *,int,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *); int (*readlink) (struct dentry *, char __attribute__((noderef, address_space(1))) *,int); void * (*follow_link) (struct dentry *, struct nameidata *); void (*put_link) (struct dentry *, struct nameidata *, void *); void (*truncate) (struct inode *); int (*permission) (struct inode *, int); int (*check_acl)(struct inode *, int); 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 *); void (*truncate_range)(struct inode *, loff_t, loff_t); long (*fallocate)(struct inode *inode, int mode, loff_t offset, loff_t len); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); }; struct seq_file; ssize_t rw_copy_check_uvector(int type, const struct iovec __attribute__((noderef, address_space(1))) * 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 __attribute__((noderef, address_space(1))) *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char __attribute__((noderef, address_space(1))) *, size_t, loff_t *); extern ssize_t vfs_readv(struct file *, const struct iovec __attribute__((noderef, address_space(1))) *, unsigned long, loff_t *); extern ssize_t vfs_writev(struct file *, const struct iovec __attribute__((noderef, address_space(1))) *, 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 (*write_inode) (struct inode *, struct writeback_control *wbc); void (*drop_inode) (struct inode *); void (*delete_inode) (struct inode *); void (*put_super) (struct super_block *); void (*write_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 (*clear_inode) (struct inode *); void (*umount_begin) (struct super_block *); int (*writeback_inodes)(struct super_block *sb, struct bdi_writeback *wb, struct writeback_control *wbc); int (*show_options)(struct seq_file *, struct vfsmount *); int (*show_stats)(struct seq_file *, struct vfsmount *); 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); }; # 1649 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" extern void __mark_inode_dirty(struct inode *, int); static inline void mark_inode_dirty(struct inode *inode) { __mark_inode_dirty(inode, (1 | 2 | 4)); } static inline void mark_inode_dirty_sync(struct inode *inode) { __mark_inode_dirty(inode, 1); } # 1668 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void inc_nlink(struct inode *inode) { inode->i_nlink++; } static inline void inode_inc_link_count(struct inode *inode) { inc_nlink(inode); mark_inode_dirty(inode); } # 1690 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void drop_nlink(struct inode *inode) { inode->i_nlink--; } # 1703 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void clear_nlink(struct inode *inode) { inode->i_nlink = 0; } static inline void inode_dec_link_count(struct inode *inode) { drop_nlink(inode); mark_inode_dirty(inode); } # 1722 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void inode_inc_iversion(struct inode *inode) { spin_lock(&inode->i_lock); inode->i_version++; spin_unlock(&inode->i_lock); } extern void touch_atime(struct vfsmount *mnt, struct dentry *dentry); static inline void file_accessed(struct file *file) { if (!(file->f_flags & 01000000)) touch_atime(file->f_path.mnt, file->f_path.dentry); } int sync_inode(struct inode *inode, struct writeback_control *wbc); struct file_system_type { const char *name; int fs_flags; int (*get_sb) (struct file_system_type *, int, const char *, void *, struct vfsmount *); void (*kill_sb) (struct super_block *); struct module *owner; struct file_system_type * next; struct list_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 i_lock_key; struct lock_class_key i_mutex_key; struct lock_class_key i_mutex_dir_key; struct lock_class_key i_alloc_sem_key; }; extern int get_sb_ns(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt); extern int get_sb_bdev(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt); extern int get_sb_single(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt); extern int get_sb_nodev(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt); 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); struct super_block *sget(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), void *data); extern int get_sb_pseudo(struct file_system_type *, char *, const struct super_operations *ops, unsigned long, struct vfsmount *mnt); extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); int __put_super_and_need_restart(struct super_block *sb); void put_super(struct super_block *sb); 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 int may_umount_tree(struct vfsmount *); extern int may_umount(struct vfsmount *); extern long do_mount(char *, char *, 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 dentry *, struct kstatfs *); 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 int __mandatory_lock(struct inode *ino) { return (ino->i_mode & (0002000 | 00010)) == 0002000; } static inline int mandatory_lock(struct inode *ino) { return ((ino)->i_sb->s_flags & (64)) && __mandatory_lock(ino); } static inline int locks_verify_locked(struct inode *inode) { if (mandatory_lock(inode)) return locks_mandatory_locked(inode); return 0; } static inline 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 int break_lease(struct inode *inode, unsigned int mode) { if (inode->i_flock) return __break_lease(inode, mode); return 0; } # 1914 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" 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 __attribute__((noderef, address_space(1))) *filename, int flags, int mode); extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); extern char * getname(const char __attribute__((noderef, address_space(1))) *); extern int ioctl_preallocate(struct file *filp, void __attribute__((noderef, address_space(1))) *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 putname(const char *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 struct block_device *open_by_devnum(dev_t, fmode_t); extern void invalidate_bdev(struct block_device *); extern int sync_blockdev(struct block_device *bdev); 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 *); # 1975 "/lnx/src/MM/mmotm-2010-0323-1534/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 *, fmode_t); extern int blkdev_put(struct block_device *, fmode_t); extern int bd_claim(struct block_device *, void *); extern void bd_release(struct block_device *); extern int bd_claim_by_disk(struct block_device *, void *, struct gendisk *); extern void bd_release_from_disk(struct block_device *, struct gendisk *); # 1999 "/lnx/src/MM/mmotm-2010-0323-1534/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 int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) { return __register_chrdev(major, 0, 256, name, fops); } static inline 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 struct block_device *open_bdev_exclusive(const char *, fmode_t, void *); extern void close_bdev_exclusive(struct block_device *, fmode_t); 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; extern int fs_may_remount_ro(struct super_block *); # 2060 "/lnx/src/MM/mmotm-2010-0323-1534/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 *); extern int invalidate_partition(struct gendisk *, int); extern int invalidate_inodes(struct super_block *); unsigned long invalidate_mapping_pages(struct address_space *mapping, unsigned long start, unsigned long end); static inline 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 void writeback_skip_sb_inodes(struct super_block *sb, struct bdi_writeback *wb); extern void writeback_inodes_wbc(struct writeback_control *wbc); extern int generic_writeback_sb_inodes(struct super_block *sb, struct bdi_writeback *wb, struct writeback_control *wbc); 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, struct dentry *dentry, loff_t start, loff_t end, int datasync); extern int vfs_fsync(struct file *file, struct dentry *dentry, int datasync); extern int generic_write_sync(struct file *file, loff_t pos, loff_t count); extern void sync_supers(void); 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, int (*check_acl)(struct inode *, int)); static inline bool execute_ok(struct inode *inode) { return (inode->i_mode & (00100|00010|00001)) || (((inode->i_mode) & 00170000) == 0040000); } extern int get_write_access(struct inode *); extern int deny_write_access(struct file *); static inline void put_write_access(struct inode * inode) { atomic_dec(&inode->i_writecount); } static inline void allow_write_access(struct file *file) { if (file) atomic_inc(&file->f_path.dentry->d_inode->i_writecount); } extern int do_pipe_flags(int *, int); extern struct file *create_read_pipe(struct file *f, int flags); extern struct file *create_write_pipe(int flags); extern void free_write_pipe(struct file *); extern struct file *do_filp_open(int dfd, const char *pathname, int open_flag, int mode, int acc_mode); extern int may_open(struct path *, 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 origin); extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin); extern int inode_init_always(struct super_block *, struct inode *); extern void inode_init_once(struct inode *); extern void inode_add_to_lists(struct super_block *, struct 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 void generic_delete_inode(struct inode *inode); extern void generic_drop_inode(struct inode *inode); extern int generic_detach_inode(struct inode *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 *); extern void unlock_new_inode(struct inode *); 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 void __destroy_inode(struct inode *); extern struct inode *new_inode(struct super_block *); extern int should_remove_suid(struct dentry *); extern int file_remove_suid(struct file *); extern void __insert_inode_hash(struct inode *, unsigned long hashval); extern void remove_inode_hash(struct inode *); static inline void insert_inode_hash(struct inode *inode) { __insert_inode_hash(inode, inode->i_ino); } extern void file_move(struct file *f, struct list_head *list); extern void file_kill(struct file *f); struct bio; 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 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 __attribute__((noderef, address_space(1))) *buf, size_t len, loff_t *ppos); extern ssize_t do_sync_write(struct file *filp, const char __attribute__((noderef, address_space(1))) *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 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 no_llseek(struct file *file, loff_t offset, int origin); extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin); extern loff_t generic_file_llseek_unlocked(struct file *file, loff_t offset, int origin); extern int generic_file_open(struct inode * inode, struct file * filp); extern int nonseekable_open(struct inode * inode, struct file * filp); # 2255 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline int xip_truncate_page(struct address_space *mapping, loff_t from) { return 0; } 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, int lock_type); enum { DIO_LOCKING = 0x01, DIO_SKIP_HOLES = 0x02, }; static inline 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) { return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset, nr_segs, get_block, end_io, DIO_LOCKING | DIO_SKIP_HOLES); } static inline ssize_t blockdev_direct_IO_no_locking(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) { return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset, nr_segs, get_block, end_io, 0); } extern const struct file_operations generic_ro_fops; extern int vfs_readlink(struct dentry *, char __attribute__((noderef, address_space(1))) *, int, const char *); extern int vfs_follow_link(struct nameidata *, const char *); extern int page_readlink(struct dentry *, char __attribute__((noderef, address_space(1))) *, 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 __attribute__((noderef, address_space(1))) *, 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(char __attribute__((noderef, address_space(1))) *, struct kstat *); extern int vfs_lstat(char __attribute__((noderef, address_space(1))) *, struct kstat *); extern int vfs_fstat(unsigned int, struct kstat *); extern int vfs_fstatat(int , char __attribute__((noderef, address_space(1))) *, 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, u64 start, u64 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_active_super(struct block_device *bdev); extern struct super_block *user_get_super(dev_t); extern void drop_super(struct super_block *sb); 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_getattr(struct vfsmount *, struct dentry *, struct kstat *); extern int simple_statfs(struct dentry *, struct kstatfs *); 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 simple_sync_file(struct file *, struct dentry *, 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 *, struct nameidata *); extern ssize_t generic_read_dir(struct file *, char __attribute__((noderef, address_space(1))) *, 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 *, int, 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 __attribute__((noderef, address_space(1))) *to, size_t count, loff_t *ppos, const void *from, size_t available); extern int simple_fsync(struct file *, struct dentry *, int); # 2383 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" extern int inode_change_ok(const struct inode *, struct iattr *); extern int inode_newsize_ok(const struct inode *, loff_t offset); extern int inode_setattr(struct inode *, struct iattr *); extern void file_update_time(struct file *file); extern int generic_show_options(struct seq_file *m, struct vfsmount *mnt); extern void save_mount_options(struct super_block *sb, char *options); extern void replace_mount_options(struct super_block *sb, char *options); static inline 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 __attribute__((noderef, address_space(1))) *buf, size_t size); ssize_t simple_transaction_read(struct file *file, char __attribute__((noderef, address_space(1))) *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); # 2454 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fs.h" static inline void __attribute__((format(printf, 1, 2))) __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 __attribute__((noderef, address_space(1))) *buf, size_t len, loff_t *ppos); ssize_t simple_attr_write(struct file *file, const char __attribute__((noderef, address_space(1))) *buf, size_t len, loff_t *ppos); struct ctl_table; int proc_nr_files(struct ctl_table *table, int write, void __attribute__((noderef, address_space(1))) *buffer, size_t *lenp, loff_t *ppos); int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) get_filesystem_list(char *buf); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/magic.h" 1 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" 2 struct net; struct completion; struct mm_struct; # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" enum { PROC_ROOT_INO = 1, }; # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data); typedef int (write_proc_t)(struct file *file, const char __attribute__((noderef, address_space(1))) *buffer, unsigned long count, void *data); struct proc_dir_entry { unsigned int low_ino; unsigned short namelen; const char *name; mode_t mode; nlink_t nlink; uid_t uid; gid_t gid; loff_t size; const struct inode_operations *proc_iops; # 69 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" const struct file_operations *proc_fops; struct proc_dir_entry *next, *parent, *subdir; void *data; read_proc_t *read_proc; write_proc_t *write_proc; atomic_t count; int pde_users; spinlock_t pde_unload_lock; struct completion *pde_unload_completion; struct list_head pde_openers; }; enum kcore_type { KCORE_TEXT, KCORE_VMALLOC, KCORE_RAM, KCORE_VMEMMAP, KCORE_OTHER, }; struct kcore_list { struct list_head list; unsigned long addr; size_t size; int type; }; struct vmcore { struct list_head list; unsigned long long paddr; unsigned long long size; loff_t offset; }; extern void proc_root_init(void); void proc_flush_task(struct task_struct *task); extern struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent); struct proc_dir_entry *proc_create_data(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data); extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); struct pid_namespace; extern int pid_ns_prepare_proc(struct pid_namespace *ns); extern void pid_ns_release_proc(struct pid_namespace *ns); struct tty_driver; extern void proc_tty_init(void); extern void proc_tty_register_driver(struct tty_driver *driver); extern void proc_tty_unregister_driver(struct tty_driver *driver); # 146 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" extern struct proc_dir_entry *proc_symlink(const char *, struct proc_dir_entry *, const char *); extern struct proc_dir_entry *proc_mkdir(const char *,struct proc_dir_entry *); extern struct proc_dir_entry *proc_mkdir_mode(const char *name, mode_t mode, struct proc_dir_entry *parent); static inline struct proc_dir_entry *proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops) { return proc_create_data(name, mode, parent, proc_fops, ((void *)0)); } static inline struct proc_dir_entry *create_proc_read_entry(const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void * data) { struct proc_dir_entry *res=create_proc_entry(name,mode,base); if (res) { res->read_proc=read_proc; res->data=data; } return res; } extern struct proc_dir_entry *proc_net_fops_create(struct net *net, const char *name, mode_t mode, const struct file_operations *fops); extern void proc_net_remove(struct net *net, const char *name); extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, struct proc_dir_entry *parent); 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 void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm); # 245 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proc_fs.h" static inline void kclist_add(struct kcore_list *new, void *addr, size_t size, int type) { } union proc_op { int (*proc_get_link)(struct inode *, struct path *); int (*proc_read)(struct task_struct *task, char *page); int (*proc_show)(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task); }; struct ctl_table_header; struct ctl_table; struct proc_inode { struct pid *pid; int fd; union proc_op op; struct proc_dir_entry *pde; struct ctl_table_header *sysctl; struct ctl_table *sysctl_entry; struct inode vfs_inode; }; static inline struct proc_inode *PROC_I(const struct inode *inode) { return ({ const typeof( ((struct proc_inode *)0)->vfs_inode ) *__mptr = (inode); (struct proc_inode *)( (char *)__mptr - __builtin_offsetof(struct proc_inode,vfs_inode) );}); } static inline struct proc_dir_entry *PDE(const struct inode *inode) { return PROC_I(inode)->pde; } static inline struct net *PDE_NET(struct proc_dir_entry *pde) { return pde->parent->data; } struct proc_maps_private { struct pid *pid; struct task_struct *task; struct vm_area_struct *tail_vma; }; # 330 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" 2 extern struct proc_dir_entry *proc_net_netfilter; # 358 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netfilter.h" extern void (*ip_ct_attach)(struct sk_buff *, struct sk_buff *); extern void nf_ct_attach(struct sk_buff *, struct sk_buff *); extern void (*nf_ct_destroy)(struct nf_conntrack *); # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/x_tables.h" 2 struct ebt_table; struct netns_xt { struct list_head tables[NFPROTO_NUMPROTO]; }; # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/conntrack.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list_nulls.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list_nulls.h" struct hlist_nulls_head { struct hlist_nulls_node *first; }; struct hlist_nulls_node { struct hlist_nulls_node *next, **pprev; }; # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/list_nulls.h" static inline int is_a_nulls(const struct hlist_nulls_node *ptr) { return ((unsigned long)ptr & 1); } static inline unsigned long get_nulls_value(const struct hlist_nulls_node *ptr) { return ((unsigned long)ptr) >> 1; } static inline int hlist_nulls_unhashed(const struct hlist_nulls_node *h) { return !h->pprev; } static inline int hlist_nulls_empty(const struct hlist_nulls_head *h) { return is_a_nulls(h->first); } static inline void hlist_nulls_add_head(struct hlist_nulls_node *n, struct hlist_nulls_head *h) { struct hlist_nulls_node *first = h->first; n->next = first; n->pprev = &h->first; h->first = n; if (!is_a_nulls(first)) first->pprev = &n->next; } static inline void __hlist_nulls_del(struct hlist_nulls_node *n) { struct hlist_nulls_node *next = n->next; struct hlist_nulls_node **pprev = n->pprev; *pprev = next; if (!is_a_nulls(next)) next->pprev = pprev; } static inline void hlist_nulls_del(struct hlist_nulls_node *n) { __hlist_nulls_del(n); n->pprev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/conntrack.h" 2 struct ctl_table_header; struct nf_conntrack_ecache; struct netns_ct { atomic_t count; unsigned int expect_count; unsigned int htable_size; struct kmem_cache *nf_conntrack_cachep; struct hlist_nulls_head *hash; struct hlist_head *expect_hash; struct hlist_nulls_head unconfirmed; struct hlist_nulls_head dying; struct ip_conntrack_stat __attribute__((noderef, address_space(3))) *stat; int sysctl_events; unsigned int sysctl_events_retry_timeout; int sysctl_acct; int sysctl_checksum; unsigned int sysctl_log_invalid; struct ctl_table_header *sysctl_header; struct ctl_table_header *acct_sysctl_header; struct ctl_table_header *event_sysctl_header; int hash_vmalloc; int expect_vmalloc; char *slabname; }; # 21 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/xfrm.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" typedef union { __be32 a4; __be32 a6[4]; } xfrm_address_t; struct xfrm_id { xfrm_address_t daddr; __be32 spi; __u8 proto; }; struct xfrm_sec_ctx { __u8 ctx_doi; __u8 ctx_alg; __u16 ctx_len; __u32 ctx_sid; char ctx_str[0]; }; # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" struct xfrm_selector { xfrm_address_t daddr; xfrm_address_t saddr; __be16 dport; __be16 dport_mask; __be16 sport; __be16 sport_mask; __u16 family; __u8 prefixlen_d; __u8 prefixlen_s; __u8 proto; int ifindex; __kernel_uid32_t user; }; struct xfrm_lifetime_cfg { __u64 soft_byte_limit; __u64 hard_byte_limit; __u64 soft_packet_limit; __u64 hard_packet_limit; __u64 soft_add_expires_seconds; __u64 hard_add_expires_seconds; __u64 soft_use_expires_seconds; __u64 hard_use_expires_seconds; }; struct xfrm_lifetime_cur { __u64 bytes; __u64 packets; __u64 add_time; __u64 use_time; }; struct xfrm_replay_state { __u32 oseq; __u32 seq; __u32 bitmap; }; struct xfrm_algo { char alg_name[64]; unsigned int alg_key_len; char alg_key[0]; }; struct xfrm_algo_auth { char alg_name[64]; unsigned int alg_key_len; unsigned int alg_trunc_len; char alg_key[0]; }; struct xfrm_algo_aead { char alg_name[64]; unsigned int alg_key_len; unsigned int alg_icv_len; char alg_key[0]; }; struct xfrm_stats { __u32 replay_window; __u32 replay; __u32 integrity_failed; }; enum { XFRM_POLICY_TYPE_MAIN = 0, XFRM_POLICY_TYPE_SUB = 1, XFRM_POLICY_TYPE_MAX = 2, XFRM_POLICY_TYPE_ANY = 255 }; enum { XFRM_POLICY_IN = 0, XFRM_POLICY_OUT = 1, XFRM_POLICY_FWD = 2, XFRM_POLICY_MASK = 3, XFRM_POLICY_MAX = 3 }; enum { XFRM_SHARE_ANY, XFRM_SHARE_SESSION, XFRM_SHARE_USER, XFRM_SHARE_UNIQUE }; # 143 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" enum { XFRM_MSG_BASE = 0x10, XFRM_MSG_NEWSA = 0x10, XFRM_MSG_DELSA, XFRM_MSG_GETSA, XFRM_MSG_NEWPOLICY, XFRM_MSG_DELPOLICY, XFRM_MSG_GETPOLICY, XFRM_MSG_ALLOCSPI, XFRM_MSG_ACQUIRE, XFRM_MSG_EXPIRE, XFRM_MSG_UPDPOLICY, XFRM_MSG_UPDSA, XFRM_MSG_POLEXPIRE, XFRM_MSG_FLUSHSA, XFRM_MSG_FLUSHPOLICY, XFRM_MSG_NEWAE, XFRM_MSG_GETAE, XFRM_MSG_REPORT, XFRM_MSG_MIGRATE, XFRM_MSG_NEWSADINFO, XFRM_MSG_GETSADINFO, XFRM_MSG_NEWSPDINFO, XFRM_MSG_GETSPDINFO, XFRM_MSG_MAPPING, __XFRM_MSG_MAX }; # 213 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" struct xfrm_user_sec_ctx { __u16 len; __u16 exttype; __u8 ctx_alg; __u8 ctx_doi; __u16 ctx_len; }; struct xfrm_user_tmpl { struct xfrm_id id; __u16 family; xfrm_address_t saddr; __u32 reqid; __u8 mode; __u8 share; __u8 optional; __u32 aalgos; __u32 ealgos; __u32 calgos; }; struct xfrm_encap_tmpl { __u16 encap_type; __be16 encap_sport; __be16 encap_dport; xfrm_address_t encap_oa; }; enum xfrm_ae_ftype_t { XFRM_AE_UNSPEC, XFRM_AE_RTHR=1, XFRM_AE_RVAL=2, XFRM_AE_LVAL=4, XFRM_AE_ETHR=8, XFRM_AE_CR=16, XFRM_AE_CE=32, XFRM_AE_CU=64, __XFRM_AE_MAX }; struct xfrm_userpolicy_type { __u8 type; __u16 reserved1; __u8 reserved2; }; enum xfrm_attr_type_t { XFRMA_UNSPEC, XFRMA_ALG_AUTH, XFRMA_ALG_CRYPT, XFRMA_ALG_COMP, XFRMA_ENCAP, XFRMA_TMPL, XFRMA_SA, XFRMA_POLICY, XFRMA_SEC_CTX, XFRMA_LTIME_VAL, XFRMA_REPLAY_VAL, XFRMA_REPLAY_THRESH, XFRMA_ETIMER_THRESH, XFRMA_SRCADDR, XFRMA_COADDR, XFRMA_LASTUSED, XFRMA_POLICY_TYPE, XFRMA_MIGRATE, XFRMA_ALG_AEAD, XFRMA_KMADDRESS, XFRMA_ALG_AUTH_TRUNC, XFRMA_MARK, __XFRMA_MAX }; struct xfrm_mark { __u32 v; __u32 m; }; enum xfrm_sadattr_type_t { XFRMA_SAD_UNSPEC, XFRMA_SAD_CNT, XFRMA_SAD_HINFO, __XFRMA_SAD_MAX }; struct xfrmu_sadhinfo { __u32 sadhcnt; __u32 sadhmcnt; }; enum xfrm_spdattr_type_t { XFRMA_SPD_UNSPEC, XFRMA_SPD_INFO, XFRMA_SPD_HINFO, __XFRMA_SPD_MAX }; struct xfrmu_spdinfo { __u32 incnt; __u32 outcnt; __u32 fwdcnt; __u32 inscnt; __u32 outscnt; __u32 fwdscnt; }; struct xfrmu_spdhinfo { __u32 spdhcnt; __u32 spdhmcnt; }; struct xfrm_usersa_info { struct xfrm_selector sel; struct xfrm_id id; xfrm_address_t saddr; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; struct xfrm_stats stats; __u32 seq; __u32 reqid; __u16 family; __u8 mode; __u8 replay_window; __u8 flags; }; struct xfrm_usersa_id { xfrm_address_t daddr; __be32 spi; __u16 family; __u8 proto; }; struct xfrm_aevent_id { struct xfrm_usersa_id sa_id; xfrm_address_t saddr; __u32 flags; __u32 reqid; }; struct xfrm_userspi_info { struct xfrm_usersa_info info; __u32 min; __u32 max; }; struct xfrm_userpolicy_info { struct xfrm_selector sel; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; __u32 priority; __u32 index; __u8 dir; __u8 action; __u8 flags; __u8 share; }; struct xfrm_userpolicy_id { struct xfrm_selector sel; __u32 index; __u8 dir; }; struct xfrm_user_acquire { struct xfrm_id id; xfrm_address_t saddr; struct xfrm_selector sel; struct xfrm_userpolicy_info policy; __u32 aalgos; __u32 ealgos; __u32 calgos; __u32 seq; }; struct xfrm_user_expire { struct xfrm_usersa_info state; __u8 hard; }; struct xfrm_user_polexpire { struct xfrm_userpolicy_info pol; __u8 hard; }; struct xfrm_usersa_flush { __u8 proto; }; struct xfrm_user_report { __u8 proto; struct xfrm_selector sel; }; struct xfrm_user_kmaddress { xfrm_address_t local; xfrm_address_t remote; __u32 reserved; __u16 family; }; struct xfrm_user_migrate { xfrm_address_t old_daddr; xfrm_address_t old_saddr; xfrm_address_t new_daddr; xfrm_address_t new_saddr; __u8 proto; __u8 mode; __u16 reserved; __u32 reqid; __u16 old_family; __u16 new_family; }; struct xfrm_user_mapping { struct xfrm_usersa_id id; __u32 reqid; xfrm_address_t old_saddr; xfrm_address_t new_saddr; __be16 old_sport; __be16 new_sport; }; # 467 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/xfrm.h" enum xfrm_nlgroups { XFRMNLGRP_NONE, XFRMNLGRP_ACQUIRE, XFRMNLGRP_EXPIRE, XFRMNLGRP_SA, XFRMNLGRP_POLICY, XFRMNLGRP_AEVENTS, XFRMNLGRP_REPORT, XFRMNLGRP_MIGRATE, XFRMNLGRP_MAPPING, __XFRMNLGRP_MAX }; # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/xfrm.h" 2 struct ctl_table_header; struct xfrm_policy_hash { struct hlist_head *table; unsigned int hmask; }; struct netns_xfrm { struct list_head state_all; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/xfrm.h" struct hlist_head *state_bydst; struct hlist_head *state_bysrc; struct hlist_head *state_byspi; unsigned int state_hmask; unsigned int state_num; struct work_struct state_hash_work; struct hlist_head state_gc_list; struct work_struct state_gc_work; wait_queue_head_t km_waitq; struct list_head policy_all; struct hlist_head *policy_byidx; unsigned int policy_idx_hmask; struct hlist_head policy_inexact[XFRM_POLICY_MAX * 2]; struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX * 2]; unsigned int policy_count[XFRM_POLICY_MAX * 2]; struct work_struct policy_hash_work; struct dst_ops xfrm4_dst_ops; struct sock *nlsk; struct sock *nlsk_stash; u32 sysctl_aevent_etime; u32 sysctl_aevent_rseqth; int sysctl_larval_drop; u32 sysctl_acq_expires; struct ctl_table_header *sysctl_hdr; }; # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 struct proc_dir_entry; struct net_device; struct sock; struct ctl_table_header; struct net_generic; struct sock; struct net { atomic_t count; struct list_head list; struct list_head cleanup_list; struct list_head exit_list; struct proc_dir_entry *proc_net; struct proc_dir_entry *proc_net_stat; struct ctl_table_set sysctls; struct net_device *loopback_dev; struct list_head dev_base_head; struct hlist_head *dev_name_head; struct hlist_head *dev_index_head; struct list_head rules_ops; spinlock_t rules_mod_lock; struct sock *rtnl; struct sock *genl_sock; struct netns_core core; struct netns_mib mib; struct netns_packet packet; struct netns_unix unx; struct netns_ipv4 ipv4; struct netns_xt xt; struct netns_ct ct; struct sock *nfnl; struct sock *nfnl_stash; struct netns_xfrm xfrm; struct sk_buff_head wext_nlevents; struct net_generic *gen; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file_net.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h" struct seq_operations; struct file; struct path; struct inode; struct dentry; struct seq_file { char *buf; size_t size; size_t from; size_t count; loff_t index; loff_t read_pos; u64 version; struct mutex lock; const struct seq_operations *op; void *private; unsigned int seq_ops_allocated:1; }; struct seq_operations { void * (*start) (struct seq_file *m, loff_t *pos); void (*stop) (struct seq_file *m, void *v); void * (*next) (struct seq_file *m, void *v, loff_t *pos); int (*show) (struct seq_file *m, void *v); }; # 47 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h" static inline size_t seq_get_buf(struct seq_file *m, char **bufp) { do { if (__builtin_expect(!!(m->count > m->size), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h"), "i" (49), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); if (m->count < m->size) *bufp = m->buf + m->count; else *bufp = ((void *)0); return m->size - m->count; } # 67 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h" static inline void seq_commit(struct seq_file *m, int num) { if (num < 0) { m->count = m->size; } else { do { if (__builtin_expect(!!(m->count + num > m->size), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file.h"), "i" (72), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); m->count += num; } } char *mangle_path(char *s, char *p, char *esc); int seq_open(struct file *, const struct seq_operations *); ssize_t seq_read(struct file *, char __attribute__((noderef, address_space(1))) *, size_t, loff_t *); loff_t seq_lseek(struct file *, loff_t, int); int seq_release(struct inode *, struct file *); int seq_escape(struct seq_file *, const char *, const char *); int seq_putc(struct seq_file *m, char c); int seq_puts(struct seq_file *m, const char *s); int seq_write(struct seq_file *seq, const void *data, size_t len); int seq_printf(struct seq_file *, const char *, ...) __attribute__ ((format (printf,2,3))); int seq_path(struct seq_file *, struct path *, char *); int seq_dentry(struct seq_file *, struct dentry *, char *); int seq_path_root(struct seq_file *m, struct path *path, struct path *root, char *esc); int seq_bitmap(struct seq_file *m, const unsigned long *bits, unsigned int nr_bits); static inline int seq_cpumask(struct seq_file *m, const struct cpumask *mask) { return seq_bitmap(m, ((mask)->bits), nr_cpu_ids); } static inline int seq_nodemask(struct seq_file *m, nodemask_t *mask) { return seq_bitmap(m, mask->bits, (1 << 6)); } int seq_bitmap_list(struct seq_file *m, const unsigned long *bits, unsigned int nr_bits); static inline int seq_cpumask_list(struct seq_file *m, const struct cpumask *mask) { return seq_bitmap_list(m, ((mask)->bits), nr_cpu_ids); } static inline int seq_nodemask_list(struct seq_file *m, nodemask_t *mask) { return seq_bitmap_list(m, mask->bits, (1 << 6)); } int single_open(struct file *, int (*)(struct seq_file *, void *), void *); int single_release(struct inode *, struct file *); void *__seq_open_private(struct file *, const struct seq_operations *, int); int seq_open_private(struct file *, const struct seq_operations *, int); int seq_release_private(struct inode *, struct file *); extern struct list_head *seq_list_start(struct list_head *head, loff_t pos); extern struct list_head *seq_list_start_head(struct list_head *head, loff_t pos); extern struct list_head *seq_list_next(void *v, struct list_head *head, loff_t *ppos); extern struct hlist_node *seq_hlist_start(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_start_head(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_next(void *v, struct hlist_head *head, loff_t *ppos); extern struct hlist_node *seq_hlist_start_rcu(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_start_head_rcu(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_next_rcu(void *v, struct hlist_head *head, loff_t *ppos); # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seq_file_net.h" 2 struct net; extern struct net init_net; struct seq_net_private { }; int seq_open_net(struct inode *, struct file *, const struct seq_operations *, int); int single_open_net(struct inode *, struct file *file, int (*show)(struct seq_file *, void *)); int seq_release_net(struct inode *, struct file *); int single_release_net(struct inode *, struct file *); static inline struct net *seq_file_net(struct seq_file *seq) { return &init_net; } # 98 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" 2 extern struct net init_net; extern struct net *copy_net_ns(unsigned long flags, struct net *net_ns); # 114 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" extern struct list_head net_namespace_list; extern struct net *get_net_ns_by_pid(pid_t pid); # 152 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" static inline struct net *get_net(struct net *net) { return net; } static inline void put_net(struct net *net) { } static inline struct net *maybe_get_net(struct net *net) { return net; } static inline int net_eq(const struct net *net1, const struct net *net2) { return 1; } # 188 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" static inline struct net *hold_net(struct net *net) { return net; } static inline void release_net(struct net *net) { } # 233 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" struct pernet_operations { struct list_head list; int (*init)(struct net *net); void (*exit)(struct net *net); void (*exit_batch)(struct list_head *net_exit_list); int *id; size_t size; }; # 261 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/net_namespace.h" extern int register_pernet_subsys(struct pernet_operations *); extern void unregister_pernet_subsys(struct pernet_operations *); extern int register_pernet_device(struct pernet_operations *); extern void unregister_pernet_device(struct pernet_operations *); struct ctl_path; struct ctl_table; struct ctl_table_header; extern struct ctl_table_header *register_net_sysctl_table(struct net *net, const struct ctl_path *path, struct ctl_table *table); extern struct ctl_table_header *register_net_sysctl_rotable( const struct ctl_path *path, struct ctl_table *table); extern void unregister_net_sysctl_table(struct ctl_table_header *header); # 49 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dsa.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dsa.h" struct dsa_chip_data { struct device *mii_bus; int sw_addr; # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dsa.h" char *port_names[12]; s8 *rtable; }; struct dsa_platform_data { struct device *netdev; int nr_chips; struct dsa_chip_data *chip; }; extern bool dsa_uses_dsa_tags(void *dsa_ptr); extern bool dsa_uses_trailer_tags(void *dsa_ptr); # 50 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dcbnl.h" 1 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dcbnl.h" struct dcbnl_rtnl_ops { u8 (*getstate)(struct net_device *); u8 (*setstate)(struct net_device *, u8); void (*getpermhwaddr)(struct net_device *, u8 *); void (*setpgtccfgtx)(struct net_device *, int, u8, u8, u8, u8); void (*setpgbwgcfgtx)(struct net_device *, int, u8); void (*setpgtccfgrx)(struct net_device *, int, u8, u8, u8, u8); void (*setpgbwgcfgrx)(struct net_device *, int, u8); void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgtx)(struct net_device *, int, u8 *); void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgrx)(struct net_device *, int, u8 *); void (*setpfccfg)(struct net_device *, int, u8); void (*getpfccfg)(struct net_device *, int, u8 *); u8 (*setall)(struct net_device *); u8 (*getcap)(struct net_device *, int, u8 *); u8 (*getnumtcs)(struct net_device *, int, u8 *); u8 (*setnumtcs)(struct net_device *, int, u8); u8 (*getpfcstate)(struct net_device *); void (*setpfcstate)(struct net_device *, u8); void (*getbcncfg)(struct net_device *, int, u32 *); void (*setbcncfg)(struct net_device *, int, u32); void (*getbcnrp)(struct net_device *, int, u8 *); void (*setbcnrp)(struct net_device *, int, u8); u8 (*setapp)(struct net_device *, u8, u16, u8); u8 (*getapp)(struct net_device *, u8, u16); }; # 52 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 struct vlan_group; struct netpoll_info; struct wireless_dev; # 104 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" enum netdev_tx { __NETDEV_TX_MIN = (-((int)(~0U>>1)) - 1), NETDEV_TX_OK = 0x00, NETDEV_TX_BUSY = 0x10, NETDEV_TX_LOCKED = 0x20, }; typedef enum netdev_tx netdev_tx_t; static inline bool dev_xmit_complete(int rc) { if (__builtin_expect(!!(rc < 0x0f), 1)) return true; return false; } # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct net_device_stats { unsigned long rx_packets; unsigned long tx_packets; unsigned long rx_bytes; unsigned long tx_bytes; unsigned long rx_errors; unsigned long tx_errors; unsigned long rx_dropped; unsigned long tx_dropped; unsigned long multicast; unsigned long collisions; unsigned long rx_length_errors; unsigned long rx_over_errors; unsigned long rx_crc_errors; unsigned long rx_frame_errors; unsigned long rx_fifo_errors; unsigned long rx_missed_errors; unsigned long tx_aborted_errors; unsigned long tx_carrier_errors; unsigned long tx_fifo_errors; unsigned long tx_heartbeat_errors; unsigned long tx_window_errors; unsigned long rx_compressed; unsigned long tx_compressed; }; enum { IF_PORT_UNKNOWN = 0, IF_PORT_10BASE2, IF_PORT_10BASET, IF_PORT_AUI, IF_PORT_100BASET, IF_PORT_100BASETX, IF_PORT_100BASEFX }; struct neighbour; struct neigh_parms; struct sk_buff; struct netif_rx_stats { unsigned total; unsigned dropped; unsigned time_squeeze; unsigned cpu_collision; unsigned received_rps; }; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct netif_rx_stats) netdev_rx_stat; struct dev_addr_list { struct dev_addr_list *next; u8 da_addr[32]; u8 da_addrlen; u8 da_synced; int da_users; int da_gusers; }; # 250 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct netdev_hw_addr { struct list_head list; unsigned char addr[32]; unsigned char type; int refcount; bool synced; struct rcu_head rcu_head; }; struct netdev_hw_addr_list { struct list_head list; int count; }; # 279 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct hh_cache { struct hh_cache *hh_next; atomic_t hh_refcnt; __be16 hh_type __attribute__((__aligned__((1 << (6))))); u16 hh_len; int (*hh_output)(struct sk_buff *skb); seqlock_t hh_lock; unsigned long hh_data[(((96)+(16 -1))&~(16 - 1)) / sizeof(long)]; }; # 324 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct header_ops { int (*create) (struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned len); int (*parse)(const struct sk_buff *skb, unsigned char *haddr); int (*rebuild)(struct sk_buff *skb); int (*cache)(const struct neighbour *neigh, struct hh_cache *hh); void (*cache_update)(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr); }; enum netdev_state_t { __LINK_STATE_START, __LINK_STATE_PRESENT, __LINK_STATE_NOCARRIER, __LINK_STATE_LINKWATCH_PENDING, __LINK_STATE_DORMANT, }; struct netdev_boot_setup { char name[16]; struct ifmap map; }; extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) netdev_boot_setup(char *str); struct napi_struct { struct list_head poll_list; unsigned long state; int weight; int (*poll)(struct napi_struct *, int); unsigned int gro_count; struct net_device *dev; struct list_head dev_list; struct sk_buff *gro_list; struct sk_buff *skb; }; enum { NAPI_STATE_SCHED, NAPI_STATE_DISABLE, NAPI_STATE_NPSVC, }; enum gro_result { GRO_MERGED, GRO_MERGED_FREE, GRO_HELD, GRO_NORMAL, GRO_DROP, }; typedef enum gro_result gro_result_t; extern void __napi_schedule(struct napi_struct *n); static inline int napi_disable_pending(struct napi_struct *n) { return (__builtin_constant_p((NAPI_STATE_DISABLE)) ? constant_test_bit((NAPI_STATE_DISABLE), (&n->state)) : variable_test_bit((NAPI_STATE_DISABLE), (&n->state))); } # 422 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline int napi_schedule_prep(struct napi_struct *n) { return !napi_disable_pending(n) && !test_and_set_bit(NAPI_STATE_SCHED, &n->state); } # 435 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void napi_schedule(struct napi_struct *n) { if (napi_schedule_prep(n)) __napi_schedule(n); } static inline int napi_reschedule(struct napi_struct *napi) { if (napi_schedule_prep(napi)) { __napi_schedule(napi); return 1; } return 0; } extern void __napi_complete(struct napi_struct *n); extern void napi_complete(struct napi_struct *n); # 467 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void napi_disable(struct napi_struct *n) { set_bit(NAPI_STATE_DISABLE, &n->state); while (test_and_set_bit(NAPI_STATE_SCHED, &n->state)) msleep(1); clear_bit(NAPI_STATE_DISABLE, &n->state); } # 482 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void napi_enable(struct napi_struct *n) { do { if (__builtin_expect(!!(!(__builtin_constant_p((NAPI_STATE_SCHED)) ? constant_test_bit((NAPI_STATE_SCHED), (&n->state)) : variable_test_bit((NAPI_STATE_SCHED), (&n->state)))), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b - 2b, %c0 - 2b\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h"), "i" (484), "i" (sizeof(struct bug_entry))); do { } while (1); } while (0); } while(0); __asm__ __volatile__("": : :"memory"); clear_bit(NAPI_STATE_SCHED, &n->state); } # 498 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void napi_synchronize(const struct napi_struct *n) { while ((__builtin_constant_p((NAPI_STATE_SCHED)) ? constant_test_bit((NAPI_STATE_SCHED), (&n->state)) : variable_test_bit((NAPI_STATE_SCHED), (&n->state)))) msleep(1); } enum netdev_queue_state_t { __QUEUE_STATE_XOFF, __QUEUE_STATE_FROZEN, }; struct netdev_queue { struct net_device *dev; struct Qdisc *qdisc; unsigned long state; struct Qdisc *qdisc_sleeping; spinlock_t _xmit_lock __attribute__((__aligned__((1 << (6))))); int xmit_lock_owner; unsigned long trans_start; unsigned long tx_bytes; unsigned long tx_packets; unsigned long tx_dropped; } __attribute__((__aligned__((1 << (6))))); struct rps_map { unsigned int len; struct rcu_head rcu; u16 cpus[0]; }; struct netdev_rx_queue { struct rps_map *rps_map; struct kobject kobj; struct netdev_rx_queue *first; atomic_t count; } __attribute__((__aligned__((1 << (6))))); # 653 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct net_device_ops { int (*ndo_init)(struct net_device *dev); void (*ndo_uninit)(struct net_device *dev); int (*ndo_open)(struct net_device *dev); int (*ndo_stop)(struct net_device *dev); netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb, struct net_device *dev); u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb); void (*ndo_change_rx_flags)(struct net_device *dev, int flags); void (*ndo_set_rx_mode)(struct net_device *dev); void (*ndo_set_multicast_list)(struct net_device *dev); int (*ndo_set_mac_address)(struct net_device *dev, void *addr); int (*ndo_validate_addr)(struct net_device *dev); int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd); int (*ndo_set_config)(struct net_device *dev, struct ifmap *map); int (*ndo_change_mtu)(struct net_device *dev, int new_mtu); int (*ndo_neigh_setup)(struct net_device *dev, struct neigh_parms *); void (*ndo_tx_timeout) (struct net_device *dev); struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp); void (*ndo_vlan_rx_add_vid)(struct net_device *dev, unsigned short vid); void (*ndo_vlan_rx_kill_vid)(struct net_device *dev, unsigned short vid); int (*ndo_set_vf_mac)(struct net_device *dev, int queue, u8 *mac); int (*ndo_set_vf_vlan)(struct net_device *dev, int queue, u16 vlan, u8 qos); int (*ndo_set_vf_tx_rate)(struct net_device *dev, int vf, int rate); int (*ndo_get_vf_config)(struct net_device *dev, int vf, struct ifla_vf_info *ivf); int (*ndo_fcoe_enable)(struct net_device *dev); int (*ndo_fcoe_disable)(struct net_device *dev); int (*ndo_fcoe_ddp_setup)(struct net_device *dev, u16 xid, struct scatterlist *sgl, unsigned int sgc); int (*ndo_fcoe_ddp_done)(struct net_device *dev, u16 xid); int (*ndo_fcoe_get_wwn)(struct net_device *dev, u64 *wwn, int type); }; # 725 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" struct net_device { char name[16]; struct hlist_node name_hlist; char *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; unsigned int irq; unsigned char if_port; unsigned char dma; unsigned long state; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; unsigned long features; # 815 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" int ifindex; int iflink; struct net_device_stats stats; const struct iw_handler_def * wireless_handlers; struct iw_public_data * wireless_data; const struct net_device_ops *netdev_ops; const struct ethtool_ops *ethtool_ops; const struct header_ops *header_ops; unsigned int flags; unsigned short gflags; unsigned short priv_flags; unsigned short padded; unsigned char operstate; unsigned char link_mode; unsigned mtu; unsigned short type; unsigned short hard_header_len; unsigned short needed_headroom; unsigned short needed_tailroom; struct net_device *master; unsigned char perm_addr[32]; unsigned char addr_len; unsigned short dev_id; struct netdev_hw_addr_list uc; int uc_promisc; spinlock_t addr_list_lock; struct dev_addr_list *mc_list; int mc_count; unsigned int promiscuity; unsigned int allmulti; void *atalk_ptr; void *ip_ptr; void *dn_ptr; void *ip6_ptr; void *ec_ptr; void *ax25_ptr; struct wireless_dev *ieee80211_ptr; unsigned long last_rx; unsigned char *dev_addr; struct netdev_hw_addr_list dev_addrs; unsigned char broadcast[32]; struct kset *queues_kset; struct netdev_rx_queue *_rx; unsigned int num_rx_queues; struct netdev_queue rx_queue; struct netdev_queue *_tx __attribute__((__aligned__((1 << (6))))); unsigned int num_tx_queues; unsigned int real_num_tx_queues; struct Qdisc *qdisc; unsigned long tx_queue_len; spinlock_t tx_global_lock; # 931 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" unsigned long trans_start; int watchdog_timeo; struct timer_list watchdog_timer; atomic_t refcnt __attribute__((__aligned__((1 << (6))))); struct list_head todo_list; struct hlist_node index_hlist; struct list_head link_watch_list; enum { NETREG_UNINITIALIZED=0, NETREG_REGISTERED, NETREG_UNREGISTERING, NETREG_UNREGISTERED, NETREG_RELEASED, NETREG_DUMMY, } reg_state:16; enum { RTNL_LINK_INITIALIZED, RTNL_LINK_INITIALIZING, } rtnl_link_state:16; void (*destructor)(struct net_device *dev); # 973 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" void *ml_priv; struct net_bridge_port *br_port; struct macvlan_port *macvlan_port; struct garp_port *garp_port; struct device dev; const struct attribute_group *sysfs_groups[4]; const struct rtnl_link_ops *rtnl_link_ops; unsigned long vlan_features; unsigned int gso_max_size; const struct dcbnl_rtnl_ops *dcbnl_ops; unsigned int fcoe_ddp_xid; struct ethtool_rx_ntuple_list ethtool_ntuple_list; }; static inline struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, unsigned int index) { return &dev->_tx[index]; } static inline void netdev_for_each_tx_queue(struct net_device *dev, void (*f)(struct net_device *, struct netdev_queue *, void *), void *arg) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) f(dev, &dev->_tx[i], arg); } static inline struct net *dev_net(const struct net_device *dev) { return &init_net; } static inline void dev_net_set(struct net_device *dev, struct net *net) { } static inline bool netdev_uses_dsa_tags(struct net_device *dev) { return 0; } static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev) { skb->dev = dev; } static inline bool netdev_uses_trailer_tags(struct net_device *dev) { return 0; } static inline void *netdev_priv(const struct net_device *dev) { return (char *)dev + (((sizeof(struct net_device))+((typeof(sizeof(struct net_device)))(32)-1))&~((typeof(sizeof(struct net_device)))(32)-1)); } # 1115 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" void netif_napi_add(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int), int weight); void netif_napi_del(struct napi_struct *napi); struct napi_gro_cb { void *frag0; unsigned int frag0_len; int data_offset; int same_flow; int flush; int count; int free; }; struct packet_type { __be16 type; struct net_device *dev; int (*func) (struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *); struct sk_buff *(*gso_segment)(struct sk_buff *skb, int features); int (*gso_send_check)(struct sk_buff *skb); struct sk_buff **(*gro_receive)(struct sk_buff **head, struct sk_buff *skb); int (*gro_complete)(struct sk_buff *skb); void *af_packet_priv; struct list_head list; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqreturn.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irqreturn.h" enum irqreturn { IRQ_NONE, IRQ_HANDLED, IRQ_WAKE_THREAD, }; typedef enum irqreturn irqreturn_t; # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 1 # 46 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct sched_param { int sched_priority; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/param.h" 1 # 51 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 68 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cputime.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/cputime.h" 1 typedef unsigned long cputime_t; # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/cputime.h" typedef u64 cputime64_t; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/cputime.h" 2 # 69 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sem.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ipc.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/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 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ipcbuf.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/ipcbuf.h" 1 # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/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 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ipcbuf.h" 2 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ipc.h" 2 # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ipc.h" struct ipc_kludge { struct msgbuf __attribute__((noderef, address_space(1))) *msgp; long msgtyp; }; # 86 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ipc.h" struct kern_ipc_perm { spinlock_t lock; int deleted; int id; key_t key; uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t mode; unsigned long seq; void *security; }; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sem.h" 2 # 23 "/lnx/src/MM/mmotm-2010-0323-1534/include/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 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sembuf.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/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; }; # 36 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sem.h" 2 struct sembuf { unsigned short sem_num; short sem_op; short sem_flg; }; union semun { int val; struct semid_ds __attribute__((noderef, address_space(1))) *buf; unsigned short __attribute__((noderef, address_space(1))) *array; struct seminfo __attribute__((noderef, address_space(1))) *__buf; void __attribute__((noderef, address_space(1))) *__pad; }; struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; # 83 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sem.h" struct task_struct; struct sem { int semval; int sempid; struct list_head sem_pending; }; struct sem_array { struct kern_ipc_perm 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 sem_queue { struct list_head simple_list; struct list_head list; struct task_struct *sleeper; struct sem_undo *undo; int pid; int status; struct sembuf *sops; int nsops; int alter; }; struct sem_undo { struct list_head list_proc; struct rcu_head rcu; struct sem_undo_list *ulp; struct list_head list_id; int semid; short * semadj; }; struct sem_undo_list { atomic_t refcnt; spinlock_t lock; struct list_head list_proc; }; struct sysv_sem { struct sem_undo_list *undo_list; }; static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk) { return 0; } static inline void exit_sem(struct task_struct *tsk) { return; } # 72 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" struct siginfo; # 28 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 64)]; } sigset_t; # 120 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/signal-defs.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/signal-defs.h" typedef void __signalfn_t(int); typedef __signalfn_t __attribute__((noderef, address_space(1))) *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t __attribute__((noderef, address_space(1))) *__sigrestore_t; # 121 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" 2 extern void do_notify_resume(struct pt_regs *, void *, __u32); # 167 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/signal.h" struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; __sigrestore_t sa_restorer; sigset_t sa_mask; }; struct k_sigaction { struct sigaction sa; }; typedef struct sigaltstack { void __attribute__((noderef, address_space(1))) *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/siginfo.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void __attribute__((noderef, address_space(1))) *sival_ptr; } sigval_t; # 40 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/siginfo.h" typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 - (4 * 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 __attribute__((noderef, address_space(1))) *_addr; short _addr_lsb; } _sigfault; struct { long _band; int _fd; } _sigpoll; } _sifields; } siginfo_t; # 259 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; struct siginfo; void do_schedule_next_timer(struct siginfo *info); static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) { if (from->si_code < 0) memcpy(to, from, sizeof(*to)); else memcpy(to, from, (4 * sizeof(int)) + sizeof(from->_sifields._sigchld)); } extern int copy_siginfo_to_user(struct siginfo __attribute__((noderef, address_space(1))) *to, struct siginfo *from); # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/siginfo.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" 2 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; }; # 40 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" static inline void sigaddset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] |= 1UL << sig; else set->sig[sig / 64] |= 1UL << (sig % 64); } static inline void sigdelset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] &= ~(1UL << sig); else set->sig[sig / 64] &= ~(1UL << (sig % 64)); } static inline int sigismember(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) return 1 & (set->sig[0] >> sig); else return 1 & (set->sig[sig / 64] >> (sig % 64)); } static inline int sigfindinword(unsigned long word) { return ffz(~word); } static inline int sigisemptyset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 64)) { 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; } } # 121 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" static inline 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 / 64)) { 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 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 / 64)) { 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 void signandsets(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 / 64)) { 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(); } } # 151 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" static inline void signotset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 64)) { 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 void sigemptyset(sigset_t *set) { switch ((64 / 64)) { default: memset(set, 0, sizeof(sigset_t)); break; case 2: set->sig[1] = 0; case 1: set->sig[0] = 0; break; } } static inline void sigfillset(sigset_t *set) { switch ((64 / 64)) { default: memset(set, -1, sizeof(sigset_t)); break; case 2: set->sig[1] = -1; case 1: set->sig[0] = -1; break; } } static inline void sigaddsetmask(sigset_t *set, unsigned long mask) { set->sig[0] |= mask; } static inline void sigdelsetmask(sigset_t *set, unsigned long mask) { set->sig[0] &= ~mask; } static inline int sigtestsetmask(sigset_t *set, unsigned long mask) { return (set->sig[0] & mask) != 0; } static inline void siginitset(sigset_t *set, unsigned long mask) { set->sig[0] = mask; switch ((64 / 64)) { default: memset(&set->sig[1], 0, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = 0; case 1: ; } } static inline void siginitsetinv(sigset_t *set, unsigned long mask) { set->sig[0] = ~mask; switch ((64 / 64)) { default: memset(&set->sig[1], -1, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = -1; case 1: ; } } static inline void init_sigpending(struct sigpending *sig) { sigemptyset(&sig->signal); INIT_LIST_HEAD(&sig->list); } extern void flush_sigqueue(struct sigpending *queue); static inline int valid_signal(unsigned long sig) { return sig <= 64 ? 1 : 0; } 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 __attribute__((noderef, address_space(1))) *, unsigned long); extern int sigprocmask(int, sigset_t *, sigset_t *); extern int show_unhandled_signals; struct pt_regs; extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); extern void exit_signals(struct task_struct *tsk); extern struct kmem_cache *sighand_cachep; int unhandled_signal(struct task_struct *tsk, int sig); # 379 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/signal.h" void signals_init(void); # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proportions.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/proportions.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu_counter.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu_counter.h" struct percpu_counter { spinlock_t lock; s64 count; struct list_head list; s32 __attribute__((noderef, address_space(3))) *counters; }; extern int percpu_counter_batch; int __percpu_counter_init(struct percpu_counter *fbc, s64 amount, struct lock_class_key *key); # 39 "/lnx/src/MM/mmotm-2010-0323-1534/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); static inline void percpu_counter_add(struct percpu_counter *fbc, s64 amount) { __percpu_counter_add(fbc, amount, percpu_counter_batch); } static inline s64 percpu_counter_sum_positive(struct percpu_counter *fbc) { s64 ret = __percpu_counter_sum(fbc); return ret < 0 ? 0 : ret; } static inline s64 percpu_counter_sum(struct percpu_counter *fbc) { return __percpu_counter_sum(fbc); } static inline s64 percpu_counter_read(struct percpu_counter *fbc) { return fbc->count; } static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc) { s64 ret = fbc->count; __asm__ __volatile__("": : :"memory"); if (ret >= 0) return ret; return 1; } # 137 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/percpu_counter.h" static inline void percpu_counter_inc(struct percpu_counter *fbc) { percpu_counter_add(fbc, 1); } static inline void percpu_counter_dec(struct percpu_counter *fbc) { percpu_counter_add(fbc, -1); } static inline void percpu_counter_sub(struct percpu_counter *fbc, s64 amount) { percpu_counter_add(fbc, -amount); } # 13 "/lnx/src/MM/mmotm-2010-0323-1534/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; 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 void prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl) { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); __prop_inc_percpu(pd, pl); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); trace_hardirqs_off(); } else { trace_hardirqs_on(); raw_local_irq_restore(flags); } } while (0); } # 89 "/lnx/src/MM/mmotm-2010-0323-1534/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; 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 void prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl) { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); __prop_inc_single(pd, pl); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); trace_hardirqs_off(); } else { trace_hardirqs_on(); raw_local_irq_restore(flags); } } while (0); } # 80 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seccomp.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/seccomp.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/seccomp_64.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/unistd.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd_64.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd_64.h" # 704 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd_64.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/asm-offsets.h" 1 # 1 "include/generated/asm-offsets.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/asm-offsets.h" 2 # 705 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd_64.h" 2 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unistd.h" 2 # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/unistd.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/seccomp_64.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/ia32_unistd.h" 1 # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/seccomp_64.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/seccomp.h" 2 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/seccomp.h" 2 typedef struct { int mode; } seccomp_t; extern void __secure_computing(int); static inline void secure_computing(int this_syscall) { if (__builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 8)), 0)) __secure_computing(this_syscall); } extern long prctl_get_seccomp(void); extern long prctl_set_seccomp(unsigned long); # 81 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtmutex.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtmutex.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/plist.h" 1 # 80 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/plist.h" struct plist_head { struct list_head prio_list; struct list_head node_list; }; struct plist_node { int prio; struct plist_head plist; }; # 144 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/plist.h" static inline void plist_head_init(struct plist_head *head, spinlock_t *lock) { INIT_LIST_HEAD(&head->prio_list); INIT_LIST_HEAD(&head->node_list); } static inline void plist_head_init_raw(struct plist_head *head, raw_spinlock_t *lock) { INIT_LIST_HEAD(&head->prio_list); INIT_LIST_HEAD(&head->node_list); } static inline void plist_node_init(struct plist_node *node, int prio) { node->prio = prio; plist_head_init(&node->plist, ((void *)0)); } extern void plist_add(struct plist_node *node, struct plist_head *head); extern void plist_del(struct plist_node *node, struct plist_head *head); # 229 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/plist.h" static inline int plist_head_empty(const struct plist_head *head) { return list_empty(&head->node_list); } static inline int plist_node_empty(const struct plist_node *node) { return plist_head_empty(&node->plist); } # 268 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/plist.h" static inline struct plist_node *plist_first(const struct plist_head *head) { return ({ const typeof( ((struct plist_node *)0)->plist.node_list ) *__mptr = (head->node_list.next); (struct plist_node *)( (char *)__mptr - __builtin_offsetof(struct plist_node,plist.node_list) );}); } # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtmutex.h" 2 extern int max_lock_depth; # 28 "/lnx/src/MM/mmotm-2010-0323-1534/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 int rt_mutex_debug_check_no_locks_freed(const void *from, unsigned long len) { return 0; } # 82 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtmutex.h" static inline 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); # 84 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/resource.h" 1 # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/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; }; # 69 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/resource.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/resource.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/resource.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/resource.h" 2 # 70 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/resource.h" 2 struct task_struct; int getrusage(struct task_struct *p, int who, struct rusage __attribute__((noderef, address_space(1))) *ru); int do_setrlimit(struct task_struct *tsk, unsigned int resource, struct rlimit *new_rlim); # 88 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/task_io_accounting.h" 1 # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/task_io_accounting.h" struct task_io_accounting { # 45 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/task_io_accounting.h" }; # 91 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/latencytop.h" 1 # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/latencytop.h" struct latency_record { unsigned long backtrace[12]; unsigned int count; unsigned long time; unsigned long max; }; struct task_struct; extern int latencytop_enabled; void __account_scheduler_latency(struct task_struct *task, int usecs, int inter); static inline void account_scheduler_latency(struct task_struct *task, int usecs, int inter) { if (__builtin_expect(!!(latencytop_enabled), 0)) __account_scheduler_latency(task, usecs, inter); } void clear_all_latency_tracing(struct task_struct *p); # 93 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" 1 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" typedef int32_t key_serial_t; typedef uint32_t key_perm_t; struct key; # 74 "/lnx/src/MM/mmotm-2010-0323-1534/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; # 98 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" typedef struct __key_reference_with_attributes *key_ref_t; static inline key_ref_t make_key_ref(const struct key *key, unsigned long possession) { return (key_ref_t) ((unsigned long) key | possession); } static inline struct key *key_ref_to_ptr(const key_ref_t key_ref) { return (struct key *) ((unsigned long) key_ref & ~1UL); } static inline unsigned long is_key_possessed(const key_ref_t key_ref) { return (unsigned long) key_ref & 1UL; } # 124 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" struct key { atomic_t usage; key_serial_t serial; 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; }; uid_t uid; gid_t gid; key_perm_t perm; unsigned short quotalen; unsigned short datalen; # 151 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" unsigned long flags; # 164 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/key.h" char *description; union { struct list_head link; unsigned long x[2]; void *p[2]; } type_data; union { unsigned long value; void *data; struct keyring_list *subscriptions; } payload; }; extern struct key *key_alloc(struct key_type *type, const char *desc, uid_t uid, gid_t gid, const struct cred *cred, key_perm_t perm, unsigned long flags); extern void key_revoke(struct key *key); extern void key_put(struct key *key); static inline struct key *key_get(struct key *key) { if (key) atomic_inc(&key->usage); return key; } static inline 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(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, uid_t uid, gid_t gid, const struct cred *cred, 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 key_serial_t key_serial(struct key *key) { return key ? key->serial : 0; } extern ctl_table key_sysctls[]; extern void key_replace_session_keyring(void); 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/selinux.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/selinux.h" struct selinux_audit_rule; struct audit_context; struct kern_ipc_perm; # 71 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/selinux.h" static inline int selinux_string_to_sid(const char *str, u32 *sid) { *sid = 0; return 0; } static inline int selinux_secmark_relabel_packet_permission(u32 sid) { return 0; } static inline void selinux_secmark_refcount_inc(void) { return; } static inline void selinux_secmark_refcount_dec(void) { return; } static inline bool selinux_is_enabled(void) { return false; } # 19 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" 2 struct user_struct; struct cred; struct inode; struct group_info { atomic_t usage; int ngroups; int nblocks; gid_t small_block[32]; gid_t *blocks[0]; }; # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" static inline struct group_info *get_group_info(struct group_info *gi) { atomic_inc(&gi->usage); return gi; } # 64 "/lnx/src/MM/mmotm-2010-0323-1534/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 *, gid_t); extern int in_group_p(gid_t); extern int in_egroup_p(gid_t); struct thread_group_cred { atomic_t usage; pid_t tgid; spinlock_t lock; struct key *session_keyring; struct key *process_keyring; struct rcu_head rcu; }; # 116 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" struct cred { atomic_t usage; uid_t uid; gid_t gid; uid_t suid; gid_t sgid; uid_t euid; gid_t egid; uid_t fsuid; gid_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 *thread_keyring; struct key *request_key_auth; struct thread_group_cred *tgcred; void *security; struct user_struct *user; struct group_info *group_info; struct rcu_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 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); # 199 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" static inline void validate_creds(const struct cred *cred) { } static inline void validate_creds_for_do_exit(struct task_struct *tsk) { } static inline void validate_process_creds(void) { } # 217 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" static inline struct cred *get_new_cred(struct cred *cred) { atomic_inc(&cred->usage); return cred; } # 236 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" static inline 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); } # 254 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/cred.h" static inline void put_cred(const struct cred *_cred) { struct cred *cred = (struct cred *) _cred; validate_creds(cred); if (atomic_dec_and_test(&(cred)->usage)) __put_cred(cred); } # 94 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 2 struct exec_domain; struct futex_pi_state; struct robust_list_head; struct bio_list; struct fs_struct; struct bts_context; struct perf_event_context; # 121 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern unsigned long avenrun[]; extern void get_avenrun(unsigned long *loads, unsigned long offset, int shift); # 136 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern unsigned long total_forks; extern int nr_threads; extern __attribute__((noderef, address_space(3))) __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(void); extern unsigned long this_cpu_load(void); extern void calc_global_load(void); extern unsigned long get_parent_ip(unsigned long addr); 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); # 199 "/lnx/src/MM/mmotm-2010-0323-1534/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)]; # 256 "/lnx/src/MM/mmotm-2010-0323-1534/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 cpumask_var_t nohz_cpu_mask; static inline int select_nohz_load_balancer(int cpu) { return 0; } extern void show_state_filter(unsigned long state_filter); static inline 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); # 324 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline void softlockup_tick(void) { } static inline void touch_softlockup_watchdog(void) { } static inline void touch_softlockup_watchdog_sync(void) { } static inline void touch_all_softlockup_watchdogs(void) { } # 352 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 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 int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner); struct nsproxy; struct user_namespace; # 383 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern int sysctl_max_map_count; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio_abi.h" 1 # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio_abi.h" typedef unsigned long 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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio_abi.h" struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; # 79 "/lnx/src/MM/mmotm-2010-0323-1534/include/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 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio.h" 2 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio.h" struct kioctx; # 87 "/lnx/src/MM/mmotm-2010-0323-1534/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 __attribute__((noderef, address_space(1))) *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 __attribute__((noderef, address_space(1))) *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 eventfd_ctx *ki_eventfd; }; # 147 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio.h" 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]; }; 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 rcu_head rcu_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); # 224 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/aio.h" static inline 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; # 386 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 441 "/lnx/src/MM/mmotm-2010-0323-1534/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; }; # 474 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct task_cputime { cputime_t utime; cputime_t stime; unsigned long long sum_exec_runtime; }; # 510 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct thread_group_cputimer { struct task_cputime cputime; int running; spinlock_t lock; }; # 523 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct signal_struct { atomic_t sigcnt; atomic_t count; atomic_t live; 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; 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; cputime_t utime, stime, cutime, cstime; cputime_t gtime; cputime_t cgtime; cputime_t prev_utime, prev_stime; 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; # 618 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct rlimit rlim[16]; struct pacct_struct pacct; unsigned audit_tty; struct tty_audit_buf *tty_audit_buf; int oom_adj; int oom_score_adj; }; # 657 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int signal_group_exit(const struct signal_struct *sig) { return (sig->flags & 0x00000008) || (sig->group_exit_task != ((void *)0)); } struct user_struct { atomic_t __count; atomic_t processes; atomic_t files; atomic_t sigpending; atomic_t epoll_watches; unsigned long locked_shm; struct key *uid_keyring; struct key *session_keyring; struct hlist_node uidhash_node; uid_t uid; struct user_namespace *user_ns; atomic_long_t locked_vm; }; extern int uids_sysfs_init(void); extern struct user_struct *find_user(uid_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; unsigned int bkl_count; }; # 760 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int sched_info_on(void) { return 1; } enum cpu_idle_type { CPU_IDLE, CPU_NOT_IDLE, CPU_NEWLY_IDLE, CPU_MAX_IDLE_TYPES }; # 806 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" enum powersavings_balance_level { POWERSAVINGS_BALANCE_NONE = 0, POWERSAVINGS_BALANCE_BASIC, POWERSAVINGS_BALANCE_WAKEUP, MAX_POWERSAVINGS_BALANCE_LEVELS }; extern int sched_mc_power_savings, sched_smt_power_savings; static inline int sd_balance_for_mc_power(void) { if (sched_smt_power_savings) return 0x0100; if (!sched_mc_power_savings) return 0x1000; return 0; } static inline int sd_balance_for_package_power(void) { if (sched_mc_power_savings | sched_smt_power_savings) return 0x0100; return 0x1000; } static inline int sd_power_saving_flags(void) { if (sched_mc_power_savings | sched_smt_power_savings) return 0x0002; return 0; } struct sched_group { struct sched_group *next; unsigned int cpu_power; # 871 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" unsigned long cpumask[0]; }; static inline struct cpumask *sched_group_cpus(struct sched_group *sg) { return ((struct cpumask *)(1 ? (sg->cpumask) : (void *)sizeof(__check_is_bitmap(sg->cpumask)))); } enum sched_domain_level { SD_LV_NONE = 0, SD_LV_SIBLING, SD_LV_MC, SD_LV_CPU, SD_LV_NODE, SD_LV_ALLNODES, SD_LV_MAX }; struct sched_domain_attr { int relax_domain_level; }; 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; enum sched_domain_level 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; # 968 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" unsigned long span[0]; }; static inline 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 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); # 1007 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" struct io_context; static inline void prefetch_stack(struct task_struct *t) { } struct audit_context; struct mempolicy; struct pipe_inode_info; struct uts_namespace; struct rq; struct sched_domain; struct sched_class { const struct sched_class *next; void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup, bool head); void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); void (*yield_task) (struct rq *rq); 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 (*pre_schedule) (struct rq *this_rq, struct task_struct *task); void (*post_schedule) (struct rq *this_rq); void (*task_waking) (struct rq *this_rq, 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, int running); void (*switched_to) (struct rq *this_rq, struct task_struct *task, int running); void (*prio_changed) (struct rq *this_rq, struct task_struct *task, int oldprio, int running); unsigned int (*get_rr_interval) (struct rq *rq, struct task_struct *task); }; struct load_weight { unsigned long weight, inv_weight; }; # 1091 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 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 last_wakeup; u64 avg_overlap; u64 nr_migrations; u64 start_runtime; u64 avg_wakeup; 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; # 1151 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" }; struct sched_rt_entity { struct list_head run_list; unsigned long timeout; unsigned int time_slice; int nr_cpus_allowed; struct sched_rt_entity *back; }; struct rcu_node; struct task_struct { volatile long state; void *stack; atomic_t usage; unsigned int flags; unsigned int ptrace; int lock_depth; 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 hlist_head preempt_notifiers; # 1205 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" unsigned char fpu_counter; unsigned int btrace_seq; unsigned int policy; cpumask_t cpus_allowed; # 1221 "/lnx/src/MM/mmotm-2010-0323-1534/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 personality; unsigned did_exec:1; unsigned in_execve:1; unsigned in_iowait:1; unsigned sched_reset_on_fork: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 bts_context *bts; struct pid_link pids[PIDTYPE_MAX]; struct list_head thread_group; struct completion *vfork_done; int __attribute__((noderef, address_space(1))) *set_child_tid; int __attribute__((noderef, address_space(1))) *clear_child_tid; cputime_t utime, stime, utimescaled, stimescaled; cputime_t gtime; cputime_t prev_utime, prev_stime; 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; struct mutex cred_guard_mutex; struct cred *replacement_session_keyring; char comm[16]; int link_count, total_link_count; # 1329 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 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 audit_context *audit_context; uid_t loginuid; unsigned int sessionid; seccomp_t seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; struct irqaction *irqaction; raw_spinlock_t pi_lock; struct plist_head pi_waiters; struct rt_mutex_waiter *pi_blocked_on; unsigned int irq_events; unsigned long hardirq_enable_ip; unsigned long hardirq_disable_ip; unsigned int hardirq_enable_event; unsigned int hardirq_disable_event; int hardirqs_enabled; int hardirq_context; unsigned long softirq_disable_ip; unsigned long softirq_enable_ip; unsigned int softirq_disable_event; unsigned int softirq_enable_event; int softirqs_enabled; int softirq_context; # 1407 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" void *journal_info; struct bio_list *bio_list; 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; nodemask_t mems_allowed; int cpuset_mem_spread_rotor; struct css_set *cgroups; struct list_head cg_list; struct robust_list_head __attribute__((noderef, address_space(1))) *robust_list; struct compat_robust_list_head __attribute__((noderef, address_space(1))) *compat_robust_list; struct list_head pi_state_list; struct futex_pi_state *pi_state_cache; struct perf_event_context *perf_event_ctxp; struct mutex perf_event_mutex; struct list_head perf_event_list; struct mempolicy *mempolicy; short il_next; atomic_t fs_excl; struct rcu_head rcu; struct pipe_inode_info *splice_pipe; struct prop_local_single dirties; int latency_record_count; struct latency_record latency_record[32]; unsigned long timer_slack_ns; unsigned long default_timer_slack_ns; struct list_head *scm_work_list; int curr_ret_stack; struct ftrace_ret_stack *ret_stack; unsigned long long ftrace_timestamp; atomic_t trace_overrun; atomic_t tracing_graph_pause; unsigned long trace; unsigned long trace_recursion; unsigned long stack_start; struct memcg_batch_info { int do_batch; struct mem_cgroup *memcg; unsigned long bytes; unsigned long memsw_bytes; } memcg_batch; }; # 1534 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int rt_prio(int prio) { if (__builtin_expect(!!(prio < 100), 0)) return 1; return 0; } static inline int rt_task(struct task_struct *p) { return rt_prio(p->prio); } static inline struct pid *task_pid(struct task_struct *task) { return task->pids[PIDTYPE_PID].pid; } static inline struct pid *task_tgid(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_PID].pid; } static inline struct pid *task_pgrp(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_PGID].pid; } static inline struct pid *task_session(struct task_struct *task) { return task->group_leader->pids[PIDTYPE_SID].pid; } struct pid_namespace; # 1586 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns); static inline pid_t task_pid_nr(struct task_struct *tsk) { return tsk->pid; } static inline 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 pid_t task_pid_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PID, ((void *)0)); } static inline 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 pid_t task_tgid_vnr(struct task_struct *tsk) { return pid_vnr(task_tgid(tsk)); } static inline 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 pid_t task_pgrp_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ((void *)0)); } static inline 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 pid_t task_session_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_SID, ((void *)0)); } static inline pid_t task_pgrp_nr(struct task_struct *tsk) { return task_pgrp_nr_ns(tsk, &init_pid_ns); } # 1656 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int pid_alive(struct task_struct *p) { return p->pids[PIDTYPE_PID].pid != ((void *)0); } static inline int is_global_init(struct task_struct *tsk) { return tsk->pid == 1; } extern int is_container_init(struct task_struct *tsk); extern struct pid *cad_pid; extern void free_task(struct task_struct *tsk); extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) { if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } extern void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st); extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st); # 1770 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline void rcu_copy_process(struct task_struct *p) { } extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); # 1790 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) { return set_cpus_allowed_ptr(p, &new_mask); } # 1803 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern int sched_clock_stable; extern unsigned long long __attribute__((no_instrument_function)) sched_clock(void); extern void sched_clock_init(void); extern u64 sched_clock_cpu(int cpu); # 1825 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern void sched_clock_tick(void); extern void sched_clock_idle_sleep_event(void); extern void sched_clock_idle_wakeup_event(u64 delta_ns); extern unsigned long long cpu_clock(int cpu); extern unsigned long long task_sched_runtime(struct task_struct *task); extern unsigned long long thread_group_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 sched_idle_next(void); static inline 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_shares_ratelimit; extern unsigned int sysctl_sched_shares_thresh; 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_sched_migration_cost; extern unsigned int sysctl_sched_nr_migrate; extern unsigned int sysctl_sched_time_avg; extern unsigned int sysctl_timer_migration; int sched_proc_update_handler(struct ctl_table *table, int write, void __attribute__((noderef, address_space(1))) *buffer, size_t *length, loff_t *ppos); static inline 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 __attribute__((noderef, address_space(1))) *buffer, size_t *lenp, loff_t *ppos); extern unsigned int sysctl_sched_compat_yield; 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); # 1921 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" 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, struct sched_param *); extern int sched_setscheduler_nocheck(struct task_struct *, int, struct sched_param *); extern struct task_struct *idle_task(int cpu); 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[(((1UL) << 12) << 1)/sizeof(long)]; }; static inline int kstack_end(void *addr) { return !(((unsigned long)addr+sizeof(void*)-1) & ((((1UL) << 12) << 1)-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; # 1974 "/lnx/src/MM/mmotm-2010-0323-1534/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(struct user_namespace *, uid_t); static inline struct user_struct *get_uid(struct user_struct *u) { atomic_inc(&u->__count); return u; } extern void free_uid(struct user_struct *); extern void release_uids(struct user_namespace *ns); extern void do_timer(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, unsigned long clone_flags); extern void kick_process(struct task_struct *tsk); extern void sched_fork(struct task_struct *p, int clone_flags); 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 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_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, 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 int 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 __attribute__((noderef, address_space(1))) *, stack_t __attribute__((noderef, address_space(1))) *, unsigned long); static inline int kill_cad_pid(int sig, int priv) { return kill_pid(cad_pid, sig, priv); } # 2062 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int on_sig_stack(unsigned long sp) { return sp > get_current()->sas_ss_sp && sp - get_current()->sas_ss_sp <= get_current()->sas_ss_size; } static inline int sas_ss_flags(unsigned long sp) { return (get_current()->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 void mmdrop(struct mm_struct * mm) { if (__builtin_expect(!!(atomic_dec_and_test(&mm->mm_count)), 0)) __mmdrop(mm); } extern void mmput(struct mm_struct *); extern struct mm_struct *get_task_mm(struct task_struct *task); 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 *, struct pt_regs *); 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 void daemonize(const char *, ...); extern int allow_signal(int); extern int disallow_signal(int); extern int do_execve(char *, char __attribute__((noderef, address_space(1))) * __attribute__((noderef, address_space(1))) *, char __attribute__((noderef, address_space(1))) * __attribute__((noderef, address_space(1))) *, struct pt_regs *); extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int __attribute__((noderef, address_space(1))) *, int __attribute__((noderef, address_space(1))) *); struct task_struct *fork_idle(int); extern void set_task_comm(struct task_struct *tsk, char *from); extern char *get_task_comm(char *to, struct task_struct *tsk); extern void wait_task_context_switch(struct task_struct *p); extern unsigned long wait_task_inactive(struct task_struct *, long match_state); # 2143 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern bool current_is_single_threaded(void); # 2155 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int get_nr_threads(struct task_struct *tsk) { return atomic_read(&tsk->signal->count); } # 2169 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int has_group_leader_pid(struct task_struct *p) { return p->pid == p->tgid; } static inline int same_thread_group(struct task_struct *p1, struct task_struct *p2) { return p1->tgid == p2->tgid; } static inline struct task_struct *next_thread(const struct task_struct *p) { return ({ const typeof( ((struct task_struct *)0)->thread_group ) *__mptr = (({ typeof(p->thread_group.next) _________p1 = (*(volatile typeof(p->thread_group.next) *)&(p->thread_group.next)); do { } while (0); (_________p1); })); (struct task_struct *)( (char *)__mptr - __builtin_offsetof(struct task_struct,thread_group) );}); } static inline int thread_group_empty(struct task_struct *p) { return list_empty(&p->thread_group); } static inline int task_detached(struct task_struct *p) { return p->exit_signal == -1; } # 2209 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline void task_lock(struct task_struct *p) { spin_lock(&p->alloc_lock); } static inline 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 void unlock_task_sighand(struct task_struct *tsk, unsigned long *flags) { spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); } static inline 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 unsigned long *end_of_stack(struct task_struct *p) { return (unsigned long *)(((struct thread_info *)(p)->stack) + 1); } static inline int object_is_on_stack(void *obj) { void *stack = ((get_current())->stack); return (obj >= stack) && (obj < (stack + (((1UL) << 12) << 1))); } extern void thread_info_cache_init(void); # 2271 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline void set_tsk_thread_flag(struct task_struct *tsk, int flag) { set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline void clear_tsk_thread_flag(struct task_struct *tsk, int flag) { clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline 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 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 int test_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); } static inline void set_tsk_need_resched(struct task_struct *tsk) { set_tsk_thread_flag(tsk,3); } static inline void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,3); } static inline int test_tsk_need_resched(struct task_struct *tsk) { return __builtin_expect(!!(test_tsk_thread_flag(tsk,3)), 0); } static inline int restart_syscall(void) { set_tsk_thread_flag(get_current(), 2); return -513; } static inline int signal_pending(struct task_struct *p) { return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0); } static inline int __fatal_signal_pending(struct task_struct *p) { return __builtin_expect(!!(sigismember(&p->pending.signal, 9)), 0); } static inline int fatal_signal_pending(struct task_struct *p) { return signal_pending(p) && __fatal_signal_pending(p); } static inline 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 int need_resched(void) { return __builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0); } # 2354 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern int _cond_resched(void); extern int __cond_resched_lock(spinlock_t *lock); # 2374 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern int __cond_resched_softirq(void); # 2386 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline int spin_needbreak(spinlock_t *lock) { return spin_is_contended(lock); } 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 void thread_group_cputime_init(struct signal_struct *sig) { do { spinlock_check(&sig->cputimer.lock); do { *(&(&sig->cputimer.lock)->rlock) = (raw_spinlock_t) { .raw_lock = { 0 }, }; } while (0); } while (0); } extern void recalc_sigpending_and_wake(struct task_struct *t); extern void recalc_sigpending(void); extern void signal_wake_up(struct task_struct *t, int resume_stopped); static inline 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); # 2443 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern void __trace_special(void *__tr, void *__data, unsigned long arg1, unsigned long arg2, unsigned long arg3); # 2454 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 2481 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern int task_can_switch_user(struct user_struct *up, struct task_struct *tsk); # 2505 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline void add_rchar(struct task_struct *tsk, ssize_t amt) { } static inline void add_wchar(struct task_struct *tsk, ssize_t amt) { } static inline void inc_syscr(struct task_struct *tsk) { } static inline void inc_syscw(struct task_struct *tsk) { } # 2529 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" extern void task_oncpu_function_call(struct task_struct *p, void (*func) (void *info), void *info); extern void mm_update_next_owner(struct mm_struct *mm); extern void mm_init_owner(struct mm_struct *mm, struct task_struct *p); # 2546 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/sched.h" static inline 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 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 unsigned long rlimit(unsigned int limit) { return task_rlimit(get_current(), limit); } static inline unsigned long rlimit_max(unsigned int limit) { return task_rlimit_max(get_current(), limit); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h" 2 extern int __attribute__((section(".spinlock.text"))) __reacquire_kernel_lock(void); extern void __attribute__((section(".spinlock.text"))) __release_kernel_lock(void); # 20 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h" static inline int reacquire_kernel_lock(struct task_struct *task) { if (__builtin_expect(!!(task->lock_depth >= 0), 0)) return __reacquire_kernel_lock(); return 0; } extern void __attribute__((section(".spinlock.text"))) _lock_kernel(const char *func, const char *file, int line) __attribute__((context(kernel_lock,0,1))); extern void __attribute__((section(".spinlock.text"))) _unlock_kernel(const char *func, const char *file, int line) __attribute__((context(kernel_lock,1,0))); # 49 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h" static inline void cycle_kernel_lock(void) { do { _lock_kernel(__func__, "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h", 51); } while (0); do { _unlock_kernel(__func__, "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/smp_lock.h", 52); } while (0); } # 7 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ftrace_irq.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ftrace_irq.h" static inline void ftrace_nmi_enter(void) { } static inline void ftrace_nmi_exit(void) { } # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hardirq.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" 1 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq.h" static inline int irq_canonicalize(int irq) { return ((irq == 2) ? 9 : irq); } # 36 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq.h" extern void fixup_irqs(void); extern void irq_force_complete_move(int); extern void (*x86_platform_ipi_callback)(void); extern void native_init_IRQ(void); extern bool handle_irq(unsigned irq, struct pt_regs *regs); extern unsigned int do_IRQ(struct pt_regs *regs); extern unsigned long used_vectors[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; extern int vector_used_by_percpu_irq(unsigned int vector); extern void init_ISA_irqs(void); # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq_regs.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/irq_regs.h" extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct pt_regs *) irq_regs; static inline struct pt_regs *get_irq_regs(void) { return ({ typeof(irq_regs) pfo_ret__; switch (sizeof(irq_regs)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (irq_regs)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_regs)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_regs)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_regs)); break; default: __bad_percpu_size(); } pfo_ret__; }); } static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) { struct pt_regs *old_regs; old_regs = get_irq_regs(); do { typedef typeof(irq_regs) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (new_regs); } switch (sizeof(irq_regs)) { case 1: asm("mov" "b %1,""%%""gs"":%P" "0" : "+m" (irq_regs) : "qi" ((pto_T__)(new_regs))); break; case 2: asm("mov" "w %1,""%%""gs"":%P" "0" : "+m" (irq_regs) : "ri" ((pto_T__)(new_regs))); break; case 4: asm("mov" "l %1,""%%""gs"":%P" "0" : "+m" (irq_regs) : "ri" ((pto_T__)(new_regs))); break; case 8: asm("mov" "q %1,""%%""gs"":%P" "0" : "+m" (irq_regs) : "re" ((pto_T__)(new_regs))); break; default: __bad_percpu_size(); } } while (0); return old_regs; } # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" 2 struct irq_desc; typedef void (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc); # 83 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" struct proc_dir_entry; struct msi_desc; # 111 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" struct irq_chip { const char *name; unsigned int (*startup)(unsigned int irq); void (*shutdown)(unsigned int irq); void (*enable)(unsigned int irq); void (*disable)(unsigned int irq); void (*ack)(unsigned int irq); void (*mask)(unsigned int irq); void (*mask_ack)(unsigned int irq); void (*unmask)(unsigned int irq); void (*eoi)(unsigned int irq); void (*end)(unsigned int irq); int (*set_affinity)(unsigned int irq, const struct cpumask *dest); int (*retrigger)(unsigned int irq); int (*set_type)(unsigned int irq, unsigned int flow_type); int (*set_wake)(unsigned int irq, unsigned int on); void (*bus_lock)(unsigned int irq); void (*bus_sync_unlock)(unsigned int irq); # 142 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" const char *typename; }; struct timer_rand_state; struct irq_2_iommu; # 175 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" struct irq_desc { unsigned int irq; struct timer_rand_state *timer_rand_state; unsigned int *kstat_irqs; irq_flow_handler_t handle_irq; struct irq_chip *chip; struct msi_desc *msi_desc; void *handler_data; void *chip_data; struct irqaction *action; unsigned int status; unsigned int depth; unsigned int wake_depth; unsigned int irq_count; unsigned long last_unhandled; unsigned int irqs_unhandled; raw_spinlock_t lock; cpumask_var_t affinity; unsigned int node; cpumask_var_t pending_mask; atomic_t threads_active; wait_queue_head_t wait_for_threads; struct proc_dir_entry *dir; const char *name; } __attribute__((__aligned__(1 << (7)))); extern void arch_init_copy_chip_data(struct irq_desc *old_desc, struct irq_desc *desc, int node); extern void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc); extern struct irq_desc *move_irq_desc(struct irq_desc *old_desc, int node); extern struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node); # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hw_irq.h" 1 # 21 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hw_irq.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/profile.h" 1 # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/profile.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/errno.h" 1 # 10 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/profile.h" 2 struct proc_dir_entry; struct pt_regs; struct notifier_block; static inline void create_prof_cpu_mask(struct proc_dir_entry *de) { } static inline int create_proc_profile(void) { return 0; } enum profile_type { PROFILE_TASK_EXIT, PROFILE_MUNMAP }; # 94 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/profile.h" static inline int profile_init(void) { return 0; } static inline void profile_tick(int type) { return; } static inline void profile_hits(int type, void *ip, unsigned int nr_hits) { return; } static inline void profile_hit(int type, void *ip) { return; } static inline int task_handoff_register(struct notifier_block * n) { return -38; } static inline int task_handoff_unregister(struct notifier_block * n) { return -38; } static inline int profile_event_register(enum profile_type t, struct notifier_block * n) { return -38; } static inline int profile_event_unregister(enum profile_type t, struct notifier_block * n) { return -38; } static inline int register_timer_hook(int (*hook)(struct pt_regs *)) { return -38; } static inline void unregister_timer_hook(int (*hook)(struct pt_regs *)) { return; } # 22 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hw_irq.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sections.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/sections.h" 1 extern char _text[], _stext[], _etext[]; extern char _data[], _sdata[], _edata[]; extern char __bss_start[], __bss_stop[]; extern char __init_begin[], __init_end[]; extern char _sinittext[], _einittext[]; extern char _end[]; extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[]; extern char __kprobes_text_start[], __kprobes_text_end[]; extern char __initdata_begin[], __initdata_end[]; extern char __start_rodata[], __end_rodata[]; extern char __ctors_start[], __ctors_end[]; # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/sections.h" static inline int arch_is_kernel_text(unsigned long addr) { return 0; } static inline int arch_is_kernel_data(unsigned long addr) { return 0; } # 5 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/sections.h" 2 extern char __brk_base[], __brk_limit[]; extern struct exception_table_entry __stop___ex_table[]; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hw_irq.h" 2 extern void apic_timer_interrupt(void); extern void x86_platform_ipi(void); extern void error_interrupt(void); extern void perf_pending_interrupt(void); extern void spurious_interrupt(void); extern void thermal_interrupt(void); extern void reschedule_interrupt(void); extern void mce_self_interrupt(void); extern void invalidate_interrupt(void); extern void invalidate_interrupt0(void); extern void invalidate_interrupt1(void); extern void invalidate_interrupt2(void); extern void invalidate_interrupt3(void); extern void invalidate_interrupt4(void); extern void invalidate_interrupt5(void); extern void invalidate_interrupt6(void); extern void invalidate_interrupt7(void); extern void irq_move_cleanup_interrupt(void); extern void reboot_interrupt(void); extern void threshold_interrupt(void); extern void call_function_interrupt(void); extern void call_function_single_interrupt(void); extern unsigned long io_apic_irqs; extern void init_VISWS_APIC_irqs(void); extern void setup_IO_APIC(void); extern void disable_IO_APIC(void); struct io_apic_irq_attr { int ioapic; int ioapic_pin; int trigger; int polarity; }; static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr, int ioapic, int ioapic_pin, int trigger, int polarity) { irq_attr->ioapic = ioapic; irq_attr->ioapic_pin = ioapic_pin; irq_attr->trigger = trigger; irq_attr->polarity = polarity; } struct irq_cfg { struct irq_pin_list *irq_2_pin; cpumask_var_t domain; cpumask_var_t old_domain; u8 vector; u8 move_in_progress : 1; }; extern struct irq_cfg *irq_cfg(unsigned int); extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *); extern void send_cleanup_vector(struct irq_cfg *); struct irq_desc; extern unsigned int set_desc_affinity(struct irq_desc *, const struct cpumask *, unsigned int *dest_id); extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, struct io_apic_irq_attr *irq_attr); extern void setup_ioapic_dest(void); extern void enable_IO_APIC(void); extern atomic_t irq_err_count; extern atomic_t irq_mis_count; extern void eisa_set_level_irq(unsigned int irq); extern void smp_apic_timer_interrupt(struct pt_regs *); extern void smp_spurious_interrupt(struct pt_regs *); extern void smp_x86_platform_ipi(struct pt_regs *); extern void smp_error_interrupt(struct pt_regs *); extern void smp_irq_move_cleanup_interrupt(void); extern void smp_reschedule_interrupt(struct pt_regs *); extern void smp_call_function_interrupt(struct pt_regs *); extern void smp_call_function_single_interrupt(struct pt_regs *); extern void smp_invalidate_interrupt(struct pt_regs *); extern void (*__attribute__ ((__section__(".init.rodata"))) interrupt[256 -0x20])(void); typedef int vector_irq_t[256]; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(vector_irq_t) vector_irq; extern void setup_vector_irq(int cpu); extern void lock_vector_lock(void); extern void unlock_vector_lock(void); extern void __setup_vector_irq(int cpu); # 234 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" 2 extern int setup_irq(unsigned int irq, struct irqaction *new); extern void remove_irq(unsigned int irq, struct irqaction *act); void move_native_irq(int irq); void move_masked_irq(int irq); # 270 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" extern int no_irq_affinity; static inline int irq_balancing_disabled(unsigned int irq) { struct irq_desc *desc; desc = irq_to_desc(irq); return desc->status & 0x00400000; } extern irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action); extern void handle_level_irq(unsigned int irq, struct irq_desc *desc); extern void handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc); extern void handle_edge_irq(unsigned int irq, struct irq_desc *desc); extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc); extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc); extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc); extern void handle_nested_irq(unsigned int irq); # 308 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *desc) { desc->handle_irq(irq, desc); } static inline void generic_handle_irq(unsigned int irq) { generic_handle_irq_desc(irq, irq_to_desc(irq)); } extern void note_interrupt(unsigned int irq, struct irq_desc *desc, irqreturn_t action_ret); void check_irq_resend(struct irq_desc *desc, unsigned int irq); extern int noirqdebug_setup(char *str); extern int can_request_irq(unsigned int irq, unsigned long irqflags); extern struct irq_chip no_irq_chip; extern struct irq_chip dummy_irq_chip; extern void set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, irq_flow_handler_t handle); extern void set_irq_chip_and_handler_name(unsigned int irq, struct irq_chip *chip, irq_flow_handler_t handle, const char *name); extern void __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, const char *name); static inline void __set_irq_handler_unlocked(int irq, irq_flow_handler_t handler) { struct irq_desc *desc; desc = irq_to_desc(irq); desc->handle_irq = handler; } static inline void set_irq_handler(unsigned int irq, irq_flow_handler_t handle) { __set_irq_handler(irq, handle, 0, ((void *)0)); } static inline void set_irq_chained_handler(unsigned int irq, irq_flow_handler_t handle) { __set_irq_handler(irq, handle, 1, ((void *)0)); } extern void set_irq_nested_thread(unsigned int irq, int nest); extern void set_irq_noprobe(unsigned int irq); extern void set_irq_probe(unsigned int irq); extern unsigned int create_irq_nr(unsigned int irq_want, int node); extern int create_irq(void); extern void destroy_irq(unsigned int irq); static inline int irq_has_action(unsigned int irq) { struct irq_desc *desc = irq_to_desc(irq); return desc->action != ((void *)0); } extern void dynamic_irq_init(unsigned int irq); void dynamic_irq_init_keep_chip_data(unsigned int irq); extern void dynamic_irq_cleanup(unsigned int irq); void dynamic_irq_cleanup_keep_chip_data(unsigned int irq); extern int set_irq_chip(unsigned int irq, struct irq_chip *chip); extern int set_irq_data(unsigned int irq, void *data); extern int set_irq_chip_data(unsigned int irq, void *data); extern int set_irq_type(unsigned int irq, unsigned int type); extern int set_irq_msi(unsigned int irq, struct msi_desc *entry); # 438 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" static inline bool alloc_desc_masks(struct irq_desc *desc, int node, bool boot) { gfp_t gfp = (((__attribute__((force)) gfp_t)0x20u)); if (boot) gfp = ((((__attribute__((force)) gfp_t)0x20u)) & ~((__attribute__((force)) gfp_t)0x20u)); # 457 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" return true; } static inline void init_desc_masks(struct irq_desc *desc) { cpumask_setall(desc->affinity); cpumask_clear(desc->pending_mask); } # 478 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/irq.h" static inline void init_copy_desc_masks(struct irq_desc *old_desc, struct irq_desc *new_desc) { } static inline void free_desc_masks(struct irq_desc *old_desc, struct irq_desc *new_desc) { free_cpumask_var(old_desc->affinity); free_cpumask_var(old_desc->pending_mask); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hardirq.h" 2 typedef struct { unsigned int __softirq_pending; unsigned int __nmi_count; unsigned int irq0_irqs; unsigned int apic_timer_irqs; unsigned int irq_spurious_count; unsigned int x86_platform_ipis; unsigned int apic_perf_irqs; unsigned int apic_pending_irqs; unsigned int irq_resched_count; unsigned int irq_call_count; unsigned int irq_tlb_count; unsigned int irq_thermal_count; unsigned int irq_threshold_count; } __attribute__((__aligned__((1 << (6))))) irq_cpustat_t; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(irq_cpustat_t) irq_stat __attribute__((__aligned__((1 << (6))))); # 47 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/hardirq.h" extern void ack_bad_irq(unsigned int irq); extern u64 arch_irq_stat_cpu(unsigned int cpu); extern u64 arch_irq_stat(void); # 11 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" 2 # 128 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" extern void synchronize_irq(unsigned int irq); struct task_struct; static inline void account_system_vtime(struct task_struct *tsk) { } # 193 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" extern void irq_enter(void); # 208 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/hardirq.h" extern void irq_exit(void); # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" 2 # 73 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" enum { IRQTF_RUNTHREAD, IRQTF_DIED, IRQTF_WARNED, IRQTF_AFFINITY, }; typedef irqreturn_t (*irq_handler_t)(int, void *); # 95 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" struct irqaction { irq_handler_t handler; unsigned long flags; const char *name; void *dev_id; struct irqaction *next; int irq; struct proc_dir_entry *dir; irq_handler_t thread_fn; struct task_struct *thread; unsigned long thread_flags; }; extern irqreturn_t no_action(int cpl, void *dev_id); extern int 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 int 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 void exit_irq_thread(void); # 147 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" extern void free_irq(unsigned int, void *); struct device; extern int 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 int 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); # 185 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" extern void disable_irq_nosync(unsigned int irq); extern void disable_irq(unsigned int irq); extern void enable_irq(unsigned int irq); extern void suspend_device_irqs(void); extern void resume_device_irqs(void); static inline int check_wakeup_irqs(void) { return 0; } # 206 "/lnx/src/MM/mmotm-2010-0323-1534/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); # 240 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" static inline void disable_irq_nosync_lockdep(unsigned int irq) { disable_irq_nosync(irq); } static inline void disable_irq_nosync_lockdep_irqsave(unsigned int irq, unsigned long *flags) { disable_irq_nosync(irq); } static inline void disable_irq_lockdep(unsigned int irq) { disable_irq(irq); } static inline void enable_irq_lockdep(unsigned int irq) { enable_irq(irq); } static inline void enable_irq_lockdep_irqrestore(unsigned int irq, unsigned long *flags) { enable_irq(irq); } extern int set_irq_wake(unsigned int irq, unsigned int on); static inline int enable_irq_wake(unsigned int irq) { return set_irq_wake(irq, 1); } static inline int disable_irq_wake(unsigned int irq) { return set_irq_wake(irq, 0); } # 341 "/lnx/src/MM/mmotm-2010-0323-1534/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(unsigned int nr); extern void wakeup_softirqd(void); # 387 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" ""))) __typeof__(struct list_head [NR_SOFTIRQS]) softirq_work_list; 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); # 420 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" struct tasklet_struct { struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data; }; # 436 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/interrupt.h" enum { TASKLET_STATE_SCHED, TASKLET_STATE_RUN }; static inline int tasklet_trylock(struct tasklet_struct *t) { return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state); } static inline void tasklet_unlock(struct tasklet_struct *t) { __asm__ __volatile__("": : :"memory"); clear_bit(TASKLET_STATE_RUN, &(t)->state); } static inline void tasklet_unlock_wait(struct tasklet_struct *t) { while ((__builtin_constant_p((TASKLET_STATE_RUN)) ? constant_test_bit((TASKLET_STATE_RUN), (&(t)->state)) : variable_test_bit((TASKLET_STATE_RUN), (&(t)->state)))) { __asm__ __volatile__("": : :"memory"); } } extern void __tasklet_schedule(struct tasklet_struct *t); static inline 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 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 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 void tasklet_disable_nosync(struct tasklet_struct *t) { atomic_inc(&t->count); __asm__ __volatile__("": : :"memory"); } static inline void tasklet_disable(struct tasklet_struct *t) { tasklet_disable_nosync(t); tasklet_unlock_wait(t); asm volatile("mfence":::"memory"); } static inline void tasklet_enable(struct tasklet_struct *t) { __asm__ __volatile__("": : :"memory"); atomic_dec(&t->count); } static inline void tasklet_hi_enable(struct tasklet_struct *t) { __asm__ __volatile__("": : :"memory"); atomic_dec(&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 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 void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) { hrtimer_cancel(&ttimer->timer); tasklet_kill(&ttimer->tasklet); } # 592 "/lnx/src/MM/mmotm-2010-0323-1534/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); struct irq_desc; extern int early_irq_init(void); extern int arch_probe_nr_irqs(void); extern int arch_early_irq_init(void); extern int arch_init_chip_data(struct irq_desc *desc, int node); # 1169 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" 2 extern rwlock_t dev_base_lock; # 1188 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline struct net_device *next_net_device(struct net_device *dev) { struct list_head *lh; struct net *net; net = dev_net(dev); lh = dev->dev_list.next; return lh == &net->dev_base_head ? ((void *)0) : ({ const typeof( ((struct net_device *)0)->dev_list ) *__mptr = (lh); (struct net_device *)( (char *)__mptr - __builtin_offsetof(struct net_device,dev_list) );}); } static inline struct net_device *next_net_device_rcu(struct net_device *dev) { struct list_head *lh; struct net *net; net = dev_net(dev); lh = ({ typeof(dev->dev_list.next) _________p1 = (*(volatile typeof(dev->dev_list.next) *)&(dev->dev_list.next)); do { } while (0); (_________p1); }); return lh == &net->dev_base_head ? ((void *)0) : ({ const typeof( ((struct net_device *)0)->dev_list ) *__mptr = (lh); (struct net_device *)( (char *)__mptr - __builtin_offsetof(struct net_device,dev_list) );}); } static inline struct net_device *first_net_device(struct net *net) { return list_empty(&net->dev_base_head) ? ((void *)0) : ({ const typeof( ((struct net_device *)0)->dev_list ) *__mptr = (net->dev_base_head.next); (struct net_device *)( (char *)__mptr - __builtin_offsetof(struct net_device,dev_list) );}); } extern int netdev_boot_setup_check(struct net_device *dev); extern unsigned long netdev_boot_base(const char *prefix, int unit); extern struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *hwaddr); extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type); extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type); extern void dev_add_pack(struct packet_type *pt); extern void dev_remove_pack(struct packet_type *pt); extern void __dev_remove_pack(struct packet_type *pt); extern struct net_device *dev_get_by_flags(struct net *net, unsigned short flags, unsigned short mask); extern struct net_device *dev_get_by_name(struct net *net, const char *name); extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); extern struct net_device *__dev_get_by_name(struct net *net, const char *name); extern int dev_alloc_name(struct net_device *dev, const char *name); extern int dev_open(struct net_device *dev); extern int dev_close(struct net_device *dev); extern void dev_disable_lro(struct net_device *dev); extern int dev_queue_xmit(struct sk_buff *skb); extern int register_netdevice(struct net_device *dev); extern void unregister_netdevice_queue(struct net_device *dev, struct list_head *head); extern void unregister_netdevice_many(struct list_head *head); static inline void unregister_netdevice(struct net_device *dev) { unregister_netdevice_queue(dev, ((void *)0)); } extern void free_netdev(struct net_device *dev); extern void synchronize_net(void); extern int register_netdevice_notifier(struct notifier_block *nb); extern int unregister_netdevice_notifier(struct notifier_block *nb); extern int init_dummy_netdev(struct net_device *dev); extern void netdev_resync_ops(struct net_device *dev); extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); extern struct net_device *dev_get_by_index(struct net *net, int ifindex); extern struct net_device *__dev_get_by_index(struct net *net, int ifindex); extern struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); extern int dev_restart(struct net_device *dev); extern int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb); extern void skb_gro_reset_offset(struct sk_buff *skb); static inline unsigned int skb_gro_offset(const struct sk_buff *skb) { return ((struct napi_gro_cb *)(skb)->cb)->data_offset; } static inline unsigned int skb_gro_len(const struct sk_buff *skb) { return skb->len - ((struct napi_gro_cb *)(skb)->cb)->data_offset; } static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len) { ((struct napi_gro_cb *)(skb)->cb)->data_offset += len; } static inline void *skb_gro_header_fast(struct sk_buff *skb, unsigned int offset) { return ((struct napi_gro_cb *)(skb)->cb)->frag0 + offset; } static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen) { return ((struct napi_gro_cb *)(skb)->cb)->frag0_len < hlen; } static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen, unsigned int offset) { ((struct napi_gro_cb *)(skb)->cb)->frag0 = ((void *)0); ((struct napi_gro_cb *)(skb)->cb)->frag0_len = 0; return pskb_may_pull(skb, hlen) ? skb->data + offset : ((void *)0); } static inline void *skb_gro_mac_header(struct sk_buff *skb) { return ((struct napi_gro_cb *)(skb)->cb)->frag0 ?: skb_mac_header(skb); } static inline void *skb_gro_network_header(struct sk_buff *skb) { return (((struct napi_gro_cb *)(skb)->cb)->frag0 ?: skb->data) + skb_network_offset(skb); } static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned len) { if (!dev->header_ops || !dev->header_ops->create) return 0; return dev->header_ops->create(skb, dev, type, daddr, saddr, len); } static inline int dev_parse_header(const struct sk_buff *skb, unsigned char *haddr) { const struct net_device *dev = skb->dev; if (!dev->header_ops || !dev->header_ops->parse) return 0; return dev->header_ops->parse(skb, haddr); } typedef int gifconf_func_t(struct net_device * dev, char __attribute__((noderef, address_space(1))) * bufptr, int len); extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf); static inline int unregister_gifconf(unsigned int family) { return register_gifconf(family, ((void *)0)); } struct softnet_data { struct Qdisc *output_queue; struct list_head poll_list; struct sk_buff *completion_queue; struct call_single_data csd __attribute__((__aligned__((1 << (6))))); struct sk_buff_head input_pkt_queue; struct napi_struct backlog; }; extern __attribute__((noderef, address_space(3))) __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(struct softnet_data) softnet_data __attribute__((__aligned__((1 << (6))))); extern void __netif_schedule(struct Qdisc *q); static inline void netif_schedule_queue(struct netdev_queue *txq) { if (!(__builtin_constant_p((__QUEUE_STATE_XOFF)) ? constant_test_bit((__QUEUE_STATE_XOFF), (&txq->state)) : variable_test_bit((__QUEUE_STATE_XOFF), (&txq->state)))) __netif_schedule(txq->qdisc); } static inline void netif_tx_schedule_all(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) netif_schedule_queue(netdev_get_tx_queue(dev, i)); } static inline void netif_tx_start_queue(struct netdev_queue *dev_queue) { clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state); } static inline void netif_start_queue(struct net_device *dev) { netif_tx_start_queue(netdev_get_tx_queue(dev, 0)); } static inline void netif_tx_start_all_queues(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); netif_tx_start_queue(txq); } } static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue) { if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state)) __netif_schedule(dev_queue->qdisc); } # 1416 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_wake_queue(struct net_device *dev) { netif_tx_wake_queue(netdev_get_tx_queue(dev, 0)); } static inline void netif_tx_wake_all_queues(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); netif_tx_wake_queue(txq); } } static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) { set_bit(__QUEUE_STATE_XOFF, &dev_queue->state); } # 1443 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_stop_queue(struct net_device *dev) { netif_tx_stop_queue(netdev_get_tx_queue(dev, 0)); } static inline void netif_tx_stop_all_queues(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); netif_tx_stop_queue(txq); } } static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue) { return (__builtin_constant_p((__QUEUE_STATE_XOFF)) ? constant_test_bit((__QUEUE_STATE_XOFF), (&dev_queue->state)) : variable_test_bit((__QUEUE_STATE_XOFF), (&dev_queue->state))); } static inline int netif_queue_stopped(const struct net_device *dev) { return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0)); } static inline int netif_tx_queue_frozen(const struct netdev_queue *dev_queue) { return (__builtin_constant_p((__QUEUE_STATE_FROZEN)) ? constant_test_bit((__QUEUE_STATE_FROZEN), (&dev_queue->state)) : variable_test_bit((__QUEUE_STATE_FROZEN), (&dev_queue->state))); } static inline int netif_running(const struct net_device *dev) { return (__builtin_constant_p((__LINK_STATE_START)) ? constant_test_bit((__LINK_STATE_START), (&dev->state)) : variable_test_bit((__LINK_STATE_START), (&dev->state))); } # 1504 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); netif_tx_start_queue(txq); } # 1518 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); netif_tx_stop_queue(txq); } # 1535 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline int __netif_subqueue_stopped(const struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); return netif_tx_queue_stopped(txq); } static inline int netif_subqueue_stopped(const struct net_device *dev, struct sk_buff *skb) { return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb)); } # 1556 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state)) __netif_schedule(txq->qdisc); } static inline int netif_is_multiqueue(const struct net_device *dev) { return (dev->num_tx_queues > 1); } extern void dev_kfree_skb_irq(struct sk_buff *skb); extern void dev_kfree_skb_any(struct sk_buff *skb); extern int netif_rx(struct sk_buff *skb); extern int netif_rx_ni(struct sk_buff *skb); extern int netif_receive_skb(struct sk_buff *skb); extern gro_result_t dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb); extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb); extern gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb); extern void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb); extern struct sk_buff * napi_get_frags(struct napi_struct *napi); extern gro_result_t napi_frags_finish(struct napi_struct *napi, struct sk_buff *skb, gro_result_t ret); extern struct sk_buff * napi_frags_skb(struct napi_struct *napi); extern gro_result_t napi_gro_frags(struct napi_struct *napi); static inline void napi_free_frags(struct napi_struct *napi) { kfree_skb(napi->skb); napi->skb = ((void *)0); } extern void netif_nit_deliver(struct sk_buff *skb); extern int dev_valid_name(const char *name); extern int dev_ioctl(struct net *net, unsigned int cmd, void __attribute__((noderef, address_space(1))) *); extern int dev_ethtool(struct net *net, struct ifreq *); extern unsigned dev_get_flags(const struct net_device *); extern int __dev_change_flags(struct net_device *, unsigned int flags); extern int dev_change_flags(struct net_device *, unsigned); extern void __dev_notify_flags(struct net_device *, unsigned int old_flags); extern int dev_change_name(struct net_device *, const char *); extern int dev_set_alias(struct net_device *, const char *, size_t); extern int dev_change_net_namespace(struct net_device *, struct net *, const char *); extern int dev_set_mtu(struct net_device *, int); extern int dev_set_mac_address(struct net_device *, struct sockaddr *); extern int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, struct netdev_queue *txq); extern int dev_forward_skb(struct net_device *dev, struct sk_buff *skb); extern int netdev_budget; extern void netdev_run_todo(void); static inline void dev_put(struct net_device *dev) { atomic_dec(&dev->refcnt); } static inline void dev_hold(struct net_device *dev) { atomic_inc(&dev->refcnt); } # 1672 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" extern void linkwatch_fire_event(struct net_device *dev); extern void linkwatch_forget_dev(struct net_device *dev); static inline int netif_carrier_ok(const struct net_device *dev) { return !(__builtin_constant_p((__LINK_STATE_NOCARRIER)) ? constant_test_bit((__LINK_STATE_NOCARRIER), (&dev->state)) : variable_test_bit((__LINK_STATE_NOCARRIER), (&dev->state))); } extern unsigned long dev_trans_start(struct net_device *dev); extern void __netdev_watchdog_up(struct net_device *dev); extern void netif_carrier_on(struct net_device *dev); extern void netif_carrier_off(struct net_device *dev); # 1707 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_dormant_on(struct net_device *dev) { if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state)) linkwatch_fire_event(dev); } static inline void netif_dormant_off(struct net_device *dev) { if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state)) linkwatch_fire_event(dev); } static inline int netif_dormant(const struct net_device *dev) { return (__builtin_constant_p((__LINK_STATE_DORMANT)) ? constant_test_bit((__LINK_STATE_DORMANT), (&dev->state)) : variable_test_bit((__LINK_STATE_DORMANT), (&dev->state))); } # 1743 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline int netif_oper_up(const struct net_device *dev) { return (dev->operstate == IF_OPER_UP || dev->operstate == IF_OPER_UNKNOWN ); } static inline int netif_device_present(struct net_device *dev) { return (__builtin_constant_p((__LINK_STATE_PRESENT)) ? constant_test_bit((__LINK_STATE_PRESENT), (&dev->state)) : variable_test_bit((__LINK_STATE_PRESENT), (&dev->state))); } extern void netif_device_detach(struct net_device *dev); extern void netif_device_attach(struct net_device *dev); enum { NETIF_MSG_DRV = 0x0001, NETIF_MSG_PROBE = 0x0002, NETIF_MSG_LINK = 0x0004, NETIF_MSG_TIMER = 0x0008, NETIF_MSG_IFDOWN = 0x0010, NETIF_MSG_IFUP = 0x0020, NETIF_MSG_RX_ERR = 0x0040, NETIF_MSG_TX_ERR = 0x0080, NETIF_MSG_TX_QUEUED = 0x0100, NETIF_MSG_INTR = 0x0200, NETIF_MSG_TX_DONE = 0x0400, NETIF_MSG_RX_STATUS = 0x0800, NETIF_MSG_PKTDATA = 0x1000, NETIF_MSG_HW = 0x2000, NETIF_MSG_WOL = 0x4000, }; # 1803 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) { if (debug_value < 0 || debug_value >= (sizeof(u32) * 8)) return default_msg_enable_bits; if (debug_value == 0) return 0; return (1 << debug_value) - 1; } static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); txq->xmit_lock_owner = cpu; } static inline void __netif_tx_lock_bh(struct netdev_queue *txq) { spin_lock_bh(&txq->_xmit_lock); txq->xmit_lock_owner = (({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; })); } static inline int __netif_tx_trylock(struct netdev_queue *txq) { int ok = spin_trylock(&txq->_xmit_lock); if (__builtin_expect(!!(ok), 1)) txq->xmit_lock_owner = (({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; })); return ok; } static inline void __netif_tx_unlock(struct netdev_queue *txq) { txq->xmit_lock_owner = -1; spin_unlock(&txq->_xmit_lock); } static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) { txq->xmit_lock_owner = -1; spin_unlock_bh(&txq->_xmit_lock); } static inline void txq_trans_update(struct netdev_queue *txq) { if (txq->xmit_lock_owner != -1) txq->trans_start = jiffies; } static inline void netif_tx_lock(struct net_device *dev) { unsigned int i; int cpu; spin_lock(&dev->tx_global_lock); cpu = (({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; })); for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); __netif_tx_lock(txq, cpu); set_bit(__QUEUE_STATE_FROZEN, &txq->state); __netif_tx_unlock(txq); } } static inline void netif_tx_lock_bh(struct net_device *dev) { local_bh_disable(); netif_tx_lock(dev); } static inline void netif_tx_unlock(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); clear_bit(__QUEUE_STATE_FROZEN, &txq->state); netif_schedule_queue(txq); } spin_unlock(&dev->tx_global_lock); } static inline void netif_tx_unlock_bh(struct net_device *dev) { netif_tx_unlock(dev); local_bh_enable(); } # 1921 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" static inline void netif_tx_disable(struct net_device *dev) { unsigned int i; int cpu; local_bh_disable(); cpu = (({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm("mov" "b ""%%""gs"":%P" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm("mov" "w ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm("mov" "l ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm("mov" "q ""%%""gs"":%P" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; })); for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); __netif_tx_lock(txq, cpu); netif_tx_stop_queue(txq); __netif_tx_unlock(txq); } local_bh_enable(); } static inline void netif_addr_lock(struct net_device *dev) { spin_lock(&dev->addr_list_lock); } static inline void netif_addr_lock_bh(struct net_device *dev) { spin_lock_bh(&dev->addr_list_lock); } static inline void netif_addr_unlock(struct net_device *dev) { spin_unlock(&dev->addr_list_lock); } static inline void netif_addr_unlock_bh(struct net_device *dev) { spin_unlock_bh(&dev->addr_list_lock); } # 1967 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/netdevice.h" extern void ether_setup(struct net_device *dev); extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, void (*setup)(struct net_device *), unsigned int queue_count); extern int register_netdev(struct net_device *dev); extern void unregister_netdev(struct net_device *dev); extern int dev_addr_add(struct net_device *dev, unsigned char *addr, unsigned char addr_type); extern int dev_addr_del(struct net_device *dev, unsigned char *addr, unsigned char addr_type); extern int dev_addr_add_multiple(struct net_device *to_dev, struct net_device *from_dev, unsigned char addr_type); extern int dev_addr_del_multiple(struct net_device *to_dev, struct net_device *from_dev, unsigned char addr_type); extern void dev_set_rx_mode(struct net_device *dev); extern void __dev_set_rx_mode(struct net_device *dev); extern int dev_unicast_delete(struct net_device *dev, void *addr); extern int dev_unicast_add(struct net_device *dev, void *addr); extern int dev_unicast_sync(struct net_device *to, struct net_device *from); extern void dev_unicast_unsync(struct net_device *to, struct net_device *from); extern void dev_unicast_flush(struct net_device *dev); extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all); extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly); extern int dev_mc_sync(struct net_device *to, struct net_device *from); extern void dev_mc_unsync(struct net_device *to, struct net_device *from); extern void dev_addr_discard(struct net_device *dev); extern int __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all); extern int __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly); extern int __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count); extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count); extern int dev_set_promiscuity(struct net_device *dev, int inc); extern int dev_set_allmulti(struct net_device *dev, int inc); extern void netdev_state_change(struct net_device *dev); extern int netdev_bonding_change(struct net_device *dev, unsigned long event); extern void netdev_features_change(struct net_device *dev); extern void dev_load(struct net *net, const char *name); extern void dev_mcast_init(void); extern const struct net_device_stats *dev_get_stats(struct net_device *dev); extern void dev_txq_stats_fold(const struct net_device *dev, struct net_device_stats *stats); extern int netdev_max_backlog; extern int weight_p; extern int netdev_set_master(struct net_device *dev, struct net_device *master); extern int skb_checksum_help(struct sk_buff *skb); extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features); extern void netdev_rx_csum_fault(struct net_device *dev); extern void net_enable_timestamp(void); extern void net_disable_timestamp(void); extern void *dev_seq_start(struct seq_file *seq, loff_t *pos); extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos); extern void dev_seq_stop(struct seq_file *seq, void *v); extern int netdev_class_create_file(struct class_attribute *class_attr); extern void netdev_class_remove_file(struct class_attribute *class_attr); extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len); extern void linkwatch_run_queue(void); unsigned long netdev_increment_features(unsigned long all, unsigned long one, unsigned long mask); unsigned long netdev_fix_features(unsigned long features, const char *name); void netif_stacked_transfer_operstate(const struct net_device *rootdev, struct net_device *dev); static inline int net_gso_ok(int features, int gso_type) { int feature = gso_type << 16; return (features & feature) == feature; } static inline int skb_gso_ok(struct sk_buff *skb, int features) { return net_gso_ok(features, ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type) && (!skb_has_frags(skb) || (features & 64)); } static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) { return skb_is_gso(skb) && (!skb_gso_ok(skb, dev->features) || __builtin_expect(!!(skb->ip_summed != 3), 0)); } static inline void netif_set_gso_max_size(struct net_device *dev, unsigned int size) { dev->gso_max_size = size; } static inline void skb_bond_set_mac_by_master(struct sk_buff *skb, struct net_device *master) { if (skb->pkt_type == 0) { u16 *dest = (u16 *) eth_hdr(skb)->h_dest; memcpy(dest, master->dev_addr, 6); } } static inline int skb_bond_should_drop(struct sk_buff *skb, struct net_device *master) { if (master) { struct net_device *dev = skb->dev; if (master->priv_flags & 0x100) dev->last_rx = jiffies; if ((master->priv_flags & 0x10) && master->br_port) { skb_bond_set_mac_by_master(skb, master); } if (dev->priv_flags & 0x4) { if ((dev->priv_flags & 0x40) && skb->protocol == ((__attribute__((force)) __be16)(__builtin_constant_p((__u16)((0x0806))) ? ((__u16)( (((__u16)((0x0806)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0806)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0806))))) return 0; if (master->priv_flags & 0x10) { if (skb->pkt_type != 1 && skb->pkt_type != 2) return 0; } if (master->priv_flags & 0x8 && skb->protocol == ((__attribute__((force)) __be16)(__builtin_constant_p((__u16)((0x8809))) ? ((__u16)( (((__u16)((0x8809)) & (__u16)0x00ffU) << 8) | (((__u16)((0x8809)) & (__u16)0xff00U) >> 8))) : __fswab16((0x8809))))) return 0; return 1; } } return 0; } extern struct pernet_operations __attribute__ ((__section__(".init.data"))) loopback_net_ops; static inline int dev_ethtool_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) { if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings) return -95; return dev->ethtool_ops->get_settings(dev, cmd); } static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev) { if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum) return 0; return dev->ethtool_ops->get_rx_csum(dev); } static inline u32 dev_ethtool_get_flags(struct net_device *dev) { if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags) return 0; return dev->ethtool_ops->get_flags(dev); } static inline const char *netdev_name(const struct net_device *dev) { if (dev->reg_state != NETREG_REGISTERED) return "(unregistered net_device)"; return dev->name; } # 21 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" 1 # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unaligned.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/unaligned/access_ok.h" 1 static inline u16 get_unaligned_le16(const void *p) { return __le16_to_cpup((__le16 *)p); } static inline u32 get_unaligned_le32(const void *p) { return __le32_to_cpup((__le32 *)p); } static inline u64 get_unaligned_le64(const void *p) { return __le64_to_cpup((__le64 *)p); } static inline u16 get_unaligned_be16(const void *p) { return __be16_to_cpup((__be16 *)p); } static inline u32 get_unaligned_be32(const void *p) { return __be32_to_cpup((__be32 *)p); } static inline u64 get_unaligned_be64(const void *p) { return __be64_to_cpup((__be64 *)p); } static inline void put_unaligned_le16(u16 val, void *p) { *((__le16 *)p) = ((__attribute__((force)) __le16)(__u16)(val)); } static inline void put_unaligned_le32(u32 val, void *p) { *((__le32 *)p) = ((__attribute__((force)) __le32)(__u32)(val)); } static inline void put_unaligned_le64(u64 val, void *p) { *((__le64 *)p) = ((__attribute__((force)) __le64)(__u64)(val)); } static inline void put_unaligned_be16(u16 val, void *p) { *((__be16 *)p) = ((__attribute__((force)) __be16)(__builtin_constant_p((__u16)((val))) ? ((__u16)( (((__u16)((val)) & (__u16)0x00ffU) << 8) | (((__u16)((val)) & (__u16)0xff00U) >> 8))) : __fswab16((val)))); } static inline void put_unaligned_be32(u32 val, void *p) { *((__be32 *)p) = ((__attribute__((force)) __be32)(__builtin_constant_p((__u32)((val))) ? ((__u32)( (((__u32)((val)) & (__u32)0x000000ffUL) << 24) | (((__u32)((val)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((val)) & (__u32)0xff000000UL) >> 24))) : __fswab32((val)))); } static inline void put_unaligned_be64(u64 val, void *p) { *((__be64 *)p) = ((__attribute__((force)) __be64)(__builtin_constant_p((__u64)((val))) ? ((__u64)( (((__u64)((val)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((val)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((val)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((val)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((val)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((val)))); } # 9 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unaligned.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/unaligned/generic.h" 1 extern void __bad_unaligned_access_size(void); # 10 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/unaligned.h" 2 # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" 2 extern __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev); extern const struct header_ops eth_header_ops; extern int eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned len); extern int eth_rebuild_header(struct sk_buff *skb); extern int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr); extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh); extern void eth_header_cache_update(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr); extern int eth_mac_addr(struct net_device *dev, void *p); extern int eth_change_mtu(struct net_device *dev, int new_mtu); extern int eth_validate_addr(struct net_device *dev); extern struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count); # 60 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline int is_zero_ether_addr(const u8 *addr) { return !(addr[0] | addr[1] | addr[2] | addr[3] | addr[4] | addr[5]); } # 72 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline int is_multicast_ether_addr(const u8 *addr) { return (0x01 & addr[0]); } static inline int is_local_ether_addr(const u8 *addr) { return (0x02 & addr[0]); } static inline int is_broadcast_ether_addr(const u8 *addr) { return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == 0xff; } # 108 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline int is_valid_ether_addr(const u8 *addr) { return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); } # 122 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline void random_ether_addr(u8 *addr) { get_random_bytes (addr, 6); addr [0] &= 0xfe; addr [0] |= 0x02; } # 136 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline unsigned compare_ether_addr(const u8 *addr1, const u8 *addr2) { const u16 *a = (const u16 *) addr1; const u16 *b = (const u16 *) addr2; do { ((void)sizeof(char[1 - 2*!!(6 != 6)])); if (6 != 6) __build_bug_on_failed = 1; } while(0); return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0; } static inline unsigned long zap_last_2bytes(unsigned long value) { return value << 16; } # 168 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2], const u8 addr2[6+2]) { unsigned long fold = ((*(unsigned long *)addr1) ^ (*(unsigned long *)addr2)); if (sizeof(fold) == 8) return zap_last_2bytes(fold) != 0; fold |= zap_last_2bytes((*(unsigned long *)(addr1 + 4)) ^ (*(unsigned long *)(addr2 + 4))); return fold != 0; } # 197 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline bool is_etherdev_addr(const struct net_device *dev, const u8 addr[6 + 2]) { struct netdev_hw_addr *ha; int res = 1; rcu_read_lock(); for (ha = ({ const typeof( ((typeof(*ha) *)0)->list ) *__mptr = (({ typeof((&dev->dev_addrs.list)->next) _________p1 = (*(volatile typeof((&dev->dev_addrs.list)->next) *)&((&dev->dev_addrs.list)->next)); do { } while (0); (_________p1); })); (typeof(*ha) *)( (char *)__mptr - __builtin_offsetof(typeof(*ha),list) );}); __builtin_prefetch(ha->list.next), &ha->list != (&dev->dev_addrs.list); ha = ({ const typeof( ((typeof(*ha) *)0)->list ) *__mptr = (({ typeof(ha->list.next) _________p1 = (*(volatile typeof(ha->list.next) *)&(ha->list.next)); do { } while (0); (_________p1); })); (typeof(*ha) *)( (char *)__mptr - __builtin_offsetof(typeof(*ha),list) );})) { res = compare_ether_addr_64bits(addr, ha->addr); if (!res) break; } rcu_read_unlock(); return !res; } # 226 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/etherdevice.h" static inline int compare_ether_header(const void *a, const void *b) { u32 *a32 = (u32 *)((u8 *)a + 2); u32 *b32 = (u32 *)((u8 *)b + 2); return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) | (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]); } # 22 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jhash.h" 1 # 44 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jhash.h" static inline u32 jhash(const void *key, u32 length, u32 initval) { u32 a, b, c, len; const u8 *k = key; len = length; a = b = 0x9e3779b9; c = initval; while (len >= 12) { a += (k[0] +((u32)k[1]<<8) +((u32)k[2]<<16) +((u32)k[3]<<24)); b += (k[4] +((u32)k[5]<<8) +((u32)k[6]<<16) +((u32)k[7]<<24)); c += (k[8] +((u32)k[9]<<8) +((u32)k[10]<<16)+((u32)k[11]<<24)); { a -= b; a -= c; a ^= (c>>13); b -= c; b -= a; b ^= (a<<8); c -= a; c -= b; c ^= (b>>13); a -= b; a -= c; a ^= (c>>12); b -= c; b -= a; b ^= (a<<16); c -= a; c -= b; c ^= (b>>5); a -= b; a -= c; a ^= (c>>3); b -= c; b -= a; b ^= (a<<10); c -= a; c -= b; c ^= (b>>15); }; k += 12; len -= 12; } c += length; switch (len) { case 11: c += ((u32)k[10]<<24); case 10: c += ((u32)k[9]<<16); case 9 : c += ((u32)k[8]<<8); case 8 : b += ((u32)k[7]<<24); case 7 : b += ((u32)k[6]<<16); case 6 : b += ((u32)k[5]<<8); case 5 : b += k[4]; case 4 : a += ((u32)k[3]<<24); case 3 : a += ((u32)k[2]<<16); case 2 : a += ((u32)k[1]<<8); case 1 : a += k[0]; }; { a -= b; a -= c; a ^= (c>>13); b -= c; b -= a; b ^= (a<<8); c -= a; c -= b; c ^= (b>>13); a -= b; a -= c; a ^= (c>>12); b -= c; b -= a; b ^= (a<<16); c -= a; c -= b; c ^= (b>>5); a -= b; a -= c; a ^= (c>>3); b -= c; b -= a; b ^= (a<<10); c -= a; c -= b; c ^= (b>>15); }; return c; } static inline u32 jhash2(const u32 *k, u32 length, u32 initval) { u32 a, b, c, len; a = b = 0x9e3779b9; c = initval; len = length; while (len >= 3) { a += k[0]; b += k[1]; c += k[2]; { a -= b; a -= c; a ^= (c>>13); b -= c; b -= a; b ^= (a<<8); c -= a; c -= b; c ^= (b>>13); a -= b; a -= c; a ^= (c>>12); b -= c; b -= a; b ^= (a<<16); c -= a; c -= b; c ^= (b>>5); a -= b; a -= c; a ^= (c>>3); b -= c; b -= a; b ^= (a<<10); c -= a; c -= b; c ^= (b>>15); }; k += 3; len -= 3; } c += length * 4; switch (len) { case 2 : b += k[1]; case 1 : a += k[0]; }; { a -= b; a -= c; a ^= (c>>13); b -= c; b -= a; b ^= (a<<8); c -= a; c -= b; c ^= (b>>13); a -= b; a -= c; a ^= (c>>12); b -= c; b -= a; b ^= (a<<16); c -= a; c -= b; c ^= (b>>5); a -= b; a -= c; a ^= (c>>3); b -= c; b -= a; b ^= (a<<10); c -= a; c -= b; c ^= (b>>15); }; return c; } # 122 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/jhash.h" static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval) { a += 0x9e3779b9; b += 0x9e3779b9; c += initval; { a -= b; a -= c; a ^= (c>>13); b -= c; b -= a; b ^= (a<<8); c -= a; c -= b; c ^= (b>>13); a -= b; a -= c; a ^= (c>>12); b -= c; b -= a; b ^= (a<<16); c -= a; c -= b; c ^= (b>>5); a -= b; a -= c; a ^= (c>>3); b -= c; b -= a; b ^= (a<<10); c -= a; c -= b; c ^= (b>>15); }; return c; } static inline u32 jhash_2words(u32 a, u32 b, u32 initval) { return jhash_3words(a, b, 0, initval); } static inline u32 jhash_1word(u32 a, u32 initval) { return jhash_3words(a, 0, 0, initval); } # 23 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" 1 # 17 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_bridge.h" 1 # 52 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_bridge.h" struct __bridge_info { __u64 designated_root; __u64 bridge_id; __u32 root_path_cost; __u32 max_age; __u32 hello_time; __u32 forward_delay; __u32 bridge_max_age; __u32 bridge_hello_time; __u32 bridge_forward_delay; __u8 topology_change; __u8 topology_change_detected; __u8 root_port; __u8 stp_enabled; __u32 ageing_time; __u32 gc_interval; __u32 hello_timer_value; __u32 tcn_timer_value; __u32 topology_change_timer_value; __u32 gc_timer_value; }; struct __port_info { __u64 designated_root; __u64 designated_bridge; __u16 port_id; __u16 designated_port; __u32 path_cost; __u32 designated_cost; __u8 state; __u8 top_change_ack; __u8 config_pending; __u8 unused0; __u32 message_age_timer_value; __u32 forward_delay_timer_value; __u32 hold_timer_value; }; struct __fdb_entry { __u8 mac_addr[6]; __u8 port_no; __u8 is_local; __u32 ageing_timer_value; __u8 port_hi; __u8 pad0; __u16 unused; }; extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __attribute__((noderef, address_space(1))) *)); extern struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p, struct sk_buff *skb); extern int (*br_should_route_hook)(struct sk_buff *skb); # 18 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 1 # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" 1 # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_addr.h" 1 struct ifaddrmsg { __u8 ifa_family; __u8 ifa_prefixlen; __u8 ifa_flags; __u8 ifa_scope; __u32 ifa_index; }; # 22 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_addr.h" enum { IFA_UNSPEC, IFA_ADDRESS, IFA_LOCAL, IFA_LABEL, IFA_BROADCAST, IFA_ANYCAST, IFA_CACHEINFO, IFA_MULTICAST, __IFA_MAX, }; # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/if_addr.h" struct ifa_cacheinfo { __u32 ifa_prefered; __u32 ifa_valid; __u32 cstamp; __u32 tstamp; }; # 8 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/neighbour.h" 1 struct ndmsg { __u8 ndm_family; __u8 ndm_pad1; __u16 ndm_pad2; __s32 ndm_ifindex; __u16 ndm_state; __u8 ndm_flags; __u8 ndm_type; }; enum { NDA_UNSPEC, NDA_DST, NDA_LLADDR, NDA_CACHEINFO, NDA_PROBES, __NDA_MAX }; # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/neighbour.h" struct nda_cacheinfo { __u32 ndm_confirmed; __u32 ndm_used; __u32 ndm_updated; __u32 ndm_refcnt; }; # 89 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/neighbour.h" struct ndt_stats { __u64 ndts_allocs; __u64 ndts_destroys; __u64 ndts_hash_grows; __u64 ndts_res_failed; __u64 ndts_lookups; __u64 ndts_hits; __u64 ndts_rcv_probes_mcast; __u64 ndts_rcv_probes_ucast; __u64 ndts_periodic_gc_runs; __u64 ndts_forced_gc_runs; }; enum { NDTPA_UNSPEC, NDTPA_IFINDEX, NDTPA_REFCNT, NDTPA_REACHABLE_TIME, NDTPA_BASE_REACHABLE_TIME, NDTPA_RETRANS_TIME, NDTPA_GC_STALETIME, NDTPA_DELAY_PROBE_TIME, NDTPA_QUEUE_LEN, NDTPA_APP_PROBES, NDTPA_UCAST_PROBES, NDTPA_MCAST_PROBES, NDTPA_ANYCAST_DELAY, NDTPA_PROXY_DELAY, NDTPA_PROXY_QLEN, NDTPA_LOCKTIME, __NDTPA_MAX }; struct ndtmsg { __u8 ndtm_family; __u8 ndtm_pad1; __u16 ndtm_pad2; }; struct ndt_config { __u16 ndtc_key_len; __u16 ndtc_entry_size; __u32 ndtc_entries; __u32 ndtc_last_flush; __u32 ndtc_last_rand; __u32 ndtc_hash_rnd; __u32 ndtc_hash_mask; __u32 ndtc_hash_chain_gc; __u32 ndtc_proxy_qlen; }; enum { NDTA_UNSPEC, NDTA_NAME, NDTA_THRESH1, NDTA_THRESH2, NDTA_THRESH3, NDTA_CONFIG, NDTA_PARMS, NDTA_STATS, NDTA_GC_INTERVAL, __NDTA_MAX }; # 9 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" 2 enum { RTM_BASE = 16, RTM_NEWLINK = 16, RTM_DELLINK, RTM_GETLINK, RTM_SETLINK, RTM_NEWADDR = 20, RTM_DELADDR, RTM_GETADDR, RTM_NEWROUTE = 24, RTM_DELROUTE, RTM_GETROUTE, RTM_NEWNEIGH = 28, RTM_DELNEIGH, RTM_GETNEIGH, RTM_NEWRULE = 32, RTM_DELRULE, RTM_GETRULE, RTM_NEWQDISC = 36, RTM_DELQDISC, RTM_GETQDISC, RTM_NEWTCLASS = 40, RTM_DELTCLASS, RTM_GETTCLASS, RTM_NEWTFILTER = 44, RTM_DELTFILTER, RTM_GETTFILTER, RTM_NEWACTION = 48, RTM_DELACTION, RTM_GETACTION, RTM_NEWPREFIX = 52, RTM_GETMULTICAST = 58, RTM_GETANYCAST = 62, RTM_NEWNEIGHTBL = 64, RTM_GETNEIGHTBL = 66, RTM_SETNEIGHTBL, RTM_NEWNDUSEROPT = 68, RTM_NEWADDRLABEL = 72, RTM_DELADDRLABEL, RTM_GETADDRLABEL, RTM_GETDCB = 78, RTM_SETDCB, __RTM_MAX, }; # 130 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct rtattr { unsigned short rta_len; unsigned short rta_type; }; # 156 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct rtmsg { unsigned char rtm_family; unsigned char rtm_dst_len; unsigned char rtm_src_len; unsigned char rtm_tos; unsigned char rtm_table; unsigned char rtm_protocol; unsigned char rtm_scope; unsigned char rtm_type; unsigned rtm_flags; }; enum { RTN_UNSPEC, RTN_UNICAST, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST, RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_THROW, RTN_NAT, RTN_XRESOLVE, __RTN_MAX }; # 230 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" enum rt_scope_t { RT_SCOPE_UNIVERSE=0, RT_SCOPE_SITE=200, RT_SCOPE_LINK=253, RT_SCOPE_HOST=254, RT_SCOPE_NOWHERE=255 }; # 248 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" enum rt_class_t { RT_TABLE_UNSPEC=0, RT_TABLE_COMPAT=252, RT_TABLE_DEFAULT=253, RT_TABLE_MAIN=254, RT_TABLE_LOCAL=255, RT_TABLE_MAX=0xFFFFFFFF }; enum rtattr_type_t { RTA_UNSPEC, RTA_DST, RTA_SRC, RTA_IIF, RTA_OIF, RTA_GATEWAY, RTA_PRIORITY, RTA_PREFSRC, RTA_METRICS, RTA_MULTIPATH, RTA_PROTOINFO, RTA_FLOW, RTA_CACHEINFO, RTA_SESSION, RTA_MP_ALGO, RTA_TABLE, __RTA_MAX }; # 295 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct rtnexthop { unsigned short rtnh_len; unsigned char rtnh_flags; unsigned char rtnh_hops; int rtnh_ifindex; }; # 321 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct rta_cacheinfo { __u32 rta_clntref; __u32 rta_lastuse; __s32 rta_expires; __u32 rta_error; __u32 rta_used; __u32 rta_id; __u32 rta_ts; __u32 rta_tsage; }; enum { RTAX_UNSPEC, RTAX_LOCK, RTAX_MTU, RTAX_WINDOW, RTAX_RTT, RTAX_RTTVAR, RTAX_SSTHRESH, RTAX_CWND, RTAX_ADVMSS, RTAX_REORDERING, RTAX_HOPLIMIT, RTAX_INITCWND, RTAX_FEATURES, RTAX_RTO_MIN, RTAX_INITRWND, __RTAX_MAX }; # 377 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct rta_session { __u8 proto; __u8 pad1; __u16 pad2; union { struct { __u16 sport; __u16 dport; } ports; struct { __u8 type; __u8 code; __u16 ident; } icmpt; __u32 spi; } u; }; struct rtgenmsg { unsigned char rtgen_family; }; # 415 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct ifinfomsg { unsigned char ifi_family; unsigned char __ifi_pad; unsigned short ifi_type; int ifi_index; unsigned ifi_flags; unsigned ifi_change; }; struct prefixmsg { unsigned char prefix_family; unsigned char prefix_pad1; unsigned short prefix_pad2; int prefix_ifindex; unsigned char prefix_type; unsigned char prefix_len; unsigned char prefix_flags; unsigned char prefix_pad3; }; enum { PREFIX_UNSPEC, PREFIX_ADDRESS, PREFIX_CACHEINFO, __PREFIX_MAX }; struct prefix_cacheinfo { __u32 preferred_time; __u32 valid_time; }; struct tcmsg { unsigned char tcm_family; unsigned char tcm__pad1; unsigned short tcm__pad2; int tcm_ifindex; __u32 tcm_handle; __u32 tcm_parent; __u32 tcm_info; }; enum { TCA_UNSPEC, TCA_KIND, TCA_OPTIONS, TCA_STATS, TCA_XSTATS, TCA_RATE, TCA_FCNT, TCA_STATS2, TCA_STAB, __TCA_MAX }; # 491 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" struct nduseroptmsg { unsigned char nduseropt_family; unsigned char nduseropt_pad1; unsigned short nduseropt_opts_len; int nduseropt_ifindex; __u8 nduseropt_icmp_type; __u8 nduseropt_icmp_code; unsigned short nduseropt_pad2; unsigned int nduseropt_pad3; }; enum { NDUSEROPT_UNSPEC, NDUSEROPT_SRCADDR, __NDUSEROPT_MAX }; # 535 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" enum rtnetlink_groups { RTNLGRP_NONE, RTNLGRP_LINK, RTNLGRP_NOTIFY, RTNLGRP_NEIGH, RTNLGRP_TC, RTNLGRP_IPV4_IFADDR, RTNLGRP_IPV4_MROUTE, RTNLGRP_IPV4_ROUTE, RTNLGRP_IPV4_RULE, RTNLGRP_IPV6_IFADDR, RTNLGRP_IPV6_MROUTE, RTNLGRP_IPV6_ROUTE, RTNLGRP_IPV6_IFINFO, RTNLGRP_DECnet_IFADDR, RTNLGRP_NOP2, RTNLGRP_DECnet_ROUTE, RTNLGRP_DECnet_RULE, RTNLGRP_NOP4, RTNLGRP_IPV6_PREFIX, RTNLGRP_IPV6_RULE, RTNLGRP_ND_USEROPT, RTNLGRP_PHONET_IFADDR, RTNLGRP_PHONET_ROUTE, __RTNLGRP_MAX }; struct tcamsg { unsigned char tca_family; unsigned char tca__pad1; unsigned short tca__pad2; }; # 601 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) { int len = strlen(str) + 1; return len > rta->rta_len || memcmp(((void*)(((char*)(rta)) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), str, len); } extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid); extern void rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid, u32 group, struct nlmsghdr *nlh, gfp_t flags); extern void rtnl_set_sk_err(struct net *net, u32 group, int error); extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics); extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id, u32 ts, u32 tsage, long expires, u32 error); extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data); # 715 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" static inline struct rtattr * __rta_reserve(struct sk_buff *skb, int attrtype, int attrlen) { struct rtattr *rta; int size = (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (attrlen)); rta = (struct rtattr*)skb_put(skb, ( ((size)+4 -1) & ~(4 -1) )); rta->rta_type = attrtype; rta->rta_len = size; memset(((void*)(((char*)(rta)) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))) + attrlen, 0, ( ((size)+4 -1) & ~(4 -1) ) - size); return rta; } extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change); extern void rtnl_lock(void); extern void rtnl_unlock(void); extern int rtnl_trylock(void); extern int rtnl_is_locked(void); extern void rtnetlink_init(void); extern void __rtnl_unlock(void); # 755 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rtnetlink.h" static inline u32 rtm_get_table(struct rtattr **rta, u8 table) { return ({ if (!rta[RTA_TABLE-1] || ((int)((rta[RTA_TABLE-1])->rta_len) - (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))) < sizeof(u32)) goto rtattr_failure; *(u32 *) ((void*)(((char*)(rta[RTA_TABLE-1])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); }); rtattr_failure: return table; } # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/neighbour.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/neighbour.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/rtnetlink.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" 1 # 164 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" enum { NLA_UNSPEC, NLA_U8, NLA_U16, NLA_U32, NLA_U64, NLA_STRING, NLA_FLAG, NLA_MSECS, NLA_NESTED, NLA_NESTED_COMPAT, NLA_NUL_STRING, NLA_BINARY, __NLA_TYPE_MAX, }; # 205 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" struct nla_policy { u16 type; u16 len; }; struct nl_info { struct nlmsghdr *nlh; struct net *nl_net; u32 pid; }; extern int netlink_rcv_skb(struct sk_buff *skb, int (*cb)(struct sk_buff *, struct nlmsghdr *)); extern int nlmsg_notify(struct sock *sk, struct sk_buff *skb, u32 pid, unsigned int group, int report, gfp_t flags); extern int nla_validate(struct nlattr *head, int len, int maxtype, const struct nla_policy *policy); extern int nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, int len, const struct nla_policy *policy); extern int nla_policy_len(const struct nla_policy *, int); extern struct nlattr * nla_find(struct nlattr *head, int len, int attrtype); extern size_t nla_strlcpy(char *dst, const struct nlattr *nla, size_t dstsize); extern int nla_memcpy(void *dest, const struct nlattr *src, int count); extern int nla_memcmp(const struct nlattr *nla, const void *data, size_t size); extern int nla_strcmp(const struct nlattr *nla, const char *str); extern struct nlattr * __nla_reserve(struct sk_buff *skb, int attrtype, int attrlen); extern void * __nla_reserve_nohdr(struct sk_buff *skb, int attrlen); extern struct nlattr * nla_reserve(struct sk_buff *skb, int attrtype, int attrlen); extern void * nla_reserve_nohdr(struct sk_buff *skb, int attrlen); extern void __nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *data); extern void __nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data); extern int nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *data); extern int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data); extern int nla_append(struct sk_buff *skb, int attrlen, const void *data); # 266 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nlmsg_msg_size(int payload) { return ((int) ( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) )) + payload; } static inline int nlmsg_total_size(int payload) { return ( ((nlmsg_msg_size(payload))+4 -1) & ~(4 -1) ); } static inline int nlmsg_padlen(int payload) { return nlmsg_total_size(payload) - nlmsg_msg_size(payload); } static inline void *nlmsg_data(const struct nlmsghdr *nlh) { return (unsigned char *) nlh + ((int) ( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) )); } static inline int nlmsg_len(const struct nlmsghdr *nlh) { return nlh->nlmsg_len - ((int) ( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) )); } static inline struct nlattr *nlmsg_attrdata(const struct nlmsghdr *nlh, int hdrlen) { unsigned char *data = nlmsg_data(nlh); return (struct nlattr *) (data + ( ((hdrlen)+4 -1) & ~(4 -1) )); } static inline int nlmsg_attrlen(const struct nlmsghdr *nlh, int hdrlen) { return nlmsg_len(nlh) - ( ((hdrlen)+4 -1) & ~(4 -1) ); } static inline int nlmsg_ok(const struct nlmsghdr *nlh, int remaining) { return (remaining >= (int) sizeof(struct nlmsghdr) && nlh->nlmsg_len >= sizeof(struct nlmsghdr) && nlh->nlmsg_len <= remaining); } # 349 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlmsghdr *nlmsg_next(struct nlmsghdr *nlh, int *remaining) { int totlen = ( ((nlh->nlmsg_len)+4 -1) & ~(4 -1) ); *remaining -= totlen; return (struct nlmsghdr *) ((unsigned char *) nlh + totlen); } # 368 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nlmsg_parse(const struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[], int maxtype, const struct nla_policy *policy) { if (nlh->nlmsg_len < nlmsg_msg_size(hdrlen)) return -22; return nla_parse(tb, maxtype, nlmsg_attrdata(nlh, hdrlen), nlmsg_attrlen(nlh, hdrlen), policy); } # 387 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlattr *nlmsg_find_attr(struct nlmsghdr *nlh, int hdrlen, int attrtype) { return nla_find(nlmsg_attrdata(nlh, hdrlen), nlmsg_attrlen(nlh, hdrlen), attrtype); } # 401 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nlmsg_validate(struct nlmsghdr *nlh, int hdrlen, int maxtype, const struct nla_policy *policy) { if (nlh->nlmsg_len < nlmsg_msg_size(hdrlen)) return -22; return nla_validate(nlmsg_attrdata(nlh, hdrlen), nlmsg_attrlen(nlh, hdrlen), maxtype, policy); } static inline int nlmsg_report(const struct nlmsghdr *nlh) { return !!(nlh->nlmsg_flags & 8); } # 480 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlmsghdr *nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int payload, int flags) { if (__builtin_expect(!!(skb_tailroom(skb) < nlmsg_total_size(payload)), 0)) return ((void *)0); return __nlmsg_put(skb, pid, seq, type, payload, flags); } # 500 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlmsghdr *nlmsg_put_answer(struct sk_buff *skb, struct netlink_callback *cb, int type, int payload, int flags) { return nlmsg_put(skb, (*(struct netlink_skb_parms*)&((cb->skb)->cb)).pid, cb->nlh->nlmsg_seq, type, payload, flags); } # 517 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct sk_buff *nlmsg_new(size_t payload, gfp_t flags) { return alloc_skb(nlmsg_total_size(payload), flags); } # 533 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nlmsg_end(struct sk_buff *skb, struct nlmsghdr *nlh) { nlh->nlmsg_len = skb_tail_pointer(skb) - (unsigned char *)nlh; return skb->len; } static inline void *nlmsg_get_pos(struct sk_buff *skb) { return skb_tail_pointer(skb); } # 558 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) { if (mark) skb_trim(skb, (unsigned char *) mark - skb->data); } # 572 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline void nlmsg_cancel(struct sk_buff *skb, struct nlmsghdr *nlh) { nlmsg_trim(skb, nlh); } static inline void nlmsg_free(struct sk_buff *skb) { kfree_skb(skb); } # 594 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nlmsg_multicast(struct sock *sk, struct sk_buff *skb, u32 pid, unsigned int group, gfp_t flags) { int err; (*(struct netlink_skb_parms*)&((skb)->cb)).dst_group = group; err = netlink_broadcast(sk, skb, pid, group, flags); if (err > 0) err = 0; return err; } static inline int nlmsg_unicast(struct sock *sk, struct sk_buff *skb, u32 pid) { int err; err = netlink_unicast(sk, skb, pid, 0x40); if (err > 0) err = 0; return err; } # 645 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nla_attr_size(int payload) { return ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1))) + payload; } static inline int nla_total_size(int payload) { return (((nla_attr_size(payload)) + 4 - 1) & ~(4 - 1)); } static inline int nla_padlen(int payload) { return nla_total_size(payload) - nla_attr_size(payload); } static inline int nla_type(const struct nlattr *nla) { return nla->nla_type & ~((1 << 15) | (1 << 14)); } static inline void *nla_data(const struct nlattr *nla) { return (char *) nla + ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1))); } static inline int nla_len(const struct nlattr *nla) { return nla->nla_len - ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1))); } static inline int nla_ok(const struct nlattr *nla, int remaining) { return remaining >= (int) sizeof(*nla) && nla->nla_len >= sizeof(*nla) && nla->nla_len <= remaining; } # 715 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlattr *nla_next(const struct nlattr *nla, int *remaining) { int totlen = (((nla->nla_len) + 4 - 1) & ~(4 - 1)); *remaining -= totlen; return (struct nlattr *) ((char *) nla + totlen); } # 730 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlattr *nla_find_nested(struct nlattr *nla, int attrtype) { return nla_find(nla_data(nla), nla_len(nla), attrtype); } # 744 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nla_parse_nested(struct nlattr *tb[], int maxtype, const struct nlattr *nla, const struct nla_policy *policy) { return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy); } static inline int nla_put_u8(struct sk_buff *skb, int attrtype, u8 value) { return nla_put(skb, attrtype, sizeof(u8), &value); } static inline int nla_put_u16(struct sk_buff *skb, int attrtype, u16 value) { return nla_put(skb, attrtype, sizeof(u16), &value); } static inline int nla_put_u32(struct sk_buff *skb, int attrtype, u32 value) { return nla_put(skb, attrtype, sizeof(u32), &value); } static inline int nla_put_u64(struct sk_buff *skb, int attrtype, u64 value) { return nla_put(skb, attrtype, sizeof(u64), &value); } static inline int nla_put_string(struct sk_buff *skb, int attrtype, const char *str) { return nla_put(skb, attrtype, strlen(str) + 1, str); } static inline int nla_put_flag(struct sk_buff *skb, int attrtype) { return nla_put(skb, attrtype, 0, ((void *)0)); } static inline int nla_put_msecs(struct sk_buff *skb, int attrtype, unsigned long jiffies) { u64 tmp = jiffies_to_msecs(jiffies); return nla_put(skb, attrtype, sizeof(u64), &tmp); } # 879 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline u32 nla_get_u32(const struct nlattr *nla) { return *(u32 *) nla_data(nla); } static inline __be32 nla_get_be32(const struct nlattr *nla) { return *(__be32 *) nla_data(nla); } static inline u16 nla_get_u16(const struct nlattr *nla) { return *(u16 *) nla_data(nla); } static inline __be16 nla_get_be16(const struct nlattr *nla) { return *(__be16 *) nla_data(nla); } static inline __le16 nla_get_le16(const struct nlattr *nla) { return *(__le16 *) nla_data(nla); } static inline u8 nla_get_u8(const struct nlattr *nla) { return *(u8 *) nla_data(nla); } static inline u64 nla_get_u64(const struct nlattr *nla) { u64 tmp; nla_memcpy(&tmp, nla, sizeof(tmp)); return tmp; } static inline __be64 nla_get_be64(const struct nlattr *nla) { __be64 tmp; nla_memcpy(&tmp, nla, sizeof(tmp)); return tmp; } static inline int nla_get_flag(const struct nlattr *nla) { return !!nla; } static inline unsigned long nla_get_msecs(const struct nlattr *nla) { u64 msecs = nla_get_u64(nla); return msecs_to_jiffies((unsigned long) msecs); } # 984 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline struct nlattr *nla_nest_start(struct sk_buff *skb, int attrtype) { struct nlattr *start = (struct nlattr *)skb_tail_pointer(skb); if (nla_put(skb, attrtype, 0, ((void *)0)) < 0) return ((void *)0); return start; } # 1004 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nla_nest_end(struct sk_buff *skb, struct nlattr *start) { start->nla_len = skb_tail_pointer(skb) - (unsigned char *)start; return skb->len; } # 1018 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline void nla_nest_cancel(struct sk_buff *skb, struct nlattr *start) { nlmsg_trim(skb, start); } # 1035 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netlink.h" static inline int nla_validate_nested(struct nlattr *start, int maxtype, const struct nla_policy *policy) { return nla_validate(nla_data(start), nla_len(start), maxtype, policy); } # 6 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/rtnetlink.h" 2 typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *, void *); typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *); extern int __rtnl_register(int protocol, int msgtype, rtnl_doit_func, rtnl_dumpit_func); extern void rtnl_register(int protocol, int msgtype, rtnl_doit_func, rtnl_dumpit_func); extern int rtnl_unregister(int protocol, int msgtype); extern void rtnl_unregister_all(int protocol); static inline int rtnl_msg_family(const struct nlmsghdr *nlh) { if (nlmsg_len(nlh) >= sizeof(struct rtgenmsg)) return ((struct rtgenmsg *) nlmsg_data(nlh))->rtgen_family; else return 0; } # 45 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/rtnetlink.h" struct rtnl_link_ops { struct list_head list; const char *kind; size_t priv_size; void (*setup)(struct net_device *dev); int maxtype; const struct nla_policy *policy; int (*validate)(struct nlattr *tb[], struct nlattr *data[]); int (*newlink)(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[]); int (*changelink)(struct net_device *dev, struct nlattr *tb[], struct nlattr *data[]); void (*dellink)(struct net_device *dev, struct list_head *head); size_t (*get_size)(const struct net_device *dev); int (*fill_info)(struct sk_buff *skb, const struct net_device *dev); size_t (*get_xstats_size)(const struct net_device *dev); int (*fill_xstats)(struct sk_buff *skb, const struct net_device *dev); int (*get_tx_queues)(struct net *net, struct nlattr *tb[], unsigned int *tx_queues, unsigned int *real_tx_queues); }; extern int __rtnl_link_register(struct rtnl_link_ops *ops); extern void __rtnl_link_unregister(struct rtnl_link_ops *ops); extern void rtnl_kill_links(struct net *net, struct rtnl_link_ops *ops); extern int rtnl_link_register(struct rtnl_link_ops *ops); extern void rtnl_link_unregister(struct rtnl_link_ops *ops); extern struct net *rtnl_link_get_net(struct net *src_net, struct nlattr *tb[]); extern struct net_device *rtnl_create_link(struct net *src_net, struct net *net, char *ifname, const struct rtnl_link_ops *ops, struct nlattr *tb[]); extern int rtnl_configure_link(struct net_device *dev, const struct ifinfomsg *ifm); extern const struct nla_policy ifla_policy[(__IFLA_MAX - 1)+1]; # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/neighbour.h" 2 # 38 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/neighbour.h" struct neighbour; struct neigh_parms { struct net_device *dev; struct neigh_parms *next; int (*neigh_setup)(struct neighbour *); void (*neigh_cleanup)(struct neighbour *); struct neigh_table *tbl; void *sysctl_table; int dead; atomic_t refcnt; struct rcu_head rcu_head; int base_reachable_time; int retrans_time; int gc_staletime; int reachable_time; int delay_probe_time; int queue_len; int ucast_probes; int app_probes; int mcast_probes; int anycast_delay; int proxy_delay; int proxy_qlen; int locktime; }; struct neigh_statistics { unsigned long allocs; unsigned long destroys; unsigned long hash_grows; unsigned long res_failed; unsigned long lookups; unsigned long hits; unsigned long rcv_probes_mcast; unsigned long rcv_probes_ucast; unsigned long periodic_gc_runs; unsigned long forced_gc_runs; unsigned long unres_discards; }; struct neighbour { struct neighbour *next; struct neigh_table *tbl; struct neigh_parms *parms; struct net_device *dev; unsigned long used; unsigned long confirmed; unsigned long updated; __u8 flags; __u8 nud_state; __u8 type; __u8 dead; atomic_t probes; rwlock_t lock; unsigned char ha[(((32)+((typeof(32))(sizeof(unsigned long))-1))&~((typeof(32))(sizeof(unsigned long))-1))]; struct hh_cache *hh; atomic_t refcnt; int (*output)(struct sk_buff *skb); struct sk_buff_head arp_queue; struct timer_list timer; const struct neigh_ops *ops; u8 primary_key[0]; }; struct neigh_ops { int family; void (*solicit)(struct neighbour *, struct sk_buff*); void (*error_report)(struct neighbour *, struct sk_buff*); int (*output)(struct sk_buff*); int (*connected_output)(struct sk_buff*); int (*hh_output)(struct sk_buff*); int (*queue_xmit)(struct sk_buff*); }; struct pneigh_entry { struct pneigh_entry *next; struct net_device *dev; u8 flags; u8 key[0]; }; struct neigh_table { struct neigh_table *next; int family; int entry_size; int key_len; __u32 (*hash)(const void *pkey, const struct net_device *); int (*constructor)(struct neighbour *); int (*pconstructor)(struct pneigh_entry *); void (*pdestructor)(struct pneigh_entry *); void (*proxy_redo)(struct sk_buff *skb); char *id; struct neigh_parms parms; int gc_interval; int gc_thresh1; int gc_thresh2; int gc_thresh3; unsigned long last_flush; struct delayed_work gc_work; struct timer_list proxy_timer; struct sk_buff_head proxy_queue; atomic_t entries; rwlock_t lock; unsigned long last_rand; struct kmem_cache *kmem_cachep; struct neigh_statistics __attribute__((noderef, address_space(3))) *stats; struct neighbour **hash_buckets; unsigned int hash_mask; __u32 hash_rnd; struct pneigh_entry **phash_buckets; }; # 181 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/neighbour.h" extern void neigh_table_init(struct neigh_table *tbl); extern void neigh_table_init_no_netlink(struct neigh_table *tbl); extern int neigh_table_clear(struct neigh_table *tbl); extern struct neighbour * neigh_lookup(struct neigh_table *tbl, const void *pkey, struct net_device *dev); extern struct neighbour * neigh_lookup_nodev(struct neigh_table *tbl, struct net *net, const void *pkey); extern struct neighbour * neigh_create(struct neigh_table *tbl, const void *pkey, struct net_device *dev); extern void neigh_destroy(struct neighbour *neigh); extern int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb); extern int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, u32 flags); extern void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev); extern int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev); extern int neigh_resolve_output(struct sk_buff *skb); extern int neigh_connected_output(struct sk_buff *skb); extern int neigh_compat_output(struct sk_buff *skb); extern struct neighbour *neigh_event_ns(struct neigh_table *tbl, u8 *lladdr, void *saddr, struct net_device *dev); extern struct neigh_parms *neigh_parms_alloc(struct net_device *dev, struct neigh_table *tbl); extern void neigh_parms_release(struct neigh_table *tbl, struct neigh_parms *parms); static inline struct net *neigh_parms_net(const struct neigh_parms *parms) { return (&init_net); } extern unsigned long neigh_rand_reach_time(unsigned long base); extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, struct sk_buff *skb); extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); extern struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); static inline struct net *pneigh_net(const struct pneigh_entry *pneigh) { return (&init_net); } extern void neigh_app_ns(struct neighbour *n); extern void neigh_for_each(struct neigh_table *tbl, void (*cb)(struct neighbour *, void *), void *cookie); extern void __neigh_for_each_release(struct neigh_table *tbl, int (*cb)(struct neighbour *)); extern void pneigh_for_each(struct neigh_table *tbl, void (*cb)(struct pneigh_entry *)); struct neigh_seq_state { struct seq_net_private p; struct neigh_table *tbl; void *(*neigh_sub_iter)(struct neigh_seq_state *state, struct neighbour *n, loff_t *pos); unsigned int bucket; unsigned int flags; }; extern void *neigh_seq_start(struct seq_file *, loff_t *, struct neigh_table *, unsigned int); extern void *neigh_seq_next(struct seq_file *, void *, loff_t *); extern void neigh_seq_stop(struct seq_file *, void *); extern int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, char *p_name, proc_handler *proc_handler); extern void neigh_sysctl_unregister(struct neigh_parms *p); static inline void __neigh_parms_put(struct neigh_parms *parms) { atomic_dec(&parms->refcnt); } static inline struct neigh_parms *neigh_parms_clone(struct neigh_parms *parms) { atomic_inc(&parms->refcnt); return parms; } static inline void neigh_release(struct neighbour *neigh) { if (atomic_dec_and_test(&neigh->refcnt)) neigh_destroy(neigh); } static inline struct neighbour * neigh_clone(struct neighbour *neigh) { if (neigh) atomic_inc(&neigh->refcnt); return neigh; } static inline void neigh_confirm(struct neighbour *neigh) { if (neigh) neigh->confirmed = jiffies; } static inline int neigh_event_send(struct neighbour *neigh, struct sk_buff *skb) { neigh->used = jiffies; if (!(neigh->nud_state&((0x80|0x40|0x02)|0x08|0x10))) return __neigh_event_send(neigh, skb); return 0; } static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb) { unsigned seq; int hh_len; do { int hh_alen; seq = read_seqbegin(&hh->hh_lock); hh_len = hh->hh_len; hh_alen = (((hh_len)+(16 -1))&~(16 - 1)); memcpy(skb->data - hh_alen, hh->hh_data, hh_alen); } while (read_seqretry(&hh->hh_lock, seq)); skb_push(skb, hh_len); return hh->hh_output(skb); } static inline struct neighbour * __neigh_lookup(struct neigh_table *tbl, const void *pkey, struct net_device *dev, int creat) { struct neighbour *n = neigh_lookup(tbl, pkey, dev); if (n || !creat) return n; n = neigh_create(tbl, pkey, dev); return IS_ERR(n) ? ((void *)0) : n; } static inline struct neighbour * __neigh_lookup_errno(struct neigh_table *tbl, const void *pkey, struct net_device *dev) { struct neighbour *n = neigh_lookup(tbl, pkey, dev); if (n) return n; return neigh_create(tbl, pkey, dev); } struct neighbour_cb { unsigned long sched_next; unsigned int flags; }; # 17 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" 2 # 37 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" struct sk_buff; struct dst_entry { struct rcu_head rcu_head; struct dst_entry *child; struct net_device *dev; short error; short obsolete; int flags; unsigned long expires; unsigned short header_len; unsigned short trailer_len; unsigned int rate_tokens; unsigned long rate_last; struct dst_entry *path; struct neighbour *neighbour; struct hh_cache *hh; struct xfrm_state *xfrm; int (*input)(struct sk_buff*); int (*output)(struct sk_buff*); struct dst_ops *ops; u32 metrics[(__RTAX_MAX - 1)]; __u32 __pad2; # 86 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" long __pad_to_align_refcnt[1]; atomic_t __refcnt; int __use; unsigned long lastuse; union { struct dst_entry *next; struct rtable *rt_next; struct rt6_info *rt6_next; struct dn_route *dn_next; }; }; static inline u32 dst_metric(const struct dst_entry *dst, int metric) { return dst->metrics[metric-1]; } static inline u32 dst_feature(const struct dst_entry *dst, u32 feature) { return dst_metric(dst, RTAX_FEATURES) & feature; } static inline u32 dst_mtu(const struct dst_entry *dst) { u32 mtu = dst_metric(dst, RTAX_MTU); __asm__ __volatile__("": : :"memory"); return mtu; } static inline unsigned long dst_metric_rtt(const struct dst_entry *dst, int metric) { return msecs_to_jiffies(dst_metric(dst, metric)); } static inline void set_dst_metric_rtt(struct dst_entry *dst, int metric, unsigned long rtt) { dst->metrics[metric-1] = jiffies_to_msecs(rtt); } static inline u32 dst_allfrag(const struct dst_entry *dst) { int ret = dst_feature(dst, 0x00000008); __asm__ __volatile__("": : :"memory"); return ret; } static inline int dst_metric_locked(struct dst_entry *dst, int metric) { return dst_metric(dst, RTAX_LOCK) & (1<__refcnt); } static inline void dst_use(struct dst_entry *dst, unsigned long time) { dst_hold(dst); dst->__use++; dst->lastuse = time; } static inline struct dst_entry * dst_clone(struct dst_entry * dst) { if (dst) atomic_inc(&dst->__refcnt); return dst; } extern void dst_release(struct dst_entry *dst); static inline void skb_dst_drop(struct sk_buff *skb) { if (skb->_skb_dst) dst_release(skb_dst(skb)); skb->_skb_dst = 0UL; } static inline struct dst_entry *dst_pop(struct dst_entry *dst) { struct dst_entry *child = dst_clone(dst->child); dst_release(dst); return child; } extern int dst_discard(struct sk_buff *skb); extern void * dst_alloc(struct dst_ops * ops); extern void __dst_free(struct dst_entry * dst); extern struct dst_entry *dst_destroy(struct dst_entry * dst); static inline void dst_free(struct dst_entry * dst) { if (dst->obsolete > 1) return; if (!atomic_read(&dst->__refcnt)) { dst = dst_destroy(dst); if (!dst) return; } __dst_free(dst); } static inline void dst_rcu_free(struct rcu_head *head) { struct dst_entry *dst = ({ const typeof( ((struct dst_entry *)0)->rcu_head ) *__mptr = (head); (struct dst_entry *)( (char *)__mptr - __builtin_offsetof(struct dst_entry,rcu_head) );}); dst_free(dst); } static inline void dst_confirm(struct dst_entry *dst) { if (dst) neigh_confirm(dst->neighbour); } static inline void dst_negative_advice(struct dst_entry **dst_p, struct sock *sk) { struct dst_entry * dst = *dst_p; if (dst && dst->ops->negative_advice) { *dst_p = dst->ops->negative_advice(dst); if (dst != *dst_p) { extern void sk_reset_txq(struct sock *sk); sk_reset_txq(sk); } } } static inline void dst_link_failure(struct sk_buff *skb) { struct dst_entry *dst = skb_dst(skb); if (dst && dst->ops && dst->ops->link_failure) dst->ops->link_failure(skb); } static inline void dst_set_expires(struct dst_entry *dst, int timeout) { unsigned long expires = jiffies + timeout; if (expires == 0) expires = 1; if (dst->expires == 0 || (({ unsigned long __dummy; typeof(dst->expires) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(expires) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ((long)(expires) - (long)(dst->expires) < 0))) dst->expires = expires; } static inline int dst_output(struct sk_buff *skb) { return skb_dst(skb)->output(skb); } static inline int dst_input(struct sk_buff *skb) { return skb_dst(skb)->input(skb); } static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie) { if (dst->obsolete) dst = dst->ops->check(dst, cookie); return dst; } extern void dst_init(void); enum { XFRM_LOOKUP_WAIT = 1 << 0, XFRM_LOOKUP_ICMP = 1 << 1, }; struct flowi; # 301 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/dst.h" extern int xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl, struct sock *sk, int flags); extern int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl, struct sock *sk, int flags); # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inetpeer.h" 1 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inetpeer.h" struct inet_peer { struct inet_peer *avl_left, *avl_right; __be32 v4daddr; __u32 avl_height; struct list_head unused; __u32 dtime; atomic_t refcnt; atomic_t rid; atomic_t ip_id_count; __u32 tcp_ts; __u32 tcp_ts_stamp; }; void inet_initpeers(void) __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)); struct inet_peer *inet_getpeer(__be32 daddr, int create); extern void inet_putpeer(struct inet_peer *p); static inline __u16 inet_getid(struct inet_peer *p, int more) { more++; return atomic_add_return(more, &p->ip_id_count) - more; } # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" 1 # 53 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify.h" 1 # 14 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" 1 # 12 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/idr.h" 1 # 51 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/idr.h" struct idr_layer { unsigned long bitmap; struct idr_layer *ary[1<<6]; int count; int layer; struct rcu_head rcu_head; }; struct idr { struct idr_layer *top; struct idr_layer *id_free; int layers; int id_free_cnt; spinlock_t lock; }; # 103 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/idr.h" void *idr_find(struct idr *idp, int id); int idr_pre_get(struct idr *idp, gfp_t gfp_mask); int idr_get_new(struct idr *idp, void *ptr, int *id); int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); int idr_for_each(struct idr *idp, int (*fn)(int id, void *p, void *data), void *data); void *idr_get_next(struct idr *idp, int *nextid); void *idr_replace(struct idr *idp, void *ptr, int id); void idr_remove(struct idr *idp, int id); void idr_remove_all(struct idr *idp); void idr_destroy(struct idr *idp); void idr_init(struct idr *idp); # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/idr.h" struct ida_bitmap { long nr_busy; unsigned long bitmap[(128 / sizeof(long) - 1)]; }; struct ida { struct idr idr; struct ida_bitmap *free_bitmap; }; int ida_pre_get(struct ida *ida, gfp_t gfp_mask); int ida_get_new_above(struct ida *ida, int starting_id, int *p_id); int ida_get_new(struct ida *ida, int *p_id); void ida_remove(struct ida *ida, int id); void ida_destroy(struct ida *ida); void ida_init(struct ida *ida); void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) idr_init_cache(void); # 13 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" 2 # 66 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" struct fsnotify_group; struct fsnotify_event; struct fsnotify_mark; struct fsnotify_event_private_data; # 83 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" struct fsnotify_ops { bool (*should_send_event)(struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, __u32 mask, void *data, int data_type); int (*handle_event)(struct fsnotify_group *group, struct fsnotify_event *event); void (*free_group_priv)(struct fsnotify_group *group); void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group); void (*free_event_priv)(struct fsnotify_event_private_data *priv); }; struct fsnotify_group { struct list_head inode_group_list; struct list_head vfsmount_group_list; # 118 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" __u32 mask; # 128 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" atomic_t refcnt; const struct fsnotify_ops *ops; struct mutex notification_mutex; struct list_head notification_list; wait_queue_head_t notification_waitq; unsigned int q_len; unsigned int max_events; spinlock_t mark_lock; atomic_t num_marks; struct list_head marks_list; unsigned int priority; bool on_inode_group_list; bool on_vfsmount_group_list; union { void *private; # 171 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" }; }; # 184 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" struct fsnotify_event_holder { struct fsnotify_event *event; struct list_head event_list; }; struct fsnotify_event_private_data { struct fsnotify_group *group; struct list_head event_list; }; struct fsnotify_event { struct fsnotify_event_holder holder; spinlock_t lock; struct inode *to_tell; # 221 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" union { struct path path; struct inode *inode; }; int data_type; atomic_t refcnt; __u32 mask; u32 sync_cookie; const unsigned char *file_name; size_t name_len; struct pid *tgid; struct list_head private_data_list; }; struct fsnotify_inode_mark { struct inode *inode; struct hlist_node i_list; struct list_head free_i_list; }; struct fsnotify_vfsmount_mark { struct vfsmount *mnt; struct hlist_node m_list; struct list_head free_m_list; }; # 273 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify_backend.h" struct fsnotify_mark { __u32 mask; atomic_t refcnt; struct fsnotify_group *group; struct list_head g_list; spinlock_t lock; union { struct fsnotify_inode_mark i; struct fsnotify_vfsmount_mark m; }; __u32 ignored_mask; struct list_head free_g_list; unsigned int flags; void (*free_mark)(struct fsnotify_mark *mark); }; extern int fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, const unsigned char *name, u32 cookie); extern void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask); extern void __fsnotify_inode_delete(struct inode *inode); extern void __fsnotify_vfsmount_delete(struct vfsmount *mnt); extern u32 fsnotify_get_cookie(void); static inline int fsnotify_inode_watches_children(struct inode *inode) { if (!(inode->i_fsnotify_mask & 0x08000000)) return 0; return inode->i_fsnotify_mask & (0x00000001 | 0x00000002 | 0x00000004 | 0x00000008 | 0x00000010 | 0x00000020 | 0x00000040 | 0x00000080 | 0x00000100 | 0x00000200); } static inline void __fsnotify_update_dcache_flags(struct dentry *dentry) { struct dentry *parent; assert_spin_locked(&dcache_lock); assert_spin_locked(&dentry->d_lock); parent = dentry->d_parent; if (parent->d_inode && fsnotify_inode_watches_children(parent->d_inode)) dentry->d_flags |= 0x0080; else dentry->d_flags &= ~0x0080; } static inline void __fsnotify_d_instantiate(struct dentry *dentry, struct inode *inode) { if (!inode) return; assert_spin_locked(&dcache_lock); spin_lock(&dentry->d_lock); __fsnotify_update_dcache_flags(dentry); spin_unlock(&dentry->d_lock); } extern void fsnotify_recalc_global_mask(void); extern struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops); extern void fsnotify_recalc_group_mask(struct fsnotify_group *group); extern void fsnotify_put_group(struct fsnotify_group *group); extern void fsnotify_get_event(struct fsnotify_event *event); extern void fsnotify_put_event(struct fsnotify_event *event); extern struct fsnotify_event_private_data *fsnotify_remove_priv_from_event(struct fsnotify_group *group, struct fsnotify_event *event); extern int fsnotify_add_notify_event(struct fsnotify_group *group, struct fsnotify_event *event, struct fsnotify_event_private_data *priv, int (*merge)(struct list_head *, struct fsnotify_event *, void **), void **arg); extern bool fsnotify_notify_queue_is_empty(struct fsnotify_group *group); extern struct fsnotify_event *fsnotify_peek_notify_event(struct fsnotify_group *group); extern struct fsnotify_event *fsnotify_remove_notify_event(struct fsnotify_group *group); extern void fsnotify_recalc_vfsmount_mask(struct vfsmount *mnt); extern void fsnotify_recalc_inode_mask(struct inode *inode); extern void fsnotify_init_mark(struct fsnotify_mark *mark, void (*free_mark)(struct fsnotify_mark *mark)); extern struct fsnotify_mark *fsnotify_find_inode_mark(struct fsnotify_group *group, struct inode *inode); extern struct fsnotify_mark *fsnotify_find_vfsmount_mark(struct fsnotify_group *group, struct vfsmount *mnt); extern void fsnotify_duplicate_mark(struct fsnotify_mark *new, struct fsnotify_mark *old); extern void fsnotify_set_mark_ignored_mask_locked(struct fsnotify_mark *mark, __u32 mask); extern void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask); extern int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, int allow_dups); extern void fsnotify_destroy_mark(struct fsnotify_mark *mark); extern void fsnotify_clear_vfsmount_marks_by_group(struct fsnotify_group *group); extern void fsnotify_clear_inode_marks_by_group(struct fsnotify_group *group); extern void fsnotify_clear_marks_by_group_flags(struct fsnotify_group *group, unsigned int flags); extern void fsnotify_clear_marks_by_group(struct fsnotify_group *group); extern void fsnotify_get_mark(struct fsnotify_mark *mark); extern void fsnotify_put_mark(struct fsnotify_mark *mark); extern void fsnotify_unmount_inodes(struct list_head *list); extern struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, void *data, int data_is, const unsigned char *name, u32 cookie, gfp_t gfp); extern struct fsnotify_event *fsnotify_clone_event(struct fsnotify_event *old_event); extern int fsnotify_replace_event(struct fsnotify_event_holder *old_holder, struct fsnotify_event *new_event); # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/audit.h" 1 # 257 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/audit.h" enum { Audit_equal, Audit_not_equal, Audit_bitmask, Audit_bittest, Audit_lt, Audit_gt, Audit_le, Audit_ge, Audit_bad }; # 317 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/audit.h" struct audit_status { __u32 mask; __u32 enabled; __u32 failure; __u32 pid; __u32 rate_limit; __u32 backlog_limit; __u32 lost; __u32 backlog; }; struct audit_tty_status { __u32 enabled; }; struct audit_rule_data { __u32 flags; __u32 action; __u32 field_count; __u32 mask[64]; __u32 fields[64]; __u32 values[64]; __u32 fieldflags[64]; __u32 buflen; char buf[0]; }; struct audit_rule { __u32 flags; __u32 action; __u32 field_count; __u32 mask[64]; __u32 fields[64]; __u32 values[64]; }; struct audit_sig_info { uid_t uid; pid_t pid; char ctx[0]; }; struct audit_buffer; struct audit_context; struct inode; struct netlink_skb_parms; struct linux_binprm; struct mq_attr; struct mqstat; struct audit_watch; struct audit_tree; struct audit_krule { int vers_ops; u32 flags; u32 listnr; u32 action; u32 mask[64]; u32 buflen; u32 field_count; char *filterkey; struct audit_field *fields; struct audit_field *arch_f; struct audit_field *inode_f; struct audit_watch *watch; struct audit_tree *tree; struct list_head rlist; struct list_head list; u64 prio; }; struct audit_field { u32 type; u32 val; u32 op; char *lsm_str; void *lsm_rule; }; extern int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) audit_register_class(int class, unsigned *list); extern int audit_classify_syscall(int abi, unsigned syscall); extern int audit_classify_arch(int arch); extern void audit_finish_fork(struct task_struct *child); extern int audit_alloc(struct task_struct *task); extern void audit_free(struct task_struct *task); extern void audit_syscall_entry(int arch, int major, unsigned long a0, unsigned long a1, unsigned long a2, unsigned long a3); extern void audit_syscall_exit(int failed, long return_code); extern void __audit_getname(const char *name); extern void audit_putname(const char *name); extern void __audit_inode(const char *name, const struct dentry *dentry); extern void __audit_inode_child(const struct dentry *dentry, const struct inode *parent); extern void __audit_ptrace(struct task_struct *t); static inline int audit_dummy_context(void) { void *p = get_current()->audit_context; return !p || *(int *)p; } static inline void audit_getname(const char *name) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_getname(name); } static inline void audit_inode(const char *name, const struct dentry *dentry) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_inode(name, dentry); } static inline void audit_inode_child(const struct dentry *dentry, const struct inode *parent) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_inode_child(dentry, parent); } void audit_core_dumps(long signr); static inline void audit_ptrace(struct task_struct *t) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_ptrace(t); } extern unsigned int audit_serial(void); extern int auditsc_get_stamp(struct audit_context *ctx, struct timespec *t, unsigned int *serial); extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); extern void audit_log_task_context(struct audit_buffer *ab); extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp); extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode); extern int audit_bprm(struct linux_binprm *bprm); extern void audit_socketcall(int nargs, unsigned long *args); extern int audit_sockaddr(int len, void *addr); extern void __audit_fd_pair(int fd1, int fd2); extern int audit_set_macxattr(const char *name); extern void __audit_mq_open(int oflag, mode_t mode, struct mq_attr *attr); extern void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout); extern void __audit_mq_notify(mqd_t mqdes, const struct sigevent *notification); extern void __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat); extern int __audit_log_bprm_fcaps(struct linux_binprm *bprm, const struct cred *new, const struct cred *old); extern void __audit_log_capset(pid_t pid, const struct cred *new, const struct cred *old); static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_ipc_obj(ipcp); } static inline void audit_fd_pair(int fd1, int fd2) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_fd_pair(fd1, fd2); } static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_ipc_set_perm(qbytes, uid, gid, mode); } static inline void audit_mq_open(int oflag, mode_t mode, struct mq_attr *attr) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_mq_open(oflag, mode, attr); } static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_mq_sendrecv(mqdes, msg_len, msg_prio, abs_timeout); } static inline void audit_mq_notify(mqd_t mqdes, const struct sigevent *notification) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_mq_notify(mqdes, notification); } static inline void audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_mq_getsetattr(mqdes, mqstat); } static inline int audit_log_bprm_fcaps(struct linux_binprm *bprm, const struct cred *new, const struct cred *old) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) return __audit_log_bprm_fcaps(bprm, new, old); return 0; } static inline void audit_log_capset(pid_t pid, const struct cred *new, const struct cred *old) { if (__builtin_expect(!!(!audit_dummy_context()), 0)) __audit_log_capset(pid, new, old); } extern int audit_n_rules; extern int audit_signals; # 575 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/audit.h" extern void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type, const char *fmt, ...) __attribute__((format(printf,4,5))); extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type); extern void audit_log_format(struct audit_buffer *ab, const char *fmt, ...) __attribute__((format(printf,2,3))); extern void audit_log_end(struct audit_buffer *ab); extern int audit_string_contains_control(const char *string, size_t len); extern void audit_log_n_hex(struct audit_buffer *ab, const unsigned char *buf, size_t len); extern void audit_log_n_string(struct audit_buffer *ab, const char *buf, size_t n); extern void audit_log_n_untrustedstring(struct audit_buffer *ab, const char *string, size_t n); extern void audit_log_untrustedstring(struct audit_buffer *ab, const char *string); extern void audit_log_d_path(struct audit_buffer *ab, const char *prefix, struct path *path); extern void audit_log_key(struct audit_buffer *ab, char *key); extern void audit_log_lost(const char *message); extern int audit_update_lsm_rules(void); extern int audit_filter_user(struct netlink_skb_parms *cb); extern int audit_filter_type(int type); extern int audit_receive_filter(int type, int pid, int uid, int seq, void *data, size_t datasz, uid_t loginuid, u32 sessionid, u32 sid); extern int audit_enabled; # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/fsnotify.h" 2 static inline void fsnotify_d_instantiate(struct dentry *dentry, struct inode *inode) { __fsnotify_d_instantiate(dentry, inode); } static inline void fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask) { if (!dentry) dentry = path->dentry; __fsnotify_parent(path, dentry, mask); } static inline int fsnotify_perm(struct file *file, int mask) { struct path *path = &file->f_path; struct inode *inode = path->dentry->d_inode; __u32 fsnotify_mask; if (file->f_mode & ((__attribute__((force)) fmode_t)0x1000000)) return 0; if (!(mask & (4 | 32))) return 0; if (mask & 4) fsnotify_mask = 0x00020000; if (mask & 32) fsnotify_mask = 0x00010000; return fsnotify(inode, fsnotify_mask, path, 1, ((void *)0), 0); } static inline void fsnotify_d_move(struct dentry *dentry) { __fsnotify_update_dcache_flags(dentry); } static inline void fsnotify_link_count(struct inode *inode) { fsnotify(inode, 0x00000004, inode, 2, ((void *)0), 0); } static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, const unsigned char *old_name, int isdir, struct inode *target, struct dentry *moved) { struct inode *source = moved->d_inode; u32 fs_cookie = fsnotify_get_cookie(); __u32 old_dir_mask = (0x08000000 | 0x00000040); __u32 new_dir_mask = (0x08000000 | 0x00000080); const unsigned char *new_name = moved->d_name.name; if (old_dir == new_dir) old_dir_mask |= 0x10000000; if (isdir) { old_dir_mask |= 0x40000000; new_dir_mask |= 0x40000000; } fsnotify(old_dir, old_dir_mask, old_dir, 2, old_name, fs_cookie); fsnotify(new_dir, new_dir_mask, new_dir, 2, new_name, fs_cookie); if (target) fsnotify_link_count(target); if (source) fsnotify(source, 0x00000800, moved->d_inode, 2, ((void *)0), 0); audit_inode_child(moved, new_dir); } static inline void fsnotify_inode_delete(struct inode *inode) { __fsnotify_inode_delete(inode); } static inline void fsnotify_vfsmount_delete(struct vfsmount *mnt) { __fsnotify_vfsmount_delete(mnt); } static inline void fsnotify_nameremove(struct dentry *dentry, int isdir) { __u32 mask = 0x00000200; if (isdir) mask |= 0x40000000; fsnotify_parent(((void *)0), dentry, mask); } static inline void fsnotify_inoderemove(struct inode *inode) { fsnotify(inode, 0x00000400, inode, 2, ((void *)0), 0); __fsnotify_inode_delete(inode); } static inline void fsnotify_create(struct inode *inode, struct dentry *dentry) { audit_inode_child(dentry, inode); fsnotify(inode, 0x00000100, dentry->d_inode, 2, dentry->d_name.name, 0); } static inline void fsnotify_link(struct inode *dir, struct inode *inode, struct dentry *new_dentry) { fsnotify_link_count(inode); audit_inode_child(new_dentry, dir); fsnotify(dir, 0x00000100, inode, 2, new_dentry->d_name.name, 0); } static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry) { __u32 mask = (0x00000100 | 0x40000000); struct inode *d_inode = dentry->d_inode; audit_inode_child(dentry, inode); fsnotify(inode, mask, d_inode, 2, dentry->d_name.name, 0); } static inline void fsnotify_access(struct file *file) { struct path *path = &file->f_path; struct inode *inode = path->dentry->d_inode; __u32 mask = 0x00000001; if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; if (!(file->f_mode & ((__attribute__((force)) fmode_t)0x1000000))) { fsnotify_parent(path, ((void *)0), mask); fsnotify(inode, mask, path, 1, ((void *)0), 0); } } static inline void fsnotify_modify(struct file *file) { struct path *path = &file->f_path; struct inode *inode = path->dentry->d_inode; __u32 mask = 0x00000002; if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; if (!(file->f_mode & ((__attribute__((force)) fmode_t)0x1000000))) { fsnotify_parent(path, ((void *)0), mask); fsnotify(inode, mask, path, 1, ((void *)0), 0); } } static inline void fsnotify_open(struct file *file) { struct path *path = &file->f_path; struct inode *inode = path->dentry->d_inode; __u32 mask = 0x00000020; if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; if (!(file->f_mode & ((__attribute__((force)) fmode_t)0x1000000))) { fsnotify_parent(path, ((void *)0), mask); fsnotify(inode, mask, path, 1, ((void *)0), 0); } } static inline void fsnotify_close(struct file *file) { struct path *path = &file->f_path; struct inode *inode = file->f_path.dentry->d_inode; fmode_t mode = file->f_mode; __u32 mask = (mode & ((__attribute__((force)) fmode_t)0x2)) ? 0x00000008 : 0x00000010; if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; if (!(file->f_mode & ((__attribute__((force)) fmode_t)0x1000000))) { fsnotify_parent(path, ((void *)0), mask); fsnotify(inode, mask, path, 1, ((void *)0), 0); } } static inline void fsnotify_xattr(struct dentry *dentry) { struct inode *inode = dentry->d_inode; __u32 mask = 0x00000004; if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; fsnotify_parent(((void *)0), dentry, mask); fsnotify(inode, mask, inode, 2, ((void *)0), 0); } static inline void fsnotify_change(struct dentry *dentry, unsigned int ia_valid) { struct inode *inode = dentry->d_inode; __u32 mask = 0; if (ia_valid & (1 << 1)) mask |= 0x00000004; if (ia_valid & (1 << 2)) mask |= 0x00000004; if (ia_valid & (1 << 3)) mask |= 0x00000002; if ((ia_valid & ((1 << 4) | (1 << 5))) == ((1 << 4) | (1 << 5))) mask |= 0x00000004; else if (ia_valid & (1 << 4)) mask |= 0x00000001; else if (ia_valid & (1 << 5)) mask |= 0x00000002; if (ia_valid & (1 << 0)) mask |= 0x00000004; if (mask) { if ((((inode->i_mode) & 00170000) == 0040000)) mask |= 0x40000000; fsnotify_parent(((void *)0), dentry, mask); fsnotify(inode, mask, inode, 2, ((void *)0), 0); } } static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name) { return kstrdup(name, (((__attribute__((force)) gfp_t)0x10u) | ((__attribute__((force)) gfp_t)0x40u) | ((__attribute__((force)) gfp_t)0x80u))); } static inline void fsnotify_oldname_free(const unsigned char *old_name) { kfree(old_name); } # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/binfmts.h" 1 struct pt_regs; # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/binfmts.h" struct linux_binprm{ char buf[128]; struct vm_area_struct *vma; struct mm_struct *mm; unsigned long p; unsigned int cred_prepared:1, cap_effective:1; unsigned int recursion_depth; struct file * file; struct cred *cred; int unsafe; unsigned int per_clear; int argc, envc; char * filename; char * interp; unsigned interp_flags; unsigned interp_data; unsigned long loader, exec; }; # 72 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/binfmts.h" struct coredump_params { long signr; struct pt_regs *regs; struct file *file; unsigned long limit; unsigned long mm_flags; }; struct linux_binfmt { struct list_head lh; struct module *module; int (*load_binary)(struct linux_binprm *, struct pt_regs * regs); int (*load_shlib)(struct file *); int (*core_dump)(struct coredump_params *cprm); unsigned long min_coredump; int hasvdso; }; extern int __register_binfmt(struct linux_binfmt *fmt, int insert); static inline int register_binfmt(struct linux_binfmt *fmt) { return __register_binfmt(fmt, 0); } static inline int insert_binfmt(struct linux_binfmt *fmt) { return __register_binfmt(fmt, 1); } extern void unregister_binfmt(struct linux_binfmt *); extern int prepare_binprm(struct linux_binprm *); extern int remove_arg_zero(struct linux_binprm *); extern int search_binary_handler(struct linux_binprm *,struct pt_regs *); extern int flush_old_exec(struct linux_binprm * bprm); extern void setup_new_exec(struct linux_binprm * bprm); extern int suid_dumpable; # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/binfmts.h" extern int setup_arg_pages(struct linux_binprm * bprm, unsigned long stack_top, int executable_stack); extern int bprm_mm_init(struct linux_binprm *bprm); extern int copy_strings_kernel(int argc,char ** argv,struct linux_binprm *bprm); extern int prepare_bprm_creds(struct linux_binprm *bprm); extern void install_exec_creds(struct linux_binprm *bprm); extern void do_coredump(long signr, int exit_code, struct pt_regs *regs); extern void set_binfmt(struct linux_binfmt *new); extern void free_bprm(struct linux_binprm *); # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" 1 # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/shmparam.h" 1 # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" 2 struct shmid_ds { struct ipc_perm shm_perm; int shm_segsz; __kernel_time_t shm_atime; __kernel_time_t shm_dtime; __kernel_time_t shm_ctime; __kernel_ipc_pid_t shm_cpid; __kernel_ipc_pid_t shm_lpid; unsigned short shm_nattch; unsigned short shm_unused; void *shm_unused2; void *shm_unused3; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/shmbuf.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/shmbuf.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/shmbuf.h" struct shmid64_ds { struct ipc64_perm shm_perm; size_t shm_segsz; __kernel_time_t shm_atime; __kernel_time_t shm_dtime; __kernel_time_t shm_ctime; __kernel_pid_t shm_cpid; __kernel_pid_t shm_lpid; unsigned long shm_nattch; unsigned long __unused4; unsigned long __unused5; }; struct shminfo64 { unsigned long shmmax; unsigned long shmmin; unsigned long shmmni; unsigned long shmseg; unsigned long shmall; unsigned long __unused1; unsigned long __unused2; unsigned long __unused3; unsigned long __unused4; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/shmbuf.h" 2 # 48 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" 2 # 68 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" struct shminfo { int shmmax; int shmmin; int shmmni; int shmseg; int shmall; }; struct shm_info { int used_ids; unsigned long shm_tot; unsigned long shm_rss; unsigned long shm_swp; unsigned long swap_attempts; unsigned long swap_successes; }; struct shmid_kernel { struct kern_ipc_perm shm_perm; struct file * shm_file; unsigned long shm_nattch; unsigned long shm_segsz; time_t shm_atim; time_t shm_dtim; time_t shm_ctim; pid_t shm_cprid; pid_t shm_lprid; struct user_struct *mlock_user; }; # 110 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/shm.h" static inline long do_shmat(int shmid, char __attribute__((noderef, address_space(1))) *shmaddr, int shmflg, unsigned long *addr) { return -38; } static inline int is_file_shm_hugepages(struct file *file) { return 0; } # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/msg.h" 1 # 15 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/msg.h" struct msqid_ds { struct ipc_perm msg_perm; struct msg *msg_first; struct msg *msg_last; __kernel_time_t msg_stime; __kernel_time_t msg_rtime; __kernel_time_t msg_ctime; unsigned long msg_lcbytes; unsigned long msg_lqbytes; unsigned short msg_cbytes; unsigned short msg_qnum; unsigned short msg_qbytes; __kernel_ipc_pid_t msg_lspid; __kernel_ipc_pid_t msg_lrpid; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msgbuf.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/msgbuf.h" 1 # 24 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/msgbuf.h" struct msqid64_ds { struct ipc64_perm msg_perm; __kernel_time_t msg_stime; __kernel_time_t msg_rtime; __kernel_time_t msg_ctime; unsigned long msg_cbytes; unsigned long msg_qnum; unsigned long msg_qbytes; __kernel_pid_t msg_lspid; __kernel_pid_t msg_lrpid; unsigned long __unused4; unsigned long __unused5; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/msgbuf.h" 2 # 33 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/msg.h" 2 struct msgbuf { long mtype; char mtext[1]; }; struct msginfo { int msgpool; int msgmap; int msgmax; int msgmnb; int msgmni; int msgssz; int msgtql; unsigned short msgseg; }; # 78 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/msg.h" struct msg_msg { struct list_head m_list; long m_type; int m_ts; struct msg_msgseg* next; void *security; }; struct msg_queue { struct kern_ipc_perm q_perm; time_t q_stime; time_t q_rtime; time_t q_ctime; unsigned long q_cbytes; unsigned long q_qnum; unsigned long q_qbytes; pid_t q_lspid; pid_t q_lrpid; struct list_head q_messages; struct list_head q_receivers; struct list_head q_senders; }; extern long do_msgsnd(int msqid, long mtype, void __attribute__((noderef, address_space(1))) *mtext, size_t msgsz, int msgflg); extern long do_msgrcv(int msqid, long *pmtype, void __attribute__((noderef, address_space(1))) *mtext, size_t msgsz, long msgtyp, int msgflg); # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" 2 # 47 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" struct ctl_table; struct audit_krule; extern int cap_capable(struct task_struct *tsk, const struct cred *cred, int cap, int audit); extern int cap_settime(struct timespec *ts, struct timezone *tz); extern int cap_ptrace_access_check(struct task_struct *child, unsigned int mode); extern int cap_ptrace_traceme(struct task_struct *parent); extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); extern int cap_capset(struct cred *new, const struct cred *old, const kernel_cap_t *effective, const kernel_cap_t *inheritable, const kernel_cap_t *permitted); extern int cap_bprm_set_creds(struct linux_binprm *bprm); extern int cap_bprm_secureexec(struct linux_binprm *bprm); extern int cap_inode_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); extern int cap_inode_removexattr(struct dentry *dentry, const char *name); extern int cap_inode_need_killpriv(struct dentry *dentry); extern int cap_inode_killpriv(struct dentry *dentry); extern int cap_file_mmap(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags, unsigned long addr, unsigned long addr_only); extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags); extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); extern int cap_task_setscheduler(struct task_struct *p, int policy, struct sched_param *lp); extern int cap_task_setioprio(struct task_struct *p, int ioprio); extern int cap_task_setnice(struct task_struct *p, int nice); extern int cap_syslog(int type, bool from_file); extern int cap_vm_enough_memory(struct mm_struct *mm, long pages); struct msghdr; struct sk_buff; struct sock; struct sockaddr; struct socket; struct flowi; struct dst_entry; struct xfrm_selector; struct xfrm_policy; struct xfrm_state; struct xfrm_user_sec_ctx; struct seq_file; extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb); extern int cap_netlink_recv(struct sk_buff *skb, int cap); void reset_security_ops(void); extern unsigned long mmap_min_addr; extern unsigned long dac_mmap_min_addr; # 124 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" struct sched_param; struct request_sock; # 137 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" static inline unsigned long round_hint_to_min(unsigned long hint) { hint &= (~(((1UL) << 12)-1)); if (((void *)hint != ((void *)0)) && (hint < mmap_min_addr)) return (((mmap_min_addr)+((typeof(mmap_min_addr))(((1UL) << 12))-1))&~((typeof(mmap_min_addr))(((1UL) << 12))-1)); return hint; } extern int mmap_min_addr_handler(struct ctl_table *table, int write, void __attribute__((noderef, address_space(1))) *buffer, size_t *lenp, loff_t *ppos); struct security_mnt_opts { char **mnt_opts; int *mnt_opts_flags; int num_mnt_opts; }; static inline void security_init_mnt_opts(struct security_mnt_opts *opts) { opts->mnt_opts = ((void *)0); opts->mnt_opts_flags = ((void *)0); opts->num_mnt_opts = 0; } static inline void security_free_mnt_opts(struct security_mnt_opts *opts) { int i; if (opts->mnt_opts) for (i = 0; i < opts->num_mnt_opts; i++) kfree(opts->mnt_opts[i]); kfree(opts->mnt_opts); opts->mnt_opts = ((void *)0); kfree(opts->mnt_opts_flags); opts->mnt_opts_flags = ((void *)0); opts->num_mnt_opts = 0; } # 1451 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" struct security_operations { char name[10 + 1]; int (*ptrace_access_check) (struct task_struct *child, unsigned int mode); int (*ptrace_traceme) (struct task_struct *parent); int (*capget) (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); int (*capset) (struct cred *new, const struct cred *old, const kernel_cap_t *effective, const kernel_cap_t *inheritable, const kernel_cap_t *permitted); int (*capable) (struct task_struct *tsk, const struct cred *cred, int cap, int audit); int (*acct) (struct file *file); int (*sysctl) (struct ctl_table *table, int op); int (*quotactl) (int cmds, int type, int id, struct super_block *sb); int (*quota_on) (struct dentry *dentry); int (*syslog) (int type, bool from_file); int (*settime) (struct timespec *ts, struct timezone *tz); int (*vm_enough_memory) (struct mm_struct *mm, long pages); int (*bprm_set_creds) (struct linux_binprm *bprm); int (*bprm_check_security) (struct linux_binprm *bprm); int (*bprm_secureexec) (struct linux_binprm *bprm); void (*bprm_committing_creds) (struct linux_binprm *bprm); void (*bprm_committed_creds) (struct linux_binprm *bprm); int (*sb_alloc_security) (struct super_block *sb); void (*sb_free_security) (struct super_block *sb); int (*sb_copy_data) (char *orig, char *copy); int (*sb_kern_mount) (struct super_block *sb, int flags, void *data); int (*sb_show_options) (struct seq_file *m, struct super_block *sb); int (*sb_statfs) (struct dentry *dentry); int (*sb_mount) (char *dev_name, struct path *path, char *type, unsigned long flags, void *data); int (*sb_check_sb) (struct vfsmount *mnt, struct path *path); int (*sb_umount) (struct vfsmount *mnt, int flags); void (*sb_umount_close) (struct vfsmount *mnt); void (*sb_umount_busy) (struct vfsmount *mnt); void (*sb_post_remount) (struct vfsmount *mnt, unsigned long flags, void *data); void (*sb_post_addmount) (struct vfsmount *mnt, struct path *mountpoint); int (*sb_pivotroot) (struct path *old_path, struct path *new_path); void (*sb_post_pivotroot) (struct path *old_path, struct path *new_path); int (*sb_set_mnt_opts) (struct super_block *sb, struct security_mnt_opts *opts); void (*sb_clone_mnt_opts) (const struct super_block *oldsb, struct super_block *newsb); int (*sb_parse_opts_str) (char *options, struct security_mnt_opts *opts); int (*path_unlink) (struct path *dir, struct dentry *dentry); int (*path_mkdir) (struct path *dir, struct dentry *dentry, int mode); int (*path_rmdir) (struct path *dir, struct dentry *dentry); int (*path_mknod) (struct path *dir, struct dentry *dentry, int mode, unsigned int dev); int (*path_truncate) (struct path *path, loff_t length, unsigned int time_attrs); int (*path_symlink) (struct path *dir, struct dentry *dentry, const char *old_name); int (*path_link) (struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); int (*path_rename) (struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); int (*path_chmod) (struct dentry *dentry, struct vfsmount *mnt, mode_t mode); int (*path_chown) (struct path *path, uid_t uid, gid_t gid); int (*path_chroot) (struct path *path); int (*inode_alloc_security) (struct inode *inode); void (*inode_free_security) (struct inode *inode); int (*inode_init_security) (struct inode *inode, struct inode *dir, char **name, void **value, size_t *len); int (*inode_create) (struct inode *dir, struct dentry *dentry, int mode); int (*inode_link) (struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry); int (*inode_unlink) (struct inode *dir, struct dentry *dentry); int (*inode_symlink) (struct inode *dir, struct dentry *dentry, const char *old_name); int (*inode_mkdir) (struct inode *dir, struct dentry *dentry, int mode); int (*inode_rmdir) (struct inode *dir, struct dentry *dentry); int (*inode_mknod) (struct inode *dir, struct dentry *dentry, int mode, dev_t dev); int (*inode_rename) (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry); int (*inode_readlink) (struct dentry *dentry); int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd); int (*inode_permission) (struct inode *inode, int mask); int (*inode_setattr) (struct dentry *dentry, struct iattr *attr); int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry); void (*inode_delete) (struct inode *inode); int (*inode_setxattr) (struct dentry *dentry, const char *name, const void *value, size_t size, int flags); void (*inode_post_setxattr) (struct dentry *dentry, const char *name, const void *value, size_t size, int flags); int (*inode_getxattr) (struct dentry *dentry, const char *name); int (*inode_listxattr) (struct dentry *dentry); int (*inode_removexattr) (struct dentry *dentry, const char *name); int (*inode_need_killpriv) (struct dentry *dentry); int (*inode_killpriv) (struct dentry *dentry); int (*inode_getsecurity) (const struct inode *inode, const char *name, void **buffer, bool alloc); int (*inode_setsecurity) (struct inode *inode, const char *name, const void *value, size_t size, int flags); int (*inode_listsecurity) (struct inode *inode, char *buffer, size_t buffer_size); void (*inode_getsecid) (const struct inode *inode, u32 *secid); int (*file_permission) (struct file *file, int mask); int (*file_alloc_security) (struct file *file); void (*file_free_security) (struct file *file); int (*file_ioctl) (struct file *file, unsigned int cmd, unsigned long arg); int (*file_mmap) (struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags, unsigned long addr, unsigned long addr_only); int (*file_mprotect) (struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot); int (*file_lock) (struct file *file, unsigned int cmd); int (*file_fcntl) (struct file *file, unsigned int cmd, unsigned long arg); int (*file_set_fowner) (struct file *file); int (*file_send_sigiotask) (struct task_struct *tsk, struct fown_struct *fown, int sig); int (*file_receive) (struct file *file); int (*dentry_open) (struct file *file, const struct cred *cred); int (*task_create) (unsigned long clone_flags); int (*cred_alloc_blank) (struct cred *cred, gfp_t gfp); void (*cred_free) (struct cred *cred); int (*cred_prepare)(struct cred *new, const struct cred *old, gfp_t gfp); void (*cred_commit)(struct cred *new, const struct cred *old); void (*cred_transfer)(struct cred *new, const struct cred *old); int (*kernel_act_as)(struct cred *new, u32 secid); int (*kernel_create_files_as)(struct cred *new, struct inode *inode); int (*kernel_module_request)(char *kmod_name); int (*task_setuid) (uid_t id0, uid_t id1, uid_t id2, int flags); int (*task_fix_setuid) (struct cred *new, const struct cred *old, int flags); int (*task_setgid) (gid_t id0, gid_t id1, gid_t id2, int flags); int (*task_setpgid) (struct task_struct *p, pid_t pgid); int (*task_getpgid) (struct task_struct *p); int (*task_getsid) (struct task_struct *p); void (*task_getsecid) (struct task_struct *p, u32 *secid); int (*task_setgroups) (struct group_info *group_info); int (*task_setnice) (struct task_struct *p, int nice); int (*task_setioprio) (struct task_struct *p, int ioprio); int (*task_getioprio) (struct task_struct *p); int (*task_setrlimit) (struct task_struct *p, unsigned int resource, struct rlimit *new_rlim); int (*task_setscheduler) (struct task_struct *p, int policy, struct sched_param *lp); int (*task_getscheduler) (struct task_struct *p); int (*task_movememory) (struct task_struct *p); int (*task_kill) (struct task_struct *p, struct siginfo *info, int sig, u32 secid); int (*task_wait) (struct task_struct *p); int (*task_prctl) (int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); void (*task_to_inode) (struct task_struct *p, struct inode *inode); int (*ipc_permission) (struct kern_ipc_perm *ipcp, short flag); void (*ipc_getsecid) (struct kern_ipc_perm *ipcp, u32 *secid); int (*msg_msg_alloc_security) (struct msg_msg *msg); void (*msg_msg_free_security) (struct msg_msg *msg); int (*msg_queue_alloc_security) (struct msg_queue *msq); void (*msg_queue_free_security) (struct msg_queue *msq); int (*msg_queue_associate) (struct msg_queue *msq, int msqflg); int (*msg_queue_msgctl) (struct msg_queue *msq, int cmd); int (*msg_queue_msgsnd) (struct msg_queue *msq, struct msg_msg *msg, int msqflg); int (*msg_queue_msgrcv) (struct msg_queue *msq, struct msg_msg *msg, struct task_struct *target, long type, int mode); int (*shm_alloc_security) (struct shmid_kernel *shp); void (*shm_free_security) (struct shmid_kernel *shp); int (*shm_associate) (struct shmid_kernel *shp, int shmflg); int (*shm_shmctl) (struct shmid_kernel *shp, int cmd); int (*shm_shmat) (struct shmid_kernel *shp, char __attribute__((noderef, address_space(1))) *shmaddr, int shmflg); int (*sem_alloc_security) (struct sem_array *sma); void (*sem_free_security) (struct sem_array *sma); int (*sem_associate) (struct sem_array *sma, int semflg); int (*sem_semctl) (struct sem_array *sma, int cmd); int (*sem_semop) (struct sem_array *sma, struct sembuf *sops, unsigned nsops, int alter); int (*netlink_send) (struct sock *sk, struct sk_buff *skb); int (*netlink_recv) (struct sk_buff *skb, int cap); void (*d_instantiate) (struct dentry *dentry, struct inode *inode); int (*getprocattr) (struct task_struct *p, char *name, char **value); int (*setprocattr) (struct task_struct *p, char *name, void *value, size_t size); int (*secid_to_secctx) (u32 secid, char **secdata, u32 *seclen); int (*secctx_to_secid) (const char *secdata, u32 seclen, u32 *secid); void (*release_secctx) (char *secdata, u32 seclen); int (*inode_notifysecctx)(struct inode *inode, void *ctx, u32 ctxlen); int (*inode_setsecctx)(struct dentry *dentry, void *ctx, u32 ctxlen); int (*inode_getsecctx)(struct inode *inode, void **ctx, u32 *ctxlen); int (*unix_stream_connect) (struct socket *sock, struct socket *other, struct sock *newsk); int (*unix_may_send) (struct socket *sock, struct socket *other); int (*socket_create) (int family, int type, int protocol, int kern); int (*socket_post_create) (struct socket *sock, int family, int type, int protocol, int kern); int (*socket_bind) (struct socket *sock, struct sockaddr *address, int addrlen); int (*socket_connect) (struct socket *sock, struct sockaddr *address, int addrlen); int (*socket_listen) (struct socket *sock, int backlog); int (*socket_accept) (struct socket *sock, struct socket *newsock); int (*socket_sendmsg) (struct socket *sock, struct msghdr *msg, int size); int (*socket_recvmsg) (struct socket *sock, struct msghdr *msg, int size, int flags); int (*socket_getsockname) (struct socket *sock); int (*socket_getpeername) (struct socket *sock); int (*socket_getsockopt) (struct socket *sock, int level, int optname); int (*socket_setsockopt) (struct socket *sock, int level, int optname); int (*socket_shutdown) (struct socket *sock, int how); int (*socket_sock_rcv_skb) (struct sock *sk, struct sk_buff *skb); int (*socket_getpeersec_stream) (struct socket *sock, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen, unsigned len); int (*socket_getpeersec_dgram) (struct socket *sock, struct sk_buff *skb, u32 *secid); int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority); void (*sk_free_security) (struct sock *sk); void (*sk_clone_security) (const struct sock *sk, struct sock *newsk); void (*sk_getsecid) (struct sock *sk, u32 *secid); void (*sock_graft) (struct sock *sk, struct socket *parent); int (*inet_conn_request) (struct sock *sk, struct sk_buff *skb, struct request_sock *req); void (*inet_csk_clone) (struct sock *newsk, const struct request_sock *req); void (*inet_conn_established) (struct sock *sk, struct sk_buff *skb); void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl); int (*tun_dev_create)(void); void (*tun_dev_post_create)(struct sock *sk); int (*tun_dev_attach)(struct sock *sk); int (*xfrm_policy_alloc_security) (struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx); int (*xfrm_policy_clone_security) (struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctx); void (*xfrm_policy_free_security) (struct xfrm_sec_ctx *ctx); int (*xfrm_policy_delete_security) (struct xfrm_sec_ctx *ctx); int (*xfrm_state_alloc_security) (struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx, u32 secid); void (*xfrm_state_free_security) (struct xfrm_state *x); int (*xfrm_state_delete_security) (struct xfrm_state *x); int (*xfrm_policy_lookup) (struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir); int (*xfrm_state_pol_flow_match) (struct xfrm_state *x, struct xfrm_policy *xp, struct flowi *fl); int (*xfrm_decode_session) (struct sk_buff *skb, u32 *secid, int ckall); int (*key_alloc) (struct key *key, const struct cred *cred, unsigned long flags); void (*key_free) (struct key *key); int (*key_permission) (key_ref_t key_ref, const struct cred *cred, key_perm_t perm); int (*key_getsecurity)(struct key *key, char **_buffer); int (*key_session_to_parent)(const struct cred *cred, const struct cred *parent_cred, struct key *key); int (*audit_rule_init) (u32 field, u32 op, char *rulestr, void **lsmrule); int (*audit_rule_known) (struct audit_krule *krule); int (*audit_rule_match) (u32 secid, u32 field, u32 op, void *lsmrule, struct audit_context *actx); void (*audit_rule_free) (void *lsmrule); }; extern int security_init(void); extern int security_module_enable(struct security_operations *ops); extern int register_security(struct security_operations *ops); int security_ptrace_access_check(struct task_struct *child, unsigned int mode); int security_ptrace_traceme(struct task_struct *parent); int security_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); int security_capset(struct cred *new, const struct cred *old, const kernel_cap_t *effective, const kernel_cap_t *inheritable, const kernel_cap_t *permitted); int security_capable(int cap); int security_real_capable(struct task_struct *tsk, int cap); int security_real_capable_noaudit(struct task_struct *tsk, int cap); int security_acct(struct file *file); int security_sysctl(struct ctl_table *table, int op); int security_quotactl(int cmds, int type, int id, struct super_block *sb); int security_quota_on(struct dentry *dentry); int security_syslog(int type, bool from_file); int security_settime(struct timespec *ts, struct timezone *tz); int security_vm_enough_memory(long pages); int security_vm_enough_memory_mm(struct mm_struct *mm, long pages); int security_vm_enough_memory_kern(long pages); int security_bprm_set_creds(struct linux_binprm *bprm); int security_bprm_check(struct linux_binprm *bprm); void security_bprm_committing_creds(struct linux_binprm *bprm); void security_bprm_committed_creds(struct linux_binprm *bprm); int security_bprm_secureexec(struct linux_binprm *bprm); int security_sb_alloc(struct super_block *sb); void security_sb_free(struct super_block *sb); int security_sb_copy_data(char *orig, char *copy); int security_sb_kern_mount(struct super_block *sb, int flags, void *data); int security_sb_show_options(struct seq_file *m, struct super_block *sb); int security_sb_statfs(struct dentry *dentry); int security_sb_mount(char *dev_name, struct path *path, char *type, unsigned long flags, void *data); int security_sb_check_sb(struct vfsmount *mnt, struct path *path); int security_sb_umount(struct vfsmount *mnt, int flags); void security_sb_umount_close(struct vfsmount *mnt); void security_sb_umount_busy(struct vfsmount *mnt); void security_sb_post_remount(struct vfsmount *mnt, unsigned long flags, void *data); void security_sb_post_addmount(struct vfsmount *mnt, struct path *mountpoint); int security_sb_pivotroot(struct path *old_path, struct path *new_path); void security_sb_post_pivotroot(struct path *old_path, struct path *new_path); int security_sb_set_mnt_opts(struct super_block *sb, struct security_mnt_opts *opts); void security_sb_clone_mnt_opts(const struct super_block *oldsb, struct super_block *newsb); int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts); int security_inode_alloc(struct inode *inode); void security_inode_free(struct inode *inode); int security_inode_init_security(struct inode *inode, struct inode *dir, char **name, void **value, size_t *len); int security_inode_create(struct inode *dir, struct dentry *dentry, int mode); int security_inode_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry); int security_inode_unlink(struct inode *dir, struct dentry *dentry); int security_inode_symlink(struct inode *dir, struct dentry *dentry, const char *old_name); int security_inode_mkdir(struct inode *dir, struct dentry *dentry, int mode); int security_inode_rmdir(struct inode *dir, struct dentry *dentry); int security_inode_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev); int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry); int security_inode_readlink(struct dentry *dentry); int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd); int security_inode_permission(struct inode *inode, int mask); int security_inode_setattr(struct dentry *dentry, struct iattr *attr); int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry); void security_inode_delete(struct inode *inode); int security_inode_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); void security_inode_post_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); int security_inode_getxattr(struct dentry *dentry, const char *name); int security_inode_listxattr(struct dentry *dentry); int security_inode_removexattr(struct dentry *dentry, const char *name); int security_inode_need_killpriv(struct dentry *dentry); int security_inode_killpriv(struct dentry *dentry); int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc); int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags); int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size); void security_inode_getsecid(const struct inode *inode, u32 *secid); int security_file_permission(struct file *file, int mask); int security_file_alloc(struct file *file); void security_file_free(struct file *file); int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg); int security_file_mmap(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags, unsigned long addr, unsigned long addr_only); int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot); int security_file_lock(struct file *file, unsigned int cmd); int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg); int security_file_set_fowner(struct file *file); int security_file_send_sigiotask(struct task_struct *tsk, struct fown_struct *fown, int sig); int security_file_receive(struct file *file); int security_dentry_open(struct file *file, const struct cred *cred); int security_task_create(unsigned long clone_flags); int security_cred_alloc_blank(struct cred *cred, gfp_t gfp); void security_cred_free(struct cred *cred); int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp); void security_commit_creds(struct cred *new, const struct cred *old); void security_transfer_creds(struct cred *new, const struct cred *old); int security_kernel_act_as(struct cred *new, u32 secid); int security_kernel_create_files_as(struct cred *new, struct inode *inode); int security_kernel_module_request(char *kmod_name); int security_task_setuid(uid_t id0, uid_t id1, uid_t id2, int flags); int security_task_fix_setuid(struct cred *new, const struct cred *old, int flags); int security_task_setgid(gid_t id0, gid_t id1, gid_t id2, int flags); int security_task_setpgid(struct task_struct *p, pid_t pgid); int security_task_getpgid(struct task_struct *p); int security_task_getsid(struct task_struct *p); void security_task_getsecid(struct task_struct *p, u32 *secid); int security_task_setgroups(struct group_info *group_info); int security_task_setnice(struct task_struct *p, int nice); int security_task_setioprio(struct task_struct *p, int ioprio); int security_task_getioprio(struct task_struct *p); int security_task_setrlimit(struct task_struct *p, unsigned int resource, struct rlimit *new_rlim); int security_task_setscheduler(struct task_struct *p, int policy, struct sched_param *lp); int security_task_getscheduler(struct task_struct *p); int security_task_movememory(struct task_struct *p); int security_task_kill(struct task_struct *p, struct siginfo *info, int sig, u32 secid); int security_task_wait(struct task_struct *p); int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); void security_task_to_inode(struct task_struct *p, struct inode *inode); int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag); void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid); int security_msg_msg_alloc(struct msg_msg *msg); void security_msg_msg_free(struct msg_msg *msg); int security_msg_queue_alloc(struct msg_queue *msq); void security_msg_queue_free(struct msg_queue *msq); int security_msg_queue_associate(struct msg_queue *msq, int msqflg); int security_msg_queue_msgctl(struct msg_queue *msq, int cmd); int security_msg_queue_msgsnd(struct msg_queue *msq, struct msg_msg *msg, int msqflg); int security_msg_queue_msgrcv(struct msg_queue *msq, struct msg_msg *msg, struct task_struct *target, long type, int mode); int security_shm_alloc(struct shmid_kernel *shp); void security_shm_free(struct shmid_kernel *shp); int security_shm_associate(struct shmid_kernel *shp, int shmflg); int security_shm_shmctl(struct shmid_kernel *shp, int cmd); int security_shm_shmat(struct shmid_kernel *shp, char __attribute__((noderef, address_space(1))) *shmaddr, int shmflg); int security_sem_alloc(struct sem_array *sma); void security_sem_free(struct sem_array *sma); int security_sem_associate(struct sem_array *sma, int semflg); int security_sem_semctl(struct sem_array *sma, int cmd); int security_sem_semop(struct sem_array *sma, struct sembuf *sops, unsigned nsops, int alter); void security_d_instantiate(struct dentry *dentry, struct inode *inode); int security_getprocattr(struct task_struct *p, char *name, char **value); int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size); int security_netlink_send(struct sock *sk, struct sk_buff *skb); int security_netlink_recv(struct sk_buff *skb, int cap); int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen); int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid); void security_release_secctx(char *secdata, u32 seclen); int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen); int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen); int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen); # 2693 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" int security_unix_stream_connect(struct socket *sock, struct socket *other, struct sock *newsk); int security_unix_may_send(struct socket *sock, struct socket *other); int security_socket_create(int family, int type, int protocol, int kern); int security_socket_post_create(struct socket *sock, int family, int type, int protocol, int kern); int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen); int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen); int security_socket_listen(struct socket *sock, int backlog); int security_socket_accept(struct socket *sock, struct socket *newsock); int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size); int security_socket_recvmsg(struct socket *sock, struct msghdr *msg, int size, int flags); int security_socket_getsockname(struct socket *sock); int security_socket_getpeername(struct socket *sock); int security_socket_getsockopt(struct socket *sock, int level, int optname); int security_socket_setsockopt(struct socket *sock, int level, int optname); int security_socket_shutdown(struct socket *sock, int how); int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb); int security_socket_getpeersec_stream(struct socket *sock, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen, unsigned len); int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid); int security_sk_alloc(struct sock *sk, int family, gfp_t priority); void security_sk_free(struct sock *sk); void security_sk_clone(const struct sock *sk, struct sock *newsk); void security_sk_classify_flow(struct sock *sk, struct flowi *fl); void security_req_classify_flow(const struct request_sock *req, struct flowi *fl); void security_sock_graft(struct sock*sk, struct socket *parent); int security_inet_conn_request(struct sock *sk, struct sk_buff *skb, struct request_sock *req); void security_inet_csk_clone(struct sock *newsk, const struct request_sock *req); void security_inet_conn_established(struct sock *sk, struct sk_buff *skb); int security_tun_dev_create(void); void security_tun_dev_post_create(struct sock *sk); int security_tun_dev_attach(struct sock *sk); # 2898 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx); int security_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctxp); void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx); int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx); int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx); int security_xfrm_state_alloc_acquire(struct xfrm_state *x, struct xfrm_sec_ctx *polsec, u32 secid); int security_xfrm_state_delete(struct xfrm_state *x); void security_xfrm_state_free(struct xfrm_state *x); int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir); int security_xfrm_state_pol_flow_match(struct xfrm_state *x, struct xfrm_policy *xp, struct flowi *fl); int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid); void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl); # 2978 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" int security_path_unlink(struct path *dir, struct dentry *dentry); int security_path_mkdir(struct path *dir, struct dentry *dentry, int mode); int security_path_rmdir(struct path *dir, struct dentry *dentry); int security_path_mknod(struct path *dir, struct dentry *dentry, int mode, unsigned int dev); int security_path_truncate(struct path *path, loff_t length, unsigned int time_attrs); int security_path_symlink(struct path *dir, struct dentry *dentry, const char *old_name); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, mode_t mode); int security_path_chown(struct path *path, uid_t uid, gid_t gid); int security_path_chroot(struct path *path); # 3066 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" int security_key_alloc(struct key *key, const struct cred *cred, unsigned long flags); void security_key_free(struct key *key); int security_key_permission(key_ref_t key_ref, const struct cred *cred, key_perm_t perm); int security_key_getsecurity(struct key *key, char **_buffer); int security_key_session_to_parent(const struct cred *cred, const struct cred *parent_cred, struct key *key); # 3113 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule); int security_audit_rule_known(struct audit_krule *krule); int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule, struct audit_context *actx); void security_audit_rule_free(void *lsmrule); # 3146 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" extern struct dentry *securityfs_create_file(const char *name, mode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); extern struct dentry *securityfs_create_dir(const char *name, struct dentry *parent); extern void securityfs_remove(struct dentry *dentry); # 3176 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/security.h" static inline char *alloc_secdata(void) { return (char *)get_zeroed_page((((__attribute__((force)) gfp_t)0x10u) | ((__attribute__((force)) gfp_t)0x40u) | ((__attribute__((force)) gfp_t)0x80u))); } static inline void free_secdata(void *secdata) { free_pages(((unsigned long)secdata),0); } # 54 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/filter.h" 1 # 26 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/filter.h" struct sock_filter { __u16 code; __u8 jt; __u8 jf; __u32 k; }; struct sock_fprog { unsigned short len; struct sock_filter __attribute__((noderef, address_space(1))) *filter; }; # 131 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/filter.h" struct sk_filter { atomic_t refcnt; unsigned int len; struct rcu_head rcu; struct sock_filter insns[0]; }; static inline unsigned int sk_filter_len(const struct sk_filter *fp) { return fp->len * sizeof(struct sock_filter) + sizeof(*fp); } struct sk_buff; struct sock; extern int sk_filter(struct sock *sk, struct sk_buff *skb); extern unsigned int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen); extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); extern int sk_detach_filter(struct sock *sk); extern int sk_chk_filter(struct sock_filter *filter, int flen); # 56 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist_nulls.h" 1 # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist_nulls.h" static inline void hlist_nulls_del_init_rcu(struct hlist_nulls_node *n) { if (!hlist_nulls_unhashed(n)) { __hlist_nulls_del(n); n->pprev = ((void *)0); } } # 59 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist_nulls.h" static inline void hlist_nulls_del_rcu(struct hlist_nulls_node *n) { __hlist_nulls_del(n); n->pprev = ((void *) 0x00200200 + (0xdead000000000000UL)); } # 84 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/rculist_nulls.h" static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n, struct hlist_nulls_head *h) { struct hlist_nulls_node *first = h->first; n->next = first; n->pprev = &h->first; ({ if (!__builtin_constant_p(n) || ((n) != ((void *)0))) __asm__ __volatile__("": : :"memory"); (h->first) = (n); }); if (!is_a_nulls(first)) first->pprev = &n->next; } # 57 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poll.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/poll.h" 1 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/poll.h" 1 # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/asm-generic/poll.h" struct pollfd { int fd; short events; short revents; }; # 1 "/lnx/src/MM/mmotm-2010-0323-1534/arch/x86/include/asm/poll.h" 2 # 5 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poll.h" 2 # 16 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poll.h" extern struct ctl_table epoll_table[]; # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poll.h" struct poll_table_struct; typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *); typedef struct poll_table_struct { poll_queue_proc qproc; unsigned long key; } poll_table; static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p) { if (p && wait_address) p->qproc(filp, wait_address, p); } static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc) { pt->qproc = qproc; pt->key = ~0UL; } struct poll_table_entry { struct file *filp; unsigned long key; wait_queue_t wait; wait_queue_head_t *wait_address; }; struct poll_wqueues { poll_table pt; struct poll_table_page *table; struct task_struct *polling_task; int triggered; int error; int inline_index; struct poll_table_entry inline_entries[((832 - 256) / sizeof(struct poll_table_entry))]; }; extern void poll_initwait(struct poll_wqueues *pwq); extern void poll_freewait(struct poll_wqueues *pwq); extern int poll_schedule_timeout(struct poll_wqueues *pwq, int state, ktime_t *expires, unsigned long slack); static inline int poll_schedule(struct poll_wqueues *pwq, int state) { return poll_schedule_timeout(pwq, state, ((void *)0), 0); } typedef struct { unsigned long *in, *out, *ex; unsigned long *res_in, *res_out, *res_ex; } fd_set_bits; # 104 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/poll.h" static inline int get_fd_set(unsigned long nr, void __attribute__((noderef, address_space(1))) *ufdset, unsigned long *fdset) { nr = ((((nr)+(8*sizeof(long))-1)/(8*sizeof(long)))*sizeof(long)); if (ufdset) return copy_from_user(fdset, ufdset, nr) ? -14 : 0; memset(fdset, 0, nr); return 0; } static inline unsigned long set_fd_set(unsigned long nr, void __attribute__((noderef, address_space(1))) *ufdset, unsigned long *fdset) { if (ufdset) return __copy_to_user(ufdset, fdset, ((((nr)+(8*sizeof(long))-1)/(8*sizeof(long)))*sizeof(long))); return 0; } static inline void zero_fd_set(unsigned long nr, unsigned long *fdset) { memset(fdset, 0, ((((nr)+(8*sizeof(long))-1)/(8*sizeof(long)))*sizeof(long))); } extern int do_select(int n, fd_set_bits *fds, struct timespec *end_time); extern int do_sys_poll(struct pollfd __attribute__((noderef, address_space(1))) * ufds, unsigned int nfds, struct timespec *end_time); extern int core_sys_select(int n, fd_set __attribute__((noderef, address_space(1))) *inp, fd_set __attribute__((noderef, address_space(1))) *outp, fd_set __attribute__((noderef, address_space(1))) *exp, struct timespec *end_time); extern int poll_select_set_timeout(struct timespec *to, long sec, long nsec); # 58 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" 2 # 86 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" typedef struct { spinlock_t slock; int owned; wait_queue_head_t wq; # 99 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" } socket_lock_t; struct sock; struct proto; struct net; # 125 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" struct sock_common { union { struct hlist_node skc_node; struct hlist_nulls_node skc_nulls_node; }; atomic_t skc_refcnt; int skc_tx_queue_mapping; union { unsigned int skc_hash; __u16 skc_u16hashes[2]; }; unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse; int skc_bound_dev_if; union { struct hlist_node skc_bind_node; struct hlist_nulls_node skc_portaddr_node; }; struct proto *skc_prot; }; # 219 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" struct sock { struct sock_common __sk_common; # 239 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" ; unsigned int sk_shutdown : 2, sk_no_check : 2, sk_userlocks : 4, sk_protocol : 8, sk_type : 16; ; int sk_rcvbuf; socket_lock_t sk_lock; struct { struct sk_buff *head; struct sk_buff *tail; int len; int limit; } sk_backlog; wait_queue_head_t *sk_sleep; struct dst_entry *sk_dst_cache; struct xfrm_policy *sk_policy[2]; rwlock_t sk_dst_lock; atomic_t sk_rmem_alloc; atomic_t sk_wmem_alloc; atomic_t sk_omem_alloc; int sk_sndbuf; struct sk_buff_head sk_receive_queue; struct sk_buff_head sk_write_queue; struct sk_buff_head sk_async_wait_queue; int sk_wmem_queued; int sk_forward_alloc; gfp_t sk_allocation; int sk_route_caps; int sk_gso_type; unsigned int sk_gso_max_size; int sk_rcvlowat; unsigned long sk_flags; unsigned long sk_lingertime; struct sk_buff_head sk_error_queue; struct proto *sk_prot_creator; rwlock_t sk_callback_lock; int sk_err, sk_err_soft; atomic_t sk_drops; unsigned short sk_ack_backlog; unsigned short sk_max_ack_backlog; __u32 sk_priority; struct ucred sk_peercred; long sk_rcvtimeo; long sk_sndtimeo; struct sk_filter *sk_filter; void *sk_protinfo; struct timer_list sk_timer; ktime_t sk_stamp; struct socket *sk_socket; void *sk_user_data; struct page *sk_sndmsg_page; struct sk_buff *sk_send_head; __u32 sk_sndmsg_off; int sk_write_pending; void *sk_security; __u32 sk_mark; void (*sk_state_change)(struct sock *sk); void (*sk_data_ready)(struct sock *sk, int bytes); void (*sk_write_space)(struct sock *sk); void (*sk_error_report)(struct sock *sk); int (*sk_backlog_rcv)(struct sock *sk, struct sk_buff *skb); void (*sk_destruct)(struct sock *sk); }; static inline struct sock *sk_entry(const struct hlist_node *node) { return ({ const typeof( ((struct sock *)0)->__sk_common.skc_node ) *__mptr = (node); (struct sock *)( (char *)__mptr - __builtin_offsetof(struct sock,__sk_common.skc_node) );}); } static inline struct sock *__sk_head(const struct hlist_head *head) { return ({ const typeof( ((struct sock *)0)->__sk_common.skc_node ) *__mptr = (head->first); (struct sock *)( (char *)__mptr - __builtin_offsetof(struct sock,__sk_common.skc_node) );}); } static inline struct sock *sk_head(const struct hlist_head *head) { return hlist_empty(head) ? ((void *)0) : __sk_head(head); } static inline struct sock *__sk_nulls_head(const struct hlist_nulls_head *head) { return ({ const typeof( ((struct sock *)0)->__sk_common.skc_nulls_node ) *__mptr = (head->first); (struct sock *)( (char *)__mptr - __builtin_offsetof(struct sock,__sk_common.skc_nulls_node) );}); } static inline struct sock *sk_nulls_head(const struct hlist_nulls_head *head) { return hlist_nulls_empty(head) ? ((void *)0) : __sk_nulls_head(head); } static inline struct sock *sk_next(const struct sock *sk) { return sk->__sk_common.skc_node.next ? ({ const typeof( ((struct sock *)0)->__sk_common.skc_node ) *__mptr = (sk->__sk_common.skc_node.next); (struct sock *)( (char *)__mptr - __builtin_offsetof(struct sock,__sk_common.skc_node) );}) : ((void *)0); } static inline struct sock *sk_nulls_next(const struct sock *sk) { return (!is_a_nulls(sk->__sk_common.skc_nulls_node.next)) ? ({ const typeof( ((struct sock *)0)->__sk_common.skc_nulls_node ) *__mptr = (sk->__sk_common.skc_nulls_node.next); (struct sock *)( (char *)__mptr - __builtin_offsetof(struct sock,__sk_common.skc_nulls_node) );}) : ((void *)0); } static inline int sk_unhashed(const struct sock *sk) { return hlist_unhashed(&sk->__sk_common.skc_node); } static inline int sk_hashed(const struct sock *sk) { return !sk_unhashed(sk); } static __inline__ void sk_node_init(struct hlist_node *node) { node->pprev = ((void *)0); } static __inline__ void sk_nulls_node_init(struct hlist_nulls_node *node) { node->pprev = ((void *)0); } static __inline__ void __sk_del_node(struct sock *sk) { __hlist_del(&sk->__sk_common.skc_node); } static __inline__ int __sk_del_node_init(struct sock *sk) { if (sk_hashed(sk)) { __sk_del_node(sk); sk_node_init(&sk->__sk_common.skc_node); return 1; } return 0; } static inline void sock_hold(struct sock *sk) { atomic_inc(&sk->__sk_common.skc_refcnt); } static inline void __sock_put(struct sock *sk) { atomic_dec(&sk->__sk_common.skc_refcnt); } static __inline__ int sk_del_node_init(struct sock *sk) { int rc = __sk_del_node_init(sk); if (rc) { ({ int __ret_warn_on = !!(atomic_read(&sk->__sk_common.skc_refcnt) == 1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h", 422); __builtin_expect(!!(__ret_warn_on), 0); }); __sock_put(sk); } return rc; } static __inline__ int __sk_nulls_del_node_init_rcu(struct sock *sk) { if (sk_hashed(sk)) { hlist_nulls_del_init_rcu(&sk->__sk_common.skc_nulls_node); return 1; } return 0; } static __inline__ int sk_nulls_del_node_init_rcu(struct sock *sk) { int rc = __sk_nulls_del_node_init_rcu(sk); if (rc) { ({ int __ret_warn_on = !!(atomic_read(&sk->__sk_common.skc_refcnt) == 1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h", 444); __builtin_expect(!!(__ret_warn_on), 0); }); __sock_put(sk); } return rc; } static __inline__ void __sk_add_node(struct sock *sk, struct hlist_head *list) { hlist_add_head(&sk->__sk_common.skc_node, list); } static __inline__ void sk_add_node(struct sock *sk, struct hlist_head *list) { sock_hold(sk); __sk_add_node(sk, list); } static __inline__ void sk_add_node_rcu(struct sock *sk, struct hlist_head *list) { sock_hold(sk); hlist_add_head_rcu(&sk->__sk_common.skc_node, list); } static __inline__ void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list) { hlist_nulls_add_head_rcu(&sk->__sk_common.skc_nulls_node, list); } static __inline__ void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list) { sock_hold(sk); __sk_nulls_add_node_rcu(sk, list); } static __inline__ void __sk_del_bind_node(struct sock *sk) { __hlist_del(&sk->__sk_common.skc_bind_node); } static __inline__ void sk_add_bind_node(struct sock *sk, struct hlist_head *list) { hlist_add_head(&sk->__sk_common.skc_bind_node, list); } # 512 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" enum sock_flags { SOCK_DEAD, SOCK_DONE, SOCK_URGINLINE, SOCK_KEEPOPEN, SOCK_LINGER, SOCK_DESTROY, SOCK_BROADCAST, SOCK_TIMESTAMP, SOCK_ZAPPED, SOCK_USE_WRITE_QUEUE, SOCK_DBG, SOCK_RCVTSTAMP, SOCK_RCVTSTAMPNS, SOCK_LOCALROUTE, SOCK_QUEUE_SHRUNK, SOCK_TIMESTAMPING_TX_HARDWARE, SOCK_TIMESTAMPING_TX_SOFTWARE, SOCK_TIMESTAMPING_RX_HARDWARE, SOCK_TIMESTAMPING_RX_SOFTWARE, SOCK_TIMESTAMPING_SOFTWARE, SOCK_TIMESTAMPING_RAW_HARDWARE, SOCK_TIMESTAMPING_SYS_HARDWARE, SOCK_FASYNC, SOCK_RXQ_OVFL, }; static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) { nsk->sk_flags = osk->sk_flags; } static inline void sock_set_flag(struct sock *sk, enum sock_flags flag) { __set_bit(flag, &sk->sk_flags); } static inline void sock_reset_flag(struct sock *sk, enum sock_flags flag) { __clear_bit(flag, &sk->sk_flags); } static inline int sock_flag(struct sock *sk, enum sock_flags flag) { return (__builtin_constant_p((flag)) ? constant_test_bit((flag), (&sk->sk_flags)) : variable_test_bit((flag), (&sk->sk_flags))); } static inline void sk_acceptq_removed(struct sock *sk) { sk->sk_ack_backlog--; } static inline void sk_acceptq_added(struct sock *sk) { sk->sk_ack_backlog++; } static inline int sk_acceptq_is_full(struct sock *sk) { return sk->sk_ack_backlog > sk->sk_max_ack_backlog; } static inline int sk_stream_min_wspace(struct sock *sk) { return sk->sk_wmem_queued >> 1; } static inline int sk_stream_wspace(struct sock *sk) { return sk->sk_sndbuf - sk->sk_wmem_queued; } extern void sk_stream_write_space(struct sock *sk); static inline int sk_stream_memory_free(struct sock *sk) { return sk->sk_wmem_queued < sk->sk_sndbuf; } static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb) { if (!sk->sk_backlog.tail) { sk->sk_backlog.head = sk->sk_backlog.tail = skb; } else { sk->sk_backlog.tail->next = skb; sk->sk_backlog.tail = skb; } skb->next = ((void *)0); } static inline int sk_add_backlog(struct sock *sk, struct sk_buff *skb) { if (sk->sk_backlog.len >= ({ typeof(sk->sk_backlog.limit) _max1 = (sk->sk_backlog.limit); typeof(sk->sk_rcvbuf << 1) _max2 = (sk->sk_rcvbuf << 1); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; })) return -105; __sk_add_backlog(sk, skb); sk->sk_backlog.len += skb->truesize; return 0; } static inline int sk_backlog_rcv(struct sock *sk, struct sk_buff *skb) { return sk->sk_backlog_rcv(sk, skb); } # 634 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" extern int sk_stream_wait_connect(struct sock *sk, long *timeo_p); extern int sk_stream_wait_memory(struct sock *sk, long *timeo_p); extern void sk_stream_wait_close(struct sock *sk, long timeo_p); extern int sk_stream_error(struct sock *sk, int flags, int err); extern void sk_stream_kill_queues(struct sock *sk); extern int sk_wait_data(struct sock *sk, long *timeo); struct request_sock_ops; struct timewait_sock_ops; struct inet_hashinfo; struct raw_hashinfo; struct proto { void (*close)(struct sock *sk, long timeout); int (*connect)(struct sock *sk, struct sockaddr *uaddr, int addr_len); int (*disconnect)(struct sock *sk, int flags); struct sock * (*accept) (struct sock *sk, int flags, int *err); int (*ioctl)(struct sock *sk, int cmd, unsigned long arg); int (*init)(struct sock *sk); void (*destroy)(struct sock *sk); void (*shutdown)(struct sock *sk, int how); int (*setsockopt)(struct sock *sk, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); int (*getsockopt)(struct sock *sk, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *option); int (*compat_setsockopt)(struct sock *sk, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); int (*compat_getsockopt)(struct sock *sk, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *option); int (*sendmsg)(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len); int (*recvmsg)(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len, int noblock, int flags, int *addr_len); int (*sendpage)(struct sock *sk, struct page *page, int offset, size_t size, int flags); int (*bind)(struct sock *sk, struct sockaddr *uaddr, int addr_len); int (*backlog_rcv) (struct sock *sk, struct sk_buff *skb); void (*hash)(struct sock *sk); void (*unhash)(struct sock *sk); int (*get_port)(struct sock *sk, unsigned short snum); unsigned int inuse_idx; void (*enter_memory_pressure)(struct sock *sk); atomic_t *memory_allocated; struct percpu_counter *sockets_allocated; int *memory_pressure; int *sysctl_mem; int *sysctl_wmem; int *sysctl_rmem; int max_header; struct kmem_cache *slab; unsigned int obj_size; int slab_flags; struct percpu_counter *orphan_count; struct request_sock_ops *rsk_prot; struct timewait_sock_ops *twsk_prot; union { struct inet_hashinfo *hashinfo; struct udp_table *udp_table; struct raw_hashinfo *raw_hash; } h; struct module *owner; char name[32]; struct list_head node; }; extern int proto_register(struct proto *prot, int alloc_slab); extern void proto_unregister(struct proto *prot); # 778 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" extern void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc); extern int sock_prot_inuse_get(struct net *net, struct proto *proto); # 791 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void __sk_prot_rehash(struct sock *sk) { sk->__sk_common.skc_prot->unhash(sk); sk->__sk_common.skc_prot->hash(sk); } # 813 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" struct sock_iocb { struct list_head list; int flags; int size; struct socket *sock; struct sock *sk; struct scm_cookie *scm; struct msghdr *msg, async_msg; struct kiocb *kiocb; }; static inline struct sock_iocb *kiocb_to_siocb(struct kiocb *iocb) { return (struct sock_iocb *)iocb->private; } static inline struct kiocb *siocb_to_kiocb(struct sock_iocb *si) { return si->kiocb; } struct socket_alloc { struct socket socket; struct inode vfs_inode; }; static inline struct socket *SOCKET_I(struct inode *inode) { return &({ const typeof( ((struct socket_alloc *)0)->vfs_inode ) *__mptr = (inode); (struct socket_alloc *)( (char *)__mptr - __builtin_offsetof(struct socket_alloc,vfs_inode) );})->socket; } static inline struct inode *SOCK_INODE(struct socket *socket) { return &({ const typeof( ((struct socket_alloc *)0)->socket ) *__mptr = (socket); (struct socket_alloc *)( (char *)__mptr - __builtin_offsetof(struct socket_alloc,socket) );})->vfs_inode; } extern int __sk_mem_schedule(struct sock *sk, int size, int kind); extern void __sk_mem_reclaim(struct sock *sk); static inline int sk_mem_pages(int amt) { return (amt + ((int)((1UL) << 12)) - 1) >> ( __builtin_constant_p(((int)((1UL) << 12))) ? ( (((int)((1UL) << 12))) < 1 ? ____ilog2_NaN() : (((int)((1UL) << 12))) & (1ULL << 63) ? 63 : (((int)((1UL) << 12))) & (1ULL << 62) ? 62 : (((int)((1UL) << 12))) & (1ULL << 61) ? 61 : (((int)((1UL) << 12))) & (1ULL << 60) ? 60 : (((int)((1UL) << 12))) & (1ULL << 59) ? 59 : (((int)((1UL) << 12))) & (1ULL << 58) ? 58 : (((int)((1UL) << 12))) & (1ULL << 57) ? 57 : (((int)((1UL) << 12))) & (1ULL << 56) ? 56 : (((int)((1UL) << 12))) & (1ULL << 55) ? 55 : (((int)((1UL) << 12))) & (1ULL << 54) ? 54 : (((int)((1UL) << 12))) & (1ULL << 53) ? 53 : (((int)((1UL) << 12))) & (1ULL << 52) ? 52 : (((int)((1UL) << 12))) & (1ULL << 51) ? 51 : (((int)((1UL) << 12))) & (1ULL << 50) ? 50 : (((int)((1UL) << 12))) & (1ULL << 49) ? 49 : (((int)((1UL) << 12))) & (1ULL << 48) ? 48 : (((int)((1UL) << 12))) & (1ULL << 47) ? 47 : (((int)((1UL) << 12))) & (1ULL << 46) ? 46 : (((int)((1UL) << 12))) & (1ULL << 45) ? 45 : (((int)((1UL) << 12))) & (1ULL << 44) ? 44 : (((int)((1UL) << 12))) & (1ULL << 43) ? 43 : (((int)((1UL) << 12))) & (1ULL << 42) ? 42 : (((int)((1UL) << 12))) & (1ULL << 41) ? 41 : (((int)((1UL) << 12))) & (1ULL << 40) ? 40 : (((int)((1UL) << 12))) & (1ULL << 39) ? 39 : (((int)((1UL) << 12))) & (1ULL << 38) ? 38 : (((int)((1UL) << 12))) & (1ULL << 37) ? 37 : (((int)((1UL) << 12))) & (1ULL << 36) ? 36 : (((int)((1UL) << 12))) & (1ULL << 35) ? 35 : (((int)((1UL) << 12))) & (1ULL << 34) ? 34 : (((int)((1UL) << 12))) & (1ULL << 33) ? 33 : (((int)((1UL) << 12))) & (1ULL << 32) ? 32 : (((int)((1UL) << 12))) & (1ULL << 31) ? 31 : (((int)((1UL) << 12))) & (1ULL << 30) ? 30 : (((int)((1UL) << 12))) & (1ULL << 29) ? 29 : (((int)((1UL) << 12))) & (1ULL << 28) ? 28 : (((int)((1UL) << 12))) & (1ULL << 27) ? 27 : (((int)((1UL) << 12))) & (1ULL << 26) ? 26 : (((int)((1UL) << 12))) & (1ULL << 25) ? 25 : (((int)((1UL) << 12))) & (1ULL << 24) ? 24 : (((int)((1UL) << 12))) & (1ULL << 23) ? 23 : (((int)((1UL) << 12))) & (1ULL << 22) ? 22 : (((int)((1UL) << 12))) & (1ULL << 21) ? 21 : (((int)((1UL) << 12))) & (1ULL << 20) ? 20 : (((int)((1UL) << 12))) & (1ULL << 19) ? 19 : (((int)((1UL) << 12))) & (1ULL << 18) ? 18 : (((int)((1UL) << 12))) & (1ULL << 17) ? 17 : (((int)((1UL) << 12))) & (1ULL << 16) ? 16 : (((int)((1UL) << 12))) & (1ULL << 15) ? 15 : (((int)((1UL) << 12))) & (1ULL << 14) ? 14 : (((int)((1UL) << 12))) & (1ULL << 13) ? 13 : (((int)((1UL) << 12))) & (1ULL << 12) ? 12 : (((int)((1UL) << 12))) & (1ULL << 11) ? 11 : (((int)((1UL) << 12))) & (1ULL << 10) ? 10 : (((int)((1UL) << 12))) & (1ULL << 9) ? 9 : (((int)((1UL) << 12))) & (1ULL << 8) ? 8 : (((int)((1UL) << 12))) & (1ULL << 7) ? 7 : (((int)((1UL) << 12))) & (1ULL << 6) ? 6 : (((int)((1UL) << 12))) & (1ULL << 5) ? 5 : (((int)((1UL) << 12))) & (1ULL << 4) ? 4 : (((int)((1UL) << 12))) & (1ULL << 3) ? 3 : (((int)((1UL) << 12))) & (1ULL << 2) ? 2 : (((int)((1UL) << 12))) & (1ULL << 1) ? 1 : (((int)((1UL) << 12))) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(((int)((1UL) << 12))) <= 4) ? __ilog2_u32(((int)((1UL) << 12))) : __ilog2_u64(((int)((1UL) << 12))) ); } static inline int sk_has_account(struct sock *sk) { return !!sk->__sk_common.skc_prot->memory_allocated; } static inline int sk_wmem_schedule(struct sock *sk, int size) { if (!sk_has_account(sk)) return 1; return size <= sk->sk_forward_alloc || __sk_mem_schedule(sk, size, 0); } static inline int sk_rmem_schedule(struct sock *sk, int size) { if (!sk_has_account(sk)) return 1; return size <= sk->sk_forward_alloc || __sk_mem_schedule(sk, size, 1); } static inline void sk_mem_reclaim(struct sock *sk) { if (!sk_has_account(sk)) return; if (sk->sk_forward_alloc >= ((int)((1UL) << 12))) __sk_mem_reclaim(sk); } static inline void sk_mem_reclaim_partial(struct sock *sk) { if (!sk_has_account(sk)) return; if (sk->sk_forward_alloc > ((int)((1UL) << 12))) __sk_mem_reclaim(sk); } static inline void sk_mem_charge(struct sock *sk, int size) { if (!sk_has_account(sk)) return; sk->sk_forward_alloc -= size; } static inline void sk_mem_uncharge(struct sock *sk, int size) { if (!sk_has_account(sk)) return; sk->sk_forward_alloc += size; } static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb) { sock_set_flag(sk, SOCK_QUEUE_SHRUNK); sk->sk_wmem_queued -= skb->truesize; sk_mem_uncharge(sk, skb->truesize); __kfree_skb(skb); } # 960 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" extern void lock_sock_nested(struct sock *sk, int subclass); static inline void lock_sock(struct sock *sk) { lock_sock_nested(sk, 0); } extern void release_sock(struct sock *sk); # 976 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" extern struct sock *sk_alloc(struct net *net, int family, gfp_t priority, struct proto *prot); extern void sk_free(struct sock *sk); extern void sk_release_kernel(struct sock *sk); extern struct sock *sk_clone(const struct sock *sk, const gfp_t priority); extern struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, gfp_t priority); extern struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, gfp_t priority); extern void sock_wfree(struct sk_buff *skb); extern void sock_rfree(struct sk_buff *skb); extern int sock_setsockopt(struct socket *sock, int level, int op, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); extern int sock_getsockopt(struct socket *sock, int level, int op, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen); extern struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size, int noblock, int *errcode); extern struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len, unsigned long data_len, int noblock, int *errcode); extern void *sock_kmalloc(struct sock *sk, int size, gfp_t priority); extern void sock_kfree_s(struct sock *sk, void *mem, int size); extern void sk_send_sigurg(struct sock *sk); extern int sock_no_bind(struct socket *, struct sockaddr *, int); extern int sock_no_connect(struct socket *, struct sockaddr *, int, int); extern int sock_no_socketpair(struct socket *, struct socket *); extern int sock_no_accept(struct socket *, struct socket *, int); extern int sock_no_getname(struct socket *, struct sockaddr *, int *, int); extern unsigned int sock_no_poll(struct file *, struct socket *, struct poll_table_struct *); extern int sock_no_ioctl(struct socket *, unsigned int, unsigned long); extern int sock_no_listen(struct socket *, int); extern int sock_no_shutdown(struct socket *, int); extern int sock_no_getsockopt(struct socket *, int , int, char __attribute__((noderef, address_space(1))) *, int __attribute__((noderef, address_space(1))) *); extern int sock_no_setsockopt(struct socket *, int, int, char __attribute__((noderef, address_space(1))) *, unsigned int); extern int sock_no_sendmsg(struct kiocb *, struct socket *, struct msghdr *, size_t); extern int sock_no_recvmsg(struct kiocb *, struct socket *, struct msghdr *, size_t, int); extern int sock_no_mmap(struct file *file, struct socket *sock, struct vm_area_struct *vma); extern ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); extern int sock_common_getsockopt(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen); extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t size, int flags); extern int sock_common_setsockopt(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); extern int compat_sock_common_getsockopt(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, int __attribute__((noderef, address_space(1))) *optlen); extern int compat_sock_common_setsockopt(struct socket *sock, int level, int optname, char __attribute__((noderef, address_space(1))) *optval, unsigned int optlen); extern void sk_common_release(struct sock *sk); extern void sock_init_data(struct socket *sock, struct sock *sk); # 1081 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void sk_filter_release(struct sk_filter *fp) { if (atomic_dec_and_test(&fp->refcnt)) kfree(fp); } static inline void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp) { unsigned int size = sk_filter_len(fp); atomic_sub(size, &sk->sk_omem_alloc); sk_filter_release(fp); } static inline void sk_filter_charge(struct sock *sk, struct sk_filter *fp) { atomic_inc(&fp->refcnt); atomic_add(sk_filter_len(fp), &sk->sk_omem_alloc); } # 1127 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void sock_put(struct sock *sk) { if (atomic_dec_and_test(&sk->__sk_common.skc_refcnt)) sk_free(sk); } extern int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested); static inline void sk_tx_queue_set(struct sock *sk, int tx_queue) { sk->__sk_common.skc_tx_queue_mapping = tx_queue; } static inline void sk_tx_queue_clear(struct sock *sk) { sk->__sk_common.skc_tx_queue_mapping = -1; } static inline int sk_tx_queue_get(const struct sock *sk) { return sk->__sk_common.skc_tx_queue_mapping; } static inline bool sk_tx_queue_recorded(const struct sock *sk) { return (sk && sk->__sk_common.skc_tx_queue_mapping >= 0); } static inline void sk_set_socket(struct sock *sk, struct socket *sock) { sk_tx_queue_clear(sk); sk->sk_socket = sock; } # 1169 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void sock_orphan(struct sock *sk) { _raw_write_lock_bh(&sk->sk_callback_lock); sock_set_flag(sk, SOCK_DEAD); sk_set_socket(sk, ((void *)0)); sk->sk_sleep = ((void *)0); _raw_write_unlock_bh(&sk->sk_callback_lock); } static inline void sock_graft(struct sock *sk, struct socket *parent) { _raw_write_lock_bh(&sk->sk_callback_lock); sk->sk_sleep = &parent->wait; parent->sk = sk; sk_set_socket(sk, parent); security_sock_graft(sk, parent); _raw_write_unlock_bh(&sk->sk_callback_lock); } extern int sock_i_uid(struct sock *sk); extern unsigned long sock_i_ino(struct sock *sk); static inline struct dst_entry * __sk_dst_get(struct sock *sk) { return sk->sk_dst_cache; } static inline struct dst_entry * sk_dst_get(struct sock *sk) { struct dst_entry *dst; _raw_read_lock(&sk->sk_dst_lock); dst = sk->sk_dst_cache; if (dst) dst_hold(dst); _raw_read_unlock(&sk->sk_dst_lock); return dst; } static inline void __sk_dst_set(struct sock *sk, struct dst_entry *dst) { struct dst_entry *old_dst; sk_tx_queue_clear(sk); old_dst = sk->sk_dst_cache; sk->sk_dst_cache = dst; dst_release(old_dst); } static inline void sk_dst_set(struct sock *sk, struct dst_entry *dst) { _raw_write_lock(&sk->sk_dst_lock); __sk_dst_set(sk, dst); _raw_write_unlock(&sk->sk_dst_lock); } static inline void __sk_dst_reset(struct sock *sk) { struct dst_entry *old_dst; sk_tx_queue_clear(sk); old_dst = sk->sk_dst_cache; sk->sk_dst_cache = ((void *)0); dst_release(old_dst); } static inline void sk_dst_reset(struct sock *sk) { _raw_write_lock(&sk->sk_dst_lock); __sk_dst_reset(sk); _raw_write_unlock(&sk->sk_dst_lock); } extern struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie); extern struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie); static inline int sk_can_gso(const struct sock *sk) { return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type); } extern void sk_setup_caps(struct sock *sk, struct dst_entry *dst); static inline int skb_copy_to_page(struct sock *sk, char __attribute__((noderef, address_space(1))) *from, struct sk_buff *skb, struct page *page, int off, int copy) { if (skb->ip_summed == 0) { int err = 0; __wsum csum = csum_partial_copy_from_user(from, lowmem_page_address(page) + off, copy, 0, &err); if (err) return err; skb->csum = csum_block_add(skb->csum, csum, skb->len); } else if (copy_from_user(lowmem_page_address(page) + off, from, copy)) return -14; skb->len += copy; skb->data_len += copy; skb->truesize += copy; sk->sk_wmem_queued += copy; sk_mem_charge(sk, copy); return 0; } static inline int sk_wmem_alloc_get(const struct sock *sk) { return atomic_read(&sk->sk_wmem_alloc) - 1; } static inline int sk_rmem_alloc_get(const struct sock *sk) { return atomic_read(&sk->sk_rmem_alloc); } static inline int sk_has_allocations(const struct sock *sk) { return sk_wmem_alloc_get(sk) || sk_rmem_alloc_get(sk); } # 1348 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline int sk_has_sleeper(struct sock *sk) { smp_mb__after_lock(); return sk->sk_sleep && waitqueue_active(sk->sk_sleep); } # 1368 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void sock_poll_wait(struct file *filp, wait_queue_head_t *wait_address, poll_table *p) { if (p && wait_address) { poll_wait(filp, wait_address, p); asm volatile("mfence":::"memory"); } } # 1392 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk) { skb_orphan(skb); skb->sk = sk; skb->destructor = sock_wfree; atomic_add(skb->truesize, &sk->sk_wmem_alloc); } static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk) { skb_orphan(skb); skb->sk = sk; skb->destructor = sock_rfree; atomic_add(skb->truesize, &sk->sk_rmem_alloc); sk_mem_charge(sk, skb->truesize); } extern void sk_reset_timer(struct sock *sk, struct timer_list* timer, unsigned long expires); extern void sk_stop_timer(struct sock *sk, struct timer_list* timer); extern int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb); static inline int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) { if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= (unsigned)sk->sk_rcvbuf) return -12; skb_set_owner_r(skb, sk); skb_queue_tail(&sk->sk_error_queue, skb); if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, skb->len); return 0; } static inline int sock_error(struct sock *sk) { int err; if (__builtin_expect(!!(!sk->sk_err), 1)) return 0; err = ({ __typeof(*((&sk->sk_err))) __x = ((0)); switch (sizeof(*&sk->sk_err)) { case 1: asm volatile("xchgb %b0,%1" : "=q" (__x) : "m" (*((volatile long *)((&sk->sk_err)))), "0" (__x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (__x) : "m" (*((volatile long *)((&sk->sk_err)))), "0" (__x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (__x) : "m" (*((volatile long *)((&sk->sk_err)))), "0" (__x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (__x) : "m" (*((volatile long *)((&sk->sk_err)))), "0" (__x) : "memory"); break; default: __xchg_wrong_size(); } __x; }); return -err; } static inline unsigned long sock_wspace(struct sock *sk) { int amt = 0; if (!(sk->sk_shutdown & 2)) { amt = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc); if (amt < 0) amt = 0; } return amt; } static inline void sk_wake_async(struct sock *sk, int how, int band) { if (sock_flag(sk, SOCK_FASYNC)) sock_wake_async(sk->sk_socket, how, band); } static inline void sk_stream_moderate_sndbuf(struct sock *sk) { if (!(sk->sk_userlocks & 1)) { sk->sk_sndbuf = ({ typeof(sk->sk_sndbuf) _min1 = (sk->sk_sndbuf); typeof(sk->sk_wmem_queued >> 1) _min2 = (sk->sk_wmem_queued >> 1); (void) (&_min1 == &_min2); _min1 < _min2 ? _min1 : _min2; }); sk->sk_sndbuf = ({ typeof(sk->sk_sndbuf) _max1 = (sk->sk_sndbuf); typeof(2048) _max2 = (2048); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; }); } } struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp); static inline struct page *sk_stream_alloc_page(struct sock *sk) { struct page *page = ((void *)0); page = alloc_pages(sk->sk_allocation, 0); if (!page) { sk->__sk_common.skc_prot->enter_memory_pressure(sk); sk_stream_moderate_sndbuf(sk); } return page; } static inline int sock_writeable(const struct sock *sk) { return atomic_read(&sk->sk_wmem_alloc) < (sk->sk_sndbuf >> 1); } static inline gfp_t gfp_any(void) { return (((current_thread_info()->preempt_count) & (((1UL << (8))-1) << (0 + 8)))) ? (((__attribute__((force)) gfp_t)0x20u)) : (((__attribute__((force)) gfp_t)0x10u) | ((__attribute__((force)) gfp_t)0x40u) | ((__attribute__((force)) gfp_t)0x80u)); } static inline long sock_rcvtimeo(const struct sock *sk, int noblock) { return noblock ? 0 : sk->sk_rcvtimeo; } static inline long sock_sndtimeo(const struct sock *sk, int noblock) { return noblock ? 0 : sk->sk_sndtimeo; } static inline int sock_rcvlowat(const struct sock *sk, int waitall, int len) { return (waitall ? len : ({ int __min1 = (sk->sk_rcvlowat); int __min2 = (len); __min1 < __min2 ? __min1: __min2; })) ? : 1; } static inline int sock_intr_errno(long timeo) { return timeo == ((long)(~0UL>>1)) ? -512 : -4; } extern void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb); static __inline__ void sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb) { ktime_t kt = skb->tstamp; struct skb_shared_hwtstamps *hwtstamps = skb_hwtstamps(skb); # 1547 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" if (sock_flag(sk, SOCK_RCVTSTAMP) || sock_flag(sk, SOCK_TIMESTAMPING_RX_SOFTWARE) || (kt.tv64 && sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE)) || (hwtstamps->hwtstamp.tv64 && sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE)) || (hwtstamps->syststamp.tv64 && sock_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE))) __sock_recv_timestamp(msg, sk, skb); else sk->sk_stamp = kt; } extern void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk, struct sk_buff *skb); # 1570 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" extern int sock_tx_timestamp(struct msghdr *msg, struct sock *sk, union skb_shared_tx *shtx); # 1585 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_early) { __skb_unlink(skb, &sk->sk_receive_queue); if (!copied_early) __kfree_skb(skb); else __skb_queue_tail(&sk->sk_async_wait_queue, skb); } # 1601 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/sock.h" static inline struct net *sock_net(const struct sock *sk) { return &init_net; } static inline void sock_net_set(struct sock *sk, struct net *net) { } static inline void sk_change_net(struct sock *sk, struct net *net) { put_net(sock_net(sk)); sock_net_set(sk, hold_net(net)); } static inline struct sock *skb_steal_sock(struct sk_buff *skb) { if (__builtin_expect(!!(skb->sk), 0)) { struct sock *sk = skb->sk; skb->destructor = ((void *)0); skb->sk = ((void *)0); return sk; } return ((void *)0); } extern void sock_enable_timestamp(struct sock *sk, int flag); extern int sock_get_timestamp(struct sock *, struct timeval __attribute__((noderef, address_space(1))) *); extern int sock_get_timestampns(struct sock *, struct timespec __attribute__((noderef, address_space(1))) *); extern int net_msg_warn; extern __u32 sysctl_wmem_max; extern __u32 sysctl_rmem_max; extern void sk_init(void); extern int sysctl_optmem_max; extern __u32 sysctl_wmem_default; extern __u32 sysctl_rmem_default; # 27 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/request_sock.h" 1 # 25 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/request_sock.h" struct request_sock; struct sk_buff; struct dst_entry; struct proto; struct request_values { }; struct request_sock_ops { int family; int obj_size; struct kmem_cache *slab; char *slab_name; int (*rtx_syn_ack)(struct sock *sk, struct request_sock *req, struct request_values *rvp); void (*send_ack)(struct sock *sk, struct sk_buff *skb, struct request_sock *req); void (*send_reset)(struct sock *sk, struct sk_buff *skb); void (*destructor)(struct request_sock *req); void (*syn_ack_timeout)(struct sock *sk, struct request_sock *req); }; struct request_sock { struct request_sock *dl_next; u16 mss; u8 retrans; u8 cookie_ts; u32 window_clamp; u32 rcv_wnd; u32 ts_recent; unsigned long expires; const struct request_sock_ops *rsk_ops; struct sock *sk; u32 secid; u32 peer_secid; }; static inline struct request_sock *reqsk_alloc(const struct request_sock_ops *ops) { struct request_sock *req = kmem_cache_alloc(ops->slab, (((__attribute__((force)) gfp_t)0x20u))); if (req != ((void *)0)) req->rsk_ops = ops; return req; } static inline void __reqsk_free(struct request_sock *req) { kmem_cache_free(req->rsk_ops->slab, req); } static inline void reqsk_free(struct request_sock *req) { req->rsk_ops->destructor(req); __reqsk_free(req); } extern int sysctl_max_syn_backlog; struct listen_sock { u8 max_qlen_log; int qlen; int qlen_young; int clock_hand; u32 hash_rnd; u32 nr_table_entries; struct request_sock *syn_table[0]; }; # 124 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/request_sock.h" struct request_sock_queue { struct request_sock *rskq_accept_head; struct request_sock *rskq_accept_tail; rwlock_t syn_wait_lock; u8 rskq_defer_accept; struct listen_sock *listen_opt; }; extern int reqsk_queue_alloc(struct request_sock_queue *queue, unsigned int nr_table_entries); extern void __reqsk_queue_destroy(struct request_sock_queue *queue); extern void reqsk_queue_destroy(struct request_sock_queue *queue); static inline struct request_sock * reqsk_queue_yank_acceptq(struct request_sock_queue *queue) { struct request_sock *req = queue->rskq_accept_head; queue->rskq_accept_head = ((void *)0); return req; } static inline int reqsk_queue_empty(struct request_sock_queue *queue) { return queue->rskq_accept_head == ((void *)0); } static inline void reqsk_queue_unlink(struct request_sock_queue *queue, struct request_sock *req, struct request_sock **prev_req) { _raw_write_lock(&queue->syn_wait_lock); *prev_req = req->dl_next; _raw_write_unlock(&queue->syn_wait_lock); } static inline void reqsk_queue_add(struct request_sock_queue *queue, struct request_sock *req, struct sock *parent, struct sock *child) { req->sk = child; sk_acceptq_added(parent); if (queue->rskq_accept_head == ((void *)0)) queue->rskq_accept_head = req; else queue->rskq_accept_tail->dl_next = req; queue->rskq_accept_tail = req; req->dl_next = ((void *)0); } static inline struct request_sock *reqsk_queue_remove(struct request_sock_queue *queue) { struct request_sock *req = queue->rskq_accept_head; ({ int __ret_warn_on = !!(req == ((void *)0)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/net/request_sock.h", 183); __builtin_expect(!!(__ret_warn_on), 0); }); queue->rskq_accept_head = req->dl_next; if (queue->rskq_accept_head == ((void *)0)) queue->rskq_accept_tail = ((void *)0); return req; } static inline struct sock *reqsk_queue_get_child(struct request_sock_queue *queue, struct sock *parent) { struct request_sock *req = reqsk_queue_remove(queue); struct sock *child = req->sk; ({ int __ret_warn_on = !!(child == ((void *)0)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_slowpath_null("/lnx/src/MM/mmotm-2010-0323-1534/include/net/request_sock.h", 198); __builtin_expect(!!(__ret_warn_on), 0); }); sk_acceptq_removed(parent); __reqsk_free(req); return child; } static inline int reqsk_queue_removed(struct request_sock_queue *queue, struct request_sock *req) { struct listen_sock *lopt = queue->listen_opt; if (req->retrans == 0) --lopt->qlen_young; return --lopt->qlen; } static inline int reqsk_queue_added(struct request_sock_queue *queue) { struct listen_sock *lopt = queue->listen_opt; const int prev_qlen = lopt->qlen; lopt->qlen_young++; lopt->qlen++; return prev_qlen; } static inline int reqsk_queue_len(const struct request_sock_queue *queue) { return queue->listen_opt != ((void *)0) ? queue->listen_opt->qlen : 0; } static inline int reqsk_queue_len_young(const struct request_sock_queue *queue) { return queue->listen_opt->qlen_young; } static inline int reqsk_queue_is_full(const struct request_sock_queue *queue) { return queue->listen_opt->qlen >> queue->listen_opt->max_qlen_log; } static inline void reqsk_queue_hash_req(struct request_sock_queue *queue, u32 hash, struct request_sock *req, unsigned long timeout) { struct listen_sock *lopt = queue->listen_opt; req->expires = jiffies + timeout; req->retrans = 0; req->sk = ((void *)0); req->dl_next = lopt->syn_table[hash]; _raw_write_lock(&queue->syn_wait_lock); lopt->syn_table[hash] = req; _raw_write_unlock(&queue->syn_wait_lock); } # 28 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/hash.h" 1 struct net; static inline unsigned net_hash_mix(struct net *net) { # 18 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/netns/hash.h" return 0; } # 29 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" 2 # 41 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" struct ip_options { __be32 faddr; unsigned char optlen; unsigned char srr; unsigned char rr; unsigned char ts; unsigned char is_strictroute:1, srr_is_hit:1, is_changed:1, rr_needaddr:1, ts_needtime:1, ts_needaddr:1; unsigned char router_alert; unsigned char cipso; unsigned char __pad2; unsigned char __data[0]; }; struct inet_request_sock { struct request_sock req; __be16 loc_port; __be32 loc_addr; __be32 rmt_addr; __be16 rmt_port; ; u16 snd_wscale : 4, rcv_wscale : 4, tstamp_ok : 1, sack_ok : 1, wscale_ok : 1, ecn_ok : 1, acked : 1, no_srccheck: 1; ; struct ip_options *opt; }; static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk) { return (struct inet_request_sock *)sk; } struct ip_mc_socklist; struct ipv6_pinfo; struct rtable; # 111 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/inet_sock.h" struct inet_sock { struct sock sk; __be32 inet_daddr; __be32 inet_rcv_saddr; __be16 inet_dport; __u16 inet_num; __be32 inet_saddr; __s16 uc_ttl; __u16 cmsg_flags; __be16 inet_sport; __u16 inet_id; struct ip_options *opt; __u8 tos; __u8 min_ttl; __u8 mc_ttl; __u8 pmtudisc; __u8 recverr:1, is_icsk:1, freebind:1, hdrincl:1, mc_loop:1, transparent:1, mc_all:1; int mc_index; __be32 mc_addr; struct ip_mc_socklist *mc_list; struct { unsigned int flags; unsigned int fragsize; struct ip_options *opt; struct dst_entry *dst; int length; __be32 addr; struct flowi fl; } cork; }; static inline struct inet_sock *inet_sk(const struct sock *sk) { return (struct inet_sock *)sk; } static inline void __inet_sk_copy_descendant(struct sock *sk_to, const struct sock *sk_from, const int ancestor_size) { memcpy(inet_sk(sk_to) + 1, inet_sk(sk_from) + 1, sk_from->__sk_common.skc_prot->obj_size - ancestor_size); } static inline void inet_sk_copy_descendant(struct sock *sk_to, const struct sock *sk_from) { __inet_sk_copy_descendant(sk_to, sk_from, sizeof(struct inet_sock)); } extern int inet_sk_rebuild_header(struct sock *sk); extern u32 inet_ehash_secret; extern void build_ehash_secret(void); static inline unsigned int inet_ehashfn(struct net *net, const __be32 laddr, const __u16 lport, const __be32 faddr, const __be16 fport) { return jhash_3words((__attribute__((force)) __u32) laddr, (__attribute__((force)) __u32) faddr, ((__u32) lport) << 16 | (__attribute__((force)) __u32)fport, inet_ehash_secret + net_hash_mix(net)); } static inline int inet_sk_ehashfn(const struct sock *sk) { const struct inet_sock *inet = inet_sk(sk); const __be32 laddr = inet->inet_rcv_saddr; const __u16 lport = inet->inet_num; const __be32 faddr = inet->inet_daddr; const __be16 fport = inet->inet_dport; struct net *net = sock_net(sk); return inet_ehashfn(net, laddr, lport, faddr, fport); } static inline struct request_sock *inet_reqsk_alloc(struct request_sock_ops *ops) { struct request_sock *req = reqsk_alloc(ops); struct inet_request_sock *ireq = inet_rsk(req); if (req != ((void *)0)) { do { } while (0); ireq->opt = ((void *)0); } return req; } static inline __u8 inet_sk_flowi_flags(const struct sock *sk) { return inet_sk(sk)->transparent ? 0x01 : 0; } # 31 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/in_route.h" 1 # 32 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/route.h" 1 # 30 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/route.h" struct rtentry { unsigned long rt_pad1; struct sockaddr rt_dst; struct sockaddr rt_gateway; struct sockaddr rt_genmask; unsigned short rt_flags; short rt_pad2; unsigned long rt_pad3; void *rt_pad4; short rt_metric; char __attribute__((noderef, address_space(1))) *rt_dev; unsigned long rt_mtu; unsigned long rt_window; unsigned short rt_irtt; }; # 34 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 1 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ip.h" 1 # 85 "/lnx/src/MM/mmotm-2010-0323-1534/include/linux/ip.h" struct iphdr { __u8 ihl:4, version:4; __u8 tos; __be16 tot_len; __be16 id; __be16 frag_off; __u8 ttl; __u8 protocol; __sum16 check; __be32 saddr; __be32 daddr; }; static inline struct iphdr *ip_hdr(const struct sk_buff *skb) { return (struct iphdr *)skb_network_header(skb); } static inline struct iphdr *ipip_hdr(const struct sk_buff *skb) { return (struct iphdr *)skb_transport_header(skb); } struct ip_auth_hdr { __u8 nexthdr; __u8 hdrlen; __be16 reserved; __be32 spi; __be32 seq_no; __u8 auth_data[0]; }; struct ip_esp_hdr { __be32 spi; __be32 seq_no; __u8 enc_data[0]; }; struct ip_comp_hdr { __u8 nexthdr; __u8 flags; __be16 cpi; }; struct ip_beet_phdr { __u8 nexthdr; __u8 hdrlen; __u8 padlen; __u8 reserved; }; # 35 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" 2 # 50 "/lnx/src/MM/mmotm-2010-0323-1534/include/net/route.h" struct fib_nh; struct inet_peer; struct rtable { union { struct dst_entry dst; } u; struct flowi fl; struct in_device *idev; int rt_genid; unsigned rt_flags; __u16 rt_type; __be32 rt_dst; __be32 rt_src; int rt_iif; __be32 rt_gateway; __be32 rt_spec_dst; struct inet_peer *peer; }; struct ip_rt_acct { __u32 o_bytes; __u32 o_packets; __u32 i_bytes; __u32 i_packets; }; struct rt_cache_stat { unsigned int in_hit; unsigned int in_slow_tot; unsigned int in_slow_mc; unsigned int in_no_route; unsigned int in_brd; unsigned int in_martian_dst; unsigned int in_martian_src; unsigned int out_hit; unsigned int out_slow_tot; unsigned int out_slow_mc; unsigned int gc_total; unsigned int gc_ignored; unsigned int gc_goal_miss; unsigned int gc_dst_overflow; unsigned int in_hlist_search; unsigned int out_hlist_search; }; extern struct ip_rt_acct __attribute__((noderef, address_space(3))) *ip_rt_acct; struct in_device; extern int ip_rt_init(void); extern void ip_rt_redirect(__be32 old_gw, __be32 dst, __be32 new_gw, __be32 src, struct net_device *dev); extern void rt_cache_flush(struct net *net, int how); extern void rt_cache_flush_batch(void); extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); extern int ip_route_output_key(struct net *, struct rtable **, struct flowi *flp); extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk, int flags); extern int ip_route_input(struct sk_buff*, __be32 dst, __be32 src, u8 tos, struct net_device *devin); extern unsigned short ip_rt_frag_needed(struct net *net, struct iphdr *iph, unsigned short new_mtu, struct net_device *dev); extern void ip_rt_send_redirect(struct sk_buff *skb); extern unsigned inet_addr_type(struct net *net, __be32 addr); extern unsigned inet_dev_addr_type(struct net *net, const struct net_device *dev, __be32 addr); extern void ip_rt_multicast_event(struct in_device *); extern int ip_rt_ioctl(struct net *, unsigned int cmd, void __attribute__((noderef, address_space(1))) *arg); extern void ip_rt_get_source(u8 *src, struct rtable *rt); extern int ip_rt_dump(struct sk_buff *skb, struct netlink_callback *cb); struct in_ifaddr; extern void fib_add_ifaddr(struct in_ifaddr *); static inline void ip_rt_put(struct rtable * rt) { if (rt) dst_release(&rt->u.dst); } extern const __u8 ip_tos2prio[16]; static inline char rt_tos2priority(u8 tos) { return ip_tos2prio[((tos)&0x1E)>>1]; } static inline int ip_route_connect(struct rtable **rp, __be32 dst, __be32 src, u32 tos, int oif, u8 protocol, __be16 sport, __be16 dport, struct sock *sk, int flags) { struct flowi fl = { .oif = oif, .mark = sk->sk_mark, .nl_u = { .ip4_u = { .daddr = dst, .saddr = src, .tos = tos } }, .proto = protocol, .uli_u = { .ports = { .sport = sport, .dport = dport } } }; int err; struct net *net = sock_net(sk); if (inet_sk(sk)->transparent) fl.flags |= 0x01; if (!dst || !src) { err = __ip_route_output_key(net, rp, &fl); if (err) return err; fl.nl_u.ip4_u.daddr = (*rp)->rt_dst; fl.nl_u.ip4_u.saddr = (*rp)->rt_src; ip_rt_put(*rp); *rp = ((void *)0); } security_sk_classify_flow(sk, &fl); return ip_route_output_flow(net, rp, &fl, sk, flags); } static inline int ip_route_newports(struct rtable **rp, u8 protocol, __be16 sport, __be16 dport, struct sock *sk) { if (sport != (*rp)->fl.uli_u.ports.sport || dport != (*rp)->fl.uli_u.ports.dport) { struct flowi fl; memcpy(&fl, &(*rp)->fl, sizeof(fl)); fl.uli_u.ports.sport = sport; fl.uli_u.ports.dport = dport; fl.proto = protocol; ip_rt_put(*rp); *rp = ((void *)0); security_sk_classify_flow(sk, &fl); return ip_route_output_flow(sock_net(sk), rp, &fl, sk, 0); } return 0; } extern void rt_bind_peer(struct rtable *rt, int create); static inline struct inet_peer *rt_get_peer(struct rtable *rt) { if (rt->peer) return rt->peer; rt_bind_peer(rt, 0); return rt->peer; } static inline int inet_iif(const struct sk_buff *skb) { return skb_rtable(skb)->rt_iif; } # 19 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" 2 # 33 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" typedef struct bridge_id bridge_id; typedef struct mac_addr mac_addr; typedef __u16 port_id; struct bridge_id { unsigned char prio[2]; unsigned char addr[6]; }; struct mac_addr { unsigned char addr[6]; }; struct net_bridge_fdb_entry { struct hlist_node hlist; struct net_bridge_port *dst; struct rcu_head rcu; unsigned long ageing_timer; mac_addr addr; unsigned char is_local; unsigned char is_static; }; struct net_bridge_port_group { struct net_bridge_port *port; struct net_bridge_port_group *next; struct hlist_node mglist; struct rcu_head rcu; struct timer_list timer; struct timer_list query_timer; __be32 addr; u32 queries_sent; }; struct net_bridge_mdb_entry { struct hlist_node hlist[2]; struct hlist_node mglist; struct net_bridge *br; struct net_bridge_port_group *ports; struct rcu_head rcu; struct timer_list timer; struct timer_list query_timer; __be32 addr; u32 queries_sent; }; struct net_bridge_mdb_htable { struct hlist_head *mhash; struct rcu_head rcu; struct net_bridge_mdb_htable *old; u32 size; u32 max; u32 secret; u32 ver; }; struct net_bridge_port { struct net_bridge *br; struct net_device *dev; struct list_head list; u8 priority; u8 state; u16 port_no; unsigned char topology_change_ack; unsigned char config_pending; port_id port_id; port_id designated_port; bridge_id designated_root; bridge_id designated_bridge; u32 path_cost; u32 designated_cost; struct timer_list forward_delay_timer; struct timer_list hold_timer; struct timer_list message_age_timer; struct kobject kobj; struct rcu_head rcu; unsigned long flags; # 131 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" }; struct net_bridge { spinlock_t lock; struct list_head port_list; struct net_device *dev; struct br_cpu_netstats __attribute__((noderef, address_space(3))) { unsigned long rx_packets; unsigned long rx_bytes; unsigned long tx_packets; unsigned long tx_bytes; } *stats; spinlock_t hash_lock; struct hlist_head hash[(1 << 8)]; unsigned long feature_mask; unsigned long flags; bridge_id designated_root; bridge_id bridge_id; u32 root_path_cost; unsigned long max_age; unsigned long hello_time; unsigned long forward_delay; unsigned long bridge_max_age; unsigned long ageing_time; unsigned long bridge_hello_time; unsigned long bridge_forward_delay; u8 group_addr[6]; u16 root_port; enum { BR_NO_STP, BR_KERNEL_STP, BR_USER_STP, } stp_enabled; unsigned char topology_change; unsigned char topology_change_detected; # 208 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" struct timer_list hello_timer; struct timer_list tcn_timer; struct timer_list topology_change_timer; struct timer_list gc_timer; struct kobject *ifobj; }; struct br_input_skb_cb { struct net_device *brdev; }; # 231 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" extern struct notifier_block br_device_notifier; extern const u8 br_group_address[6]; static inline int br_is_root_bridge(const struct net_bridge *br) { return !memcmp(&br->bridge_id, &br->designated_root, 8); } extern void br_dev_setup(struct net_device *dev); extern netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev); extern int br_fdb_init(void); extern void br_fdb_fini(void); extern void br_fdb_flush(struct net_bridge *br); extern void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr); extern void br_fdb_cleanup(unsigned long arg); extern void br_fdb_delete_by_port(struct net_bridge *br, const struct net_bridge_port *p, int do_all); extern struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br, const unsigned char *addr); extern int br_fdb_test_addr(struct net_device *dev, unsigned char *addr); extern int br_fdb_fillbuf(struct net_bridge *br, void *buf, unsigned long count, unsigned long off); extern int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr); extern void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr); extern void br_deliver(const struct net_bridge_port *to, struct sk_buff *skb); extern int br_dev_queue_push_xmit(struct sk_buff *skb); extern void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0); extern int br_forward_finish(struct sk_buff *skb); extern void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb); extern void br_flood_forward(struct net_bridge *br, struct sk_buff *skb, struct sk_buff *skb2); extern void br_port_carrier_check(struct net_bridge_port *p); extern int br_add_bridge(struct net *net, const char *name); extern int br_del_bridge(struct net *net, const char *name); extern void br_net_exit(struct net *net); extern int br_add_if(struct net_bridge *br, struct net_device *dev); extern int br_del_if(struct net_bridge *br, struct net_device *dev); extern int br_min_mtu(const struct net_bridge *br); extern void br_features_recompute(struct net_bridge *br); extern int br_handle_frame_finish(struct sk_buff *skb); extern struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb); extern int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); extern int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __attribute__((noderef, address_space(1))) *arg); # 329 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" static inline int br_multicast_rcv(struct net_bridge *br, struct net_bridge_port *port, struct sk_buff *skb) { return 0; } static inline struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, struct sk_buff *skb) { return ((void *)0); } static inline void br_multicast_add_port(struct net_bridge_port *port) { } static inline void br_multicast_del_port(struct net_bridge_port *port) { } static inline void br_multicast_enable_port(struct net_bridge_port *port) { } static inline void br_multicast_disable_port(struct net_bridge_port *port) { } static inline void br_multicast_init(struct net_bridge *br) { } static inline void br_multicast_open(struct net_bridge *br) { } static inline void br_multicast_stop(struct net_bridge *br) { } static inline void br_multicast_deliver(struct net_bridge_mdb_entry *mdst, struct sk_buff *skb) { } static inline void br_multicast_forward(struct net_bridge_mdb_entry *mdst, struct sk_buff *skb, struct sk_buff *skb2) { } static inline bool br_multicast_is_router(struct net_bridge *br) { return 0; } # 398 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_private.h" extern void br_log_state(const struct net_bridge_port *p); extern struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no); extern void br_init_port(struct net_bridge_port *p); extern void br_become_designated_port(struct net_bridge_port *p); extern void br_stp_enable_bridge(struct net_bridge *br); extern void br_stp_disable_bridge(struct net_bridge *br); extern void br_stp_set_enabled(struct net_bridge *br, unsigned long val); extern void br_stp_enable_port(struct net_bridge_port *p); extern void br_stp_disable_port(struct net_bridge_port *p); extern void br_stp_recalculate_bridge_id(struct net_bridge *br); extern void br_stp_change_bridge_id(struct net_bridge *br, const unsigned char *a); extern void br_stp_set_bridge_priority(struct net_bridge *br, u16 newprio); extern void br_stp_set_port_priority(struct net_bridge_port *p, u8 newprio); extern void br_stp_set_path_cost(struct net_bridge_port *p, u32 path_cost); extern ssize_t br_show_bridge_id(char *buf, const struct bridge_id *id); struct stp_proto; extern void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb, struct net_device *dev); extern void br_stp_timer_init(struct net_bridge *br); extern void br_stp_port_timer_init(struct net_bridge_port *p); extern unsigned long br_timer_value(const struct timer_list *timer); extern int br_netlink_init(void); extern void br_netlink_fini(void); extern void br_ifinfo_notify(int event, struct net_bridge_port *port); extern const struct sysfs_ops brport_sysfs_ops; extern int br_sysfs_addif(struct net_bridge_port *p); extern int br_sysfs_addbr(struct net_device *dev); extern void br_sysfs_delbr(struct net_device *dev); # 27 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" 2 static struct kmem_cache *br_fdb_cache __attribute__((__section__(".data..read_mostly"))); static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr); static u32 fdb_salt __attribute__((__section__(".data..read_mostly"))); int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) br_fdb_init(void) { br_fdb_cache = kmem_cache_create("bridge_fdb_cache", sizeof(struct net_bridge_fdb_entry), 0, 0x00002000UL, ((void *)0)); if (!br_fdb_cache) return -12; get_random_bytes(&fdb_salt, sizeof(fdb_salt)); return 0; } void br_fdb_fini(void) { kmem_cache_destroy(br_fdb_cache); } static inline unsigned long hold_time(const struct net_bridge *br) { return br->topology_change ? br->forward_delay : br->ageing_time; } static inline int has_expired(const struct net_bridge *br, const struct net_bridge_fdb_entry *fdb) { return !fdb->is_static && (({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(fdb->ageing_timer + hold_time(br)) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ((long)(jiffies) - (long)(fdb->ageing_timer + hold_time(br)) >= 0)); } static inline int br_mac_hash(const unsigned char *mac) { u32 key = ((__attribute__((force)) typeof(*((u32 *)(mac + 2))))({ __builtin_choose_expr(sizeof(*((u32 *)(mac + 2))) == 1, *((u32 *)(mac + 2)), __builtin_choose_expr(sizeof(*((u32 *)(mac + 2))) == 2, get_unaligned_le16(((u32 *)(mac + 2))), __builtin_choose_expr(sizeof(*((u32 *)(mac + 2))) == 4, get_unaligned_le32(((u32 *)(mac + 2))), __builtin_choose_expr(sizeof(*((u32 *)(mac + 2))) == 8, get_unaligned_le64(((u32 *)(mac + 2))), __bad_unaligned_access_size())))); })); return jhash_1word(key, fdb_salt) & ((1 << 8) - 1); } static void fdb_rcu_free(struct rcu_head *head) { struct net_bridge_fdb_entry *ent = ({ const typeof( ((struct net_bridge_fdb_entry *)0)->rcu ) *__mptr = (head); (struct net_bridge_fdb_entry *)( (char *)__mptr - __builtin_offsetof(struct net_bridge_fdb_entry,rcu) );}); kmem_cache_free(br_fdb_cache, ent); } static inline void fdb_delete(struct net_bridge_fdb_entry *f) { hlist_del_rcu(&f->hlist); call_rcu(&f->rcu, fdb_rcu_free); } void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr) { struct net_bridge *br = p->br; int i; spin_lock_bh(&br->hash_lock); for (i = 0; i < (1 << 8); i++) { struct hlist_node *h; for (h = (&br->hash[i])->first; h && ({ __builtin_prefetch(h->next); 1; }); h = h->next) { struct net_bridge_fdb_entry *f; f = ({ const typeof( ((struct net_bridge_fdb_entry *)0)->hlist ) *__mptr = (h); (struct net_bridge_fdb_entry *)( (char *)__mptr - __builtin_offsetof(struct net_bridge_fdb_entry,hlist) );}); if (f->dst == p && f->is_local) { struct net_bridge_port *op; for (op = ({ const typeof( ((typeof(*op) *)0)->list ) *__mptr = ((&br->port_list)->next); (typeof(*op) *)( (char *)__mptr - __builtin_offsetof(typeof(*op),list) );}); __builtin_prefetch(op->list.next), &op->list != (&br->port_list); op = ({ const typeof( ((typeof(*op) *)0)->list ) *__mptr = (op->list.next); (typeof(*op) *)( (char *)__mptr - __builtin_offsetof(typeof(*op),list) );})) { if (op != p && !compare_ether_addr(op->dev->dev_addr, f->addr.addr)) { f->dst = op; goto insert; } } fdb_delete(f); goto insert; } } } insert: fdb_insert(br, p, newaddr); spin_unlock_bh(&br->hash_lock); } void br_fdb_cleanup(unsigned long _data) { struct net_bridge *br = (struct net_bridge *)_data; unsigned long delay = hold_time(br); unsigned long next_timer = jiffies + br->forward_delay; int i; spin_lock_bh(&br->hash_lock); for (i = 0; i < (1 << 8); i++) { struct net_bridge_fdb_entry *f; struct hlist_node *h, *n; for (h = (&br->hash[i])->first; h && ({ n = h->next; 1; }) && ({ f = ({ const typeof( ((typeof(*f) *)0)->hlist ) *__mptr = (h); (typeof(*f) *)( (char *)__mptr - __builtin_offsetof(typeof(*f),hlist) );}); 1;}); h = n) { unsigned long this_timer; if (f->is_static) continue; this_timer = f->ageing_timer + delay; if ((({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(this_timer) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ((long)(jiffies) - (long)(this_timer) >= 0))) fdb_delete(f); else if ((({ unsigned long __dummy; typeof(next_timer) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(this_timer) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ((long)(this_timer) - (long)(next_timer) < 0))) next_timer = this_timer; } } spin_unlock_bh(&br->hash_lock); mod_timer(&br->gc_timer, round_jiffies(next_timer + 300/4)); } void br_fdb_flush(struct net_bridge *br) { int i; spin_lock_bh(&br->hash_lock); for (i = 0; i < (1 << 8); i++) { struct net_bridge_fdb_entry *f; struct hlist_node *h, *n; for (h = (&br->hash[i])->first; h && ({ n = h->next; 1; }) && ({ f = ({ const typeof( ((typeof(*f) *)0)->hlist ) *__mptr = (h); (typeof(*f) *)( (char *)__mptr - __builtin_offsetof(typeof(*f),hlist) );}); 1;}); h = n) { if (!f->is_static) fdb_delete(f); } } spin_unlock_bh(&br->hash_lock); } void br_fdb_delete_by_port(struct net_bridge *br, const struct net_bridge_port *p, int do_all) { int i; spin_lock_bh(&br->hash_lock); for (i = 0; i < (1 << 8); i++) { struct hlist_node *h, *g; for (h = (&br->hash[i])->first; h && ({ g = h->next; 1; }); h = g) { struct net_bridge_fdb_entry *f = ({ const typeof( ((struct net_bridge_fdb_entry *)0)->hlist ) *__mptr = (h); (struct net_bridge_fdb_entry *)( (char *)__mptr - __builtin_offsetof(struct net_bridge_fdb_entry,hlist) );}); if (f->dst != p) continue; if (f->is_static && !do_all) continue; if (f->is_local) { struct net_bridge_port *op; for (op = ({ const typeof( ((typeof(*op) *)0)->list ) *__mptr = ((&br->port_list)->next); (typeof(*op) *)( (char *)__mptr - __builtin_offsetof(typeof(*op),list) );}); __builtin_prefetch(op->list.next), &op->list != (&br->port_list); op = ({ const typeof( ((typeof(*op) *)0)->list ) *__mptr = (op->list.next); (typeof(*op) *)( (char *)__mptr - __builtin_offsetof(typeof(*op),list) );})) { if (op != p && !compare_ether_addr(op->dev->dev_addr, f->addr.addr)) { f->dst = op; goto skip_delete; } } } fdb_delete(f); skip_delete: ; } } spin_unlock_bh(&br->hash_lock); } struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br, const unsigned char *addr) { struct hlist_node *h; struct net_bridge_fdb_entry *fdb; for (h = ({ typeof((&br->hash[br_mac_hash(addr)])->first) _________p1 = (*(volatile typeof((&br->hash[br_mac_hash(addr)])->first) *)&((&br->hash[br_mac_hash(addr)])->first)); do { } while (0); (_________p1); }); h && ({ __builtin_prefetch(h->next); 1; }) && ({ fdb = ({ const typeof( ((typeof(*fdb) *)0)->hlist ) *__mptr = (h); (typeof(*fdb) *)( (char *)__mptr - __builtin_offsetof(typeof(*fdb),hlist) );}); 1; }); h = ({ typeof(h->next) _________p1 = (*(volatile typeof(h->next) *)&(h->next)); do { } while (0); (_________p1); })) { if (!compare_ether_addr(fdb->addr.addr, addr)) { if (__builtin_expect(!!(has_expired(br, fdb)), 0)) break; return fdb; } } return ((void *)0); } # 262 "/lnx/src/MM/mmotm-2010-0323-1534/net/bridge/br_fdb.c" int br_fdb_fillbuf(struct net_bridge *br, void *buf, unsigned long maxnum, unsigned long skip) { struct __fdb_entry *fe = buf; int i, num = 0; struct hlist_node *h; struct net_bridge_fdb_entry *f; memset(buf, 0, maxnum*sizeof(struct __fdb_entry)); rcu_read_lock(); for (i = 0; i < (1 << 8); i++) { for (h = ({ typeof((&br->hash[i])->first) _________p1 = (*(volatile typeof((&br->hash[i])->first) *)&((&br->hash[i])->first)); do { } while (0); (_________p1); }); h && ({ __builtin_prefetch(h->next); 1; }) && ({ f = ({ const typeof( ((typeof(*f) *)0)->hlist ) *__mptr = (h); (typeof(*f) *)( (char *)__mptr - __builtin_offsetof(typeof(*f),hlist) );}); 1; }); h = ({ typeof(h->next) _________p1 = (*(volatile typeof(h->next) *)&(h->next)); do { } while (0); (_________p1); })) { if (num >= maxnum) goto out; if (has_expired(br, f)) continue; if (skip) { --skip; continue; } memcpy(fe->mac_addr, f->addr.addr, 6); fe->port_no = f->dst->port_no; fe->port_hi = f->dst->port_no >> 8; fe->is_local = f->is_local; if (!f->is_static) fe->ageing_timer_value = jiffies_to_clock_t(jiffies - f->ageing_timer); ++fe; ++num; } } out: rcu_read_unlock(); return num; } static inline struct net_bridge_fdb_entry *fdb_find(struct hlist_head *head, const unsigned char *addr) { struct hlist_node *h; struct net_bridge_fdb_entry *fdb; for (h = ({ typeof((head)->first) _________p1 = (*(volatile typeof((head)->first) *)&((head)->first)); do { } while (0); (_________p1); }); h && ({ __builtin_prefetch(h->next); 1; }) && ({ fdb = ({ const typeof( ((typeof(*fdb) *)0)->hlist ) *__mptr = (h); (typeof(*fdb) *)( (char *)__mptr - __builtin_offsetof(typeof(*fdb),hlist) );}); 1; }); h = ({ typeof(h->next) _________p1 = (*(volatile typeof(h->next) *)&(h->next)); do { } while (0); (_________p1); })) { if (!compare_ether_addr(fdb->addr.addr, addr)) return fdb; } return ((void *)0); } static struct net_bridge_fdb_entry *fdb_create(struct hlist_head *head, struct net_bridge_port *source, const unsigned char *addr, int is_local) { struct net_bridge_fdb_entry *fdb; fdb = kmem_cache_alloc(br_fdb_cache, (((__attribute__((force)) gfp_t)0x20u))); if (fdb) { memcpy(fdb->addr.addr, addr, 6); hlist_add_head_rcu(&fdb->hlist, head); fdb->dst = source; fdb->is_local = is_local; fdb->is_static = is_local; fdb->ageing_timer = jiffies; } return fdb; } static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr) { struct hlist_head *head = &br->hash[br_mac_hash(addr)]; struct net_bridge_fdb_entry *fdb; if (!is_valid_ether_addr(addr)) return -22; fdb = fdb_find(head, addr); if (fdb) { if (fdb->is_local) return 0; printk("<4>" "%s adding interface with same address " "as a received packet\n", source->dev->name); fdb_delete(fdb); } if (!fdb_create(head, source, addr, 1)) return -12; return 0; } int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr) { int ret; spin_lock_bh(&br->hash_lock); ret = fdb_insert(br, source, addr); spin_unlock_bh(&br->hash_lock); return ret; } void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source, const unsigned char *addr) { struct hlist_head *head = &br->hash[br_mac_hash(addr)]; struct net_bridge_fdb_entry *fdb; if (hold_time(br) == 0) return; if (!(source->state == 2 || source->state == 3)) return; fdb = fdb_find(head, addr); if (__builtin_expect(!!(fdb), 1)) { if (__builtin_expect(!!(fdb->is_local), 0)) { if (net_ratelimit()) printk("<4>" "%s: received packet with " "own address as source address\n", source->dev->name); } else { fdb->dst = source; fdb->ageing_timer = jiffies; } } else { spin_lock(&br->hash_lock); if (!fdb_find(head, addr)) fdb_create(head, source, addr, 0); spin_unlock(&br->hash_lock); } }