# 1 "/home/l/latest/xxx/drivers/usb/class/usblp.c" # 1 "/home/l/latest/my_64//" # 1 "" # 1 "" # 1 "./include/linux/autoconf.h" 1 # 1 "" 2 # 1 "/home/l/latest/xxx/drivers/usb/class/usblp.c" # 50 "/home/l/latest/xxx/drivers/usb/class/usblp.c" # 1 "/home/l/latest/xxx/include/linux/module.h" 1 # 9 "/home/l/latest/xxx/include/linux/module.h" # 1 "/home/l/latest/xxx/include/linux/list.h" 1 # 1 "/home/l/latest/xxx/include/linux/stddef.h" 1 # 1 "/home/l/latest/xxx/include/linux/compiler.h" 1 # 40 "/home/l/latest/xxx/include/linux/compiler.h" # 1 "/home/l/latest/xxx/include/linux/compiler-gcc4.h" 1 # 1 "/home/l/latest/xxx/include/linux/compiler-gcc.h" 1 # 7 "/home/l/latest/xxx/include/linux/compiler-gcc4.h" 2 # 41 "/home/l/latest/xxx/include/linux/compiler.h" 2 # 5 "/home/l/latest/xxx/include/linux/stddef.h" 2 # 15 "/home/l/latest/xxx/include/linux/stddef.h" enum { false = 0, true = 1 }; # 5 "/home/l/latest/xxx/include/linux/list.h" 2 # 1 "/home/l/latest/xxx/include/linux/poison.h" 1 # 6 "/home/l/latest/xxx/include/linux/list.h" 2 # 1 "/home/l/latest/xxx/include/linux/prefetch.h" 1 # 13 "/home/l/latest/xxx/include/linux/prefetch.h" # 1 "/home/l/latest/xxx/include/linux/types.h" 1 # 11 "/home/l/latest/xxx/include/linux/types.h" # 1 "/home/l/latest/xxx/include/linux/posix_types.h" 1 # 36 "/home/l/latest/xxx/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 "include2/asm/posix_types.h" 1 # 1 "include2/asm/posix_types_64.h" 1 # 10 "include2/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 "include2/asm/posix_types.h" 2 # 48 "/home/l/latest/xxx/include/linux/posix_types.h" 2 # 12 "/home/l/latest/xxx/include/linux/types.h" 2 # 1 "include2/asm/types.h" 1 typedef unsigned short umode_t; 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; # 47 "include2/asm/types.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; typedef u64 dma64_addr_t; typedef u64 dma_addr_t; # 13 "/home/l/latest/xxx/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; # 57 "/home/l/latest/xxx/include/linux/types.h" typedef __kernel_loff_t loff_t; # 66 "/home/l/latest/xxx/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; # 142 "/home/l/latest/xxx/include/linux/types.h" typedef unsigned long sector_t; # 151 "/home/l/latest/xxx/include/linux/types.h" typedef unsigned long blkcnt_t; # 180 "/home/l/latest/xxx/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 gfp_t; typedef u64 resource_size_t; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; # 14 "/home/l/latest/xxx/include/linux/prefetch.h" 2 # 1 "include2/asm/processor.h" 1 # 1 "include2/asm/processor-flags.h" 1 # 5 "include2/asm/processor.h" 2 struct task_struct; struct mm_struct; # 1 "include2/asm/vm86.h" 1 # 68 "include2/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; }; # 144 "include2/asm/vm86.h" # 1 "include2/asm/ptrace.h" 1 # 1 "include2/asm/ptrace-abi.h" 1 # 91 "include2/asm/ptrace-abi.h" struct ptrace_bts_config { __u32 size; __u32 flags; __u32 signal; __u32 bts_size; }; # 6 "include2/asm/ptrace.h" 2 # 97 "include2/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 "include2/asm/ptrace.h" enum bts_qualifier { BTS_INVALID = 0, BTS_BRANCH, BTS_TASK_ARRIVES, BTS_TASK_DEPARTS }; struct bts_struct { __u64 qualifier; union { struct { __u64 from_ip; __u64 to_ip; } lbr; __u64 jiffies; } variant; }; # 1 "/home/l/latest/xxx/include/linux/init.h" 1 # 135 "/home/l/latest/xxx/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[]; extern char __attribute__ ((__section__(".init.data"))) boot_command_line[]; extern char *saved_command_line; extern unsigned int reset_devices; extern int initmem_now_dynamic; void setup_arch(char **); void prepare_namespace(void); extern void (*late_time_init)(void); # 160 "include2/asm/ptrace.h" 2 struct cpuinfo_x86; struct task_struct; extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) ptrace_bts_init_intel(struct cpuinfo_x86 *); extern void ptrace_bts_take_timestamp(struct task_struct *, enum bts_qualifier); extern unsigned long profile_pc(struct pt_regs *regs); extern unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs); void signal_fault(struct pt_regs *regs, void *frame, char *where); static inline unsigned long regs_return_value(struct pt_regs *regs) { return regs->ax; } # 195 "include2/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; } static inline unsigned long kernel_trap_sp(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; } extern void user_enable_single_step(struct task_struct *); extern void user_disable_single_step(struct task_struct *); extern void user_enable_block_step(struct task_struct *); struct user_desc; extern int do_get_thread_area(struct task_struct *p, int idx, struct user_desc *info); extern int do_set_thread_area(struct task_struct *p, int idx, struct user_desc *info, int can_allocate); # 145 "include2/asm/vm86.h" 2 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; # 171 "include2/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; # 188 "include2/asm/vm86.h" }; # 204 "include2/asm/vm86.h" static inline int handle_vm86_trap(struct kernel_vm86_regs *a, long b, int c) { return 0; } # 14 "include2/asm/processor.h" 2 # 1 "include2/asm/math_emu.h" 1 struct info { long ___orig_eip; long ___ebx; long ___ecx; long ___edx; long ___esi; long ___edi; long ___ebp; long ___eax; long ___ds; long ___es; long ___fs; long ___orig_eax; long ___eip; long ___cs; long ___eflags; long ___esp; long ___ss; long ___vm86_es; long ___vm86_ds; long ___vm86_fs; long ___vm86_gs; }; # 15 "include2/asm/processor.h" 2 # 1 "include2/asm/segment.h" 1 # 140 "include2/asm/segment.h" # 1 "include2/asm/cache.h" 1 # 141 "include2/asm/segment.h" 2 # 201 "include2/asm/segment.h" extern const char early_idt_handlers[32][10]; # 16 "include2/asm/processor.h" 2 # 1 "include2/asm/sigcontext.h" 1 # 121 "include2/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[24]; }; 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; struct _fpstate *fpstate; unsigned long reserved1[8]; }; # 18 "include2/asm/processor.h" 2 # 1 "include2/asm/current.h" 1 # 1 "include2/asm/current_64.h" 1 struct task_struct; # 1 "include2/asm/pda.h" 1 # 1 "/home/l/latest/xxx/include/linux/cache.h" 1 # 1 "/home/l/latest/xxx/include/linux/kernel.h" 1 # 10 "/home/l/latest/xxx/include/linux/kernel.h" # 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 1 3 4 # 43 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 11 "/home/l/latest/xxx/include/linux/kernel.h" 2 # 1 "/home/l/latest/xxx/include/linux/linkage.h" 1 # 1 "include2/asm/linkage.h" 1 # 5 "/home/l/latest/xxx/include/linux/linkage.h" 2 # 12 "/home/l/latest/xxx/include/linux/kernel.h" 2 # 1 "/home/l/latest/xxx/include/linux/bitops.h" 1 # 17 "/home/l/latest/xxx/include/linux/bitops.h" # 1 "include2/asm/bitops.h" 1 # 13 "include2/asm/bitops.h" # 1 "include2/asm/alternative.h" 1 # 1 "include2/asm/asm.h" 1 # 7 "include2/asm/alternative.h" 2 # 42 "include2/asm/alternative.h" # 1 "include2/asm/cpufeature.h" 1 # 1 "include2/asm/required-features.h" 1 # 8 "include2/asm/cpufeature.h" 2 # 118 "include2/asm/cpufeature.h" # 1 "/home/l/latest/xxx/include/linux/bitops.h" 1 # 119 "include2/asm/cpufeature.h" 2 extern const char * const x86_cap_flags[8*32]; extern const char * const x86_power_flags[32]; # 43 "include2/asm/alternative.h" 2 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); # 75 "include2/asm/alternative.h" const unsigned char *const *find_nop_table(void); # 148 "include2/asm/alternative.h" struct paravirt_patch_site; static inline void apply_paravirt(struct paravirt_patch_site *start, struct paravirt_patch_site *end) {} extern void add_nops(void *insns, unsigned int len); # 180 "include2/asm/alternative.h" extern void *text_poke(void *addr, const void *opcode, size_t len); extern void *text_poke_early(void *addr, const void *opcode, size_t len); # 14 "include2/asm/bitops.h" 2 # 49 "include2/asm/bitops.h" static inline void set_bit(int nr, volatile void *addr) { 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"); } # 63 "include2/asm/bitops.h" static inline void __set_bit(int nr, volatile void *addr) { asm volatile("bts %1,%0" : "+m" (*(volatile long *) addr) : "Ir" (nr) : "memory"); } # 81 "include2/asm/bitops.h" static inline void clear_bit(int nr, volatile void *addr) { asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "btr %1,%2" : "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); } # 94 "include2/asm/bitops.h" static inline void clear_bit_unlock(unsigned nr, volatile void *addr) { __asm__ __volatile__("": : :"memory"); clear_bit(nr, addr); } static inline void __clear_bit(int nr, volatile void *addr) { asm volatile("btr %1,%2" : "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); } # 117 "include2/asm/bitops.h" static inline void __clear_bit_unlock(unsigned nr, volatile void *addr) { __asm__ __volatile__("": : :"memory"); __clear_bit(nr, addr); } # 135 "include2/asm/bitops.h" static inline void __change_bit(int nr, volatile void *addr) { asm volatile("btc %1,%2" : "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); } # 149 "include2/asm/bitops.h" static inline void change_bit(int nr, volatile void *addr) { asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "btc %1,%2" : "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); } # 162 "include2/asm/bitops.h" static inline int test_and_set_bit(int nr, volatile void *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; } # 179 "include2/asm/bitops.h" static inline int test_and_set_bit_lock(int nr, volatile void *addr) { return test_and_set_bit(nr, addr); } # 193 "include2/asm/bitops.h" static inline int __test_and_set_bit(int nr, volatile void *addr) { int oldbit; asm volatile("bts %2,%3\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); return oldbit; } # 211 "include2/asm/bitops.h" static inline int test_and_clear_bit(int nr, volatile void *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; } # 231 "include2/asm/bitops.h" static inline int __test_and_clear_bit(int nr, volatile void *addr) { int oldbit; asm volatile("btr %2,%3\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); return oldbit; } static inline int __test_and_change_bit(int nr, volatile void *addr) { int oldbit; asm volatile("btc %2,%3\n\t" "sbb %0,%0" : "=r" (oldbit), "+m" (((volatile int *)addr)[nr >> 5]) : "Ir" (nr), "m" (*(volatile int *)addr)); return oldbit; } # 261 "include2/asm/bitops.h" static inline int test_and_change_bit(int nr, volatile void *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 int constant_test_bit(int nr, const volatile void *addr) { return ((1UL << (nr % 64)) & (((unsigned long *)addr)[nr / 64])) != 0; } static inline int variable_test_bit(int nr, volatile const void *addr) { int oldbit; asm volatile("bt %2,%3\n\t" "sbb %0,%0" : "=r" (oldbit) : "m" (((volatile const int *)addr)[nr >> 5]), "Ir" (nr), "m" (*(volatile int *)addr)); return oldbit; } # 312 "include2/asm/bitops.h" # 1 "include2/asm/bitops_64.h" 1 extern long find_first_zero_bit(const unsigned long *addr, unsigned long size); extern long find_next_zero_bit(const unsigned long *addr, long size, long offset); extern long find_first_bit(const unsigned long *addr, unsigned long size); extern long find_next_bit(const unsigned long *addr, long size, long offset); static inline long __scanbit(unsigned long val, unsigned long max) { asm("bsfq %1,%0 ; cmovz %2,%0" : "=&r" (val) : "r" (val), "r" (max)); return val; } # 40 "include2/asm/bitops_64.h" static inline void set_bit_string(unsigned long *bitmap, unsigned long i, int len) { unsigned long end = i + len; while (i < end) { __set_bit(i, bitmap); i++; } } static inline unsigned long ffz(unsigned long word) { __asm__("bsfq %1,%0" :"=r" (word) :"r" (~word)); return word; } static inline unsigned long __ffs(unsigned long word) { __asm__("bsfq %1,%0" :"=r" (word) :"rm" (word)); return word; } static inline unsigned long __fls(unsigned long word) { __asm__("bsrq %1,%0" :"=r" (word) :"rm" (word)); return word; } # 1 "/home/l/latest/xxx/include/asm-generic/bitops/sched.h" 1 # 12 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/asm-generic/bitops/sched.h" } # 95 "include2/asm/bitops_64.h" 2 # 104 "include2/asm/bitops_64.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; } 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 "/home/l/latest/xxx/include/asm-generic/bitops/hweight.h" 1 extern unsigned int hweight32(unsigned int w); extern unsigned int hweight16(unsigned int w); extern unsigned int hweight8(unsigned int w); extern unsigned long hweight64(__u64 w); # 133 "include2/asm/bitops_64.h" 2 # 1 "/home/l/latest/xxx/include/asm-generic/bitops/fls64.h" 1 # 26 "/home/l/latest/xxx/include/asm-generic/bitops/fls64.h" static inline int fls64(__u64 x) { if (x == 0) return 0; return __fls(x) + 1; } # 137 "include2/asm/bitops_64.h" 2 # 1 "/home/l/latest/xxx/include/asm-generic/bitops/ext2-non-atomic.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/bitops/le.h" 1 # 1 "include2/asm/byteorder.h" 1 # 51 "include2/asm/byteorder.h" static inline __attribute__((__const__)) __u64 ___arch__swab64(__u64 x) { asm("bswapq %0" : "=r" (x) : "0" (x)); return x; } static inline __attribute__((__const__)) __u32 ___arch__swab32(__u32 x) { asm("bswapl %0" : "=r" (x) : "0" (x)); return x; } # 79 "include2/asm/byteorder.h" # 1 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" 1 # 12 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" # 1 "/home/l/latest/xxx/include/linux/byteorder/swab.h" 1 # 64 "/home/l/latest/xxx/include/linux/byteorder/swab.h" static __inline__ __attribute__((__const__)) __u16 ___swab16(__u16 x) { return x<<8 | x>>8; } static __inline__ __attribute__((__const__)) __u32 ___swab32(__u32 x) { return x<<24 | x>>24 | (x & (__u32)0x0000ff00UL)<<8 | (x & (__u32)0x00ff0000UL)>>8; } static __inline__ __attribute__((__const__)) __u64 ___swab64(__u64 x) { return x<<56 | x>>56 | (x & (__u64)0x000000000000ff00ULL)<<40 | (x & (__u64)0x0000000000ff0000ULL)<<24 | (x & (__u64)0x00000000ff000000ULL)<< 8 | (x & (__u64)0x000000ff00000000ULL)>> 8 | (x & (__u64)0x0000ff0000000000ULL)>>24 | (x & (__u64)0x00ff000000000000ULL)>>40; } # 163 "/home/l/latest/xxx/include/linux/byteorder/swab.h" static __inline__ __attribute__((__const__)) __u16 __fswab16(__u16 x) { return ___swab16(x); } static __inline__ __u16 __swab16p(const __u16 *x) { return ___swab16(*(x)); } static __inline__ void __swab16s(__u16 *addr) { ((void)(*(addr) = ___swab16(*(addr)))); } static __inline__ __attribute__((__const__)) __u32 __fswab32(__u32 x) { return ___arch__swab32(x); } static __inline__ __u32 __swab32p(const __u32 *x) { return ___arch__swab32(*(x)); } static __inline__ void __swab32s(__u32 *addr) { ((void)(*(addr) = ___arch__swab32(*(addr)))); } static __inline__ __attribute__((__const__)) __u64 __fswab64(__u64 x) { return ___arch__swab64(x); } static __inline__ __u64 __swab64p(const __u64 *x) { return ___arch__swab64(*(x)); } static __inline__ void __swab64s(__u64 *addr) { ((void)(*(addr) = ___arch__swab64(*(addr)))); } # 13 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" 2 # 43 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" static inline __le64 __cpu_to_le64p(const __u64 *p) { return ( __le64)*p; } static inline __u64 __le64_to_cpup(const __le64 *p) { return ( __u64)*p; } static inline __le32 __cpu_to_le32p(const __u32 *p) { return ( __le32)*p; } static inline __u32 __le32_to_cpup(const __le32 *p) { return ( __u32)*p; } static inline __le16 __cpu_to_le16p(const __u16 *p) { return ( __le16)*p; } static inline __u16 __le16_to_cpup(const __le16 *p) { return ( __u16)*p; } static inline __be64 __cpu_to_be64p(const __u64 *p) { return ( __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 ( __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 ( __be16)__swab16p(p); } static inline __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 105 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" # 1 "/home/l/latest/xxx/include/linux/byteorder/generic.h" 1 # 143 "/home/l/latest/xxx/include/linux/byteorder/generic.h" static inline void le16_add_cpu(__le16 *var, u16 val) { *var = (( __le16)(__u16)((( __u16)(__le16)(*var)) + val)); } static inline void le32_add_cpu(__le32 *var, u32 val) { *var = (( __le32)(__u32)((( __u32)(__le32)(*var)) + val)); } static inline void le64_add_cpu(__le64 *var, u64 val) { *var = (( __le64)(__u64)((( __u64)(__le64)(*var)) + val)); } static inline void be16_add_cpu(__be16 *var, u16 val) { *var = (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) ? ((__u16)( (((__u16)((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) & (__u16)0x00ffU) << 8) | (((__u16)((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) & (__u16)0xff00U) >> 8) )) : __fswab16((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))))); } static inline void be32_add_cpu(__be32 *var, u32 val) { *var = (( __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) ? ((__u32)( (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))))); } static inline void be64_add_cpu(__be64 *var, u64 val) { *var = (( __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) ? ((__u64)( (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))))); } # 106 "/home/l/latest/xxx/include/linux/byteorder/little_endian.h" 2 # 80 "include2/asm/byteorder.h" 2 # 6 "/home/l/latest/xxx/include/asm-generic/bitops/le.h" 2 # 5 "/home/l/latest/xxx/include/asm-generic/bitops/ext2-non-atomic.h" 2 # 141 "include2/asm/bitops_64.h" 2 # 1 "/home/l/latest/xxx/include/asm-generic/bitops/minix.h" 1 # 148 "include2/asm/bitops_64.h" 2 # 313 "include2/asm/bitops.h" 2 # 18 "/home/l/latest/xxx/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 ? hweight32(w) : 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); } # 16 "/home/l/latest/xxx/include/linux/kernel.h" 2 # 1 "/home/l/latest/xxx/include/linux/log2.h" 1 # 21 "/home/l/latest/xxx/include/linux/log2.h" extern __attribute__((const, noreturn)) int ____ilog2_NaN(void); # 31 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/kernel.h" 2 # 1 "include2/asm/bug.h" 1 # 38 "include2/asm/bug.h" # 1 "/home/l/latest/xxx/include/asm-generic/bug.h" 1 # 1 "/home/l/latest/xxx/include/linux/param.h" 1 # 1 "include2/asm/param.h" 1 # 5 "/home/l/latest/xxx/include/linux/param.h" 2 # 6 "/home/l/latest/xxx/include/asm-generic/bug.h" 2 struct bug_entry { unsigned long bug_addr; const char *file; unsigned short line; unsigned short flags; }; # 37 "/home/l/latest/xxx/include/asm-generic/bug.h" extern void warn_on_slowpath(const char *file, const int line); # 39 "include2/asm/bug.h" 2 # 19 "/home/l/latest/xxx/include/linux/kernel.h" 2 extern const char linux_banner[]; extern const char linux_proc_banner[]; # 89 "/home/l/latest/xxx/include/linux/kernel.h" extern int console_printk[]; struct completion; struct pt_regs; struct user; # 111 "/home/l/latest/xxx/include/linux/kernel.h" extern int _cond_resched(void); # 132 "/home/l/latest/xxx/include/linux/kernel.h" 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(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); struct pid; extern struct pid *session_of_pgrp(struct pid *pgrp); 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 log_buf_get_len(void); extern int log_buf_read(int idx); extern int log_buf_copy(char *dest, int idx, int len); extern int printk_ratelimit_jiffies; extern int printk_ratelimit_burst; extern int printk_ratelimit(void); extern int __ratelimit(int ratelimit_jiffies, int ratelimit_burst); extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); # 216 "/home/l/latest/xxx/include/linux/kernel.h" 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 tainted; extern const char *print_tainted(void); extern void add_taint(unsigned); extern int root_mountflags; extern enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, SYSTEM_SUSPEND_DISK, } system_state; # 264 "/home/l/latest/xxx/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); # 457 "/home/l/latest/xxx/include/linux/kernel.h" struct sysinfo; extern int do_sysinfo(struct sysinfo *info); 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)]; }; # 5 "/home/l/latest/xxx/include/linux/cache.h" 2 # 8 "include2/asm/pda.h" 2 # 1 "include2/asm/page.h" 1 # 1 "/home/l/latest/xxx/include/linux/const.h" 1 # 5 "include2/asm/page.h" 2 # 35 "include2/asm/page.h" # 1 "include2/asm/page_64.h" 1 # 58 "include2/asm/page_64.h" void clear_page(void *page); void copy_page(void *to, void *from); extern unsigned long end_pfn; extern unsigned long phys_base; extern unsigned long __phys_addr(unsigned long); 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 unsigned long phys_addr_t; typedef struct page *pgtable_t; typedef struct { pteval_t pte; } pte_t; extern unsigned long init_memory_mapping(unsigned long start, unsigned long end); # 36 "include2/asm/page.h" 2 # 49 "include2/asm/page.h" extern int page_is_ram(unsigned long pagenr); extern int devmem_is_allowed(unsigned long pagenr); extern unsigned long max_pfn_mapped; 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); } typedef struct { pgdval_t pgd; } pgd_t; typedef struct { pgprotval_t pgprot; } pgprot_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; } 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; } # 107 "include2/asm/page.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; } # 127 "include2/asm/page.h" 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; } # 178 "include2/asm/page.h" # 1 "/home/l/latest/xxx/include/asm-generic/memory_model.h" 1 # 179 "include2/asm/page.h" 2 # 1 "/home/l/latest/xxx/include/asm-generic/page.h" 1 # 9 "/home/l/latest/xxx/include/asm-generic/page.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; } # 180 "include2/asm/page.h" 2 # 9 "include2/asm/pda.h" 2 struct x8664_pda { struct task_struct *pcurrent; unsigned long data_offset; unsigned long kernelstack; unsigned long oldrsp; int irqcount; unsigned int cpunumber; unsigned long stack_canary; char *irqstackptr; unsigned int __softirq_pending; unsigned int __nmi_count; short mmu_state; short isidle; struct mm_struct *active_mm; unsigned apic_timer_irqs; unsigned irq0_irqs; unsigned irq_resched_count; unsigned irq_call_count; unsigned irq_tlb_count; unsigned irq_thermal_count; unsigned irq_threshold_count; unsigned irq_spurious_count; } __attribute__((__aligned__((1 << (6))))); extern struct x8664_pda *_cpu_pda[]; extern struct x8664_pda boot_cpu_pda[]; extern void pda_init(int); extern void __bad_pda_field(void) __attribute__((noreturn)); extern struct x8664_pda _proxy_pda; # 8 "include2/asm/current_64.h" 2 static inline struct task_struct *get_current(void) { struct task_struct *t = ({ typeof(_proxy_pda.pcurrent) ret__; switch (sizeof(_proxy_pda.pcurrent)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,pcurrent)), "m" (_proxy_pda.pcurrent)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,pcurrent)), "m" (_proxy_pda.pcurrent)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,pcurrent)), "m" (_proxy_pda.pcurrent)); break; default: __bad_pda_field(); } ret__; }); return t; } # 5 "include2/asm/current.h" 2 # 19 "include2/asm/processor.h" 2 # 1 "include2/asm/system.h" 1 # 1 "include2/asm/cmpxchg.h" 1 # 1 "include2/asm/cmpxchg_64.h" 1 # 11 "include2/asm/cmpxchg_64.h" static inline void set_64bit(volatile unsigned long *ptr, unsigned long val) { *ptr = val; } # 23 "include2/asm/cmpxchg_64.h" static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { switch (size) { case 1: asm volatile("xchgb %b0,%1" : "=q" (x) : "m" (*((volatile long *)(ptr))), "0" (x) : "memory"); break; case 2: asm volatile("xchgw %w0,%1" : "=r" (x) : "m" (*((volatile long *)(ptr))), "0" (x) : "memory"); break; case 4: asm volatile("xchgl %k0,%1" : "=r" (x) : "m" (*((volatile long *)(ptr))), "0" (x) : "memory"); break; case 8: asm volatile("xchgq %0,%1" : "=r" (x) : "m" (*((volatile long *)(ptr))), "0" (x) : "memory"); break; } return x; } # 63 "include2/asm/cmpxchg_64.h" static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long prev; switch (size) { case 1: asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgb %b1,%2" : "=a"(prev) : "q"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 2: asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgw %w1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 4: asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgl %k1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 8: asm volatile(".section .smp_locks,\"a\"\n" " .balign 8 " "\n" " .quad " "661f\n" ".previous\n" "661:\n\tlock; " "cmpxchgq %1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; } return old; } static inline unsigned long __cmpxchg_local(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long prev; switch (size) { case 1: asm volatile("cmpxchgb %b1,%2" : "=a"(prev) : "q"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 2: asm volatile("cmpxchgw %w1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 4: asm volatile("cmpxchgl %k1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; case 8: asm volatile("cmpxchgq %1,%2" : "=a"(prev) : "r"(new), "m"(*((volatile long *)(ptr))), "0"(old) : "memory"); return prev; } return old; } # 5 "include2/asm/cmpxchg.h" 2 # 8 "include2/asm/system.h" 2 # 1 "include2/asm/nops.h" 1 # 9 "include2/asm/system.h" 2 # 1 "/home/l/latest/xxx/include/linux/irqflags.h" 1 # 55 "/home/l/latest/xxx/include/linux/irqflags.h" # 1 "include2/asm/irqflags.h" 1 # 11 "include2/asm/irqflags.h" static inline unsigned long native_save_fl(void) { unsigned long flags; asm volatile("# __raw_save_flags\n\t" "pushf ; pop %0" : "=g" (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"); } # 59 "include2/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; } # 136 "include2/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); } static inline void trace_hardirqs_fixup_flags(unsigned long flags) { if (raw_irqs_disabled_flags(flags)) do { } while (0); else do { } while (0); } static inline void trace_hardirqs_fixup(void) { unsigned long flags = __raw_local_save_flags(); trace_hardirqs_fixup_flags(flags); } # 56 "/home/l/latest/xxx/include/linux/irqflags.h" 2 # 12 "include2/asm/system.h" 2 # 143 "include2/asm/system.h" extern void load_gs_index(unsigned); # 169 "include2/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"); } # 188 "include2/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; # 244 "include2/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"); } # 300 "include2/asm/system.h" static inline void clflush(volatile void *__p) { asm volatile("clflush %0" : "+m" (*(volatile char *)__p)); } void disable_hlt(void); void enable_hlt(void); extern int es7000_plat; 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); # 420 "include2/asm/system.h" static inline void rdtsc_barrier(void) { asm volatile ("661:\n\t" ".byte 0x0f,0x1f,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " .balign 8 " "\n" " .quad " "661b\n" " .quad " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "mfence" "\n664:\n" ".previous" :: "i" ((3*32+17)) : "memory"); asm volatile ("661:\n\t" ".byte 0x0f,0x1f,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " .balign 8 " "\n" " .quad " "661b\n" " .quad " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((3*32+18)) : "memory"); } # 21 "include2/asm/processor.h" 2 # 1 "include2/asm/percpu.h" 1 # 21 "include2/asm/percpu.h" # 1 "/home/l/latest/xxx/include/asm-generic/percpu.h" 1 # 1 "/home/l/latest/xxx/include/linux/threads.h" 1 # 5 "/home/l/latest/xxx/include/asm-generic/percpu.h" 2 # 65 "/home/l/latest/xxx/include/asm-generic/percpu.h" extern void setup_per_cpu_areas(void); # 22 "include2/asm/percpu.h" 2 extern __typeof__(struct x8664_pda) per_cpu__pda; # 23 "include2/asm/processor.h" 2 # 1 "include2/asm/msr.h" 1 # 1 "include2/asm/msr-index.h" 1 # 5 "include2/asm/msr.h" 2 # 14 "include2/asm/msr.h" # 1 "include2/asm/errno.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/errno.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/errno-base.h" 1 # 5 "/home/l/latest/xxx/include/asm-generic/errno.h" 2 # 1 "include2/asm/errno.h" 2 # 15 "include2/asm/msr.h" 2 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); } # 42 "include2/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 %0,%0\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %3,%0 ; jmp 1b\n\t" ".previous\n\t" " .section __ex_table,\"a\"\n" " .balign 8 " "\n" " .quad " "2b" "," "3b" "\n" " .previous\n" : "=r" (*err), "=a" (low), "=d" (high) : "c" (msr), "i" (-14)); 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)); } static inline int native_write_msr_safe(unsigned int msr, unsigned low, unsigned high) { int err; asm volatile("2: wrmsr ; xor %0,%0\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %4,%0 ; jmp 1b\n\t" ".previous\n\t" " .section __ex_table,\"a\"\n" " .balign 8 " "\n" " .quad " "2b" "," "3b" "\n" " .previous\n" : "=a" (err) : "c" (msr), "0" (low), "d" (high), "i" (-14)); return err; } extern unsigned long long native_read_tsc(void); static inline __attribute__((always_inline)) unsigned long long __native_read_tsc(void) { unsigned low, high; rdtsc_barrier(); asm volatile("rdtsc" : "=a" (low), "=d" (high)); rdtsc_barrier(); 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 "/home/l/latest/xxx/include/linux/errno.h" 1 # 1 "include2/asm/errno.h" 1 # 5 "/home/l/latest/xxx/include/linux/errno.h" 2 # 113 "include2/asm/msr.h" 2 # 126 "include2/asm/msr.h" static inline void wrmsr(unsigned msr, unsigned low, unsigned high) { native_write_msr(msr, low, high); } # 138 "include2/asm/msr.h" static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high) { return native_write_msr_safe(msr, low, high); } # 153 "include2/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; } # 194 "include2/asm/msr.h" void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); 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); # 24 "include2/asm/processor.h" 2 # 1 "include2/asm/desc_defs.h" 1 # 22 "include2/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; struct desc_ptr { unsigned short size; unsigned long address; } __attribute__((packed)) ; # 25 "include2/asm/processor.h" 2 # 1 "include2/asm/ds.h" 1 # 32 "include2/asm/ds.h" struct task_struct; # 50 "include2/asm/ds.h" typedef void (*ds_ovfl_callback_t)(struct task_struct *); extern int ds_request_bts(struct task_struct *task, void *base, size_t size, ds_ovfl_callback_t ovfl); extern int ds_request_pebs(struct task_struct *task, void *base, size_t size, ds_ovfl_callback_t ovfl); # 66 "include2/asm/ds.h" extern int ds_release_bts(struct task_struct *task); extern int ds_release_pebs(struct task_struct *task); # 79 "include2/asm/ds.h" extern int ds_get_bts_index(struct task_struct *task, size_t *pos); extern int ds_get_pebs_index(struct task_struct *task, size_t *pos); # 92 "include2/asm/ds.h" extern int ds_get_bts_end(struct task_struct *task, size_t *pos); extern int ds_get_pebs_end(struct task_struct *task, size_t *pos); # 109 "include2/asm/ds.h" extern int ds_access_bts(struct task_struct *task, size_t index, const void **record); extern int ds_access_pebs(struct task_struct *task, size_t index, const void **record); # 136 "include2/asm/ds.h" extern int ds_write_bts(struct task_struct *task, const void *buffer, size_t size); extern int ds_write_pebs(struct task_struct *task, const void *buffer, size_t size); # 148 "include2/asm/ds.h" extern int ds_unchecked_write_bts(struct task_struct *task, const void *buffer, size_t size); extern int ds_unchecked_write_pebs(struct task_struct *task, const void *buffer, size_t size); # 161 "include2/asm/ds.h" extern int ds_reset_bts(struct task_struct *task); extern int ds_reset_pebs(struct task_struct *task); # 173 "include2/asm/ds.h" extern int ds_clear_bts(struct task_struct *task); extern int ds_clear_pebs(struct task_struct *task); # 185 "include2/asm/ds.h" extern int ds_get_pebs_reset(struct task_struct *task, u64 *value); # 196 "include2/asm/ds.h" extern int ds_set_pebs_reset(struct task_struct *task, u64 value); struct cpuinfo_x86; extern void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) ds_init_intel(struct cpuinfo_x86 *); struct ds_context { unsigned char *ds; struct task_struct *owner[2]; ds_ovfl_callback_t callback[2]; void *buffer[2]; unsigned int pages[2]; unsigned long count; struct ds_context **this; struct task_struct *task; }; extern void ds_free(struct ds_context *context); # 27 "include2/asm/processor.h" 2 # 1 "/home/l/latest/xxx/include/linux/personality.h" 1 # 10 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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, }; # 51 "/home/l/latest/xxx/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, }; # 86 "/home/l/latest/xxx/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; }; # 29 "include2/asm/processor.h" 2 # 1 "/home/l/latest/xxx/include/linux/cpumask.h" 1 # 90 "/home/l/latest/xxx/include/linux/cpumask.h" # 1 "/home/l/latest/xxx/include/linux/bitmap.h" 1 # 1 "/home/l/latest/xxx/include/linux/string.h" 1 # 14 "/home/l/latest/xxx/include/linux/string.h" extern char *strndup_user(const char *, long); # 1 "include2/asm/string.h" 1 # 1 "include2/asm/string_64.h" 1 # 9 "include2/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); # 47 "include2/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 "include2/asm/string.h" 2 # 20 "/home/l/latest/xxx/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 * strstrip(char *); extern char * strstr(const char *,const char *); 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 *); # 96 "/home/l/latest/xxx/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); # 9 "/home/l/latest/xxx/include/linux/bitmap.h" 2 # 87 "/home/l/latest/xxx/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 void __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 void __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 int bitmap_scnprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user, unsigned long *dst, int nbits); extern int bitmap_parse_user(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern int bitmap_scnlistprintf(char *buf, unsigned int len, const unsigned long *src, int nbits); extern int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits); extern 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(unsigned long *dst, const unsigned long *src, int nbits); static inline void bitmap_zero(unsigned long *dst, int nbits) { if (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 (nlongs > 1) { 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 (nbits <= 64) *dst = *src; else { int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); memcpy(dst, src, len); } } static inline void bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 & *src2; else __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 (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 (nbits <= 64) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline void bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 64) *dst = *src1 & ~(*src2); else __bitmap_andnot(dst, src1, src2, nbits); } static inline void bitmap_complement(unsigned long *dst, const unsigned long *src, int nbits) { if (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 (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 (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 (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 (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 (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 (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 (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 (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); } # 91 "/home/l/latest/xxx/include/linux/cpumask.h" 2 typedef struct { unsigned long bits[(((2) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } cpumask_t; extern cpumask_t _unused_cpumask_arg_; 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 void __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { 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 void __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline void __cpus_complement(cpumask_t *dstp, const cpumask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->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_full(const cpumask_t *srcp, int nbits) { return bitmap_full(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_right(cpumask_t *dstp, const cpumask_t *srcp, int n, int nbits) { bitmap_shift_right(dstp->bits, srcp->bits, n, 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); } int __first_cpu(const cpumask_t *srcp); int __next_cpu(int n, const cpumask_t *srcp); # 274 "/home/l/latest/xxx/include/linux/cpumask.h" static inline int __cpumask_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline int __cpumask_parse_user(const char *buf, int len, cpumask_t *dstp, int nbits) { return bitmap_parse_user(buf, len, dstp->bits, nbits); } static inline int __cpulist_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline int __cpu_remap(int oldbit, const cpumask_t *oldp, const cpumask_t *newp, int nbits) { return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); } static inline void __cpus_remap(cpumask_t *dstp, const cpumask_t *srcp, const cpumask_t *oldp, const cpumask_t *newp, int nbits) { bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); } static inline void __cpus_onto(cpumask_t *dstp, const cpumask_t *origp, const cpumask_t *relmapp, int nbits) { bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits); } static inline void __cpus_fold(cpumask_t *dstp, const cpumask_t *origp, int sz, int nbits) { bitmap_fold(dstp->bits, origp->bits, sz, nbits); } # 400 "/home/l/latest/xxx/include/linux/cpumask.h" extern cpumask_t cpu_possible_map; extern cpumask_t cpu_online_map; extern cpumask_t cpu_present_map; # 423 "/home/l/latest/xxx/include/linux/cpumask.h" extern int nr_cpu_ids; int __any_online_cpu(const cpumask_t *mask); # 30 "include2/asm/processor.h" 2 # 38 "include2/asm/processor.h" static inline void *current_text_addr(void) { void *pc; asm volatile("mov $1f, %0; 1:":"=r" (pc)); return pc; } # 61 "include2/asm/processor.h" struct cpuinfo_x86 { __u8 x86; __u8 x86_vendor; __u8 x86_model; __u8 x86_mask; # 79 "include2/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[8]; 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_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; } __attribute__((__aligned__((1 << (6))))); # 133 "include2/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 cleared_cpu_caps[8]; extern __typeof__(struct cpuinfo_x86) per_cpu__cpu_info; static inline int hlt_works(int cpu) { return 1; } extern void cpu_detect(struct cpuinfo_x86 *c); extern void identify_cpu(struct cpuinfo_x86 *); 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_ht(struct cpuinfo_x86 *c); static inline void native_cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { asm("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)))); } # 226 "include2/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))))); # 251 "include2/asm/processor.h" struct tss_struct { struct x86_hw_tss x86_tss; unsigned long io_bitmap[((65536/8)/sizeof(long)) + 1]; unsigned long io_bitmap_max; struct thread_struct *io_bitmap_owner; unsigned long __cacheline_filler[35]; unsigned long stack[64]; } __attribute__((packed)); extern __typeof__(struct tss_struct) per_cpu__init_tss; 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[24]; } __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 info *info; u32 entry_eip; }; union i387_union { struct i387_fsave_struct fsave; struct i387_fxsave_struct fxsave; struct i387_soft_struct soft; }; extern __typeof__(struct orig_ist) per_cpu__orig_ist; 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; 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 ip; unsigned long fs; unsigned long gs; unsigned long debugreg0; unsigned long debugreg1; unsigned long debugreg2; unsigned long debugreg3; unsigned long debugreg6; unsigned long debugreg7; unsigned long cr2; unsigned long trap_no; unsigned long error_code; union i387_union i387 __attribute__((aligned(16)));; # 414 "include2/asm/processor.h" unsigned long *io_bitmap_ptr; unsigned long iopl; unsigned io_bitmap_max; unsigned long debugctlmsr; struct ds_context *ds_ctx; unsigned int bts_ovfl_signal; }; 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.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("include2/asm/processor.h"), "i" (454), "i" (sizeof(struct bug_entry))); for (;;) ; } 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.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("include2/asm/processor.h"), "i" (481), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } } static inline void native_set_iopl_mask(unsigned mask) { # 502 "include2/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"); } # 538 "include2/asm/processor.h" static inline void load_sp0(struct tss_struct *tss, struct thread_struct *thread) { native_load_sp0(tss, thread); } # 554 "include2/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)); } struct microcode_header { unsigned int hdrver; unsigned int rev; unsigned int date; unsigned int sig; unsigned int cksum; unsigned int ldrver; unsigned int pf; unsigned int datasize; unsigned int totalsize; unsigned int reserved[3]; }; struct microcode { struct microcode_header hdr; unsigned int bits[0]; }; typedef struct microcode microcode_t; typedef struct microcode_header microcode_header_t; struct extended_signature { unsigned int sig; unsigned int pf; unsigned int cksum; }; struct extended_sigtable { unsigned int count; unsigned int cksum; unsigned int reserved[3]; struct extended_signature sigs[0]; }; 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; 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) { asm volatile("sti; .byte 0x0f, 0x01, 0xc9;" :: "a" (eax), "c" (ecx)); } extern void mwait_idle_with_hints(unsigned long eax, unsigned long ecx); extern int force_mwait; extern void select_idle_routine(const struct cpuinfo_x86 *c); extern unsigned long boot_option_idle_override; extern void enable_sep_cpu(void); extern int sysenter_setup(void); extern struct desc_ptr early_gdt_descr; extern void cpu_set_gdt(int); extern void switch_to_new_gdt(void); extern void cpu_init(void); extern void init_gdt(int cpu); static inline void update_debugctlmsr(unsigned long debugctlmsr) { native_write_msr((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 char ignore_fpu_irq; # 792 "include2/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 %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "prefetchnta (%1)" "\n664:\n" ".previous" :: "i" ((0*32+25)), "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 %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "prefetchw (%1)" "\n664:\n" ".previous" :: "i" ((1*32+31)), "r" (x)); } static inline void spin_lock_prefetch(const void *x) { prefetchw(x); } # 916 "include2/asm/processor.h" extern void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp); # 15 "/home/l/latest/xxx/include/linux/prefetch.h" 2 # 53 "/home/l/latest/xxx/include/linux/prefetch.h" static inline void prefetch_range(void *addr, size_t len) { } # 7 "/home/l/latest/xxx/include/linux/list.h" 2 # 19 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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; } # 65 "/home/l/latest/xxx/include/linux/list.h" static inline void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 82 "/home/l/latest/xxx/include/linux/list.h" static inline void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } # 94 "/home/l/latest/xxx/include/linux/list.h" static inline void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; } # 107 "/home/l/latest/xxx/include/linux/list.h" static inline void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->next = ((void *) 0x00100100); entry->prev = ((void *) 0x00200200); } # 124 "/home/l/latest/xxx/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; } # 206 "/home/l/latest/xxx/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 int list_is_singular(const struct list_head *head) { return !list_empty(head) && (head->next == head->prev); } static inline void __list_splice(const struct list_head *list, struct list_head *head) { struct list_head *first = list->next; struct list_head *last = list->prev; struct list_head *at = head->next; first->prev = head; head->next = first; last->next = at; at->prev = last; } static inline void list_splice(const struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head); } # 254 "/home/l/latest/xxx/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); INIT_LIST_HEAD(list); } } # 475 "/home/l/latest/xxx/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); n->pprev = ((void *) 0x00200200); } 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; } # 10 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/stat.h" 1 # 1 "include2/asm/stat.h" 1 # 68 "include2/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 "/home/l/latest/xxx/include/linux/stat.h" 2 # 60 "/home/l/latest/xxx/include/linux/stat.h" # 1 "/home/l/latest/xxx/include/linux/time.h" 1 # 1 "/home/l/latest/xxx/include/linux/seqlock.h" 1 # 29 "/home/l/latest/xxx/include/linux/seqlock.h" # 1 "/home/l/latest/xxx/include/linux/spinlock.h" 1 # 49 "/home/l/latest/xxx/include/linux/spinlock.h" # 1 "/home/l/latest/xxx/include/linux/preempt.h" 1 # 9 "/home/l/latest/xxx/include/linux/preempt.h" # 1 "/home/l/latest/xxx/include/linux/thread_info.h" 1 # 12 "/home/l/latest/xxx/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; } futex; struct { clockid_t index; struct timespec *rmtp; struct compat_timespec *compat_rmtp; u64 expires; } nanosleep; }; }; extern long do_no_restart_syscall(struct restart_block *parm); # 1 "include2/asm/thread_info.h" 1 # 1 "include2/asm/thread_info_64.h" 1 # 22 "include2/asm/thread_info_64.h" struct task_struct; struct exec_domain; 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 *sysenter_return; }; # 63 "include2/asm/thread_info_64.h" static inline struct thread_info *current_thread_info(void) { struct thread_info *ti; ti = (void *)(({ typeof(_proxy_pda.kernelstack) ret__; switch (sizeof(_proxy_pda.kernelstack)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,kernelstack)), "m" (_proxy_pda.kernelstack)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,kernelstack)), "m" (_proxy_pda.kernelstack)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,kernelstack)), "m" (_proxy_pda.kernelstack)); break; default: __bad_pda_field(); } ret__; }) + (5*8) - (((1UL) << 12) << 1)); return ti; } static inline struct thread_info *stack_thread_info(void) { struct thread_info *ti; asm("andq %%rsp,%0; " : "=r" (ti) : "0" (~((((1UL) << 12) << 1) - 1))); return ti; } # 185 "include2/asm/thread_info_64.h" static inline void set_restore_sigmask(void) { struct thread_info *ti = current_thread_info(); ti->status |= 0x0008; set_bit(2, &ti->flags); } # 5 "include2/asm/thread_info.h" 2 # 48 "/home/l/latest/xxx/include/linux/thread_info.h" 2 # 56 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/preempt.h" 2 # 50 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 1 "/home/l/latest/xxx/include/linux/stringify.h" 1 # 55 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 1 "/home/l/latest/xxx/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(void); extern void local_bh_enable_ip(unsigned long ip); # 56 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 79 "/home/l/latest/xxx/include/linux/spinlock.h" # 1 "/home/l/latest/xxx/include/linux/spinlock_types.h" 1 # 13 "/home/l/latest/xxx/include/linux/spinlock_types.h" # 1 "include2/asm/spinlock_types.h" 1 typedef struct { unsigned int slock; } raw_spinlock_t; typedef struct { unsigned int lock; } raw_rwlock_t; # 14 "/home/l/latest/xxx/include/linux/spinlock_types.h" 2 # 1 "/home/l/latest/xxx/include/linux/lockdep.h" 1 # 12 "/home/l/latest/xxx/include/linux/lockdep.h" struct task_struct; struct lockdep_map; # 313 "/home/l/latest/xxx/include/linux/lockdep.h" static inline void lockdep_off(void) { } static inline void lockdep_on(void) { } # 340 "/home/l/latest/xxx/include/linux/lockdep.h" struct lock_class_key { }; # 373 "/home/l/latest/xxx/include/linux/lockdep.h" static inline void early_init_irq_lock_class(void) { } static inline void early_boot_irqs_off(void) { } static inline void early_boot_irqs_on(void) { } static inline void print_irqtrace_events(struct task_struct *curr) { } # 19 "/home/l/latest/xxx/include/linux/spinlock_types.h" 2 typedef struct { raw_spinlock_t raw_lock; # 32 "/home/l/latest/xxx/include/linux/spinlock_types.h" } spinlock_t; typedef struct { raw_rwlock_t raw_lock; # 48 "/home/l/latest/xxx/include/linux/spinlock_types.h" } rwlock_t; # 80 "/home/l/latest/xxx/include/linux/spinlock.h" 2 extern int __attribute__((section(".spinlock.text"))) generic__raw_read_trylock(raw_rwlock_t *lock); # 1 "include2/asm/spinlock.h" 1 # 1 "include2/asm/atomic.h" 1 # 1 "include2/asm/atomic_64.h" 1 # 1 "include2/asm/cmpxchg.h" 1 # 6 "include2/asm/atomic_64.h" 2 # 25 "include2/asm/atomic_64.h" typedef struct { int counter; } atomic_t; # 55 "include2/asm/atomic_64.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), "m" (v->counter)); } # 69 "include2/asm/atomic_64.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), "m" (v->counter)); } # 85 "include2/asm/atomic_64.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), "m" (v->counter) : "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) : "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) : "m" (v->counter)); } # 129 "include2/asm/atomic_64.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) : "m" (v->counter) : "memory"); return c != 0; } # 147 "include2/asm/atomic_64.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) : "m" (v->counter) : "memory"); return c != 0; } # 166 "include2/asm/atomic_64.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), "m" (v->counter) : "memory"); return c; } # 183 "include2/asm/atomic_64.h" static inline int atomic_add_return(int i, atomic_t *v) { int __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; } static inline int atomic_sub_return(int i, atomic_t *v) { return atomic_add_return(-i, v); } typedef struct { long counter; } atomic64_t; # 233 "include2/asm/atomic_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) : "ir" (i), "m" (v->counter)); } # 247 "include2/asm/atomic_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) : "ir" (i), "m" (v->counter)); } # 263 "include2/asm/atomic_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) : "ir" (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)); } # 307 "include2/asm/atomic_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; } # 325 "include2/asm/atomic_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; } # 344 "include2/asm/atomic_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) : "ir" (i), "m" (v->counter) : "memory"); return c; } # 361 "include2/asm/atomic_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); } # 393 "include2/asm/atomic_64.h" static inline int atomic_add_unless(atomic_t *v, int a, int u) { int c, old; c = ((v)->counter); for (;;) { if (__builtin_expect(!!(c == (u)), 0)) break; old = (((__typeof__(*(&(((v))->counter))))__cmpxchg((&(((v))->counter)), (unsigned long)((c)), (unsigned long)((c + (a))), sizeof(*(&(((v))->counter)))))); if (__builtin_expect(!!(old == c), 1)) break; c = old; } return c != (u); } # 419 "include2/asm/atomic_64.h" static inline int atomic64_add_unless(atomic64_t *v, long a, long u) { long c, old; c = ((v)->counter); for (;;) { if (__builtin_expect(!!(c == (u)), 0)) break; old = (((__typeof__(*(&(((v))->counter))))__cmpxchg((&(((v))->counter)), (unsigned long)((c)), (unsigned long)((c + (a))), sizeof(*(&(((v))->counter)))))); if (__builtin_expect(!!(old == c), 1)) break; c = old; } return c != (u); } # 452 "include2/asm/atomic_64.h" # 1 "/home/l/latest/xxx/include/asm-generic/atomic.h" 1 # 23 "/home/l/latest/xxx/include/asm-generic/atomic.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)((v)->counter); } static inline void atomic_long_set(atomic_long_t *l, long i) { atomic64_t *v = (atomic64_t *)l; (((v)->counter) = (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); } # 453 "include2/asm/atomic_64.h" 2 # 5 "include2/asm/atomic.h" 2 # 5 "include2/asm/spinlock.h" 2 # 1 "include2/asm/rwlock.h" 1 # 6 "include2/asm/spinlock.h" 2 # 30 "include2/asm/spinlock.h" typedef int _slock_t; # 67 "include2/asm/spinlock.h" static inline int __raw_spin_is_locked(raw_spinlock_t *lock) { int tmp = *(volatile signed int *)(&(lock)->slock); return (((tmp >> 8) & 0xff) != (tmp & 0xff)); } static inline int __raw_spin_is_contended(raw_spinlock_t *lock) { int tmp = *(volatile signed int *)(&(lock)->slock); return (((tmp >> 8) & 0xff) - (tmp & 0xff)) > 1; } static inline __attribute__((always_inline)) void __raw_spin_lock(raw_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 __raw_spin_trylock(raw_spinlock_t *lock) { int tmp; short new; asm volatile("movw %2,%w0\n\t" "cmpb %h0,%b0\n\t" "jne 1f\n\t" "movw %w0,%w1\n\t" "incb %h1\n\t" "lock ; 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 __raw_spin_unlock(raw_spinlock_t *lock) { asm volatile( "incb %0" : "+m" (lock->slock) : : "memory", "cc"); } # 199 "include2/asm/spinlock.h" static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock) { while (__raw_spin_is_locked(lock)) cpu_relax(); } # 223 "include2/asm/spinlock.h" static inline int __raw_read_can_lock(raw_rwlock_t *lock) { return (int)(lock)->lock > 0; } static inline int __raw_write_can_lock(raw_rwlock_t *lock) { return (lock)->lock == 0x01000000; } static inline void __raw_read_lock(raw_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 __raw_write_lock(raw_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 __raw_read_trylock(raw_rwlock_t *lock) { atomic_t *count = (atomic_t *)lock; atomic_dec(count); if (((count)->counter) >= 0) return 1; atomic_inc(count); return 0; } static inline int __raw_write_trylock(raw_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 __raw_read_unlock(raw_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 __raw_write_unlock(raw_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"); } # 88 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 139 "/home/l/latest/xxx/include/linux/spinlock.h" # 1 "/home/l/latest/xxx/include/linux/spinlock_api_smp.h" 1 # 18 "/home/l/latest/xxx/include/linux/spinlock_api_smp.h" int in_lock_functions(unsigned long addr); void __attribute__((section(".spinlock.text"))) _spin_lock(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_lock_nested(spinlock_t *lock, int subclass) ; void __attribute__((section(".spinlock.text"))) _read_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_lock_bh(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_lock_irq(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_lock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_lock_irq(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave(spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave_nested(spinlock_t *lock, int subclass) ; unsigned long __attribute__((section(".spinlock.text"))) _read_lock_irqsave(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _write_lock_irqsave(rwlock_t *lock) ; int __attribute__((section(".spinlock.text"))) _spin_trylock(spinlock_t *lock); int __attribute__((section(".spinlock.text"))) _read_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _write_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _spin_trylock_bh(spinlock_t *lock); void __attribute__((section(".spinlock.text"))) _spin_unlock(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_bh(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_irq(spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _read_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _write_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; # 140 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 302 "/home/l/latest/xxx/include/linux/spinlock.h" # 1 "include2/asm/atomic.h" 1 # 303 "/home/l/latest/xxx/include/linux/spinlock.h" 2 # 311 "/home/l/latest/xxx/include/linux/spinlock.h" extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); # 30 "/home/l/latest/xxx/include/linux/seqlock.h" 2 typedef struct { unsigned sequence; spinlock_t lock; } seqlock_t; # 60 "/home/l/latest/xxx/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++; do {__raw_spin_unlock(&(&sl->lock)->raw_lock); (void)0; } while (0); } 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 "/home/l/latest/xxx/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++; } # 9 "/home/l/latest/xxx/include/linux/time.h" 2 struct timespec { time_t tv_sec; long tv_nsec; }; struct timeval { time_t tv_sec; suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; # 40 "/home/l/latest/xxx/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, long nsec); 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 unsigned long read_persistent_clock(void); extern int update_persistent_clock(struct timespec now); extern int no_sync_cmos_clock __attribute__((__section__(".data.read_mostly"))); void timekeeping_init(void); unsigned long get_seconds(void); struct timespec current_kernel_time(void); 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 *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 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 void update_wall_time(void); extern void update_xtime_cache(u64 nsec); # 134 "/home/l/latest/xxx/include/linux/time.h" static inline s64 timespec_to_ns(const struct timespec *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } # 146 "/home/l/latest/xxx/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); static inline void timespec_add_ns(struct timespec *a, u64 ns) { ns += a->tv_nsec; while(__builtin_expect(!!(ns >= 1000000000L), 0)) { asm("" : "+r"(ns)); ns -= 1000000000L; a->tv_sec++; } a->tv_nsec = ns; } # 204 "/home/l/latest/xxx/include/linux/time.h" struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 61 "/home/l/latest/xxx/include/linux/stat.h" 2 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 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/kmod.h" 1 # 31 "/home/l/latest/xxx/include/linux/kmod.h" extern int request_module(const char * name, ...) __attribute__ ((format (printf, 1, 2))); struct key; struct file; struct subprocess_info; struct subprocess_info *call_usermodehelper_setup(char *path, char **argv, char **envp); void call_usermodehelper_setkeys(struct subprocess_info *info, struct key *session_keyring); int call_usermodehelper_stdinpipe(struct subprocess_info *sub_info, struct file **filp); void call_usermodehelper_setcleanup(struct subprocess_info *info, void (*cleanup)(char **argv, char **envp)); enum umh_wait { UMH_NO_WAIT = -1, UMH_WAIT_EXEC = 0, UMH_WAIT_PROC = 1, }; 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(char *path, char **argv, char **envp, enum umh_wait wait) { struct subprocess_info *info; info = call_usermodehelper_setup(path, argv, envp); if (info == ((void *)0)) return -12; return call_usermodehelper_exec(info, wait); } static inline int call_usermodehelper_keys(char *path, char **argv, char **envp, struct key *session_keyring, enum umh_wait wait) { struct subprocess_info *info; info = call_usermodehelper_setup(path, argv, envp); if (info == ((void *)0)) return -12; call_usermodehelper_setkeys(info, session_keyring); return call_usermodehelper_exec(info, wait); } extern void usermodehelper_init(void); struct file; extern int call_usermodehelper_pipe(char *path, char *argv[], char *envp[], struct file **filp); # 14 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/elf.h" 1 # 1 "/home/l/latest/xxx/include/linux/elf-em.h" 1 # 6 "/home/l/latest/xxx/include/linux/elf.h" 2 # 1 "include2/asm/elf.h" 1 # 9 "include2/asm/elf.h" # 1 "include2/asm/user.h" 1 # 1 "include2/asm/user_64.h" 1 # 50 "include2/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; }; # 5 "include2/asm/user.h" 2 # 10 "include2/asm/elf.h" 2 # 1 "include2/asm/auxvec.h" 1 # 11 "include2/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 "include2/asm/elf.h" # 1 "include2/asm/vdso.h" 1 extern const char VDSO64_PRELINK[]; # 19 "include2/asm/vdso.h" extern const char VDSO32_PRELINK[]; # 36 "include2/asm/vdso.h" extern void __kernel_sigreturn; extern void __kernel_rt_sigreturn; # 76 "include2/asm/elf.h" 2 extern unsigned int vdso_enabled; # 149 "include2/asm/elf.h" static inline void start_ia32_thread(struct pt_regs *regs, u32 ip, u32 sp) { asm volatile("movl %0,%%fs" :: "r" (0)); asm volatile("movl %0,%%es; movl %0,%%ds" : : "r" (0x2b)); load_gs_index(0); regs->ip = ip; regs->sp = sp; regs->flags = 0x00000200; regs->cs = 0x23; regs->ss = 0x2b; } 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; } # 239 "include2/asm/elf.h" extern void set_personality_64bit(void); extern unsigned int sysctl_vsyscall32; extern int force_personality32; # 278 "include2/asm/elf.h" struct task_struct; # 323 "include2/asm/elf.h" struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack); extern int syscall32_setup_pages(struct linux_binprm *, int exstack); extern unsigned long arch_randomize_brk(struct mm_struct *mm); # 8 "/home/l/latest/xxx/include/linux/elf.h" 2 struct file; # 20 "/home/l/latest/xxx/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; # 127 "/home/l/latest/xxx/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; # 150 "/home/l/latest/xxx/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; # 289 "/home/l/latest/xxx/include/linux/elf.h" typedef struct { 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; # 365 "/home/l/latest/xxx/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; # 388 "/home/l/latest/xxx/include/linux/elf.h" extern Elf64_Dyn _DYNAMIC []; # 398 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/kobject.h" 1 # 21 "/home/l/latest/xxx/include/linux/kobject.h" # 1 "/home/l/latest/xxx/include/linux/sysfs.h" 1 # 18 "/home/l/latest/xxx/include/linux/sysfs.h" # 1 "include2/asm/atomic.h" 1 # 19 "/home/l/latest/xxx/include/linux/sysfs.h" 2 struct kobject; struct module; struct attribute { const char *name; struct module *owner; mode_t mode; }; struct attribute_group { const char *name; int (*is_visible)(struct kobject *, struct attribute *, int); struct attribute **attrs; }; # 62 "/home/l/latest/xxx/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); }; struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *,char *); ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); }; 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_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode); void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr); int sysfs_create_bin_file(struct kobject *kobj, struct bin_attribute *attr); void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr); int sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name); void sysfs_remove_link(struct kobject *kobj, const char *name); int sysfs_create_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, char *dir, char *attr); void sysfs_printk_last_file(void); extern int sysfs_init(void); # 22 "/home/l/latest/xxx/include/linux/kobject.h" 2 # 1 "/home/l/latest/xxx/include/linux/kref.h" 1 # 19 "/home/l/latest/xxx/include/linux/kref.h" # 1 "include2/asm/atomic.h" 1 # 20 "/home/l/latest/xxx/include/linux/kref.h" 2 struct kref { atomic_t refcount; }; void kref_set(struct kref *kref, int num); void kref_init(struct kref *kref); void kref_get(struct kref *kref); int kref_put(struct kref *kref, void (*release) (struct kref *kref)); # 25 "/home/l/latest/xxx/include/linux/kobject.h" 2 # 1 "/home/l/latest/xxx/include/linux/wait.h" 1 # 26 "/home/l/latest/xxx/include/linux/wait.h" # 1 "include2/asm/current.h" 1 # 27 "/home/l/latest/xxx/include/linux/wait.h" 2 typedef struct __wait_queue wait_queue_t; typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key); int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, 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 "/home/l/latest/xxx/include/linux/wait.h" extern void init_waitqueue_head(wait_queue_head_t *q); # 91 "/home/l/latest/xxx/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); } # 120 "/home/l/latest/xxx/include/linux/wait.h" 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); extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); extern 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 "/home/l/latest/xxx/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); 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); # 485 "/home/l/latest/xxx/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); } # 509 "/home/l/latest/xxx/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); } # 27 "/home/l/latest/xxx/include/linux/kobject.h" 2 # 1 "include2/asm/atomic.h" 1 # 28 "/home/l/latest/xxx/include/linux/kobject.h" 2 extern char uevent_helper[]; extern u64 uevent_seqnum; # 50 "/home/l/latest/xxx/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 kref kref; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct sysfs_dirent *sd; 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; }; extern int kobject_set_name(struct kobject *kobj, const char *name, ...) __attribute__((format(printf, 2, 3))); 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); 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 (*filter)(struct kset *kset, struct kobject *kobj); const char *(*name)(struct kset *kset, struct kobject *kobj); int (*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 struct sysfs_ops kobj_sysfs_ops; # 152 "/home/l/latest/xxx/include/linux/kobject.h" struct kset { struct list_head list; spinlock_t list_lock; struct kobject kobj; 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, 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 *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 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/moduleparam.h" 1 # 29 "/home/l/latest/xxx/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; unsigned int perm; 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; }; # 112 "/home/l/latest/xxx/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 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); extern int param_set_invbool(const char *val, struct kernel_param *kp); extern int param_get_invbool(char *buffer, struct kernel_param *kp); # 176 "/home/l/latest/xxx/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; extern int module_param_sysfs_setup(struct module *mod, struct kernel_param *kparam, unsigned int num_params); extern void module_param_sysfs_remove(struct module *mod); # 18 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "/home/l/latest/xxx/include/linux/marker.h" 1 # 17 "/home/l/latest/xxx/include/linux/marker.h" struct module; struct marker; # 32 "/home/l/latest/xxx/include/linux/marker.h" typedef void marker_probe_func(void *probe_private, void *call_private, const char *fmt, va_list *args); struct marker_probe_closure { marker_probe_func *func; void *probe_private; }; struct marker { const char *name; const char *format; char state; char ptype; void (*call)(const struct marker *mdata, void *call_private, const char *fmt, ...); struct marker_probe_closure single; struct marker_probe_closure *multi; } __attribute__((aligned(8))); # 85 "/home/l/latest/xxx/include/linux/marker.h" static inline void marker_update_probe_range(struct marker *begin, struct marker *end) { } # 107 "/home/l/latest/xxx/include/linux/marker.h" static inline void __attribute__((format(printf,1,2))) ___mark_check_format(const char *fmt, ...) { } extern marker_probe_func __mark_empty_function; extern void marker_probe_cb(const struct marker *mdata, void *call_private, const char *fmt, ...); extern void marker_probe_cb_noarg(const struct marker *mdata, void *call_private, const char *fmt, ...); extern int marker_probe_register(const char *name, const char *format, marker_probe_func *probe, void *probe_private); extern int marker_probe_unregister(const char *name, marker_probe_func *probe, void *probe_private); extern int marker_probe_unregister_private_data(marker_probe_func *probe, void *probe_private); extern void *marker_get_private_data(const char *name, marker_probe_func *probe, int num); # 19 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "include2/asm/local.h" 1 # 1 "/home/l/latest/xxx/include/linux/percpu.h" 1 # 1 "/home/l/latest/xxx/include/linux/slab.h" 1 # 12 "/home/l/latest/xxx/include/linux/slab.h" # 1 "/home/l/latest/xxx/include/linux/gfp.h" 1 # 1 "/home/l/latest/xxx/include/linux/mmzone.h" 1 # 13 "/home/l/latest/xxx/include/linux/mmzone.h" # 1 "/home/l/latest/xxx/include/linux/numa.h" 1 # 14 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 1 "/home/l/latest/xxx/include/linux/nodemask.h" 1 # 92 "/home/l/latest/xxx/include/linux/nodemask.h" typedef struct { unsigned long bits[((((1 << 0)) + (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 << 0)); int __min2 = (((__builtin_constant_p(((1 << 0))) && ((1 << 0)) <= 64 ? (__scanbit(*(unsigned long *)(srcp->bits), ((1 << 0)))) : find_first_bit((srcp->bits), ((1 << 0)))))); __min1 < __min2 ? __min1: __min2; }); } static inline int __next_node(int n, const nodemask_t *srcp) { return ({ int __min1 = ((1 << 0)); int __min2 = (((__builtin_constant_p((1 << 0)) && ((1 << 0)) <= 64 ? ((n+1) + (__scanbit((*(unsigned long *)srcp->bits) >> (n+1),((1 << 0))-(n+1)))) : find_next_bit(srcp->bits,(1 << 0),n+1)))); __min1 < __min2 ? __min1: __min2; }); } # 255 "/home/l/latest/xxx/include/linux/nodemask.h" static inline int __first_unset_node(const nodemask_t *maskp) { return ({ int __min1 = ((1 << 0)); int __min2 = (((__builtin_constant_p(((1 << 0))) && ((1 << 0)) <= 64 ? (__scanbit(~*(unsigned long *)(maskp->bits), ((1 << 0)))) : find_first_zero_bit((maskp->bits), ((1 << 0)))))); __min1 < __min2 ? __min1: __min2; }); } # 289 "/home/l/latest/xxx/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 *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); } # 363 "/home/l/latest/xxx/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]; # 413 "/home/l/latest/xxx/include/linux/nodemask.h" static inline int node_state(int node, enum node_states state) { return node == 0; } static inline void node_set_state(int node, enum node_states state) { } static inline void node_clear_state(int node, enum node_states state) { } static inline int num_node_state(enum node_states state) { return 1; } # 17 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 1 "/home/l/latest/xxx/include/linux/pageblock-flags.h" 1 # 33 "/home/l/latest/xxx/include/linux/pageblock-flags.h" enum pageblock_bits { PB_migrate, PB_migrate_end = (PB_migrate + 3) - 1, NR_PAGEBLOCK_BITS }; # 62 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 1 "include/linux/bounds.h" 1 # 19 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 1 "include2/asm/atomic.h" 1 # 20 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 49 "/home/l/latest/xxx/include/linux/mmzone.h" extern int page_group_by_mobility_disabled; static inline int get_pageblock_migratetype(struct page *page) { if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) return 0; 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; # 73 "/home/l/latest/xxx/include/linux/mmzone.h" struct zone_padding { char x[0]; } __attribute__((__aligned__(1 << ((6))))); enum zone_stat_item { NR_FREE_PAGES, NR_INACTIVE, NR_ACTIVE, NR_ANON_PAGES, NR_FILE_MAPPED, NR_FILE_PAGES, NR_FILE_DIRTY, NR_WRITEBACK, NR_SLAB_RECLAIMABLE, NR_SLAB_UNRECLAIMABLE, NR_PAGETABLE, NR_UNSTABLE_NFS, NR_BOUNCE, NR_VMSCAN_WRITE, NR_WRITEBACK_TEMP, # 108 "/home/l/latest/xxx/include/linux/mmzone.h" NR_VM_ZONE_STAT_ITEMS }; struct per_cpu_pages { int count; int high; int batch; struct list_head list; }; struct per_cpu_pageset { struct per_cpu_pages pcp; s8 stat_threshold; s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS]; } __attribute__((__aligned__((1 << (6))))); # 136 "/home/l/latest/xxx/include/linux/mmzone.h" enum zone_type { # 156 "/home/l/latest/xxx/include/linux/mmzone.h" ZONE_DMA, ZONE_DMA32, ZONE_NORMAL, # 183 "/home/l/latest/xxx/include/linux/mmzone.h" ZONE_MOVABLE, __MAX_NR_ZONES }; # 207 "/home/l/latest/xxx/include/linux/mmzone.h" struct zone { unsigned long pages_min, pages_low, pages_high; # 218 "/home/l/latest/xxx/include/linux/mmzone.h" unsigned long lowmem_reserve[4]; # 229 "/home/l/latest/xxx/include/linux/mmzone.h" struct per_cpu_pageset pageset[2]; spinlock_t lock; struct free_area free_area[11]; # 250 "/home/l/latest/xxx/include/linux/mmzone.h" struct zone_padding _pad1_; spinlock_t lru_lock; struct list_head active_list; struct list_head inactive_list; unsigned long nr_scan_active; unsigned long nr_scan_inactive; unsigned long pages_scanned; unsigned long flags; atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; # 277 "/home/l/latest/xxx/include/linux/mmzone.h" int prev_priority; struct zone_padding _pad2_; # 307 "/home/l/latest/xxx/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; # 328 "/home/l/latest/xxx/include/linux/mmzone.h" unsigned long spanned_pages; unsigned long present_pages; const char *name; } __attribute__((__aligned__(1 << ((6))))); typedef enum { ZONE_ALL_UNRECLAIMABLE, 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_all_unreclaimable(const struct zone *zone) { return (__builtin_constant_p(ZONE_ALL_UNRECLAIMABLE) ? constant_test_bit((ZONE_ALL_UNRECLAIMABLE),(&zone->flags)) : variable_test_bit((ZONE_ALL_UNRECLAIMABLE),(&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))); } # 461 "/home/l/latest/xxx/include/linux/mmzone.h" struct zonelist_cache; struct zoneref { struct zone *zone; int zone_idx; }; # 490 "/home/l/latest/xxx/include/linux/mmzone.h" struct zonelist { struct zonelist_cache *zlcache_ptr; struct zoneref _zonerefs[((1 << 0) * 4) + 1]; }; struct node_active_region { unsigned long start_pfn; unsigned long end_pfn; int nid; }; extern struct page *mem_map; # 522 "/home/l/latest/xxx/include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[4]; struct zonelist node_zonelists[1]; int nr_zones; struct bootmem_data *bdata; # 541 "/home/l/latest/xxx/include/linux/mmzone.h" 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; # 560 "/home/l/latest/xxx/include/linux/mmzone.h" # 1 "/home/l/latest/xxx/include/linux/memory_hotplug.h" 1 # 1 "/home/l/latest/xxx/include/linux/mmzone.h" 1 # 5 "/home/l/latest/xxx/include/linux/memory_hotplug.h" 2 # 1 "/home/l/latest/xxx/include/linux/notifier.h" 1 # 13 "/home/l/latest/xxx/include/linux/notifier.h" # 1 "/home/l/latest/xxx/include/linux/mutex.h" 1 # 18 "/home/l/latest/xxx/include/linux/mutex.h" # 1 "include2/asm/atomic.h" 1 # 19 "/home/l/latest/xxx/include/linux/mutex.h" 2 # 48 "/home/l/latest/xxx/include/linux/mutex.h" struct mutex { atomic_t count; spinlock_t wait_lock; struct list_head wait_list; # 61 "/home/l/latest/xxx/include/linux/mutex.h" }; struct mutex_waiter { struct list_head list; struct task_struct *task; }; # 106 "/home/l/latest/xxx/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 ((&lock->count)->counter) != 1; } # 135 "/home/l/latest/xxx/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); # 148 "/home/l/latest/xxx/include/linux/mutex.h" extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); # 14 "/home/l/latest/xxx/include/linux/notifier.h" 2 # 1 "/home/l/latest/xxx/include/linux/rwsem.h" 1 # 15 "/home/l/latest/xxx/include/linux/rwsem.h" # 1 "include2/asm/atomic.h" 1 # 16 "/home/l/latest/xxx/include/linux/rwsem.h" 2 struct rw_semaphore; # 1 "/home/l/latest/xxx/include/linux/rwsem-spinlock.h" 1 # 22 "/home/l/latest/xxx/include/linux/rwsem-spinlock.h" struct rwsem_waiter; # 31 "/home/l/latest/xxx/include/linux/rwsem-spinlock.h" struct rw_semaphore { __s32 activity; spinlock_t wait_lock; struct list_head wait_list; }; # 53 "/home/l/latest/xxx/include/linux/rwsem-spinlock.h" extern void __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key); # 63 "/home/l/latest/xxx/include/linux/rwsem-spinlock.h" extern void __down_read(struct rw_semaphore *sem); extern int __down_read_trylock(struct rw_semaphore *sem); extern void __down_write(struct rw_semaphore *sem); extern void __down_write_nested(struct rw_semaphore *sem, int subclass); extern int __down_write_trylock(struct rw_semaphore *sem); extern void __up_read(struct rw_semaphore *sem); extern void __up_write(struct rw_semaphore *sem); extern void __downgrade_write(struct rw_semaphore *sem); static inline int rwsem_is_locked(struct rw_semaphore *sem) { return (sem->activity != 0); } # 21 "/home/l/latest/xxx/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); # 15 "/home/l/latest/xxx/include/linux/notifier.h" 2 # 1 "/home/l/latest/xxx/include/linux/srcu.h" 1 # 30 "/home/l/latest/xxx/include/linux/srcu.h" struct srcu_struct_array { int c[2]; }; struct srcu_struct { int completed; struct srcu_struct_array *per_cpu_ref; struct mutex mutex; }; int init_srcu_struct(struct srcu_struct *sp); void cleanup_srcu_struct(struct srcu_struct *sp); int srcu_read_lock(struct srcu_struct *sp) ; void srcu_read_unlock(struct srcu_struct *sp, int idx) ; void synchronize_srcu(struct srcu_struct *sp); long srcu_batches_completed(struct srcu_struct *sp); # 16 "/home/l/latest/xxx/include/linux/notifier.h" 2 # 50 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/notifier.h" extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); # 115 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/notifier.h" static inline int notifier_from_errno(int err) { return 0x8000 | (0x0001 - err); } static inline int notifier_to_errno(int ret) { ret &= ~0x8000; return ret > 0x0001 ? 0x0001 - ret : 0; } # 247 "/home/l/latest/xxx/include/linux/notifier.h" extern struct blocking_notifier_head reboot_notifier_list; # 7 "/home/l/latest/xxx/include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; struct mem_section; # 173 "/home/l/latest/xxx/include/linux/memory_hotplug.h" static inline void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} static inline void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} static inline void pgdat_resize_init(struct pglist_data *pgdat) {} static inline unsigned zone_span_seqbegin(struct zone *zone) { return 0; } static inline int zone_span_seqretry(struct zone *zone, unsigned iv) { return 0; } static inline void zone_span_writelock(struct zone *zone) {} static inline void zone_span_writeunlock(struct zone *zone) {} static inline void zone_seqlock_init(struct zone *zone) {} static inline int mhp_notimplemented(const char *func) { printk("<4>" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func); dump_stack(); return -38; } static inline void register_page_bootmem_info_node(struct pglist_data *pgdat) { } # 207 "/home/l/latest/xxx/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); # 561 "/home/l/latest/xxx/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); # 591 "/home/l/latest/xxx/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; struct file; int min_free_kbytes_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); extern int sysctl_lowmem_reserve_ratio[4 -1]; int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); extern int numa_zonelist_order_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); extern char numa_zonelist_order[]; # 1 "/home/l/latest/xxx/include/linux/topology.h" 1 # 33 "/home/l/latest/xxx/include/linux/topology.h" # 1 "/home/l/latest/xxx/include/linux/smp.h" 1 # 11 "/home/l/latest/xxx/include/linux/smp.h" extern void cpu_idle(void); # 1 "include2/asm/smp.h" 1 # 12 "include2/asm/smp.h" # 1 "include2/asm/mpspec.h" 1 # 1 "include2/asm/mpspec_def.h" 1 # 26 "include2/asm/mpspec_def.h" struct intel_mp_floating { char mpf_signature[4]; unsigned int mpf_physptr; unsigned char mpf_length; unsigned char mpf_specification; unsigned char mpf_checksum; unsigned char mpf_feature1; unsigned char mpf_feature2; unsigned char mpf_feature3; unsigned char mpf_feature4; unsigned char mpf_feature5; }; struct mp_config_table { char mpc_signature[4]; unsigned short mpc_length; char mpc_spec; char mpc_checksum; char mpc_oem[8]; char mpc_productid[12]; unsigned int mpc_oemptr; unsigned short mpc_oemsize; unsigned short mpc_oemcount; unsigned int mpc_lapic; unsigned int reserved; }; # 72 "include2/asm/mpspec_def.h" struct mpc_config_processor { unsigned char mpc_type; unsigned char mpc_apicid; unsigned char mpc_apicver; unsigned char mpc_cpuflag; unsigned int mpc_cpufeature; unsigned int mpc_featureflag; unsigned int mpc_reserved[2]; }; struct mpc_config_bus { unsigned char mpc_type; unsigned char mpc_busid; unsigned char mpc_bustype[6]; }; # 110 "include2/asm/mpspec_def.h" struct mpc_config_ioapic { unsigned char mpc_type; unsigned char mpc_apicid; unsigned char mpc_apicver; unsigned char mpc_flags; unsigned int mpc_apicaddr; }; struct mpc_config_intsrc { unsigned char mpc_type; unsigned char mpc_irqtype; unsigned short mpc_irqflag; unsigned char mpc_srcbus; unsigned char mpc_srcbusirq; unsigned char mpc_dstapic; unsigned char mpc_dstirq; }; enum mp_irq_source_types { mp_INT = 0, mp_NMI = 1, mp_SMI = 2, mp_ExtINT = 3 }; struct mpc_config_lintsrc { unsigned char mpc_type; unsigned char mpc_irqtype; unsigned short mpc_irqflag; unsigned char mpc_srcbusid; unsigned char mpc_srcbusirq; unsigned char mpc_destapic; unsigned char mpc_destapiclint; }; struct mp_config_oemtable { char oem_signature[4]; unsigned short oem_length; char oem_rev; char oem_checksum; char mpc_oem[8]; }; # 173 "include2/asm/mpspec_def.h" enum mp_bustype { MP_BUS_ISA = 1, MP_BUS_EISA, MP_BUS_PCI, MP_BUS_MCA, }; # 7 "include2/asm/mpspec.h" 2 # 24 "include2/asm/mpspec.h" extern void early_find_smp_config(void); extern void early_get_smp_config(void); extern unsigned long mp_bus_not_pci[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; extern int mp_bus_id_to_pci_bus[256]; extern unsigned int boot_cpu_physical_apicid; extern int smp_found_config; extern int mpc_default_type; extern unsigned long mp_lapic_addr; extern void find_smp_config(void); extern void get_smp_config(void); void __attribute__ ((__section__(".cpuinit.text"))) __attribute__((__cold__)) generic_processor_info(int apicid, int version); extern void mp_register_ioapic(int id, u32 address, u32 gsi_base); extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi); extern void mp_config_acpi_legacy_irqs(void); extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low); struct physid_mask { unsigned long mask[(((255) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; }; typedef struct physid_mask physid_mask_t; # 114 "include2/asm/mpspec.h" extern physid_mask_t phys_cpu_present_map; # 13 "include2/asm/smp.h" 2 # 1 "include2/asm/apic.h" 1 # 1 "/home/l/latest/xxx/include/linux/pm.h" 1 # 25 "/home/l/latest/xxx/include/linux/pm.h" # 1 "include2/asm/atomic.h" 1 # 26 "/home/l/latest/xxx/include/linux/pm.h" 2 # 1 "include2/asm/errno.h" 1 # 27 "/home/l/latest/xxx/include/linux/pm.h" 2 typedef int pm_request_t; # 42 "/home/l/latest/xxx/include/linux/pm.h" typedef int pm_dev_t; # 55 "/home/l/latest/xxx/include/linux/pm.h" enum { PM_SYS_UNKNOWN = 0x00000000, PM_SYS_KBC = 0x41d00303, PM_SYS_COM = 0x41d00500, PM_SYS_IRDA = 0x41d00510, PM_SYS_FDC = 0x41d00700, PM_SYS_VGA = 0x41d00900, PM_SYS_PCMCIA = 0x41d00e00, }; # 74 "/home/l/latest/xxx/include/linux/pm.h" struct pm_dev; typedef int (*pm_callback)(struct pm_dev *dev, pm_request_t rqst, void *data); struct pm_dev { pm_dev_t type; unsigned long id; pm_callback callback; void *data; unsigned long flags; unsigned long state; unsigned long prev_state; struct list_head entry; }; 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; # 217 "/home/l/latest/xxx/include/linux/pm.h" struct 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); }; # 275 "/home/l/latest/xxx/include/linux/pm.h" struct pm_ext_ops { struct pm_ops base; 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); }; # 373 "/home/l/latest/xxx/include/linux/pm.h" enum dpm_state { DPM_INVALID, DPM_ON, DPM_PREPARING, DPM_RESUMING, DPM_SUSPENDING, DPM_OFF, DPM_OFF_IRQ, }; struct dev_pm_info { pm_message_t power_state; unsigned can_wakeup:1; unsigned should_wakeup:1; enum dpm_state status; struct list_head entry; }; # 448 "/home/l/latest/xxx/include/linux/pm.h" extern void device_pm_lock(void); extern void device_power_up(pm_message_t state); extern void device_resume(pm_message_t state); extern void device_pm_unlock(void); extern int device_power_down(pm_message_t state); extern int device_suspend(pm_message_t state); extern int device_prepare_suspend(pm_message_t state); extern void __suspend_report_result(const char *function, void *fn, int ret); # 479 "/home/l/latest/xxx/include/linux/pm.h" extern unsigned int pm_flags; # 5 "include2/asm/apic.h" 2 # 1 "/home/l/latest/xxx/include/linux/delay.h" 1 # 12 "/home/l/latest/xxx/include/linux/delay.h" extern unsigned long loops_per_jiffy; # 1 "include2/asm/delay.h" 1 # 11 "include2/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 "include2/asm/delay.h" void use_tsc_delay(void); # 15 "/home/l/latest/xxx/include/linux/delay.h" 2 # 44 "/home/l/latest/xxx/include/linux/delay.h" 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 "include2/asm/apic.h" 2 # 1 "include2/asm/fixmap.h" 1 # 1 "include2/asm/fixmap_64.h" 1 # 15 "include2/asm/fixmap_64.h" # 1 "include2/asm/apicdef.h" 1 # 159 "include2/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)); # 16 "include2/asm/fixmap_64.h" 2 # 1 "include2/asm/vsyscall.h" 1 enum vsyscall_num { __NR_vgettimeofday, __NR_vtime, __NR_vgetcpu, }; # 33 "include2/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); # 18 "include2/asm/fixmap_64.h" 2 # 1 "include2/asm/efi.h" 1 # 42 "include2/asm/efi.h" extern u64 efi_call0(void *fp); extern u64 efi_call1(void *fp, u64 arg1); extern u64 efi_call2(void *fp, u64 arg1, u64 arg2); extern u64 efi_call3(void *fp, u64 arg1, u64 arg2, u64 arg3); extern u64 efi_call4(void *fp, u64 arg1, u64 arg2, u64 arg3, u64 arg4); extern u64 efi_call5(void *fp, u64 arg1, u64 arg2, u64 arg3, u64 arg4, u64 arg5); extern u64 efi_call6(void *fp, u64 arg1, u64 arg2, u64 arg3, u64 arg4, u64 arg5, u64 arg6); # 89 "include2/asm/efi.h" extern void *efi_ioremap(unsigned long addr, unsigned long size); extern void efi_reserve_bootmem(void); extern void efi_call_phys_prelog(void); extern void efi_call_phys_epilog(void); # 19 "include2/asm/fixmap_64.h" 2 # 35 "include2/asm/fixmap_64.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_HPET_BASE, FIX_APIC_BASE, FIX_IO_APIC_BASE_0, FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + 128 - 1, FIX_EFI_IO_MAP_LAST_PAGE, FIX_EFI_IO_MAP_FIRST_PAGE = FIX_EFI_IO_MAP_LAST_PAGE + 100 - 1, __end_of_fixed_addresses }; extern void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags); # 76 "include2/asm/fixmap_64.h" extern void __this_fixmap_does_not_exist(void); static inline __attribute__((always_inline)) unsigned long fix_to_virt(const unsigned int idx) { # 94 "include2/asm/fixmap_64.h" if (idx >= __end_of_fixed_addresses) __this_fixmap_does_not_exist(); return (((-2UL << 20)-((1UL) << 12)) - ((idx) << 12)); } # 5 "include2/asm/fixmap.h" 2 # 7 "include2/asm/apic.h" 2 # 34 "include2/asm/apic.h" extern void generic_apic_probe(void); extern int apic_verbosity; extern int timer_over_8254; extern int local_apic_timer_c2_ok; extern int local_apic_timer_disabled; extern int apic_runs_main_timer; extern int ioapic_force; extern int disable_apic; extern int disable_apic_timer; # 61 "include2/asm/apic.h" extern int is_vsmp_box(void); static inline void native_apic_write(unsigned long reg, u32 v) { *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)) = v; } static inline void native_apic_write_atomic(unsigned long reg, u32 v) { (void)((__typeof__(*((u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg))))__xchg((unsigned long)(v), ((u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)), sizeof(*((u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg))))); } static inline u32 native_apic_read(unsigned long reg) { return *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)); } extern void apic_wait_icr_idle(void); extern u32 safe_apic_wait_icr_idle(void); extern int get_physical_broadcast(void); # 92 "include2/asm/apic.h" static inline void ack_APIC_irq(void) { # 102 "include2/asm/apic.h" native_apic_write((0xB0), (0)); } 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 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); extern int apic_is_clustered_box(void); # 14 "include2/asm/smp.h" 2 # 1 "include2/asm/io_apic.h" 1 # 17 "include2/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; # 95 "include2/asm/io_apic.h" __u32 __reserved_3 : 24, dest : 8; } __attribute__ ((packed)); extern int nr_ioapics; extern int nr_ioapic_registers[128]; struct mp_ioapic_routing { int apic_id; int gsi_base; int gsi_end; u32 pin_programmed[4]; }; extern struct mpc_config_ioapic mp_ioapics[128]; extern int mp_irq_entries; extern struct mpc_config_intsrc mp_irqs[(256 * 4)]; extern int mpc_default_type; extern int sis_apic_bug; extern int skip_ioapic_setup; static inline void disable_ioapic_setup(void) { skip_ioapic_setup = 1; } # 151 "include2/asm/io_apic.h" 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); extern int io_apic_set_pci_routing(int ioapic, int pin, int irq, int edge_level, int active_high_low); extern int (*ioapic_renumber_irq)(int ioapic, int irq); extern void ioapic_init_mappings(void); # 16 "include2/asm/smp.h" 2 # 1 "include2/asm/thread_info.h" 1 # 20 "include2/asm/smp.h" 2 extern cpumask_t cpu_callout_map; extern cpumask_t cpu_initialized; extern cpumask_t cpu_callin_map; extern void (*mtrr_hook)(void); extern void zap_low_mappings(void); extern int smp_num_siblings; extern unsigned int num_processors; extern cpumask_t cpu_initialized; extern u16 x86_cpu_to_apicid_init[]; extern u16 x86_bios_cpu_apicid_init[]; extern void *x86_cpu_to_apicid_early_ptr; extern void *x86_bios_cpu_apicid_early_ptr; extern __typeof__(cpumask_t) per_cpu__cpu_sibling_map; extern __typeof__(cpumask_t) per_cpu__cpu_core_map; extern __typeof__(u16) per_cpu__cpu_llc_id; extern __typeof__(u16) per_cpu__x86_cpu_to_apicid; extern __typeof__(u16) per_cpu__x86_bios_cpu_apicid; 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); int (*cpu_up)(unsigned cpu); void (*smp_cpus_done)(unsigned max_cpus); void (*smp_send_stop)(void); void (*smp_send_reschedule)(int cpu); int (*smp_call_function_mask)(cpumask_t mask, void (*func)(void *info), void *info, int wait); }; 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 void smp_send_reschedule(int cpu) { smp_ops.smp_send_reschedule(cpu); } static inline int smp_call_function_mask(cpumask_t mask, void (*func) (void *info), void *info, int wait) { return smp_ops.smp_call_function_mask(mask, func, info, wait); } 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); extern int __cpu_disable(void); extern void __cpu_die(unsigned int cpu); extern void prefill_possible_map(void); void smp_store_cpu_info(int id); static inline int num_booting_cpus(void) { return __cpus_weight(&(cpu_callout_map), 2); } extern unsigned disabled_cpus __attribute__ ((__section__(".cpuinit.data"))); # 164 "include2/asm/smp.h" static inline int logical_smp_processor_id(void) { return (((*(u32 *)((fix_to_virt(FIX_APIC_BASE)) + 0xD0)) >> 24) & 0xFFu); } extern unsigned int read_apic_id(void); # 1 "/home/l/latest/xxx/include/asm-x86/mach-default/mach_apicdef.h" 1 # 184 "include2/asm/smp.h" 2 static inline int hard_smp_processor_id(void) { return (((read_apic_id())>>24)&0xFFu); } # 200 "include2/asm/smp.h" extern void cpu_exit_clear(void); extern void cpu_uninit(void); extern void remove_siblinginfo(int cpu); extern void smp_alloc_memory(void); extern void lock_ipi_call_lock(void); extern void unlock_ipi_call_lock(void); # 20 "/home/l/latest/xxx/include/linux/smp.h" 2 # 29 "/home/l/latest/xxx/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 retry, int wait); int smp_call_function_single(int cpuid, void (*func) (void *info), void *info, int retry, int wait); int on_each_cpu(void (*func) (void *info), void *info, int retry, int wait); # 79 "/home/l/latest/xxx/include/linux/smp.h" void smp_prepare_boot_cpu(void); extern unsigned int setup_max_cpus; # 144 "/home/l/latest/xxx/include/linux/smp.h" void smp_setup_processor_id(void); # 34 "/home/l/latest/xxx/include/linux/topology.h" 2 # 1 "include2/asm/topology.h" 1 # 177 "include2/asm/topology.h" # 1 "/home/l/latest/xxx/include/asm-generic/topology.h" 1 # 178 "include2/asm/topology.h" 2 extern cpumask_t cpu_coregroup_map(int cpu); # 35 "/home/l/latest/xxx/include/linux/topology.h" 2 # 53 "/home/l/latest/xxx/include/linux/topology.h" void arch_update_cpu_topology(void); # 684 "/home/l/latest/xxx/include/linux/mmzone.h" 2 extern struct pglist_data contig_page_data; # 701 "/home/l/latest/xxx/include/linux/mmzone.h" extern struct pglist_data *first_online_pgdat(void); extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); extern struct zone *next_zone(struct zone *zone); # 725 "/home/l/latest/xxx/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 0; } struct zoneref *next_zones_zonelist(struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes, struct zone **zone); 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); } # 789 "/home/l/latest/xxx/include/linux/mmzone.h" # 1 "include2/asm/sparsemem.h" 1 # 790 "/home/l/latest/xxx/include/linux/mmzone.h" 2 # 832 "/home/l/latest/xxx/include/linux/mmzone.h" struct page; struct mem_section { # 846 "/home/l/latest/xxx/include/linux/mmzone.h" unsigned long section_mem_map; unsigned long *pageblock_flags; }; # 863 "/home/l/latest/xxx/include/linux/mmzone.h" extern struct mem_section *mem_section[((1UL << (44 - 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); # 888 "/home/l/latest/xxx/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 << (44 - 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 << (44 - 27))) return 0; return present_section(__nr_to_section(((pfn) >> (27 - 12)))); } # 950 "/home/l/latest/xxx/include/linux/mmzone.h" void sparse_init(void); # 966 "/home/l/latest/xxx/include/linux/mmzone.h" void memory_present(int nid, unsigned long start, unsigned long end); unsigned long __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) node_memmap_size_bytes(int, unsigned long, unsigned long); # 5 "/home/l/latest/xxx/include/linux/gfp.h" 2 struct vm_area_struct; # 108 "/home/l/latest/xxx/include/linux/gfp.h" static inline int allocflags_to_migratetype(gfp_t gfp_flags) { ({ int __ret_warn_on = !!((gfp_flags & ((( gfp_t)0x80000u)|(( gfp_t)0x100000u))) == ((( gfp_t)0x80000u)|(( gfp_t)0x100000u))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_on_slowpath("/home/l/latest/xxx/include/linux/gfp.h", 110); __builtin_expect(!!(__ret_warn_on), 0); }); if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) return 0; return (((gfp_flags & (( gfp_t)0x100000u)) != 0) << 1) | ((gfp_flags & (( gfp_t)0x80000u)) != 0); } static inline enum zone_type gfp_zone(gfp_t flags) { if (flags & (( gfp_t)0x01u)) return ZONE_DMA; if (flags & (( gfp_t)0x04u)) return ZONE_DMA32; if ((flags & ((( gfp_t)0x02u) | (( gfp_t)0x100000u))) == ((( gfp_t)0x02u) | (( gfp_t)0x100000u))) return ZONE_MOVABLE; return ZONE_NORMAL; } # 147 "/home/l/latest/xxx/include/linux/gfp.h" static inline int gfp_zonelist(gfp_t flags) { if (0 && __builtin_expect(!!(flags & (( gfp_t)0x40000u)), 0)) return 1; return 0; } # 164 "/home/l/latest/xxx/include/linux/gfp.h" static inline struct zonelist *node_zonelist(int nid, gfp_t flags) { return (&contig_page_data)->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) { } extern struct page *__alloc_pages(gfp_t, unsigned int, struct zonelist *); extern struct page * __alloc_pages_nodemask(gfp_t, unsigned int, struct zonelist *, nodemask_t *nodemask); static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (__builtin_expect(!!(order >= 11), 0)) return ((void *)0); if (nid < 0) nid = (((void)(({ typeof(_proxy_pda.cpunumber) ret__; switch (sizeof(_proxy_pda.cpunumber)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; default: __bad_pda_field(); } ret__; })),0)); return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); } # 215 "/home/l/latest/xxx/include/linux/gfp.h" extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); extern unsigned long get_zeroed_page(gfp_t gfp_mask); extern void __free_pages(struct page *page, unsigned int order); extern void free_pages(unsigned long addr, unsigned int order); extern void free_hot_page(struct page *page); extern void free_cold_page(struct page *page); 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); # 13 "/home/l/latest/xxx/include/linux/slab.h" 2 # 56 "/home/l/latest/xxx/include/linux/slab.h" void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) kmem_cache_init(void); int slab_is_available(void); struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, unsigned long, void (*)(struct kmem_cache *, 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); # 99 "/home/l/latest/xxx/include/linux/slab.h" void * krealloc(const void *, size_t, gfp_t); void kfree(const void *); size_t ksize(const void *); # 123 "/home/l/latest/xxx/include/linux/slab.h" # 1 "/home/l/latest/xxx/include/linux/slub_def.h" 1 # 11 "/home/l/latest/xxx/include/linux/slub_def.h" # 1 "/home/l/latest/xxx/include/linux/workqueue.h" 1 # 1 "/home/l/latest/xxx/include/linux/timer.h" 1 # 1 "/home/l/latest/xxx/include/linux/ktime.h" 1 # 25 "/home/l/latest/xxx/include/linux/ktime.h" # 1 "/home/l/latest/xxx/include/linux/jiffies.h" 1 # 1 "/home/l/latest/xxx/include/linux/math64.h" 1 # 1 "include2/asm/div64.h" 1 # 57 "include2/asm/div64.h" # 1 "/home/l/latest/xxx/include/asm-generic/div64.h" 1 # 58 "include2/asm/div64.h" 2 # 6 "/home/l/latest/xxx/include/linux/math64.h" 2 # 15 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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); } # 5 "/home/l/latest/xxx/include/linux/jiffies.h" 2 # 1 "/home/l/latest/xxx/include/linux/timex.h" 1 # 100 "/home/l/latest/xxx/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; }; # 195 "/home/l/latest/xxx/include/linux/timex.h" # 1 "include2/asm/timex.h" 1 # 1 "include2/asm/tsc.h" 1 # 15 "include2/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 cycles_t vget_cycles(void) { # 45 "include2/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 void init_tsc_clocksource(void); int check_tsc_unstable(void); extern void check_tsc_sync_source(int cpu); extern void check_tsc_sync_target(void); extern void tsc_calibrate(void); extern int notsc_setup(char *); # 7 "include2/asm/timex.h" 2 # 196 "/home/l/latest/xxx/include/linux/timex.h" 2 extern unsigned long tick_usec; extern unsigned long tick_nsec; extern int tickadj; extern int time_status; extern long time_maxerror; extern long time_esterror; extern long time_adjust; extern void ntp_init(void); extern void ntp_clear(void); static inline int ntp_synced(void) { return !(time_status & 0x0040); } # 244 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/jiffies.h" 2 # 81 "/home/l/latest/xxx/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; } # 173 "/home/l/latest/xxx/include/linux/jiffies.h" extern unsigned long preset_lpj; # 286 "/home/l/latest/xxx/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 u64 jiffies_64_to_usecs(const u64 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); # 26 "/home/l/latest/xxx/include/linux/ktime.h" 2 # 46 "/home/l/latest/xxx/include/linux/ktime.h" union ktime { s64 tv64; # 57 "/home/l/latest/xxx/include/linux/ktime.h" }; typedef union ktime ktime_t; # 81 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/timer.h" 2 # 1 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/debugobjects.h" struct debug_obj { struct hlist_node node; enum debug_obj_state state; void *object; struct debug_obj_descr *descr; }; # 45 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/timer.h" 2 struct tvec_base; struct timer_list { struct list_head entry; unsigned long expires; void (*function)(unsigned long); unsigned long data; struct tvec_base *base; void *start_site; char start_comm[16]; int start_pid; }; extern struct tvec_base boot_tvec_bases; # 40 "/home/l/latest/xxx/include/linux/timer.h" void init_timer(struct timer_list *timer); void init_timer_deferrable(struct timer_list *timer); static inline void destroy_timer_on_stack(struct timer_list *timer) { } static inline void init_timer_on_stack(struct timer_list *timer) { init_timer(timer); } static inline void setup_timer(struct timer_list * timer, void (*function)(unsigned long), unsigned long data) { timer->function = function; timer->data = data; init_timer(timer); } static inline void setup_timer_on_stack(struct timer_list *timer, void (*function)(unsigned long), unsigned long data) { timer->function = function; timer->data = data; init_timer_on_stack(timer); } # 82 "/home/l/latest/xxx/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(struct timer_list *timer, unsigned long expires); # 102 "/home/l/latest/xxx/include/linux/timer.h" extern unsigned long next_timer_interrupt(void); extern unsigned long get_next_timer_interrupt(unsigned long now); # 117 "/home/l/latest/xxx/include/linux/timer.h" extern void init_timer_stats(void); extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, void *timerf, char *comm, unsigned int timer_flag); extern void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr); static inline void timer_stats_timer_set_start_info(struct timer_list *timer) { __timer_stats_timer_set_start_info(timer, __builtin_return_address(0)); } static inline void timer_stats_timer_clear_start_info(struct timer_list *timer) { timer->start_site = ((void *)0); } # 163 "/home/l/latest/xxx/include/linux/timer.h" static inline void add_timer(struct timer_list *timer) { do { if (__builtin_expect(!!(timer_pending(timer)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/include/linux/timer.h"), "i" (165), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); __mod_timer(timer, timer->expires); } 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); # 9 "/home/l/latest/xxx/include/linux/workqueue.h" 2 # 1 "include2/asm/atomic.h" 1 # 13 "/home/l/latest/xxx/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; }; struct execute_work { struct work_struct work; }; # 150 "/home/l/latest/xxx/include/linux/workqueue.h" extern struct workqueue_struct * __create_workqueue_key(const char *name, int singlethread, int freezeable, struct lock_class_key *key, const char *lock_name); # 179 "/home/l/latest/xxx/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_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 int schedule_work(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 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; } 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); } # 12 "/home/l/latest/xxx/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 int offset; unsigned int objsize; }; 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 { 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)(struct kmem_cache *, void *); int inuse; int align; const char *name; struct list_head list; struct kobject kobj; # 105 "/home/l/latest/xxx/include/linux/slub_def.h" struct kmem_cache_cpu *cpu_slab[2]; }; # 126 "/home/l/latest/xxx/include/linux/slub_def.h" extern struct kmem_cache kmalloc_caches[12 + 1]; 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 (size > 64 && size <= 96) return 1; if (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; # 176 "/home/l/latest/xxx/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]; } # 201 "/home/l/latest/xxx/include/linux/slub_def.h" void *kmem_cache_alloc(struct kmem_cache *, gfp_t); void *__kmalloc(size_t size, gfp_t flags); static inline __attribute__((always_inline)) void *kmalloc_large(size_t size, gfp_t flags) { return (void *)__get_free_pages(flags | (( gfp_t)0x4000u), get_order(size)); } static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { if (size > ((1UL) << 12)) return kmalloc_large(size, flags); if (!(flags & (( gfp_t)0x01u))) { struct kmem_cache *s = kmalloc_slab(size); if (!s) return ((void *)16); return kmem_cache_alloc(s, flags); } } return __kmalloc(size, flags); } # 124 "/home/l/latest/xxx/include/linux/slab.h" 2 # 181 "/home/l/latest/xxx/include/linux/slab.h" static inline void *kcalloc(size_t n, size_t size, gfp_t flags) { if (n != 0 && size > (~0UL) / n) return ((void *)0); return __kmalloc(n * size, flags | (( gfp_t)0x8000u)); } # 199 "/home/l/latest/xxx/include/linux/slab.h" static inline void *kmalloc_node(size_t size, gfp_t flags, int node) { return kmalloc(size, flags); } static inline void *__kmalloc_node(size_t size, gfp_t flags, int node) { return __kmalloc(size, flags); } void *kmem_cache_alloc(struct kmem_cache *, gfp_t); static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int node) { return kmem_cache_alloc(cachep, flags); } # 227 "/home/l/latest/xxx/include/linux/slab.h" extern void *__kmalloc_track_caller(size_t, gfp_t, void*); # 264 "/home/l/latest/xxx/include/linux/slab.h" static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags) { return kmem_cache_alloc(k, flags | (( gfp_t)0x8000u)); } static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | (( gfp_t)0x8000u)); } extern const struct seq_operations slabinfo_op; ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *); # 6 "/home/l/latest/xxx/include/linux/percpu.h" 2 # 62 "/home/l/latest/xxx/include/linux/percpu.h" struct percpu_data { void *ptrs[1]; }; # 78 "/home/l/latest/xxx/include/linux/percpu.h" extern void *percpu_populate(void *__pdata, size_t size, gfp_t gfp, int cpu); extern void percpu_depopulate(void *__pdata, int cpu); extern int __percpu_populate_mask(void *__pdata, size_t size, gfp_t gfp, cpumask_t *mask); extern void __percpu_depopulate_mask(void *__pdata, cpumask_t *mask); extern void *__percpu_alloc_mask(size_t size, gfp_t gfp, cpumask_t *mask); extern void percpu_free(void *__pdata); # 5 "include2/asm/local.h" 2 # 1 "include2/asm/atomic.h" 1 # 8 "include2/asm/local.h" 2 typedef struct { atomic_long_t a; } local_t; static inline void local_inc(local_t *l) { asm volatile(" incq " "%0" : "+m" (l->a.counter)); } static inline void local_dec(local_t *l) { asm volatile(" decq " "%0" : "+m" (l->a.counter)); } static inline void local_add(long i, local_t *l) { asm volatile(" addq " "%1,%0" : "+m" (l->a.counter) : "ir" (i)); } static inline void local_sub(long i, local_t *l) { asm volatile(" subq " "%1,%0" : "+m" (l->a.counter) : "ir" (i)); } # 54 "include2/asm/local.h" static inline int local_sub_and_test(long i, local_t *l) { unsigned char c; asm volatile(" subq " "%2,%0; sete %1" : "+m" (l->a.counter), "=qm" (c) : "ir" (i) : "memory"); return c; } # 72 "include2/asm/local.h" static inline int local_dec_and_test(local_t *l) { unsigned char c; asm volatile(" decq " "%0; sete %1" : "+m" (l->a.counter), "=qm" (c) : : "memory"); return c != 0; } # 90 "include2/asm/local.h" static inline int local_inc_and_test(local_t *l) { unsigned char c; asm volatile(" incq " "%0; sete %1" : "+m" (l->a.counter), "=qm" (c) : : "memory"); return c != 0; } # 109 "include2/asm/local.h" static inline int local_add_negative(long i, local_t *l) { unsigned char c; asm volatile(" addq " "%2,%0; sets %1" : "+m" (l->a.counter), "=qm" (c) : "ir" (i) : "memory"); return c; } # 126 "include2/asm/local.h" static inline long local_add_return(long i, local_t *l) { long __i; __i = i; asm volatile(" xaddq " "%0, %1;" : "+r" (i), "+m" (l->a.counter) : : "memory"); return i + __i; # 149 "include2/asm/local.h" } static inline long local_sub_return(long i, local_t *l) { return local_add_return(-i, l); } # 20 "/home/l/latest/xxx/include/linux/module.h" 2 # 1 "include2/asm/module.h" 1 struct mod_arch_specific {}; # 22 "/home/l/latest/xxx/include/linux/module.h" 2 # 33 "/home/l/latest/xxx/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; }; 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); extern struct module __this_module; # 163 "/home/l/latest/xxx/include/linux/module.h" const struct exception_table_entry *search_exception_tables(unsigned long add); struct notifier_block; void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); # 220 "/home/l/latest/xxx/include/linux/module.h" struct module_ref { local_t count; } __attribute__((__aligned__((1 << (6))))); enum module_state { MODULE_STATE_LIVE, MODULE_STATE_COMING, MODULE_STATE_GOING, }; struct module { enum module_state state; struct list_head list; char name[(64 - sizeof(unsigned long))]; struct module_kobject mkobj; struct module_param_attrs *param_attrs; struct module_attribute *modinfo_attrs; const char *version; const char *srcversion; struct kobject *holders_dir; const struct kernel_symbol *syms; unsigned int num_syms; const unsigned long *crcs; const struct kernel_symbol *gpl_syms; unsigned int num_gpl_syms; const unsigned long *gpl_crcs; const struct kernel_symbol *unused_syms; unsigned int num_unused_syms; const unsigned long *unused_crcs; const struct kernel_symbol *unused_gpl_syms; unsigned int num_unused_gpl_syms; const unsigned long *unused_gpl_crcs; const struct kernel_symbol *gpl_future_syms; unsigned int num_gpl_future_syms; const unsigned long *gpl_future_crcs; unsigned int num_exentries; const struct exception_table_entry *extable; int (*init)(void); void *module_init; void *module_core; unsigned long init_size, core_size; unsigned long init_text_size, core_text_size; void *unwind_info; struct mod_arch_specific arch; unsigned int taints; struct list_head bug_list; struct bug_entry *bug_table; unsigned num_bugs; struct module_ref ref[2]; struct list_head modules_which_use_me; struct task_struct *waiter; void (*exit)(void); Elf64_Sym *symtab; unsigned long num_symtab; char *strtab; struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; void *percpu; char *args; }; static inline int module_is_live(struct module *mod) { return mod->state != MODULE_STATE_GOING; } struct module *module_text_address(unsigned long addr); struct module *__module_text_address(unsigned long addr); int is_module_address(unsigned long addr); int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *name, char *module_name, int *exported); unsigned long module_kallsyms_lookup_name(const char *name); extern void __module_put_and_exit(struct module *mod, long code) __attribute__((noreturn)); unsigned int module_refcount(struct module *mod); void __symbol_put(const char *symbol); void symbol_put_addr(void *addr); static inline void __module_get(struct module *module) { if (module) { do { if (__builtin_expect(!!(module_refcount(module) == 0), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/include/linux/module.h"), "i" (386), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); local_inc(&module->ref[({ do { } while (0); ({ typeof(_proxy_pda.cpunumber) ret__; switch (sizeof(_proxy_pda.cpunumber)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; default: __bad_pda_field(); } ret__; }); })].count); do { } while (0); } } static inline int try_module_get(struct module *module) { int ret = 1; if (module) { unsigned int cpu = ({ do { } while (0); ({ typeof(_proxy_pda.cpunumber) ret__; switch (sizeof(_proxy_pda.cpunumber)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,cpunumber)), "m" (_proxy_pda.cpunumber)); break; default: __bad_pda_field(); } ret__; }); }); if (__builtin_expect(!!(module_is_live(module)), 1)) local_inc(&module->ref[cpu].count); else ret = 0; do { } while (0); } return ret; } extern void module_put(struct module *module); # 435 "/home/l/latest/xxx/include/linux/module.h" const char *module_address_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char **modname, char *namebuf); int lookup_module_symbol_name(unsigned long addr, char *symname); int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); const struct exception_table_entry *search_module_extables(unsigned long addr); int register_module_notifier(struct notifier_block * nb); int unregister_module_notifier(struct notifier_block * nb); extern void print_modules(void); extern void module_update_markers(void); # 559 "/home/l/latest/xxx/include/linux/module.h" 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); # 51 "/home/l/latest/xxx/drivers/usb/class/usblp.c" 2 # 1 "/home/l/latest/xxx/include/linux/sched.h" 1 # 44 "/home/l/latest/xxx/include/linux/sched.h" struct sched_param { int sched_priority; }; # 1 "/home/l/latest/xxx/include/linux/capability.h" 1 # 18 "/home/l/latest/xxx/include/linux/capability.h" struct task_struct; # 40 "/home/l/latest/xxx/include/linux/capability.h" typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; # 72 "/home/l/latest/xxx/include/linux/capability.h" struct vfs_cap_data { __le32 magic_etc; struct { __le32 permitted; __le32 inheritable; } data[2]; }; typedef struct kernel_cap_struct { __u32 cap[2]; } kernel_cap_t; # 403 "/home/l/latest/xxx/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; } 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 = {{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 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 = {{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 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 = {{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 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 = {{ ((1 << ((0) & 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 = {{ ((1 << ((0) & 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; int capable(int cap); int __capable(struct task_struct *t, int cap); # 51 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/rbtree.h" 1 # 100 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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(struct rb_node *); extern struct rb_node *rb_prev(struct rb_node *); extern struct rb_node *rb_first(struct rb_root *); extern struct rb_node *rb_last(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; } # 57 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/mm_types.h" 1 # 1 "/home/l/latest/xxx/include/linux/auxvec.h" 1 # 5 "/home/l/latest/xxx/include/linux/mm_types.h" 2 # 1 "/home/l/latest/xxx/include/linux/prio_tree.h" 1 # 14 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/mm_types.h" 2 # 1 "/home/l/latest/xxx/include/linux/completion.h" 1 # 13 "/home/l/latest/xxx/include/linux/completion.h" struct completion { unsigned int done; wait_queue_head_t wait; }; # 39 "/home/l/latest/xxx/include/linux/completion.h" static inline void init_completion(struct completion *x) { x->done = 0; init_waitqueue_head(&x->wait); } 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 void complete(struct completion *); extern void complete_all(struct completion *); # 13 "/home/l/latest/xxx/include/linux/mm_types.h" 2 # 1 "include2/asm/mmu.h" 1 # 13 "include2/asm/mmu.h" typedef struct { void *ldt; rwlock_t ldtlock; int size; struct mutex lock; void *vdso; } mm_context_t; void leave_mm(int cpu); # 15 "/home/l/latest/xxx/include/linux/mm_types.h" 2 struct address_space; typedef unsigned long mm_counter_t; # 36 "/home/l/latest/xxx/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; }; struct kmem_cache *slab; struct page *first_page; }; union { unsigned long index; void *freelist; }; struct list_head lru; # 102 "/home/l/latest/xxx/include/linux/mm_types.h" }; 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_node; struct anon_vma *anon_vma; struct vm_operations_struct * vm_ops; unsigned long vm_pgoff; struct file * vm_file; void * vm_private_data; unsigned long vm_truncate_count; }; 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; int core_waiters; struct rw_semaphore mmap_sem; spinlock_t page_table_lock; struct list_head mmlist; mm_counter_t _file_rss; mm_counter_t _anon_rss; 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 + (14 + 2) + 1))]; cpumask_t cpu_vm_mask; mm_context_t context; # 221 "/home/l/latest/xxx/include/linux/mm_types.h" unsigned int faultstamp; unsigned int token_priority; unsigned int last_interval; unsigned long flags; struct completion *core_startup_done, core_done; rwlock_t ioctx_list_lock; struct kioctx *ioctx_list; struct file *exe_file; unsigned long num_exe_file_vmas; }; # 62 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "include2/asm/semaphore.h" 1 # 1 "/home/l/latest/xxx/include/linux/semaphore.h" 1 # 16 "/home/l/latest/xxx/include/linux/semaphore.h" struct semaphore { spinlock_t lock; unsigned int count; struct list_head wait_list; }; # 34 "/home/l/latest/xxx/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) { .raw_lock = { 0 }, }, .count = val, .wait_list = { &((*sem).wait_list), &((*sem).wait_list) }, }; do { (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); # 1 "include2/asm/semaphore.h" 2 # 65 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "include2/asm/cputime.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/cputime.h" 1 typedef unsigned long cputime_t; # 24 "/home/l/latest/xxx/include/asm-generic/cputime.h" typedef u64 cputime64_t; # 1 "include2/asm/cputime.h" 2 # 68 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/sem.h" 1 # 1 "/home/l/latest/xxx/include/linux/ipc.h" 1 # 9 "/home/l/latest/xxx/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 "include2/asm/ipcbuf.h" 1 # 14 "include2/asm/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 short __pad1; unsigned short seq; unsigned short __pad2; unsigned long __unused1; unsigned long __unused2; }; # 22 "/home/l/latest/xxx/include/linux/ipc.h" 2 # 57 "/home/l/latest/xxx/include/linux/ipc.h" struct ipc_kludge { struct msgbuf *msgp; long msgtyp; }; # 88 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/sem.h" 2 # 23 "/home/l/latest/xxx/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 "include2/asm/sembuf.h" 1 # 13 "include2/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 "/home/l/latest/xxx/include/linux/sem.h" 2 struct sembuf { unsigned short sem_num; short sem_op; short sem_flg; }; union semun { int val; struct semid_ds *buf; unsigned short *array; struct seminfo *__buf; void *__pad; }; struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; # 80 "/home/l/latest/xxx/include/linux/sem.h" # 1 "include2/asm/atomic.h" 1 # 81 "/home/l/latest/xxx/include/linux/sem.h" 2 struct task_struct; struct sem { int semval; int sempid; }; struct sem_array { struct kern_ipc_perm sem_perm; time_t sem_otime; time_t sem_ctime; struct sem *sem_base; struct sem_queue *sem_pending; struct sem_queue **sem_pending_last; struct sem_undo *undo; unsigned long sem_nsems; }; struct sem_queue { struct sem_queue * next; struct sem_queue ** prev; struct task_struct* sleeper; struct sem_undo * undo; int pid; int status; struct sem_array * sma; int id; struct sembuf * sops; int nsops; int alter; }; struct sem_undo { struct sem_undo * proc_next; struct sem_undo * id_next; int semid; short * semadj; }; struct sem_undo_list { atomic_t refcnt; spinlock_t lock; struct sem_undo *proc_list; }; struct sysv_sem { struct sem_undo_list *undo_list; }; extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); extern void exit_sem(struct task_struct *tsk); # 71 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/signal.h" 1 # 1 "include2/asm/signal.h" 1 # 10 "include2/asm/signal.h" struct siginfo; # 28 "include2/asm/signal.h" typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 64)]; } sigset_t; # 120 "include2/asm/signal.h" # 1 "/home/l/latest/xxx/include/asm-generic/signal.h" 1 # 17 "/home/l/latest/xxx/include/asm-generic/signal.h" typedef void __signalfn_t(int); typedef __signalfn_t *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t *__sigrestore_t; # 121 "include2/asm/signal.h" 2 # 162 "include2/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 *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 5 "/home/l/latest/xxx/include/linux/signal.h" 2 # 1 "include2/asm/siginfo.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 40 "/home/l/latest/xxx/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 { pid_t _pid; uid_t _uid; } _kill; struct { timer_t _tid; int _overrun; char _pad[sizeof( uid_t) - sizeof(int)]; sigval_t _sigval; int _sys_private; } _timer; struct { pid_t _pid; uid_t _uid; sigval_t _sigval; } _rt; struct { pid_t _pid; uid_t _uid; int _status; clock_t _utime; clock_t _stime; } _sigchld; struct { void *_addr; } _sigfault; struct { long _band; int _fd; } _sigpoll; } _sifields; } siginfo_t; # 251 "/home/l/latest/xxx/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 *to, struct siginfo *from); # 9 "include2/asm/siginfo.h" 2 # 6 "/home/l/latest/xxx/include/linux/signal.h" 2 # 14 "/home/l/latest/xxx/include/linux/signal.h" struct sigqueue { struct list_head list; int flags; siginfo_t info; struct user_struct *user; }; struct sigpending { struct list_head list; sigset_t signal; }; # 38 "/home/l/latest/xxx/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; } } # 119 "/home/l/latest/xxx/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(); } } # 149 "/home/l/latest/xxx/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 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_sigpending(void *, 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); # 373 "/home/l/latest/xxx/include/linux/signal.h" void signals_init(void); # 72 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/fs_struct.h" 1 # 1 "/home/l/latest/xxx/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 *); # 5 "/home/l/latest/xxx/include/linux/fs_struct.h" 2 struct fs_struct { atomic_t count; rwlock_t lock; int umask; struct path root, pwd, altroot; }; extern struct kmem_cache *fs_cachep; extern void exit_fs(struct task_struct *); extern void set_fs_altroot(void); extern void set_fs_root(struct fs_struct *, struct path *); extern void set_fs_pwd(struct fs_struct *, struct path *); extern struct fs_struct *copy_fs_struct(struct fs_struct *); extern void put_fs_struct(struct fs_struct *); # 73 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/pid.h" 1 # 1 "/home/l/latest/xxx/include/linux/rcupdate.h" 1 # 50 "/home/l/latest/xxx/include/linux/rcupdate.h" struct rcu_head { struct rcu_head *next; void (*func)(struct rcu_head *head); }; # 1 "/home/l/latest/xxx/include/linux/rcuclassic.h" 1 # 45 "/home/l/latest/xxx/include/linux/rcuclassic.h" struct rcu_ctrlblk { long cur; long completed; int next_pending; int signaled; spinlock_t lock __attribute__((__aligned__(1 << ((6))))); cpumask_t cpumask; } __attribute__((__aligned__(1 << ((6))))); static inline int rcu_batch_before(long a, long b) { return (a - b) < 0; } static inline int rcu_batch_after(long a, long b) { return (a - b) > 0; } struct rcu_data { long quiescbatch; int passed_quiesc; int qs_pending; long batch; struct rcu_head *nxtlist; struct rcu_head **nxttail; long qlen; struct rcu_head *curlist; struct rcu_head **curtail; struct rcu_head *donelist; struct rcu_head **donetail; long blimit; int cpu; struct rcu_head barrier; }; extern __typeof__(struct rcu_data) per_cpu__rcu_data; extern __typeof__(struct rcu_data) per_cpu__rcu_bh_data; static inline void rcu_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__rcu_data))); (typeof((&per_cpu__rcu_data))) (__ptr + (((((_cpu_pda[cpu])->data_offset))))); })); rdp->passed_quiesc = 1; } static inline void rcu_bh_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__rcu_bh_data))); (typeof((&per_cpu__rcu_bh_data))) (__ptr + (((((_cpu_pda[cpu])->data_offset))))); })); rdp->passed_quiesc = 1; } extern int rcu_pending(int cpu); extern int rcu_needs_cpu(int cpu); # 156 "/home/l/latest/xxx/include/linux/rcuclassic.h" extern void __rcu_init(void); extern void rcu_check_callbacks(int cpu, int user); extern void rcu_restart_cpu(int cpu); extern long rcu_batches_completed(void); extern long rcu_batches_completed_bh(void); # 57 "/home/l/latest/xxx/include/linux/rcupdate.h" 2 # 204 "/home/l/latest/xxx/include/linux/rcupdate.h" struct rcu_synchronize { struct rcu_head head; struct completion completion; }; extern void wakeme_after_rcu(struct rcu_head *head); # 252 "/home/l/latest/xxx/include/linux/rcupdate.h" extern void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *head)); # 273 "/home/l/latest/xxx/include/linux/rcupdate.h" extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); extern void synchronize_rcu(void); extern void rcu_barrier(void); extern void rcu_barrier_bh(void); extern void rcu_barrier_sched(void); extern void rcu_init(void); extern int rcu_needs_cpu(int cpu); # 5 "/home/l/latest/xxx/include/linux/pid.h" 2 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; # 50 "/home/l/latest/xxx/include/linux/pid.h" struct upid { int nr; struct pid_namespace *ns; struct hlist_node pid_chain; }; struct pid { atomic_t count; struct hlist_head tasks[PIDTYPE_MAX]; struct rcu_head rcu; unsigned int level; 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; # 113 "/home/l/latest/xxx/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_pid(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); # 138 "/home/l/latest/xxx/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); # 76 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/proportions.h" 1 # 12 "/home/l/latest/xxx/include/linux/proportions.h" # 1 "/home/l/latest/xxx/include/linux/percpu_counter.h" 1 # 18 "/home/l/latest/xxx/include/linux/percpu_counter.h" struct percpu_counter { spinlock_t lock; s64 count; struct list_head list; s32 *counters; }; int percpu_counter_init(struct percpu_counter *fbc, s64 amount); int percpu_counter_init_irq(struct percpu_counter *fbc, s64 amount); 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, (2*4)); } 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; } # 132 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 { do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); __prop_inc_percpu(pd, pl); do { if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); } # 89 "/home/l/latest/xxx/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; int shift; unsigned long period; 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 { do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); __prop_inc_single(pd, pl); do { if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); } # 79 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/seccomp.h" 1 # 1 "include2/asm/seccomp.h" 1 # 1 "include2/asm/seccomp_64.h" 1 # 11 "include2/asm/seccomp_64.h" # 1 "/home/l/latest/xxx/include/linux/unistd.h" 1 # 1 "include2/asm/unistd.h" 1 # 1 "include2/asm/unistd_64.h" 1 # 16 "include2/asm/unistd_64.h" # 6 "include2/asm/unistd.h" 2 # 8 "/home/l/latest/xxx/include/linux/unistd.h" 2 # 12 "include2/asm/seccomp_64.h" 2 # 1 "include2/asm/ia32_unistd.h" 1 # 13 "include2/asm/seccomp_64.h" 2 # 5 "include2/asm/seccomp.h" 2 # 9 "/home/l/latest/xxx/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); # 80 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/rtmutex.h" 1 # 16 "/home/l/latest/xxx/include/linux/rtmutex.h" # 1 "/home/l/latest/xxx/include/linux/plist.h" 1 # 80 "/home/l/latest/xxx/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; }; # 127 "/home/l/latest/xxx/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_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); # 195 "/home/l/latest/xxx/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); } # 234 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/rtmutex.h" 2 # 26 "/home/l/latest/xxx/include/linux/rtmutex.h" struct rt_mutex { 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; } # 80 "/home/l/latest/xxx/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); # 82 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/resource.h" 1 struct task_struct; # 24 "/home/l/latest/xxx/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; }; # 71 "/home/l/latest/xxx/include/linux/resource.h" # 1 "include2/asm/resource.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/resource.h" 1 # 1 "include2/asm/resource.h" 2 # 72 "/home/l/latest/xxx/include/linux/resource.h" 2 int getrusage(struct task_struct *p, int who, struct rusage *ru); # 86 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/hrtimer.h" 1 # 24 "/home/l/latest/xxx/include/linux/hrtimer.h" struct hrtimer_clock_base; struct hrtimer_cpu_base; enum hrtimer_mode { HRTIMER_MODE_ABS, HRTIMER_MODE_REL, }; enum hrtimer_restart { HRTIMER_NORESTART, HRTIMER_RESTART, }; # 53 "/home/l/latest/xxx/include/linux/hrtimer.h" enum hrtimer_cb_mode { HRTIMER_CB_SOFTIRQ, HRTIMER_CB_IRQSAFE, HRTIMER_CB_IRQSAFE_NO_RESTART, HRTIMER_CB_IRQSAFE_NO_SOFTIRQ, }; # 112 "/home/l/latest/xxx/include/linux/hrtimer.h" struct hrtimer { struct rb_node node; ktime_t expires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; unsigned long state; enum hrtimer_cb_mode cb_mode; struct list_head cb_entry; void *start_site; char start_comm[16]; int start_pid; }; # 134 "/home/l/latest/xxx/include/linux/hrtimer.h" struct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; # 153 "/home/l/latest/xxx/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 (*get_softirq_time)(void); ktime_t softirq_time; ktime_t offset; int (*reprogram)(struct hrtimer *t, struct hrtimer_clock_base *b, ktime_t n); }; # 189 "/home/l/latest/xxx/include/linux/hrtimer.h" struct hrtimer_cpu_base { spinlock_t lock; struct hrtimer_clock_base clock_base[2]; struct list_head cb_pending; ktime_t expires_next; int hres_active; unsigned long nr_events; }; struct clock_event_device; extern void clock_was_set(void); extern void hres_timers_resume(void); extern void hrtimer_interrupt(struct clock_event_device *dev); static inline ktime_t hrtimer_cb_get_time(struct hrtimer *timer) { return timer->base->get_time(); } static inline int hrtimer_is_hres_active(struct hrtimer *timer) { return timer->base->cpu_base->hres_active; } # 260 "/home/l/latest/xxx/include/linux/hrtimer.h" extern ktime_t ktime_get(void); extern ktime_t ktime_get_real(void); 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_cancel(struct hrtimer *timer); extern int hrtimer_try_to_cancel(struct hrtimer *timer); static inline int hrtimer_restart(struct hrtimer *timer) { return hrtimer_start(timer, timer->expires, 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 | 0x04); } 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 *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 void hrtimer_run_queues(void); extern void hrtimer_run_pending(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) hrtimers_init(void); # 354 "/home/l/latest/xxx/include/linux/hrtimer.h" extern void sysrq_timer_list_show(void); extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, void *timerf, char *comm, unsigned int timer_flag); static inline void timer_stats_account_hrtimer(struct hrtimer *timer) { timer_stats_update_stats(timer, timer->start_pid, timer->start_site, timer->function, timer->start_comm, 0); } extern void __timer_stats_hrtimer_set_start_info(struct hrtimer *timer, void *addr); static inline void timer_stats_hrtimer_set_start_info(struct hrtimer *timer) { __timer_stats_hrtimer_set_start_info(timer, __builtin_return_address(0)); } static inline void timer_stats_hrtimer_clear_start_info(struct hrtimer *timer) { timer->start_site = ((void *)0); } # 88 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/task_io_accounting.h" 1 # 35 "/home/l/latest/xxx/include/linux/task_io_accounting.h" struct task_io_accounting { }; # 89 "/home/l/latest/xxx/include/linux/sched.h" 2 # 1 "/home/l/latest/xxx/include/linux/latencytop.h" 1 # 33 "/home/l/latest/xxx/include/linux/latencytop.h" static inline void account_scheduler_latency(struct task_struct *task, int usecs, int inter) { } static inline void clear_all_latency_tracing(struct task_struct *p) { } # 91 "/home/l/latest/xxx/include/linux/sched.h" 2 struct mem_cgroup; struct exec_domain; struct futex_pi_state; struct robust_list_head; struct bio; # 116 "/home/l/latest/xxx/include/linux/sched.h" extern unsigned long avenrun[]; # 130 "/home/l/latest/xxx/include/linux/sched.h" extern unsigned long total_forks; extern int nr_threads; extern __typeof__(unsigned long) per_cpu__process_counts; extern int nr_processes(void); extern unsigned long nr_running(void); extern unsigned long nr_uninterruptible(void); extern unsigned long nr_active(void); extern unsigned long nr_iowait(void); extern unsigned long weighted_cpuload(const int cpu); struct seq_file; struct cfs_rq; struct task_group; static inline void proc_sched_show_task(struct task_struct *p, struct seq_file *m) { } static inline void proc_sched_set_task(struct task_struct *p) { } static inline void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) { } # 237 "/home/l/latest/xxx/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(void); extern cpumask_t nohz_cpu_mask; extern int select_nohz_load_balancer(int cpu); extern unsigned long rt_needs_cpu(int cpu); 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 account_process_tick(struct task_struct *task, int user); extern void update_process_times(int user); extern void scheduler_tick(void); extern void hrtick_resched(void); extern void sched_show_task(struct task_struct *p); extern void softlockup_tick(void); extern void spawn_softlockup_task(void); extern void touch_softlockup_watchdog(void); extern void touch_all_softlockup_watchdogs(void); extern unsigned long softlockup_thresh; extern unsigned long sysctl_hung_task_check_count; extern unsigned long sysctl_hung_task_timeout_secs; extern unsigned long sysctl_hung_task_warnings; # 322 "/home/l/latest/xxx/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); struct nsproxy; struct user_namespace; extern int sysctl_max_map_count; # 1 "/home/l/latest/xxx/include/linux/aio.h" 1 # 1 "/home/l/latest/xxx/include/linux/aio_abi.h" 1 # 32 "/home/l/latest/xxx/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, }; # 57 "/home/l/latest/xxx/include/linux/aio_abi.h" struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; # 78 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/aio.h" 2 # 1 "/home/l/latest/xxx/include/linux/uio.h" 1 # 16 "/home/l/latest/xxx/include/linux/uio.h" struct iovec { void *iov_base; __kernel_size_t iov_len; }; struct kvec { void *iov_base; size_t iov_len; }; # 45 "/home/l/latest/xxx/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); # 8 "/home/l/latest/xxx/include/linux/aio.h" 2 # 1 "include2/asm/atomic.h" 1 # 10 "/home/l/latest/xxx/include/linux/aio.h" 2 struct kioctx; # 87 "/home/l/latest/xxx/include/linux/aio.h" struct kiocb { struct list_head ki_run_list; unsigned long ki_flags; int ki_users; unsigned ki_key; struct file *ki_filp; struct kioctx *ki_ctx; int (*ki_cancel)(struct kiocb *, struct io_event *); ssize_t (*ki_retry)(struct kiocb *); void (*ki_dtor)(struct kiocb *); union { void *user; struct task_struct *tsk; } ki_obj; __u64 ki_user_data; wait_queue_t ki_wait; loff_t ki_pos; void *private; unsigned short ki_opcode; size_t ki_nbytes; char *ki_buf; size_t ki_left; struct iovec ki_inline_vec; struct iovec *ki_iovec; unsigned long ki_nr_segs; unsigned long ki_cur_seg; struct list_head ki_list; struct file *ki_eventfd; }; # 149 "/home/l/latest/xxx/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 kioctx *next; 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; }; 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); 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; # 343 "/home/l/latest/xxx/include/linux/sched.h" 2 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); # 390 "/home/l/latest/xxx/include/linux/sched.h" extern void set_dumpable(struct mm_struct *mm, int value); extern int get_dumpable(struct mm_struct *mm); # 412 "/home/l/latest/xxx/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; }; # 434 "/home/l/latest/xxx/include/linux/sched.h" struct signal_struct { 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; struct task_struct *group_exit_task; int notify_count; 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; cputime_t it_prof_expires, it_virt_expires; cputime_t it_prof_incr, it_virt_incr; # 479 "/home/l/latest/xxx/include/linux/sched.h" union { pid_t pgrp __attribute__((deprecated)); pid_t __pgrp; }; struct pid *tty_old_pgrp; union { pid_t session __attribute__((deprecated)); pid_t __session; }; int leader; struct tty_struct *tty; cputime_t utime, stime, cutime, cstime; cputime_t gtime; cputime_t cgtime; unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; unsigned long inblock, oublock, cinblock, coublock; unsigned long long sum_sched_runtime; # 526 "/home/l/latest/xxx/include/linux/sched.h" struct rlimit rlim[16]; struct list_head cpu_timers[3]; # 546 "/home/l/latest/xxx/include/linux/sched.h" }; # 570 "/home/l/latest/xxx/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 inotify_watches; atomic_t inotify_devs; unsigned long mq_bytes; unsigned long locked_shm; struct hlist_node uidhash_node; uid_t uid; struct task_group *tg; struct kobject kobj; struct work_struct work; }; 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; # 673 "/home/l/latest/xxx/include/linux/sched.h" static inline int sched_info_on(void) { return 0; } enum cpu_idle_type { CPU_IDLE, CPU_NOT_IDLE, CPU_NEWLY_IDLE, CPU_MAX_IDLE_TYPES }; # 728 "/home/l/latest/xxx/include/linux/sched.h" struct sched_group { struct sched_group *next; cpumask_t cpumask; unsigned int __cpu_power; u32 reciprocal_cpu_power; }; struct sched_domain { struct sched_domain *parent; struct sched_domain *child; struct sched_group *groups; cpumask_t span; 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; int flags; unsigned long last_balance; unsigned int balance_interval; unsigned int nr_balance_failed; # 799 "/home/l/latest/xxx/include/linux/sched.h" }; extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); extern int arch_reinit_sched_domains(void); # 812 "/home/l/latest/xxx/include/linux/sched.h" static inline int above_background_load(void) { unsigned long cpu; for (((cpu)) = __first_cpu(&(cpu_online_map)); ((cpu)) < 2; ((cpu)) = __next_cpu((((cpu))), &((cpu_online_map)))) { if (weighted_cpuload(cpu) >= (1L << 10)) return 1; } return 0; } struct io_context; struct group_info { int ngroups; atomic_t usage; gid_t small_block[32]; int nblocks; gid_t *blocks[0]; }; # 849 "/home/l/latest/xxx/include/linux/sched.h" extern struct group_info *groups_alloc(int gidsetsize); extern void groups_free(struct group_info *group_info); extern int set_current_groups(struct group_info *group_info); extern int groups_search(struct group_info *group_info, gid_t grp); 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); void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); void (*yield_task) (struct rq *rq); int (*select_task_rq)(struct task_struct *p, int sync); void (*check_preempt_curr) (struct rq *rq, struct task_struct *p); struct task_struct * (*pick_next_task) (struct rq *rq); void (*put_prev_task) (struct rq *rq, struct task_struct *p); unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, struct rq *busiest, unsigned long max_load_move, struct sched_domain *sd, enum cpu_idle_type idle, int *all_pinned, int *this_best_prio); int (*move_one_task) (struct rq *this_rq, int this_cpu, struct rq *busiest, struct sched_domain *sd, enum cpu_idle_type idle); void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); void (*post_schedule) (struct rq *this_rq); void (*task_wake_up) (struct rq *this_rq, struct task_struct *task); void (*set_curr_task) (struct rq *rq); void (*task_tick) (struct rq *rq, struct task_struct *p, int queued); void (*task_new) (struct rq *rq, struct task_struct *p); void (*set_cpus_allowed)(struct task_struct *p, const cpumask_t *newmask); void (*join_domain)(struct rq *rq); void (*leave_domain)(struct rq *rq); 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); void (*moved_group) (struct task_struct *p); }; struct load_weight { unsigned long weight, inv_weight; }; # 933 "/home/l/latest/xxx/include/linux/sched.h" struct sched_entity { struct load_weight load; struct rb_node run_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; # 981 "/home/l/latest/xxx/include/linux/sched.h" struct sched_entity *parent; struct cfs_rq *cfs_rq; struct cfs_rq *my_q; }; struct sched_rt_entity { struct list_head run_list; unsigned int time_slice; unsigned long timeout; int nr_cpus_allowed; # 1002 "/home/l/latest/xxx/include/linux/sched.h" }; 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; const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; # 1037 "/home/l/latest/xxx/include/linux/sched.h" unsigned char fpu_counter; s8 oomkilladj; unsigned int policy; cpumask_t cpus_allowed; # 1055 "/home/l/latest/xxx/include/linux/sched.h" struct list_head tasks; struct list_head ptrace_children; struct list_head ptrace_list; struct mm_struct *mm, *active_mm; struct linux_binfmt *binfmt; int exit_state; int exit_code, exit_signal; int pdeath_signal; unsigned int personality; unsigned did_exec: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 pid_link pids[PIDTYPE_MAX]; struct list_head thread_group; struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; unsigned int rt_priority; 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; cputime_t it_prof_expires, it_virt_expires; unsigned long long it_sched_expires; struct list_head cpu_timers[3]; uid_t uid,euid,suid,fsuid; gid_t gid,egid,sgid,fsgid; struct group_info *group_info; kernel_cap_t cap_effective, cap_inheritable, cap_permitted, cap_bset; unsigned securebits; struct user_struct *user; char comm[16]; int link_count, total_link_count; struct sysv_sem sysvsem; unsigned long last_switch_timestamp; unsigned long last_switch_count; 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; seccomp_t seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; spinlock_t pi_lock; struct plist_head pi_waiters; struct rt_mutex_waiter *pi_blocked_on; # 1218 "/home/l/latest/xxx/include/linux/sched.h" void *journal_info; struct bio *bio_list, **bio_tail; 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; # 1258 "/home/l/latest/xxx/include/linux/sched.h" struct robust_list_head *robust_list; struct compat_robust_list_head *compat_robust_list; struct list_head pi_state_list; struct futex_pi_state *pi_state_cache; atomic_t fs_excl; struct rcu_head rcu; struct pipe_inode_info *splice_pipe; struct prop_local_single dirties; }; # 1304 "/home/l/latest/xxx/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 void set_task_session(struct task_struct *tsk, pid_t session) { tsk->signal->__session = session; } static inline void set_task_pgrp(struct task_struct *tsk, pid_t pgrp) { tsk->signal->__pgrp = pgrp; } 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; # 1362 "/home/l/latest/xxx/include/linux/sched.h" static inline pid_t task_pid_nr(struct task_struct *tsk) { return tsk->pid; } pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); static inline pid_t task_pid_vnr(struct task_struct *tsk) { return pid_vnr(task_pid(tsk)); } 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(struct task_struct *tsk) { return tsk->signal->__pgrp; } pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); static inline pid_t task_pgrp_vnr(struct task_struct *tsk) { return pid_vnr(task_pgrp(tsk)); } static inline pid_t task_session_nr(struct task_struct *tsk) { return tsk->signal->__session; } pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); static inline pid_t task_session_vnr(struct task_struct *tsk) { return pid_vnr(task_session(tsk)); } # 1422 "/home/l/latest/xxx/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); } # 1514 "/home/l/latest/xxx/include/linux/sched.h" extern int set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask); # 1525 "/home/l/latest/xxx/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); } extern unsigned long long sched_clock(void); extern unsigned long long cpu_clock(int cpu); extern unsigned long long task_sched_runtime(struct task_struct *task); extern void sched_exec(void); extern void sched_clock_idle_sleep_event(void); extern void sched_clock_idle_wakeup_event(u64 delta_ns); extern void idle_task_exit(void); extern void sched_idle_next(void); extern void wake_up_idle_cpu(int cpu); # 1578 "/home/l/latest/xxx/include/linux/sched.h" extern unsigned int sysctl_sched_rt_period; extern int sysctl_sched_rt_runtime; int sched_rt_handler(struct ctl_table *table, int write, struct file *filp, void *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); # 1599 "/home/l/latest/xxx/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 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 __attribute__((deprecated)) init_mm; extern struct pid_namespace init_pid_ns; # 1655 "/home/l/latest/xxx/include/linux/sched.h" extern struct task_struct *find_task_by_pid_type_ns(int type, int pid, struct pid_namespace *ns); static inline struct task_struct *__attribute__((deprecated)) find_task_by_pid(pid_t nr) { return find_task_by_pid_type_ns(PIDTYPE_PID, nr, &init_pid_ns); } 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 switch_uid(struct user_struct *); extern void release_uids(struct user_namespace *ns); # 1 "include2/asm/current.h" 1 # 1680 "/home/l/latest/xxx/include/linux/sched.h" 2 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 int in_group_p(gid_t); extern int in_egroup_p(gid_t); extern void proc_caches_init(void); 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; flags = _spin_lock_irqsave(&tsk->sighand->siglock); 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 void do_notify_parent(struct task_struct *, int); extern void force_sig(int, struct task_struct *); extern void force_sig_specific(int, struct task_struct *); extern int send_sig(int, struct task_struct *, int); extern void zap_other_threads(struct task_struct *p); extern int kill_proc(pid_t, int, int); extern struct sigqueue *sigqueue_alloc(void); extern void sigqueue_free(struct sigqueue *); extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long); static inline int kill_cad_pid(int sig, int priv) { return kill_pid(cad_pid, sig, priv); } static inline int is_si_special(const struct siginfo *info) { return info <= ((struct siginfo *) 2); } static inline int on_sig_stack(unsigned long sp) { return (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 int copy_thread(int, 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_signal(struct signal_struct *); extern void __cleanup_sighand(struct sighand_struct *); extern void exit_itimers(struct signal_struct *); 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 * *, char * *, struct pt_regs *); extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int *, int *); 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_inactive(struct task_struct * p); # 1844 "/home/l/latest/xxx/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); } # 1879 "/home/l/latest/xxx/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) { do {__raw_spin_unlock(&(&p->alloc_lock)->raw_lock); (void)0; } while (0); } 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 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 signal_pending(struct task_struct *p) { return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0); } extern int __fatal_signal_pending(struct task_struct *p); static inline int fatal_signal_pending(struct task_struct *p) { return signal_pending(p) && __fatal_signal_pending(p); } static inline int need_resched(void) { return __builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0); } # 1984 "/home/l/latest/xxx/include/linux/sched.h" extern int _cond_resched(void); static inline int cond_resched(void) { return _cond_resched(); } extern int cond_resched_lock(spinlock_t * lock); extern int cond_resched_softirq(void); static inline int spin_needbreak(spinlock_t *lock) { return 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); # 2044 "/home/l/latest/xxx/include/linux/sched.h" extern void arch_pick_mmap_layout(struct mm_struct *mm); # 2059 "/home/l/latest/xxx/include/linux/sched.h" static inline void __trace_special(void *__tr, void *__data, unsigned long arg1, unsigned long arg2, unsigned long arg3) { } # 2076 "/home/l/latest/xxx/include/linux/sched.h" static inline void ftrace_ctx_switch(void *rq, struct task_struct *prev, struct task_struct *next) { } static inline void sched_trace_special(unsigned long p1, unsigned long p2, unsigned long p3) { } static inline void ftrace_wake_up_task(void *rq, struct task_struct *wakee, struct task_struct *curr) { } static inline void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data) { } static inline void ftrace_special(unsigned long arg1, unsigned long arg2, unsigned long arg3) { } extern long sched_setaffinity(pid_t pid, cpumask_t new_mask); extern long sched_getaffinity(pid_t pid, cpumask_t *mask); extern int sched_mc_power_savings, sched_smt_power_savings; extern void normalize_rt_tasks(void); extern struct task_group init_task_group; extern struct task_group *sched_create_group(void); extern void sched_destroy_group(struct task_group *tg); extern void sched_move_task(struct task_struct *tsk); extern int sched_group_set_shares(struct task_group *tg, unsigned long shares); extern unsigned long sched_group_shares(struct task_group *tg); # 2147 "/home/l/latest/xxx/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) { } void migration_init(void); # 2182 "/home/l/latest/xxx/include/linux/sched.h" static inline void mm_update_next_owner(struct mm_struct *mm) { } static inline void mm_init_owner(struct mm_struct *mm, struct task_struct *p) { } # 53 "/home/l/latest/xxx/drivers/usb/class/usblp.c" 2 # 1 "/home/l/latest/xxx/include/linux/poll.h" 1 # 1 "include2/asm/poll.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/poll.h" 1 # 31 "/home/l/latest/xxx/include/asm-generic/poll.h" struct pollfd { int fd; short events; short revents; }; # 1 "include2/asm/poll.h" 2 # 5 "/home/l/latest/xxx/include/linux/poll.h" 2 # 1 "/home/l/latest/xxx/include/linux/fs.h" 1 # 9 "/home/l/latest/xxx/include/linux/fs.h" # 1 "/home/l/latest/xxx/include/linux/limits.h" 1 # 10 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "/home/l/latest/xxx/include/linux/ioctl.h" 1 # 1 "include2/asm/ioctl.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/ioctl.h" 1 # 72 "/home/l/latest/xxx/include/asm-generic/ioctl.h" extern unsigned int __invalid_size_argument_for_IOC; # 1 "include2/asm/ioctl.h" 2 # 5 "/home/l/latest/xxx/include/linux/ioctl.h" 2 # 11 "/home/l/latest/xxx/include/linux/fs.h" 2 # 24 "/home/l/latest/xxx/include/linux/fs.h" extern int sysctl_nr_open; # 36 "/home/l/latest/xxx/include/linux/fs.h" struct files_stat_struct { int nr_files; int nr_free_files; int max_files; }; extern struct files_stat_struct files_stat; extern int get_max_files(void); struct inodes_stat_t { int nr_inodes; int nr_unused; int dummy[5]; }; extern struct inodes_stat_t inodes_stat; extern int leases_enable, lease_break_time; extern int dir_notify_enable; # 277 "/home/l/latest/xxx/include/linux/fs.h" # 1 "/home/l/latest/xxx/include/linux/kdev_t.h" 1 # 21 "/home/l/latest/xxx/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; } # 278 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "/home/l/latest/xxx/include/linux/dcache.h" 1 # 1 "include2/asm/atomic.h" 1 # 5 "/home/l/latest/xxx/include/linux/dcache.h" 2 # 1 "/home/l/latest/xxx/include/linux/rculist.h" 1 # 18 "/home/l/latest/xxx/include/linux/rculist.h" 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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/rculist.h" static inline void list_del_rcu(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->prev = ((void *) 0x00200200); } # 108 "/home/l/latest/xxx/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); } # 135 "/home/l/latest/xxx/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); # 157 "/home/l/latest/xxx/include/linux/rculist.h" sync(); # 167 "/home/l/latest/xxx/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; } # 261 "/home/l/latest/xxx/include/linux/rculist.h" static inline void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x00200200); } # 274 "/home/l/latest/xxx/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); } # 306 "/home/l/latest/xxx/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; } # 336 "/home/l/latest/xxx/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; } # 363 "/home/l/latest/xxx/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; } # 7 "/home/l/latest/xxx/include/linux/dcache.h" 2 struct nameidata; struct path; struct vfsmount; # 33 "/home/l/latest/xxx/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); } struct dcookie_struct; struct dentry { atomic_t d_count; unsigned int d_flags; spinlock_t d_lock; 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; struct dentry_operations *d_op; struct super_block *d_sb; void *d_fsdata; int d_mounted; unsigned char d_iname[36]; }; 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); }; # 180 "/home/l/latest/xxx/include/linux/dcache.h" extern spinlock_t dcache_lock; extern seqlock_t rename_lock; # 199 "/home/l/latest/xxx/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); do {__raw_spin_unlock(&(&dentry->d_lock)->raw_lock); (void)0; } while (0); do {__raw_spin_unlock(&(&dcache_lock)->raw_lock); (void)0; } while (0); } 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_alloc_anon(struct inode *); extern struct dentry * d_splice_alias(struct inode *, struct dentry *); 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 *); # 264 "/home/l/latest/xxx/include/linux/dcache.h" static inline void d_add(struct dentry *entry, struct inode *inode) { d_instantiate(entry, inode); d_rehash(entry); } # 278 "/home/l/latest/xxx/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_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(struct path *, char *, int); extern char *dentry_path(struct dentry *, char *, int); # 322 "/home/l/latest/xxx/include/linux/dcache.h" static inline struct dentry *dget(struct dentry *dentry) { if (dentry) { do { if (__builtin_expect(!!(!((&dentry->d_count)->counter)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/include/linux/dcache.h"), "i" (325), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); atomic_inc(&dentry->d_count); } return dentry; } extern struct dentry * dget_locked(struct dentry *); # 340 "/home/l/latest/xxx/include/linux/dcache.h" static inline int d_unhashed(struct dentry *dentry) { return (dentry->d_flags & 0x0010); } static inline struct dentry *dget_parent(struct dentry *dentry) { struct dentry *ret; _spin_lock(&dentry->d_lock); ret = dget(dentry->d_parent); do {__raw_spin_unlock(&(&dentry->d_lock)->raw_lock); (void)0; } while (0); 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 vfsmount *, struct dentry *); extern struct dentry *lookup_create(struct nameidata *nd, int is_dir); extern int sysctl_vfs_cache_pressure; # 279 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "/home/l/latest/xxx/include/linux/namei.h" 1 struct vfsmount; struct open_intent { int flags; int create_mode; struct file *file; }; enum { MAX_NESTED_LINKS = 8 }; struct nameidata { struct path path; struct qstr last; unsigned int flags; int last_type; unsigned depth; char *saved_names[MAX_NESTED_LINKS + 1]; union { struct open_intent open; } intent; }; enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; # 60 "/home/l/latest/xxx/include/linux/namei.h" extern int __user_walk(const char *, unsigned, struct nameidata *); extern int __user_walk_fd(int dfd, const char *, unsigned, struct nameidata *); extern int path_lookup(const char *, unsigned, struct nameidata *); extern int vfs_path_lookup(struct dentry *, struct vfsmount *, const char *, unsigned int, struct nameidata *); extern int __user_path_lookup_open(const char *, unsigned lookup_flags, struct nameidata *nd, int open_flags); extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)); extern struct file *nameidata_to_filp(struct nameidata *nd, int flags); extern void release_open_intent(struct nameidata *); extern struct dentry *lookup_one_len(const char *, struct dentry *, int); extern struct dentry *lookup_one_noperm(const char *, struct dentry *); extern int follow_down(struct vfsmount **, struct dentry **); extern int follow_up(struct vfsmount **, struct dentry **); extern struct dentry *lock_rename(struct dentry *, struct dentry *); extern void unlock_rename(struct dentry *, struct dentry *); static inline void nd_set_link(struct nameidata *nd, char *path) { nd->saved_names[nd->depth] = path; } static inline char *nd_get_link(struct nameidata *nd) { return nd->saved_names[nd->depth]; } # 280 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "/home/l/latest/xxx/include/linux/radix-tree.h" 1 # 41 "/home/l/latest/xxx/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; }; # 134 "/home/l/latest/xxx/include/linux/radix-tree.h" static inline void *radix_tree_deref_slot(void **pslot) { void *ret = *pslot; if (__builtin_expect(!!(radix_tree_is_indirect_ptr(ret)), 0)) ret = ((void *)-1UL); return ret; } # 149 "/home/l/latest/xxx/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.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/include/linux/radix-tree.h"), "i" (151), "i" (sizeof(struct bug_entry))); for (;;) ; } 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 long radix_tree_next_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); int radix_tree_tagged(struct radix_tree_root *root, unsigned int tag); static inline void radix_tree_preload_end(void) { do { } while (0); } # 285 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "include2/asm/atomic.h" 1 # 292 "/home/l/latest/xxx/include/linux/fs.h" 2 # 1 "include2/asm/semaphore.h" 1 # 293 "/home/l/latest/xxx/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; extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) inode_init(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) inode_init_early(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) files_init(unsigned long); 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); # 346 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/quota.h" 1 # 44 "/home/l/latest/xxx/include/linux/quota.h" typedef __kernel_uid32_t qid_t; typedef __u64 qsize_t; # 103 "/home/l/latest/xxx/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; }; # 124 "/home/l/latest/xxx/include/linux/quota.h" struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; }; # 142 "/home/l/latest/xxx/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, }; # 169 "/home/l/latest/xxx/include/linux/quota.h" # 1 "/home/l/latest/xxx/include/linux/dqblk_xfs.h" 1 # 50 "/home/l/latest/xxx/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 "/home/l/latest/xxx/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; # 170 "/home/l/latest/xxx/include/linux/quota.h" 2 # 1 "/home/l/latest/xxx/include/linux/dqblk_v1.h" 1 # 21 "/home/l/latest/xxx/include/linux/dqblk_v1.h" struct v1_mem_dqinfo { }; # 171 "/home/l/latest/xxx/include/linux/quota.h" 2 # 1 "/home/l/latest/xxx/include/linux/dqblk_v2.h" 1 # 20 "/home/l/latest/xxx/include/linux/dqblk_v2.h" struct v2_mem_dqinfo { unsigned int dqi_blocks; unsigned int dqi_free_blk; unsigned int dqi_free_entry; }; # 172 "/home/l/latest/xxx/include/linux/quota.h" 2 # 1 "include2/asm/atomic.h" 1 # 174 "/home/l/latest/xxx/include/linux/quota.h" 2 extern spinlock_t dq_data_lock; # 187 "/home/l/latest/xxx/include/linux/quota.h" struct mem_dqblk { __u32 dqb_bhardlimit; __u32 dqb_bsoftlimit; qsize_t dqb_curspace; __u32 dqb_ihardlimit; __u32 dqb_isoftlimit; __u32 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; union { struct v1_mem_dqinfo v1_i; struct v2_mem_dqinfo v2_i; } u; }; struct super_block; extern void mark_info_dirty(struct super_block *sb, int type); 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; # 253 "/home/l/latest/xxx/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 (*initialize) (struct inode *, int); int (*drop) (struct inode *); int (*alloc_space) (struct inode *, qsize_t, int); int (*alloc_inode) (const struct inode *, unsigned long); int (*free_space) (struct inode *, qsize_t); int (*free_inode) (const struct inode *, unsigned long); int (*transfer) (struct inode *, struct iattr *); int (*write_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); }; 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 (*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; struct quota_format_ops *qf_ops; struct module *qf_owner; struct quota_format_type *qf_next; }; # 330 "/home/l/latest/xxx/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]; struct quota_format_ops *ops[2]; }; # 350 "/home/l/latest/xxx/include/linux/quota.h" 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; }; # 368 "/home/l/latest/xxx/include/linux/fs.h" 2 # 395 "/home/l/latest/xxx/include/linux/fs.h" enum positive_aop_returns { AOP_WRITEPAGE_ACTIVATE = 0x80000, AOP_TRUNCATED_PAGE = 0x80001, }; struct page; struct address_space; struct writeback_control; struct iov_iter { const struct iovec *iov; unsigned long nr_segs; size_t iov_offset; size_t count; }; size_t iov_iter_copy_from_user_atomic(struct page *page, struct iov_iter *i, unsigned long offset, size_t bytes); size_t iov_iter_copy_from_user(struct page *page, struct iov_iter *i, unsigned long offset, size_t bytes); void iov_iter_advance(struct iov_iter *i, size_t bytes); int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); size_t iov_iter_single_seg_count(struct iov_iter *i); static inline 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; } 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 (*prepare_write)(struct file *, struct page *, unsigned, unsigned); int (*commit_write)(struct file *, struct page *, unsigned, unsigned); 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 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; rwlock_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; int bd_openers; struct mutex bd_mutex; struct semaphore bd_mount_sem; 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; struct backing_dev_info *bd_inode_backing_dev_info; unsigned long bd_private; }; # 559 "/home/l/latest/xxx/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; } # 592 "/home/l/latest/xxx/include/linux/fs.h" 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; u64 i_version; loff_t i_size; struct timespec i_atime; struct timespec i_mtime; struct timespec i_ctime; unsigned int i_blkbits; 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 list_head i_devices; union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; }; int i_cindex; __u32 i_generation; unsigned long i_dnotify_mask; struct dnotify_struct *i_dnotify; struct list_head inotify_watches; struct mutex inotify_mutex; unsigned long i_state; unsigned long dirtied_when; unsigned int i_flags; atomic_t i_writecount; void *i_private; }; # 670 "/home/l/latest/xxx/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 }; extern void inode_double_lock(struct inode *inode1, struct inode *inode2); extern void inode_double_unlock(struct inode *inode1, struct inode *inode2); # 692 "/home/l/latest/xxx/include/linux/fs.h" static inline loff_t i_size_read(const struct inode *inode) { # 711 "/home/l/latest/xxx/include/linux/fs.h" return inode->i_size; } static inline void i_size_write(struct inode *inode, loff_t i_size) { # 731 "/home/l/latest/xxx/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; 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; atomic_t f_count; unsigned int f_flags; mode_t f_mode; loff_t f_pos; struct fown_struct f_owner; unsigned int f_uid, f_gid; struct file_ra_state f_ra; u64 f_version; void *private_data; struct list_head f_ep_links; spinlock_t f_ep_lock; struct address_space *f_mapping; }; extern spinlock_t files_lock; # 859 "/home/l/latest/xxx/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; } # 894 "/home/l/latest/xxx/include/linux/fs.h" typedef struct files_struct *fl_owner_t; struct file_lock_operations { void (*fl_insert)(struct file_lock *); void (*fl_remove)(struct file_lock *); 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); }; # 1 "/home/l/latest/xxx/include/linux/nfs_fs_i.h" 1 # 1 "/home/l/latest/xxx/include/linux/nfs.h" 1 # 39 "/home/l/latest/xxx/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, NFSERR_REPLAY_ME = 10049 }; enum nfs_ftype { NFNON = 0, NFREG = 1, NFDIR = 2, NFBLK = 3, NFCHR = 4, NFLNK = 5, NFSOCK = 6, NFBAD = 7, NFFIFO = 8 }; # 1 "/home/l/latest/xxx/include/linux/sunrpc/msg_prot.h" 1 # 18 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/sunrpc/msg_prot.h" typedef __be32 rpc_fraghdr; # 131 "/home/l/latest/xxx/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 "/home/l/latest/xxx/include/linux/nfs.h" enum nfs3_stable_how { NFS_UNSTABLE = 0, NFS_DATA_SYNC = 1, NFS_FILE_SYNC = 2 }; # 7 "/home/l/latest/xxx/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; }; # 916 "/home/l/latest/xxx/include/linux/fs.h" 2 struct file_lock { struct file_lock *fl_next; struct list_head fl_link; struct list_head fl_block; fl_owner_t fl_owner; unsigned int fl_pid; struct pid *fl_nspid; wait_queue_head_t fl_wait; struct file *fl_file; unsigned char fl_flags; unsigned char fl_type; loff_t fl_start; loff_t fl_end; struct fasync_struct * fl_fasync; unsigned long fl_break_time; struct file_lock_operations *fl_ops; 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; }; # 953 "/home/l/latest/xxx/include/linux/fs.h" # 1 "/home/l/latest/xxx/include/linux/fcntl.h" 1 # 1 "include2/asm/fcntl.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/fcntl.h" 1 # 117 "/home/l/latest/xxx/include/asm-generic/fcntl.h" struct flock { short l_type; short l_whence; off_t l_start; off_t l_len; pid_t l_pid; }; # 1 "include2/asm/fcntl.h" 2 # 5 "/home/l/latest/xxx/include/linux/fcntl.h" 2 # 954 "/home/l/latest/xxx/include/linux/fs.h" 2 extern int fcntl_getlk(struct file *, struct flock *); extern int fcntl_setlk(unsigned int, struct file *, unsigned int, struct flock *); extern void send_sigio(struct fown_struct *fown, int fd, int band); extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg); extern int fcntl_getlease(struct file *filp); extern int do_sync_mapping_range(struct address_space *mapping, loff_t offset, loff_t endbyte, unsigned int flags); extern void locks_init_lock(struct file_lock *); extern void locks_copy_lock(struct file_lock *, struct file_lock *); extern void locks_remove_posix(struct file *, fl_owner_t); extern void locks_remove_flock(struct file *); extern void posix_test_lock(struct file *, struct file_lock *); extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *); extern int posix_lock_file_wait(struct file *, struct file_lock *); extern int posix_unblock_lock(struct file *, struct file_lock *); extern int vfs_test_lock(struct file *, struct file_lock *); extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *); extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl); extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl); extern int __break_lease(struct inode *inode, unsigned int flags); extern void lease_get_mtime(struct inode *, struct timespec *time); extern int generic_setlease(struct file *, long, struct file_lock **); extern int vfs_setlease(struct file *, long, struct file_lock **); extern int lease_modify(struct file_lock **, int); extern int lock_may_read(struct inode *, loff_t start, unsigned long count); extern int lock_may_write(struct inode *, loff_t start, unsigned long count); extern struct seq_operations locks_seq_operations; 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); # 1025 "/home/l/latest/xxx/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 long s_blocksize; unsigned char s_blocksize_bits; unsigned char s_dirt; unsigned long long s_maxbytes; struct file_system_type *s_type; const struct super_operations *s_op; struct dquot_operations *dq_op; 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_syncing; int s_need_sync_fs; atomic_t s_active; struct xattr_handler **s_xattr; struct list_head s_inodes; struct list_head s_dirty; struct list_head s_io; struct list_head s_more_io; struct hlist_head s_anon; struct list_head s_files; struct block_device *s_bdev; 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; struct mutex s_vfs_rename_mutex; u32 s_time_gran; 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, }; # 1119 "/home/l/latest/xxx/include/linux/fs.h" extern void lock_super(struct super_block *); extern void unlock_super(struct super_block *); extern int vfs_permission(struct nameidata *, int); 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 *, int); 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); # 1164 "/home/l/latest/xxx/include/linux/fs.h" int generic_osync_inode(struct inode *, struct address_space *, int); typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); struct block_device_operations { int (*open) (struct inode *, struct file *); int (*release) (struct inode *, struct file *); int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long); long (*unlocked_ioctl) (struct file *, unsigned, unsigned long); long (*compat_ioctl) (struct file *, unsigned, unsigned long); int (*direct_access) (struct block_device *, sector_t, void **, unsigned long *); int (*media_changed) (struct gendisk *); int (*revalidate_disk) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); struct module *owner; }; # 1197 "/home/l/latest/xxx/include/linux/fs.h" typedef struct { size_t written; size_t count; union { char * buf; void *data; } arg; int error; } read_descriptor_t; typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long); # 1220 "/home/l/latest/xxx/include/linux/fs.h" struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); 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 (*dir_notify)(struct file *filp, unsigned long arg); 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 *,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, struct nameidata *); 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); }; struct seq_file; ssize_t rw_copy_check_uvector(int type, const struct iovec * uvector, unsigned long nr_segs, unsigned long fast_segs, struct iovec *fast_pointer, struct iovec **ret_pointer); extern ssize_t vfs_read(struct file *, char *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char *, size_t, loff_t *); extern ssize_t vfs_readv(struct file *, const struct iovec *, unsigned long, loff_t *); extern ssize_t vfs_writev(struct file *, const struct iovec *, unsigned long, loff_t *); struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); void (*destroy_inode)(struct inode *); void (*dirty_inode) (struct inode *); int (*write_inode) (struct inode *, int); void (*put_inode) (struct inode *); 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); void (*write_super_lockfs) (struct super_block *); void (*unlockfs) (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 vfsmount *, int); void (*sync_inodes)(struct super_block *sb, struct writeback_control *wbc); int (*show_options)(struct seq_file *, struct vfsmount *); int (*show_stats)(struct seq_file *, struct vfsmount *); }; # 1391 "/home/l/latest/xxx/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); } # 1410 "/home/l/latest/xxx/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); } # 1432 "/home/l/latest/xxx/include/linux/fs.h" static inline void drop_nlink(struct inode *inode) { inode->i_nlink--; } # 1445 "/home/l/latest/xxx/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); } # 1464 "/home/l/latest/xxx/include/linux/fs.h" static inline void inode_inc_iversion(struct inode *inode) { _spin_lock(&inode->i_lock); inode->i_version++; do {__raw_spin_unlock(&(&inode->i_lock)->raw_lock); (void)0; } while (0); } 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 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_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); 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 int simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); int __put_super_and_need_restart(struct super_block *sb); void unnamed_dev_init(void); 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 vfsmount *, struct dentry *); extern void drop_collected_mounts(struct vfsmount *); extern int vfs_statfs(struct dentry *, struct kstatfs *); extern struct kobject *fs_kobj; 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; } extern int rw_verify_area(int, struct file *, loff_t *, size_t); 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; } extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp); extern long do_sys_open(int dfd, const char *filename, int flags, int mode); extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); extern int filp_close(struct file *, fl_owner_t id); extern char * getname(const char *); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) vfs_caches_init_early(void); extern void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) vfs_caches_init(unsigned long); extern struct kmem_cache *names_cachep; # 1631 "/home/l/latest/xxx/include/linux/fs.h" extern int register_blkdev(unsigned int, const char *); extern void unregister_blkdev(unsigned int, const char *); extern struct block_device *bdget(dev_t); 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, unsigned); 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 inode *, struct file *, unsigned, unsigned long); extern int blkdev_driver_ioctl(struct inode *inode, struct file *file, struct gendisk *disk, unsigned cmd, unsigned long arg); extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); extern int blkdev_get(struct block_device *, mode_t, unsigned); extern int blkdev_put(struct block_device *); 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 *); # 1667 "/home/l/latest/xxx/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, const char *, const struct file_operations *); extern void unregister_chrdev(unsigned int, const char *); extern void unregister_chrdev_region(dev_t, unsigned); extern void chrdev_show(struct seq_file *,off_t); 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_excl(const char *, int, void *); extern void close_bdev_excl(struct block_device *); 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_fifo_fops; extern const struct file_operations write_fifo_fops; extern const struct file_operations rdwr_fifo_fops; extern int fs_may_remount_ro(struct super_block *); # 1713 "/home/l/latest/xxx/include/linux/fs.h" 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, bool be_atomic); unsigned long invalidate_mapping_pages(struct address_space *mapping, unsigned long start, unsigned long end); static inline unsigned long __attribute__((deprecated)) invalidate_inode_pages(struct address_space *mapping) { return invalidate_mapping_pages(mapping, 0, ~0UL); } 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 generic_sync_sb_inodes(struct super_block *sb, 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_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 wait_on_page_writeback_range(struct address_space *mapping, unsigned long start, unsigned long end); extern int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end, int sync_mode); extern long do_fsync(struct file *file, int datasync); extern void sync_supers(void); extern void sync_filesystems(int wait); extern void __fsync_super(struct super_block *sb); extern void emergency_sync(void); extern void emergency_remount(void); extern int do_remount_sb(struct super_block *sb, int flags, void *data, int force); extern sector_t bmap(struct inode *, sector_t); extern int notify_change(struct dentry *, struct iattr *); extern int permission(struct inode *, int, struct nameidata *); extern int generic_permission(struct inode *, int, int (*check_acl)(struct inode *, int)); 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(int *); extern struct file *create_read_pipe(struct file *f); extern struct file *create_write_pipe(void); extern void free_write_pipe(struct file *); extern struct file *do_filp_open(int dfd, const char *pathname, int open_flag, int mode); extern int may_open(struct nameidata *, int, int); extern int kernel_read(struct file *, unsigned long, char *, unsigned long); extern struct file * open_exec(const char *); extern int is_subdir(struct dentry *, struct dentry *); extern ino_t find_inode_number(struct dentry *, struct qstr *); # 1 "/home/l/latest/xxx/include/linux/err.h" 1 # 1 "include2/asm/errno.h" 1 # 7 "/home/l/latest/xxx/include/linux/err.h" 2 # 22 "/home/l/latest/xxx/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); } # 44 "/home/l/latest/xxx/include/linux/err.h" static inline void *ERR_CAST(const void *ptr) { return (void *) ptr; } # 1797 "/home/l/latest/xxx/include/linux/fs.h" 2 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 void inode_init_once(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 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 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 struct inode *new_inode(struct super_block *); extern int __remove_suid(struct dentry *, int); extern int should_remove_suid(struct dentry *); extern int remove_suid(struct dentry *); 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 struct file * get_empty_filp(void); 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 sb_has_dirty_inodes(struct super_block *); 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_nolock(struct kiocb *, const struct iovec *, unsigned long, loff_t); extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, unsigned long *, loff_t, loff_t *, size_t, size_t); extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, unsigned long, loff_t, loff_t *, size_t, ssize_t); extern ssize_t do_sync_read(struct file *filp, char *buf, size_t len, loff_t *ppos); extern ssize_t do_sync_write(struct file *filp, const char *buf, size_t len, loff_t *ppos); extern int generic_segment_checks(const struct iovec *iov, unsigned long *nr_segs, size_t *count, int access_flags); extern ssize_t generic_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_file_splice_write_nolock(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 remote_llseek(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); # 1895 "/home/l/latest/xxx/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 = 1, DIO_NO_LOCKING, DIO_OWN_LOCKING, }; 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); } 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, DIO_NO_LOCKING); } static inline ssize_t blockdev_direct_IO_own_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, DIO_OWN_LOCKING); } extern const struct file_operations generic_ro_fops; extern int vfs_readlink(struct dentry *, char *, int, const char *); extern int vfs_follow_link(struct nameidata *, const char *); extern int page_readlink(struct dentry *, char *, int); extern void *page_follow_link_light(struct dentry *, struct nameidata *); extern void page_put_link(struct dentry *, struct nameidata *, void *); extern int __page_symlink(struct inode *inode, const char *symname, int len, gfp_t gfp_mask); extern int page_symlink(struct inode *inode, const char *symname, int len); extern const struct inode_operations page_symlink_inode_operations; extern int generic_readlink(struct dentry *, char *, int); extern void generic_fillattr(struct inode *, struct kstat *); extern int vfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); void inode_add_bytes(struct inode *inode, loff_t bytes); void inode_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 *, struct kstat *); extern int vfs_lstat(char *, struct kstat *); extern int vfs_stat_fd(int dfd, char *, struct kstat *); extern int vfs_lstat_fd(int dfd, char *, struct kstat *); extern int vfs_fstat(unsigned int, struct kstat *); extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, unsigned long arg); 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 *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_prepare_write(struct file *file, struct page *page, unsigned offset, unsigned to); 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 *, 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 *, size_t, loff_t *, const void *, size_t); # 2021 "/home/l/latest/xxx/include/linux/fs.h" extern int inode_change_ok(struct inode *, struct iattr *); 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); 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; do {__raw_spin_unlock(&(&dentry->d_lock)->raw_lock); (void)0; } while (0); return res; } extern int unshare_files(void); struct simple_transaction_argresp { ssize_t size; char data[0]; }; char *simple_transaction_get(struct file *file, const char *buf, size_t size); ssize_t simple_transaction_read(struct file *file, char *buf, size_t size, loff_t *pos); int simple_transaction_release(struct inode *inode, struct file *file); static inline void simple_transaction_set(struct file *file, size_t n) { struct simple_transaction_argresp *ar = file->private_data; do { if (__builtin_expect(!!(n > (((1UL) << 12) - sizeof(struct simple_transaction_argresp))), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/include/linux/fs.h"), "i" (2065), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); asm volatile("mfence":::"memory"); ar->size = n; } # 2105 "/home/l/latest/xxx/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 *buf, size_t len, loff_t *ppos); ssize_t simple_attr_write(struct file *file, const char *buf, size_t len, loff_t *ppos); # 2132 "/home/l/latest/xxx/include/linux/fs.h" static inline char *alloc_secdata(void) { return (char *)1; } static inline void free_secdata(void *secdata) { } struct ctl_table; int proc_nr_files(struct ctl_table *table, int write, struct file *filp, void *buffer, size_t *lenp, loff_t *ppos); int get_filesystem_list(char * buf); # 12 "/home/l/latest/xxx/include/linux/poll.h" 2 # 1 "include2/asm/uaccess.h" 1 # 1 "include2/asm/uaccess_64.h" 1 # 67 "include2/asm/uaccess_64.h" struct exception_table_entry { unsigned long insn, fixup; }; extern int fixup_exception(struct pt_regs *regs); # 125 "include2/asm/uaccess_64.h" extern void __put_user_1(void); extern void __put_user_2(void); extern void __put_user_4(void); extern void __put_user_8(void); extern void __put_user_bad(void); # 202 "include2/asm/uaccess_64.h" struct __large_struct { unsigned long buf[100]; }; # 231 "include2/asm/uaccess_64.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); # 276 "include2/asm/uaccess_64.h" unsigned long copy_user_generic(void *to, const void *from, unsigned len); unsigned long copy_to_user(void *to, const void *from, unsigned len); unsigned long copy_from_user(void *to, const void *from, unsigned len); unsigned long copy_in_user(void *to, const void *from, unsigned len); static inline __attribute__((always_inline)) int __copy_from_user(void *dst, const void *src, unsigned size) { int ret = 0; if (!__builtin_constant_p(size)) return copy_user_generic(dst, ( 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 *)((u8 *)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 *)((u16 *)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 *)((u32 *)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 *)((u64 *)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 *)((u64 *)src))), "i"(16), "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 *)((u16 *)(8 + (char *)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 *)((u64 *)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 *)((u64 *)(8 + (char *)src)))), "i"(8), "0"(ret)); return ret; default: return copy_user_generic(dst, ( void *)src, size); } } static inline __attribute__((always_inline)) int __copy_to_user(void *dst, const void *src, unsigned size) { int ret = 0; if (!__builtin_constant_p(size)) return copy_user_generic(( 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 *)((u8 *)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 *)((u16 *)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 *)((u32 *)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) : "ir" (*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)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) : "ir" (*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)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 *)(4 + (u16 *)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) : "ir" (*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)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) : "ir" (1[(u64 *)src]), "m" ((*(struct __large_struct *)(1 + (u64 *)dst))), "i" (8), "0" (ret)); return ret; default: return copy_user_generic(( void *)dst, src, size); } } static inline __attribute__((always_inline)) int __copy_in_user(void *dst, const void *src, unsigned size) { int ret = 0; if (!__builtin_constant_p(size)) return copy_user_generic(( void *)dst, ( 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 *)((u8 *)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 *)((u8 *)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 *)((u16 *)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 *)((u16 *)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 *)((u32 *)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 *)((u32 *)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 *)((u64 *)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) : "ir" (tmp), "m" ((*(struct __large_struct *)((u64 *)dst))), "i" (8), "0" (ret)); return ret; } default: return copy_user_generic(( void *)dst, ( void *)src, size); } } long strncpy_from_user(char *dst, const char *src, long count); long __strncpy_from_user(char *dst, const char *src, long count); long strnlen_user(const char *str, long n); long __strnlen_user(const char *str, long n); long strlen_user(const char *str); unsigned long clear_user(void *mem, unsigned long len); unsigned long __clear_user(void *mem, unsigned long len); long __copy_from_user_inatomic(void *dst, const void *src, unsigned size); static inline __attribute__((always_inline)) int __copy_to_user_inatomic(void *dst, const void *src, unsigned size) { return copy_user_generic(( void *)dst, src, size); } extern long __copy_user_nocache(void *dst, const void *src, unsigned size, int zerorest); static inline int __copy_from_user_nocache(void *dst, const void *src, unsigned size) { do { _cond_resched(); } while (0); return __copy_user_nocache(dst, src, size, 1); } static inline int __copy_from_user_inatomic_nocache(void *dst, const void *src, unsigned size) { return __copy_user_nocache(dst, src, size, 0); } # 5 "include2/asm/uaccess.h" 2 # 14 "/home/l/latest/xxx/include/linux/poll.h" 2 # 26 "/home/l/latest/xxx/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; } 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; } struct poll_table_entry { struct file * filp; wait_queue_t wait; wait_queue_head_t * wait_address; }; struct poll_wqueues { poll_table pt; struct poll_table_page * table; 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); typedef struct { unsigned long *in, *out, *ex; unsigned long *res_in, *res_out, *res_ex; } fd_set_bits; # 90 "/home/l/latest/xxx/include/linux/poll.h" static inline int get_fd_set(unsigned long nr, void *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 *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, s64 *timeout); extern int do_sys_poll(struct pollfd * ufds, unsigned int nfds, s64 *timeout); # 55 "/home/l/latest/xxx/drivers/usb/class/usblp.c" 2 # 1 "/home/l/latest/xxx/include/linux/lp.h" 1 # 134 "/home/l/latest/xxx/include/linux/lp.h" struct lp_struct { struct pardevice *dev; unsigned long flags; unsigned int chars; unsigned int time; unsigned int wait; char *lp_buffer; wait_queue_head_t waitq; unsigned int last_error; struct mutex port_mutex; wait_queue_head_t dataq; long timeout; unsigned int best_mode; unsigned int current_mode; unsigned long bits; }; # 58 "/home/l/latest/xxx/drivers/usb/class/usblp.c" 2 # 1 "/home/l/latest/xxx/include/linux/usb.h" 1 # 1 "/home/l/latest/xxx/include/linux/mod_devicetable.h" 1 # 12 "/home/l/latest/xxx/include/linux/mod_devicetable.h" typedef unsigned long kernel_ulong_t; struct pci_device_id { __u32 vendor, device; __u32 subvendor, subdevice; __u32 class, class_mask; kernel_ulong_t driver_data; }; struct ieee1394_device_id { __u32 match_flags; __u32 vendor_id; __u32 model_id; __u32 specifier_id; __u32 version; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; # 98 "/home/l/latest/xxx/include/linux/mod_devicetable.h" struct usb_device_id { __u16 match_flags; __u16 idVendor; __u16 idProduct; __u16 bcdDevice_lo; __u16 bcdDevice_hi; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; kernel_ulong_t driver_info; }; # 137 "/home/l/latest/xxx/include/linux/mod_devicetable.h" struct hid_device_id { __u32 vendor, product; kernel_ulong_t driver_data; }; struct ccw_device_id { __u16 match_flags; __u16 cu_type; __u16 dev_type; __u8 cu_model; __u8 dev_model; kernel_ulong_t driver_info; }; struct ap_device_id { __u16 match_flags; __u8 dev_type; __u8 pad1; __u32 pad2; kernel_ulong_t driver_info; }; struct acpi_device_id { __u8 id[16]; kernel_ulong_t driver_data; }; struct pnp_device_id { __u8 id[8]; kernel_ulong_t driver_data; }; struct pnp_card_device_id { __u8 id[8]; kernel_ulong_t driver_data; struct { __u8 id[8]; } devs[8]; }; struct serio_device_id { __u8 type; __u8 extra; __u8 id; __u8 proto; }; struct of_device_id { char name[32]; char type[32]; char compatible[128]; void *data; }; struct vio_device_id { char type[32]; char compat[32]; }; struct pcmcia_device_id { __u16 match_flags; __u16 manf_id; __u16 card_id; __u8 func_id; __u8 function; __u8 device_no; __u32 prod_id_hash[4] __attribute__((aligned(sizeof(__u32)))); const char * prod_id[4]; kernel_ulong_t driver_info; char * cisfile; }; # 300 "/home/l/latest/xxx/include/linux/mod_devicetable.h" struct input_device_id { kernel_ulong_t flags; __u16 bustype; __u16 vendor; __u16 product; __u16 version; kernel_ulong_t evbit[0x1f / 64 + 1]; kernel_ulong_t keybit[0x1ff / 64 + 1]; kernel_ulong_t relbit[0x0f / 64 + 1]; kernel_ulong_t absbit[0x3f / 64 + 1]; kernel_ulong_t mscbit[0x07 / 64 + 1]; kernel_ulong_t ledbit[0x0f / 64 + 1]; kernel_ulong_t sndbit[0x07 / 64 + 1]; kernel_ulong_t ffbit[0x7f / 64 + 1]; kernel_ulong_t swbit[0x0f / 64 + 1]; kernel_ulong_t driver_info; }; struct eisa_device_id { char sig[8]; kernel_ulong_t driver_data; }; struct parisc_device_id { __u8 hw_type; __u8 hversion_rev; __u16 hversion; __u32 sversion; }; # 350 "/home/l/latest/xxx/include/linux/mod_devicetable.h" struct sdio_device_id { __u8 class; __u16 vendor; __u16 device; kernel_ulong_t driver_data __attribute__((aligned(sizeof(kernel_ulong_t)))); }; struct ssb_device_id { __u16 vendor; __u16 coreid; __u8 revision; }; # 373 "/home/l/latest/xxx/include/linux/mod_devicetable.h" struct virtio_device_id { __u32 device; __u32 vendor; }; # 5 "/home/l/latest/xxx/include/linux/usb.h" 2 # 1 "/home/l/latest/xxx/include/linux/usb/ch9.h" 1 # 146 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_ctrlrequest { __u8 bRequestType; __u8 bRequest; __le16 wValue; __le16 wIndex; __le16 wLength; } __attribute__ ((packed)); # 202 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_descriptor_header { __u8 bLength; __u8 bDescriptorType; } __attribute__ ((packed)); struct usb_device_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 bcdUSB; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bMaxPacketSize0; __le16 idVendor; __le16 idProduct; __le16 bcdDevice; __u8 iManufacturer; __u8 iProduct; __u8 iSerialNumber; __u8 bNumConfigurations; } __attribute__ ((packed)); # 265 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_config_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wTotalLength; __u8 bNumInterfaces; __u8 bConfigurationValue; __u8 iConfiguration; __u8 bmAttributes; __u8 bMaxPower; } __attribute__ ((packed)); # 288 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_string_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wData[1]; } __attribute__ ((packed)); # 302 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_interface_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bInterfaceNumber; __u8 bAlternateSetting; __u8 bNumEndpoints; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; __u8 iInterface; } __attribute__ ((packed)); struct usb_endpoint_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bEndpointAddress; __u8 bmAttributes; __le16 wMaxPacketSize; __u8 bInterval; __u8 bRefresh; __u8 bSynchAddress; } __attribute__ ((packed)); # 356 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_qualifier_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 bcdUSB; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bMaxPacketSize0; __u8 bNumConfigurations; __u8 bRESERVED; } __attribute__ ((packed)); struct usb_otg_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bmAttributes; } __attribute__ ((packed)); # 387 "/home/l/latest/xxx/include/linux/usb/ch9.h" struct usb_debug_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bDebugInEndpoint; __u8 bDebugOutEndpoint; } __attribute__((packed)); struct usb_interface_assoc_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bFirstInterface; __u8 bInterfaceCount; __u8 bFunctionClass; __u8 bFunctionSubClass; __u8 bFunctionProtocol; __u8 iFunction; } __attribute__ ((packed)); struct usb_security_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wTotalLength; __u8 bNumEncryptionTypes; } __attribute__((packed)); struct usb_key_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 tTKID[3]; __u8 bReserved; __u8 bKeyData[0]; } __attribute__((packed)); struct usb_encryption_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bEncryptionType; __u8 bEncryptionValue; __u8 bAuthKeyIndex; } __attribute__((packed)); struct usb_bos_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wTotalLength; __u8 bNumDeviceCaps; } __attribute__((packed)); struct usb_dev_cap_header { __u8 bLength; __u8 bDescriptorType; __u8 bDevCapabilityType; } __attribute__((packed)); struct usb_wireless_cap_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bDevCapabilityType; __u8 bmAttributes; __le16 wPHYRates; # 498 "/home/l/latest/xxx/include/linux/usb/ch9.h" __u8 bmTFITXPowerInfo; __u8 bmFFITXPowerInfo; __le16 bmBandGroup; __u8 bReserved; } __attribute__((packed)); struct usb_wireless_ep_comp_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bMaxBurst; __u8 bMaxSequence; __le16 wMaxStreamDelay; __le16 wOverTheAirPacketSize; __u8 bOverTheAirInterval; __u8 bmCompAttributes; } __attribute__((packed)); struct usb_handshake { __u8 bMessageNumber; __u8 bStatus; __u8 tTKID[3]; __u8 bReserved; __u8 CDID[16]; __u8 nonce[16]; __u8 MIC[8]; } __attribute__((packed)); struct usb_connection_context { __u8 CHID[16]; __u8 CDID[16]; __u8 CK[16]; } __attribute__((packed)); enum usb_device_speed { USB_SPEED_UNKNOWN = 0, USB_SPEED_LOW, USB_SPEED_FULL, USB_SPEED_HIGH, USB_SPEED_VARIABLE, }; enum usb_device_state { USB_STATE_NOTATTACHED = 0, USB_STATE_ATTACHED, USB_STATE_POWERED, USB_STATE_UNAUTHENTICATED, USB_STATE_RECONNECTING, USB_STATE_DEFAULT, USB_STATE_ADDRESS, USB_STATE_CONFIGURED, USB_STATE_SUSPENDED }; # 6 "/home/l/latest/xxx/include/linux/usb.h" 2 # 15 "/home/l/latest/xxx/include/linux/usb.h" # 1 "/home/l/latest/xxx/include/linux/interrupt.h" 1 # 10 "/home/l/latest/xxx/include/linux/interrupt.h" # 1 "/home/l/latest/xxx/include/linux/irqreturn.h" 1 # 19 "/home/l/latest/xxx/include/linux/irqreturn.h" typedef int irqreturn_t; # 11 "/home/l/latest/xxx/include/linux/interrupt.h" 2 # 1 "/home/l/latest/xxx/include/linux/hardirq.h" 1 # 1 "/home/l/latest/xxx/include/linux/smp_lock.h" 1 # 9 "/home/l/latest/xxx/include/linux/smp_lock.h" extern int __attribute__((section(".spinlock.text"))) __reacquire_kernel_lock(void); extern void __attribute__((section(".spinlock.text"))) __release_kernel_lock(void); # 20 "/home/l/latest/xxx/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(void) ; extern void __attribute__((section(".spinlock.text"))) unlock_kernel(void) ; # 6 "/home/l/latest/xxx/include/linux/hardirq.h" 2 # 1 "include2/asm/hardirq.h" 1 # 1 "include2/asm/hardirq_64.h" 1 # 1 "/home/l/latest/xxx/include/linux/irq.h" 1 # 23 "/home/l/latest/xxx/include/linux/irq.h" # 1 "include2/asm/irq.h" 1 # 1 "include2/asm/irq_64.h" 1 # 37 "include2/asm/irq_64.h" static inline int irq_canonicalize(int irq) { return ((irq == 2) ? 9 : irq); } extern void fixup_irqs(cpumask_t map); # 5 "include2/asm/irq.h" 2 # 24 "/home/l/latest/xxx/include/linux/irq.h" 2 # 1 "include2/asm/irq_regs.h" 1 # 1 "include2/asm/irq_regs_64.h" 1 # 1 "/home/l/latest/xxx/include/asm-generic/irq_regs.h" 1 # 21 "/home/l/latest/xxx/include/asm-generic/irq_regs.h" extern __typeof__(struct pt_regs *) per_cpu____irq_regs; static inline struct pt_regs *get_irq_regs(void) { return (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu____irq_regs))); (typeof((&per_cpu____irq_regs))) (__ptr + ((({ typeof(_proxy_pda.data_offset) ret__; switch (sizeof(_proxy_pda.data_offset)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; default: __bad_pda_field(); } ret__; })))); })); } static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs) { struct pt_regs *old_regs, **pp_regs = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu____irq_regs))); (typeof((&per_cpu____irq_regs))) (__ptr + ((({ typeof(_proxy_pda.data_offset) ret__; switch (sizeof(_proxy_pda.data_offset)) { case 2: asm("mov" "w %%gs:%c1,%0" : "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; case 4: asm("mov" "l %%gs:%c1,%0": "=r" (ret__): "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; case 8: asm("mov" "q %%gs:%c1,%0": "=r" (ret__) : "i" (__builtin_offsetof(struct x8664_pda,data_offset)), "m" (_proxy_pda.data_offset)); break; default: __bad_pda_field(); } ret__; })))); })); old_regs = *pp_regs; *pp_regs = new_regs; return old_regs; } # 1 "include2/asm/irq_regs_64.h" 2 # 5 "include2/asm/irq_regs.h" 2 # 26 "/home/l/latest/xxx/include/linux/irq.h" 2 struct irq_desc; typedef void (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc); # 73 "/home/l/latest/xxx/include/linux/irq.h" struct proc_dir_entry; struct msi_desc; # 98 "/home/l/latest/xxx/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); void (*set_affinity)(unsigned int irq, cpumask_t 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); # 125 "/home/l/latest/xxx/include/linux/irq.h" const char *typename; }; # 152 "/home/l/latest/xxx/include/linux/irq.h" struct irq_desc { 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 int irqs_unhandled; unsigned long last_unhandled; spinlock_t lock; cpumask_t affinity; unsigned int cpu; cpumask_t pending_mask; struct proc_dir_entry *dir; const char *name; } __attribute__((__aligned__(1 << ((6))))); extern struct irq_desc irq_desc[(256 + (32 * 2))]; typedef struct irq_chip hw_irq_controller; typedef struct irq_desc irq_desc_t; # 1 "include2/asm/hw_irq.h" 1 # 1 "include2/asm/hw_irq_64.h" 1 # 18 "include2/asm/hw_irq_64.h" # 1 "include2/asm/atomic.h" 1 # 19 "include2/asm/hw_irq_64.h" 2 # 1 "include2/asm/irq.h" 1 # 20 "include2/asm/hw_irq_64.h" 2 # 1 "/home/l/latest/xxx/include/linux/profile.h" 1 # 9 "/home/l/latest/xxx/include/linux/profile.h" # 1 "include2/asm/errno.h" 1 # 10 "/home/l/latest/xxx/include/linux/profile.h" 2 extern int prof_on __attribute__((__section__(".data.read_mostly"))); struct proc_dir_entry; struct pt_regs; struct notifier_block; void __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) profile_init(void); void profile_tick(int); void profile_hits(int, void *ip, unsigned int nr_hits); static inline void profile_hit(int type, void *ip) { if (__builtin_expect(!!(prof_on == type), 0)) profile_hits(type, ip, 1); } void create_prof_cpu_mask(struct proc_dir_entry *); enum profile_type { PROFILE_TASK_EXIT, PROFILE_MUNMAP }; # 83 "/home/l/latest/xxx/include/linux/profile.h" 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; } # 21 "include2/asm/hw_irq_64.h" 2 # 100 "include2/asm/hw_irq_64.h" void apic_timer_interrupt(void); void spurious_interrupt(void); void error_interrupt(void); void reschedule_interrupt(void); void call_function_interrupt(void); void irq_move_cleanup_interrupt(void); void invalidate_interrupt0(void); void invalidate_interrupt1(void); void invalidate_interrupt2(void); void invalidate_interrupt3(void); void invalidate_interrupt4(void); void invalidate_interrupt5(void); void invalidate_interrupt6(void); void invalidate_interrupt7(void); void thermal_interrupt(void); void threshold_interrupt(void); void i8254_timer_resume(void); typedef int vector_irq_t[256]; extern __typeof__(vector_irq_t) per_cpu__vector_irq; extern void __setup_vector_irq(int cpu); extern spinlock_t vector_lock; # 130 "include2/asm/hw_irq_64.h" extern void disable_8259A_irq(unsigned int irq); extern void enable_8259A_irq(unsigned int irq); extern int i8259A_irq_pending(unsigned int irq); extern void make_8259A_irq(unsigned int irq); extern void init_8259A(int aeoi); extern void send_IPI_self(int vector); extern void init_VISWS_APIC_irqs(void); extern void setup_IO_APIC(void); extern void enable_IO_APIC(void); extern void disable_IO_APIC(void); extern void print_IO_APIC(void); extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); extern void send_IPI(int dest, int vector); extern void setup_ioapic_dest(void); extern void native_init_IRQ(void); extern unsigned long io_apic_irqs; extern atomic_t irq_err_count; extern atomic_t irq_mis_count; # 5 "include2/asm/hw_irq.h" 2 # 194 "/home/l/latest/xxx/include/linux/irq.h" 2 extern int setup_irq(unsigned int irq, struct irqaction *new); # 207 "/home/l/latest/xxx/include/linux/irq.h" void set_pending_irq(unsigned int irq, cpumask_t mask); void move_native_irq(int irq); void move_masked_irq(int irq); # 241 "/home/l/latest/xxx/include/linux/irq.h" static inline void set_balance_irq_affinity(unsigned int irq, cpumask_t mask) { } static inline int select_smp_affinity(unsigned int irq) { return 1; } extern int no_irq_affinity; static inline int irq_balancing_disabled(unsigned int irq) { return irq_desc[irq].status & 0x00400000; } extern int 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 unsigned int __do_IRQ(unsigned int irq); # 289 "/home/l/latest/xxx/include/linux/irq.h" static inline void generic_handle_irq(unsigned int irq) { struct irq_desc *desc = irq_desc + irq; if (__builtin_expect(!!(desc->handle_irq), 1)) desc->handle_irq(irq, desc); else __do_IRQ(irq); } extern void note_interrupt(unsigned int irq, struct irq_desc *desc, int 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) { irq_desc[irq].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_noprobe(unsigned int irq); extern void set_irq_probe(unsigned int irq); 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_desc + irq; return desc->action != ((void *)0); } extern void dynamic_irq_init(unsigned int irq); extern void dynamic_irq_cleanup(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); # 6 "include2/asm/hardirq_64.h" 2 # 21 "include2/asm/hardirq_64.h" extern void ack_bad_irq(unsigned int irq); # 5 "include2/asm/hardirq.h" 2 # 8 "/home/l/latest/xxx/include/linux/hardirq.h" 2 # 106 "/home/l/latest/xxx/include/linux/hardirq.h" extern void synchronize_irq(unsigned int irq); struct task_struct; static inline void account_system_vtime(struct task_struct *tsk) { } # 144 "/home/l/latest/xxx/include/linux/hardirq.h" extern void irq_enter(void); # 160 "/home/l/latest/xxx/include/linux/hardirq.h" extern void irq_exit(void); # 12 "/home/l/latest/xxx/include/linux/interrupt.h" 2 # 1 "include2/asm/atomic.h" 1 # 15 "/home/l/latest/xxx/include/linux/interrupt.h" 2 # 58 "/home/l/latest/xxx/include/linux/interrupt.h" typedef irqreturn_t (*irq_handler_t)(int, void *); struct irqaction { irq_handler_t handler; unsigned long flags; cpumask_t mask; const char *name; void *dev_id; struct irqaction *next; int irq; struct proc_dir_entry *dir; }; extern irqreturn_t no_action(int cpl, void *dev_id); extern int request_irq(unsigned int, irq_handler_t handler, unsigned long, const char *, void *); extern void free_irq(unsigned int, void *); struct device; extern int devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); # 101 "/home/l/latest/xxx/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 int irq_set_affinity(unsigned int irq, cpumask_t cpumask); extern int irq_can_set_affinity(unsigned int irq); # 136 "/home/l/latest/xxx/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); } # 266 "/home/l/latest/xxx/include/linux/interrupt.h" enum { HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, BLOCK_SOFTIRQ, TASKLET_SOFTIRQ, SCHED_SOFTIRQ, HRTIMER_SOFTIRQ, RCU_SOFTIRQ, }; struct softirq_action { void (*action)(struct softirq_action *); void *data; }; void do_softirq(void); void __do_softirq(void); extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data); extern void softirq_init(void); extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); # 320 "/home/l/latest/xxx/include/linux/interrupt.h" struct tasklet_struct { struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data; }; # 336 "/home/l/latest/xxx/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); } 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); # 453 "/home/l/latest/xxx/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); int show_interrupts(struct seq_file *p, void *v); # 16 "/home/l/latest/xxx/include/linux/usb.h" 2 # 1 "/home/l/latest/xxx/include/linux/device.h" 1 # 15 "/home/l/latest/xxx/include/linux/device.h" # 1 "/home/l/latest/xxx/include/linux/ioport.h" 1 # 18 "/home/l/latest/xxx/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; }; # 101 "/home/l/latest/xxx/include/linux/ioport.h" extern struct resource ioport_resource; extern struct resource iomem_resource; extern int request_resource(struct resource *root, struct resource *new); extern int release_resource(struct resource *new); extern int insert_resource(struct resource *parent, 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, void (*alignf)(void *, 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); extern struct resource * __request_region(struct resource *, resource_size_t start, resource_size_t n, const char *name); 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); # 16 "/home/l/latest/xxx/include/linux/device.h" 2 # 1 "/home/l/latest/xxx/include/linux/klist.h" 1 # 20 "/home/l/latest/xxx/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 *); }; extern void klist_init(struct klist * k, void (*get)(struct klist_node *), void (*put)(struct klist_node *)); struct klist_node { struct klist * n_klist; struct list_head n_node; struct kref n_ref; struct completion n_removed; }; 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_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 list_head * i_head; 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); # 18 "/home/l/latest/xxx/include/linux/device.h" 2 # 1 "include2/asm/semaphore.h" 1 # 24 "/home/l/latest/xxx/include/linux/device.h" 2 # 1 "include2/asm/atomic.h" 1 # 25 "/home/l/latest/xxx/include/linux/device.h" 2 # 1 "include2/asm/device.h" 1 struct dev_archdata { void *acpi_handle; }; # 26 "/home/l/latest/xxx/include/linux/device.h" 2 # 34 "/home/l/latest/xxx/include/linux/device.h" struct device; struct device_driver; struct driver_private; struct class; struct class_device; 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 (*suspend_late)(struct device *dev, pm_message_t state); int (*resume_early)(struct device *dev); int (*resume)(struct device *dev); struct pm_ext_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 *)); 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); # 120 "/home/l/latest/xxx/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; 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); struct attribute_group **groups; struct 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); 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, struct driver_attribute *attr); extern void driver_remove_file(struct device_driver *driver, 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 kset subsys; struct list_head children; struct list_head devices; struct list_head interfaces; struct kset class_dirs; struct semaphore sem; struct class_attribute *class_attrs; struct class_device_attribute *class_dev_attrs; struct device_attribute *dev_attrs; int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env); int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); void (*release)(struct class_device *dev); 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); struct pm_ops *pm; }; extern int class_register(struct class *class); extern void class_unregister(struct class *class); extern int class_for_each_device(struct class *class, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *class_find_device(struct class *class, void *data, int (*match)(struct device *, void *)); extern struct class_device *class_find_child(struct class *class, void *data, int (*match)(struct class_device *, void *)); struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *class, char *buf); ssize_t (*store)(struct class *class, 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_device_attribute { struct attribute attr; ssize_t (*show)(struct class_device *, char *buf); ssize_t (*store)(struct class_device *, const char *buf, size_t count); }; extern int class_device_create_file(struct class_device *, const struct class_device_attribute *); # 274 "/home/l/latest/xxx/include/linux/device.h" struct class_device { struct list_head node; struct kobject kobj; struct class *class; dev_t devt; struct device *dev; void *class_data; struct class_device *parent; struct attribute_group **groups; void (*release)(struct class_device *dev); int (*uevent)(struct class_device *dev, struct kobj_uevent_env *env); char class_id[20]; }; static inline void *class_get_devdata(struct class_device *dev) { return dev->class_data; } static inline void class_set_devdata(struct class_device *dev, void *data) { dev->class_data = data; } extern int class_device_register(struct class_device *); extern void class_device_unregister(struct class_device *); extern void class_device_initialize(struct class_device *); extern int class_device_add(struct class_device *); extern void class_device_del(struct class_device *); extern struct class_device *class_device_get(struct class_device *); extern void class_device_put(struct class_device *); extern void class_device_remove_file(struct class_device *, const struct class_device_attribute *); extern int class_device_create_bin_file(struct class_device *, struct bin_attribute *); extern void class_device_remove_bin_file(struct class_device *, struct bin_attribute *); struct class_interface { struct list_head node; struct class *class; int (*add) (struct class_device *, struct class_interface *); void (*remove) (struct class_device *, struct class_interface *); 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); extern void class_destroy(struct class *cls); extern struct class_device *class_device_create(struct class *cls, struct class_device *parent, dev_t devt, struct device *device, const char *fmt, ...) __attribute__((format(printf, 5, 6))); extern void class_device_destroy(struct class *cls, dev_t devt); # 349 "/home/l/latest/xxx/include/linux/device.h" struct device_type { const char *name; struct attribute_group **groups; int (*uevent)(struct device *dev, struct kobj_uevent_env *env); void (*release)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); struct 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, struct device_attribute *entry); extern void device_remove_file(struct device *dev, struct device_attribute *attr); extern int device_create_bin_file(struct device *dev, struct bin_attribute *attr); extern void device_remove_bin_file(struct device *dev, 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 klist klist_children; struct klist_node knode_parent; struct klist_node knode_driver; struct klist_node knode_bus; struct device *parent; struct kobject kobj; char bus_id[20]; struct device_type *type; unsigned uevent_suppress:1; struct semaphore sem; struct bus_type *bus; struct device_driver *driver; void *driver_data; void *platform_data; struct dev_pm_info power; 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; spinlock_t devres_lock; struct list_head devres_head; struct list_head node; struct class *class; dev_t devt; struct attribute_group **groups; void (*release)(struct device *dev); }; # 1 "/home/l/latest/xxx/include/linux/pm_wakeup.h" 1 # 33 "/home/l/latest/xxx/include/linux/pm_wakeup.h" static inline void device_init_wakeup(struct device *dev, int val) { dev->power.can_wakeup = dev->power.should_wakeup = !!val; } static inline int device_can_wakeup(struct device *dev) { return dev->power.can_wakeup; } static inline void device_set_wakeup_enable(struct device *dev, int val) { dev->power.should_wakeup = !!val; } static inline int device_may_wakeup(struct device *dev) { return dev->power.can_wakeup & dev->power.should_wakeup; } extern int (*platform_enable_wakeup)(struct device *dev, int is_on); static inline int call_platform_enable_wakeup(struct device *dev, int is_on) { if (platform_enable_wakeup) return (*platform_enable_wakeup)(dev, is_on); return 0; } # 488 "/home/l/latest/xxx/include/linux/device.h" 2 # 499 "/home/l/latest/xxx/include/linux/device.h" static inline int dev_to_node(struct device *dev) { return -1; } static inline void set_dev_node(struct device *dev, int node) { } static inline void *dev_get_drvdata(struct device *dev) { return dev->driver_data; } static inline void dev_set_drvdata(struct device *dev, void *data) { dev->driver_data = data; } static inline int device_is_registered(struct device *dev) { return dev->kobj.state_in_sysfs; } 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); 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(struct class *cls, struct device *parent, dev_t devt, const char *fmt, ...) __attribute__((format(printf, 4, 5))); 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 device_shutdown(void); extern void sysdev_shutdown(void); extern const char *dev_driver_string(struct device *dev); # 19 "/home/l/latest/xxx/include/linux/usb.h" 2 struct usb_device; struct usb_driver; struct wusb_dev; # 45 "/home/l/latest/xxx/include/linux/usb.h" struct ep_device; # 61 "/home/l/latest/xxx/include/linux/usb.h" struct usb_host_endpoint { struct usb_endpoint_descriptor desc; struct list_head urb_list; void *hcpriv; struct ep_device *ep_dev; unsigned char *extra; int extralen; int enabled; }; struct usb_host_interface { struct usb_interface_descriptor desc; struct usb_host_endpoint *endpoint; char *string; unsigned char *extra; int extralen; }; enum usb_interface_condition { USB_INTERFACE_UNBOUND = 0, USB_INTERFACE_BINDING, USB_INTERFACE_BOUND, USB_INTERFACE_UNBINDING, }; # 144 "/home/l/latest/xxx/include/linux/usb.h" struct usb_interface { struct usb_host_interface *altsetting; struct usb_host_interface *cur_altsetting; unsigned num_altsetting; struct usb_interface_assoc_descriptor *intf_assoc; int minor; enum usb_interface_condition condition; unsigned is_active:1; unsigned sysfs_files_created:1; unsigned needs_remote_wakeup:1; struct device dev; struct device *usb_dev; int pm_usage_cnt; }; static inline void *usb_get_intfdata(struct usb_interface *intf) { return dev_get_drvdata(&intf->dev); } static inline void usb_set_intfdata(struct usb_interface *intf, void *data) { dev_set_drvdata(&intf->dev, data); } struct usb_interface *usb_get_intf(struct usb_interface *intf); void usb_put_intf(struct usb_interface *intf); # 203 "/home/l/latest/xxx/include/linux/usb.h" struct usb_interface_cache { unsigned num_altsetting; struct kref ref; struct usb_host_interface altsetting[0]; }; # 255 "/home/l/latest/xxx/include/linux/usb.h" struct usb_host_config { struct usb_config_descriptor desc; char *string; struct usb_interface_assoc_descriptor *intf_assoc[32/2]; struct usb_interface *interface[32]; struct usb_interface_cache *intf_cache[32]; unsigned char *extra; int extralen; }; int __usb_get_extra_descriptor(char *buffer, unsigned size, unsigned char type, void **ptr); # 286 "/home/l/latest/xxx/include/linux/usb.h" struct usb_devmap { unsigned long devicemap[128 / (8*sizeof(unsigned long))]; }; struct usb_bus { struct device *controller; int busnum; char *bus_name; u8 uses_dma; u8 otg_port; unsigned is_b_host:1; unsigned b_hnp_enable:1; int devnum_next; struct usb_devmap devmap; struct usb_device *root_hub; struct list_head bus_list; int bandwidth_allocated; int bandwidth_int_reqs; int bandwidth_isoc_reqs; struct dentry *usbfs_dentry; struct device *dev; struct mon_bus *mon_bus; int monitored; }; # 343 "/home/l/latest/xxx/include/linux/usb.h" struct usb_tt; # 409 "/home/l/latest/xxx/include/linux/usb.h" struct usb_device { int devnum; char devpath [16]; enum usb_device_state state; enum usb_device_speed speed; struct usb_tt *tt; int ttport; unsigned int toggle[2]; struct usb_device *parent; struct usb_bus *bus; struct usb_host_endpoint ep0; struct device dev; struct usb_device_descriptor descriptor; struct usb_host_config *config; struct usb_host_config *actconfig; struct usb_host_endpoint *ep_in[16]; struct usb_host_endpoint *ep_out[16]; char **rawdescriptors; unsigned short bus_mA; u8 portnum; u8 level; unsigned can_submit:1; unsigned discon_suspended:1; unsigned persist_enabled:1; unsigned have_langid:1; unsigned authorized:1; unsigned authenticated:1; unsigned wusb:1; unsigned delayed_reset:1; int string_langid; char *product; char *manufacturer; char *serial; struct list_head filelist; struct dentry *usbfs_dentry; int maxchild; struct usb_device *children[(31)]; int pm_usage_cnt; u32 quirks; atomic_t urbnum; unsigned long active_duration; struct delayed_work autosuspend; struct mutex pm_mutex; unsigned long last_busy; int autosuspend_delay; unsigned long connect_time; unsigned auto_pm:1; unsigned do_remote_wakeup:1; unsigned reset_resume:1; unsigned autosuspend_disabled:1; unsigned autoresume_disabled:1; unsigned skip_sys_resume:1; struct wusb_dev *wusb_dev; }; extern struct usb_device *usb_get_dev(struct usb_device *dev); extern void usb_put_dev(struct usb_device *dev); extern int usb_lock_device_for_reset(struct usb_device *udev, const struct usb_interface *iface); extern int usb_reset_device(struct usb_device *dev); extern int usb_reset_composite_device(struct usb_device *dev, struct usb_interface *iface); extern void usb_dev_reset_delayed(struct usb_device *usb_dev); extern struct usb_device *usb_find_device(u16 vendor_id, u16 product_id); extern int usb_autopm_set_interface(struct usb_interface *intf); extern int usb_autopm_get_interface(struct usb_interface *intf); extern void usb_autopm_put_interface(struct usb_interface *intf); static inline void usb_autopm_enable(struct usb_interface *intf) { intf->pm_usage_cnt = 0; usb_autopm_set_interface(intf); } static inline void usb_autopm_disable(struct usb_interface *intf) { intf->pm_usage_cnt = 1; usb_autopm_set_interface(intf); } static inline void usb_mark_last_busy(struct usb_device *udev) { udev->last_busy = jiffies; } # 552 "/home/l/latest/xxx/include/linux/usb.h" extern int usb_get_current_frame_number(struct usb_device *usb_dev); extern int usb_driver_claim_interface(struct usb_driver *driver, struct usb_interface *iface, void *priv); # 568 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_interface_claimed(struct usb_interface *iface) { return (iface->dev.driver != ((void *)0)); } extern void usb_driver_release_interface(struct usb_driver *driver, struct usb_interface *iface); const struct usb_device_id *usb_match_id(struct usb_interface *interface, const struct usb_device_id *id); extern int usb_match_one_id(struct usb_interface *interface, const struct usb_device_id *id); extern struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor); extern struct usb_interface *usb_ifnum_to_if(const struct usb_device *dev, unsigned ifnum); extern struct usb_host_interface *usb_altnum_to_altsetting( const struct usb_interface *intf, unsigned int altnum); # 612 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size) { int actual; actual = snprintf(buf, size, "usb-%s-%s", dev->bus->bus_name, dev->devpath); return (actual >= (int)size) ? -1 : actual; } # 628 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_num(const struct usb_endpoint_descriptor *epd) { return epd->bEndpointAddress & 0x0f; } # 640 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd) { return epd->bmAttributes & 0x03; } static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd) { return ((epd->bEndpointAddress & 0x80) == 0x80); } static inline int usb_endpoint_dir_out( const struct usb_endpoint_descriptor *epd) { return ((epd->bEndpointAddress & 0x80) == 0); } static inline int usb_endpoint_xfer_bulk( const struct usb_endpoint_descriptor *epd) { return ((epd->bmAttributes & 0x03) == 2); } static inline int usb_endpoint_xfer_control( const struct usb_endpoint_descriptor *epd) { return ((epd->bmAttributes & 0x03) == 0); } # 701 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_xfer_int( const struct usb_endpoint_descriptor *epd) { return ((epd->bmAttributes & 0x03) == 3); } # 715 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_xfer_isoc( const struct usb_endpoint_descriptor *epd) { return ((epd->bmAttributes & 0x03) == 1); } # 729 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_bulk_in( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd)); } # 742 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_bulk_out( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd)); } # 755 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_int_in( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd)); } # 768 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_int_out( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd)); } # 781 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_isoc_in( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd)); } # 794 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_endpoint_is_isoc_out( const struct usb_endpoint_descriptor *epd) { return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd)); } # 918 "/home/l/latest/xxx/include/linux/usb.h" struct usb_dynids { spinlock_t lock; struct list_head list; }; struct usb_dynid { struct list_head node; struct usb_device_id id; }; extern ssize_t usb_store_new_id(struct usb_dynids *dynids, struct device_driver *driver, const char *buf, size_t count); struct usbdrv_wrap { struct device_driver driver; int for_devices; }; # 994 "/home/l/latest/xxx/include/linux/usb.h" struct usb_driver { const char *name; int (*probe) (struct usb_interface *intf, const struct usb_device_id *id); void (*disconnect) (struct usb_interface *intf); int (*ioctl) (struct usb_interface *intf, unsigned int code, void *buf); int (*suspend) (struct usb_interface *intf, pm_message_t message); int (*resume) (struct usb_interface *intf); int (*reset_resume)(struct usb_interface *intf); int (*pre_reset)(struct usb_interface *intf); int (*post_reset)(struct usb_interface *intf); const struct usb_device_id *id_table; struct usb_dynids dynids; struct usbdrv_wrap drvwrap; unsigned int no_dynamic_id:1; unsigned int supports_autosuspend:1; }; # 1040 "/home/l/latest/xxx/include/linux/usb.h" struct usb_device_driver { const char *name; int (*probe) (struct usb_device *udev); void (*disconnect) (struct usb_device *udev); int (*suspend) (struct usb_device *udev, pm_message_t message); int (*resume) (struct usb_device *udev); struct usbdrv_wrap drvwrap; unsigned int supports_autosuspend:1; }; extern struct bus_type usb_bus_type; # 1066 "/home/l/latest/xxx/include/linux/usb.h" struct usb_class_driver { char *name; const struct file_operations *fops; int minor_base; }; extern int usb_register_driver(struct usb_driver *, struct module *, const char *); static inline int usb_register(struct usb_driver *driver) { return usb_register_driver(driver, (&__this_module), "usblp"); } extern void usb_deregister(struct usb_driver *); extern int usb_register_device_driver(struct usb_device_driver *, struct module *); extern void usb_deregister_device_driver(struct usb_device_driver *); extern int usb_register_dev(struct usb_interface *intf, struct usb_class_driver *class_driver); extern void usb_deregister_dev(struct usb_interface *intf, struct usb_class_driver *class_driver); extern int usb_disabled(void); # 1121 "/home/l/latest/xxx/include/linux/usb.h" struct usb_iso_packet_descriptor { unsigned int offset; unsigned int length; unsigned int actual_length; int status; }; struct urb; struct usb_anchor { struct list_head urb_list; wait_queue_head_t wait; spinlock_t lock; }; static inline void init_usb_anchor(struct usb_anchor *anchor) { INIT_LIST_HEAD(&anchor->urb_list); init_waitqueue_head(&anchor->wait); do { *(&anchor->lock) = (spinlock_t) { .raw_lock = { 0 }, }; } while (0); } typedef void (*usb_complete_t)(struct urb *); # 1312 "/home/l/latest/xxx/include/linux/usb.h" struct urb { struct kref kref; void *hcpriv; atomic_t use_count; u8 reject; int unlinked; struct list_head urb_list; struct list_head anchor_list; struct usb_anchor *anchor; struct usb_device *dev; struct usb_host_endpoint *ep; unsigned int pipe; int status; unsigned int transfer_flags; void *transfer_buffer; dma_addr_t transfer_dma; int transfer_buffer_length; int actual_length; unsigned char *setup_packet; dma_addr_t setup_dma; int start_frame; int number_of_packets; int interval; int error_count; void *context; usb_complete_t complete; struct usb_iso_packet_descriptor iso_frame_desc[0]; }; # 1363 "/home/l/latest/xxx/include/linux/usb.h" static inline void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char *setup_packet, void *transfer_buffer, int buffer_length, usb_complete_t complete_fn, void *context) { urb->dev = dev; urb->pipe = pipe; urb->setup_packet = setup_packet; urb->transfer_buffer = transfer_buffer; urb->transfer_buffer_length = buffer_length; urb->complete = complete_fn; urb->context = context; } # 1394 "/home/l/latest/xxx/include/linux/usb.h" static inline void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete_fn, void *context) { urb->dev = dev; urb->pipe = pipe; urb->transfer_buffer = transfer_buffer; urb->transfer_buffer_length = buffer_length; urb->complete = complete_fn; urb->context = context; } # 1428 "/home/l/latest/xxx/include/linux/usb.h" static inline void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete_fn, void *context, int interval) { urb->dev = dev; urb->pipe = pipe; urb->transfer_buffer = transfer_buffer; urb->transfer_buffer_length = buffer_length; urb->complete = complete_fn; urb->context = context; if (dev->speed == USB_SPEED_HIGH) urb->interval = 1 << (interval - 1); else urb->interval = interval; urb->start_frame = -1; } extern void usb_init_urb(struct urb *urb); extern struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags); extern void usb_free_urb(struct urb *urb); extern struct urb *usb_get_urb(struct urb *urb); extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags); extern int usb_unlink_urb(struct urb *urb); extern void usb_kill_urb(struct urb *urb); extern void usb_kill_anchored_urbs(struct usb_anchor *anchor); extern void usb_unlink_anchored_urbs(struct usb_anchor *anchor); extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor); extern void usb_unanchor_urb(struct urb *urb); extern int usb_wait_anchor_empty_timeout(struct usb_anchor *anchor, unsigned int timeout); # 1472 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_urb_dir_in(struct urb *urb) { return (urb->transfer_flags & 0x0200) == 0x0200; } # 1484 "/home/l/latest/xxx/include/linux/usb.h" static inline int usb_urb_dir_out(struct urb *urb) { return (urb->transfer_flags & 0x0200) == 0; } void *usb_buffer_alloc(struct usb_device *dev, size_t size, gfp_t mem_flags, dma_addr_t *dma); void usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma); struct scatterlist; int usb_buffer_map_sg(const struct usb_device *dev, int is_in, struct scatterlist *sg, int nents); void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, struct scatterlist *sg, int n_hw_ents); extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout); extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout); extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout); extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype, unsigned char descindex, void *buf, int size); extern int usb_get_status(struct usb_device *dev, int type, int target, void *data); extern int usb_string(struct usb_device *dev, int index, char *buf, size_t size); extern int usb_clear_halt(struct usb_device *dev, int pipe); extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern int usb_driver_set_configuration(struct usb_device *udev, int config); # 1565 "/home/l/latest/xxx/include/linux/usb.h" struct usb_sg_request { int status; size_t bytes; spinlock_t lock; struct usb_device *dev; int pipe; struct scatterlist *sg; int nents; int entries; struct urb **urbs; int count; struct completion complete; }; int usb_sg_init( struct usb_sg_request *io, struct usb_device *dev, unsigned pipe, unsigned period, struct scatterlist *sg, int nents, size_t length, gfp_t mem_flags ); void usb_sg_cancel(struct usb_sg_request *io); void usb_sg_wait(struct usb_sg_request *io); # 1647 "/home/l/latest/xxx/include/linux/usb.h" static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint) { return (dev->devnum << 8) | (endpoint << 15); } # 1673 "/home/l/latest/xxx/include/linux/usb.h" static inline __u16 usb_maxpacket(struct usb_device *udev, int pipe, int is_out) { struct usb_host_endpoint *ep; unsigned epnum = (((pipe) >> 15) & 0xf); if (is_out) { ({ int __ret_warn_on = !!(((pipe) & 0x80)); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_on_slowpath("/home/l/latest/xxx/include/linux/usb.h", 1680); __builtin_expect(!!(__ret_warn_on), 0); }); ep = udev->ep_out[epnum]; } else { ({ int __ret_warn_on = !!((!((pipe) & 0x80))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_on_slowpath("/home/l/latest/xxx/include/linux/usb.h", 1683); __builtin_expect(!!(__ret_warn_on), 0); }); ep = udev->ep_in[epnum]; } if (!ep) return 0; return (( __u16)(__le16)(ep->desc.wMaxPacketSize)); } # 1700 "/home/l/latest/xxx/include/linux/usb.h" extern void usb_register_notify(struct notifier_block *nb); extern void usb_unregister_notify(struct notifier_block *nb); # 61 "/home/l/latest/xxx/drivers/usb/class/usblp.c" 2 # 137 "/home/l/latest/xxx/drivers/usb/class/usblp.c" struct usblp { struct usb_device *dev; struct mutex wmut; struct mutex mut; spinlock_t lock; char *readbuf; char *statusbuf; struct usb_anchor urbs; wait_queue_head_t rwait, wwait; int readcount; int ifnum; struct usb_interface *intf; struct { int alt_setting; struct usb_endpoint_descriptor *epwrite; struct usb_endpoint_descriptor *epread; } protocol[(3 +1)]; int current_protocol; int minor; int wcomplete, rcomplete; int wstatus; int rstatus; unsigned int quirks; unsigned int flags; unsigned char used; unsigned char present; unsigned char bidir; unsigned char sleeping; unsigned char no_paper; unsigned char *device_id_string; }; # 204 "/home/l/latest/xxx/drivers/usb/class/usblp.c" struct quirk_printer_struct { __u16 vendorId; __u16 productId; unsigned int quirks; }; static const struct quirk_printer_struct quirk_printers[] = { { 0x03f0, 0x0004, 0x1 }, { 0x03f0, 0x0104, 0x1 }, { 0x03f0, 0x0204, 0x1 }, { 0x03f0, 0x0304, 0x1 }, { 0x03f0, 0x0404, 0x1 }, { 0x03f0, 0x0504, 0x1 }, { 0x03f0, 0x0604, 0x1 }, { 0x03f0, 0x0804, 0x1 }, { 0x03f0, 0x1104, 0x1 }, { 0x0409, 0xefbe, 0x1 }, { 0x0409, 0xbef4, 0x1 }, { 0x0409, 0xf0be, 0x1 }, { 0x0409, 0xf1be, 0x1 }, { 0x0482, 0x0010, 0x1 }, { 0x04b8, 0x0202, 0x4 }, { 0, 0 } }; static int usblp_wwait(struct usblp *usblp, int nonblock); static int usblp_wtest(struct usblp *usblp, int nonblock); static int usblp_rwait_and_lock(struct usblp *usblp, int nonblock); static int usblp_rtest(struct usblp *usblp, int nonblock); static int usblp_submit_read(struct usblp *usblp); static int usblp_select_alts(struct usblp *usblp); static int usblp_set_protocol(struct usblp *usblp, int protocol); static int usblp_cache_device_id_string(struct usblp *usblp); static struct usb_driver usblp_driver; static struct mutex usblp_mutex = { .count = { (1) } , .wait_lock = (spinlock_t) { .raw_lock = { 0 }, } , .wait_list = { &(usblp_mutex.wait_list), &(usblp_mutex.wait_list) } }; static int usblp_ctrl_msg(struct usblp *usblp, int request, int type, int dir, int recip, int value, void *buf, int len) { int retval; int index = usblp->ifnum; if ((request == 0x00) && (type == (0x01 << 5))) { index = (usblp->ifnum<<8)|usblp->protocol[usblp->current_protocol].alt_setting; } retval = usb_control_msg(usblp->dev, dir ? ((2 << 30) | __create_pipe(usblp->dev, 0) | 0x80) : ((2 << 30) | __create_pipe(usblp->dev, 0)), request, type | dir | recip, value, index, buf, len, 5000); do {} while (0); return retval < 0 ? retval : 0; } # 285 "/home/l/latest/xxx/drivers/usb/class/usblp.c" static int proto_bias = -1; static void usblp_bulk_read(struct urb *urb) { struct usblp *usblp = urb->context; int status = urb->status; if (usblp->present && usblp->used) { if (status) printk("<4>" "usblp%d: " "nonzero read bulk status received: %d\n", usblp->minor, status); } _spin_lock(&usblp->lock); if (status < 0) usblp->rstatus = status; else usblp->rstatus = urb->actual_length; usblp->rcomplete = 1; __wake_up(&usblp->rwait, (1 | 2), 1, ((void *)0)); do {__raw_spin_unlock(&(&usblp->lock)->raw_lock); (void)0; } while (0); usb_free_urb(urb); } static void usblp_bulk_write(struct urb *urb) { struct usblp *usblp = urb->context; int status = urb->status; if (usblp->present && usblp->used) { if (status) printk("<4>" "usblp%d: " "nonzero write bulk status received: %d\n", usblp->minor, status); } _spin_lock(&usblp->lock); if (status < 0) usblp->wstatus = status; else usblp->wstatus = urb->actual_length; usblp->no_paper = 0; usblp->wcomplete = 1; __wake_up(&usblp->wwait, (1 | 2), 1, ((void *)0)); do {__raw_spin_unlock(&(&usblp->lock)->raw_lock); (void)0; } while (0); usb_free_urb(urb); } static const char *usblp_messages[] = { "ok", "out of paper", "off-line", "on fire" }; static int usblp_check_status(struct usblp *usblp, int err) { unsigned char status, newerr = 0; int error; mutex_lock(&usblp->mut); if ((error = usblp_ctrl_msg(usblp, 0x01, (0x01 << 5), 0x80, 0x01, 0, usblp->statusbuf, 1)) < 0) { mutex_unlock(&usblp->mut); if (printk_ratelimit()) printk("<3>" "usblp%d: error %d reading printer status\n", usblp->minor, error); return 0; } status = *usblp->statusbuf; mutex_unlock(&usblp->mut); if (~status & 0x08) newerr = 3; if (status & 0x20) newerr = 1; if (~status & 0x10) newerr = 2; if (newerr != err) { printk("<6>" "usblp%d: %s\n", usblp->minor, usblp_messages[newerr]); } return newerr; } static int handle_bidir (struct usblp *usblp) { if (usblp->bidir && usblp->used && !usblp->sleeping) { if (usblp_submit_read(usblp) < 0) return -5; } return 0; } static int usblp_open(struct inode *inode, struct file *file) { int minor = iminor(inode); struct usblp *usblp; struct usb_interface *intf; int retval; if (minor < 0) return -19; mutex_lock (&usblp_mutex); retval = -19; intf = usb_find_interface(&usblp_driver, minor); if (!intf) { goto out; } usblp = usb_get_intfdata (intf); if (!usblp || !usblp->dev || !usblp->present) goto out; retval = -16; if (usblp->used) goto out; retval = usb_autopm_get_interface(intf); if (retval < 0) goto out; usblp->used = 1; file->private_data = usblp; usblp->wcomplete = 1; usblp->wstatus = 0; usblp->rcomplete = 0; if (handle_bidir(usblp) < 0) { usb_autopm_put_interface(intf); usblp->used = 0; file->private_data = ((void *)0); retval = -5; } out: mutex_unlock (&usblp_mutex); return retval; } static void usblp_cleanup (struct usblp *usblp) { printk("<6>" "usblp%d: removed\n", usblp->minor); kfree(usblp->readbuf); kfree (usblp->device_id_string); kfree (usblp->statusbuf); kfree (usblp); } static void usblp_unlink_urbs(struct usblp *usblp) { usb_kill_anchored_urbs(&usblp->urbs); } static int usblp_release(struct inode *inode, struct file *file) { struct usblp *usblp = file->private_data; usblp->flags &= ~0x0040; mutex_lock (&usblp_mutex); usblp->used = 0; if (usblp->present) { usblp_unlink_urbs(usblp); usb_autopm_put_interface(usblp->intf); } else usblp_cleanup (usblp); mutex_unlock (&usblp_mutex); return 0; } static unsigned int usblp_poll(struct file *file, struct poll_table_struct *wait) { int ret; unsigned long flags; struct usblp *usblp = file->private_data; poll_wait(file, &usblp->rwait, wait); poll_wait(file, &usblp->wwait, wait); flags = _spin_lock_irqsave(&usblp->lock); ret = ((usblp->bidir && usblp->rcomplete) ? 0x0001 | 0x0040 : 0) | ((usblp->no_paper || usblp->wcomplete) ? 0x0004 | 0x0100 : 0); _spin_unlock_irqrestore(&usblp->lock, flags); return ret; } static long usblp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct usblp *usblp = file->private_data; int length, err, i; unsigned char newChannel; int status; int twoints[2]; int retval = 0; mutex_lock (&usblp->mut); if (!usblp->present) { retval = -19; goto done; } if (usblp->sleeping) { retval = -19; goto done; } do {} while (0); if ((((cmd) >> (0 +8)) & ((1 << 8)-1)) == 'P') switch ((((cmd) >> 0) & ((1 << 8)-1))) { case 1: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 2U) { retval = -22; goto done; } length = usblp_cache_device_id_string(usblp); if (length < 0) { retval = length; goto done; } if (length > (((cmd) >> ((0 +8)+8)) & ((1 << 14)-1))) length = (((cmd) >> ((0 +8)+8)) & ((1 << 14)-1)); if (copy_to_user((void *) arg, usblp->device_id_string, (unsigned long) length)) { retval = -14; goto done; } break; case 2: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 2U || (((cmd) >> ((0 +8)+8)) & ((1 << 14)-1)) < sizeof(twoints)) { retval = -22; goto done; } twoints[0] = usblp->current_protocol; twoints[1] = 0; for (i = 1; i <= 3; i++) { if (usblp->protocol[i].alt_setting >= 0) twoints[1] |= (1<> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 1U) { retval = -22; goto done; } # 577 "/home/l/latest/xxx/drivers/usb/class/usblp.c" usblp_unlink_urbs(usblp); retval = usblp_set_protocol(usblp, arg); if (retval < 0) { usblp_set_protocol(usblp, usblp->current_protocol); } break; case 4: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 1U || (( __u16)(__le16)(usblp->dev->descriptor.idVendor)) != 0x03F0 || usblp->quirks & 0x1) { retval = -22; goto done; } err = usblp_ctrl_msg(usblp, 0x00, (0x02 << 5), 0x80, 0x01, arg, &newChannel, 1); if (err < 0) { printk("<3>" "usblp" ": " "usblp%d: error = %d setting " "HP channel" "\n" , usblp->minor, err); retval = -5; goto done; } do {} while (0); break; case 5: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 2U || (((cmd) >> ((0 +8)+8)) & ((1 << 14)-1)) < sizeof(twoints)) { retval = -22; goto done; } twoints[0] = usblp->dev->bus->busnum; twoints[1] = usblp->dev->devnum; if (copy_to_user((void *)arg, (unsigned char *)twoints, sizeof(twoints))) { retval = -14; goto done; } do {} while (0); break; case 6: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 2U || (((cmd) >> ((0 +8)+8)) & ((1 << 14)-1)) < sizeof(twoints)) { retval = -22; goto done; } twoints[0] = (( __u16)(__le16)(usblp->dev->descriptor.idVendor)); twoints[1] = (( __u16)(__le16)(usblp->dev->descriptor.idProduct)); if (copy_to_user((void *)arg, (unsigned char *)twoints, sizeof(twoints))) { retval = -14; goto done; } do {} while (0); break; case 7: if ((((cmd) >> (((0 +8)+8)+14)) & ((1 << 2)-1)) != 0U) { retval = -22; goto done; } retval = usblp_ctrl_msg(usblp, 0x02, (0x01 << 5), 0, 0x03, 0, ((void *)0), 0); break; default: retval = -25; } else switch (cmd) { case 0x060b: if ((retval = usblp_ctrl_msg(usblp, 0x01, (0x01 << 5), 0x80, 0x01, 0, usblp->statusbuf, 1))) { if (printk_ratelimit()) printk("<3>" "usblp%d:" "failed reading printer status (%d)\n", usblp->minor, retval); retval = -5; goto done; } status = *usblp->statusbuf; if (copy_to_user ((void *)arg, &status, sizeof(int))) retval = -14; break; case 0x0604: if (arg) usblp->flags |= 0x0040; else usblp->flags &= ~0x0040; break; default: retval = -25; } done: mutex_unlock (&usblp->mut); return retval; } static struct urb *usblp_new_writeurb(struct usblp *usblp, int transfer_length) { struct urb *urb; char *writebuf; if ((writebuf = kmalloc(transfer_length, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)))) == ((void *)0)) return ((void *)0); if ((urb = usb_alloc_urb(0, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)))) == ((void *)0)) { kfree(writebuf); return ((void *)0); } usb_fill_bulk_urb(urb, usblp->dev, ((3 << 30) | __create_pipe(usblp->dev, usblp->protocol[usblp->current_protocol].epwrite->bEndpointAddress)), writebuf, transfer_length, usblp_bulk_write, usblp); urb->transfer_flags |= 0x0100; return urb; } static ssize_t usblp_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) { struct usblp *usblp = file->private_data; struct urb *writeurb; int rv; int transfer_length; ssize_t writecount = 0; if (mutex_lock_interruptible(&usblp->wmut)) { rv = -4; goto raise_biglock; } if ((rv = usblp_wwait(usblp, !!(file->f_flags & 00004000))) < 0) goto raise_wait; while (writecount < count) { if ((transfer_length = count - writecount) > 8192) transfer_length = 8192; rv = -12; if ((writeurb = usblp_new_writeurb(usblp, transfer_length)) == ((void *)0)) goto raise_urb; usb_anchor_urb(writeurb, &usblp->urbs); if (copy_from_user(writeurb->transfer_buffer, buffer + writecount, transfer_length)) { rv = -14; goto raise_badaddr; } _spin_lock_irq(&usblp->lock); usblp->wcomplete = 0; do { __raw_spin_unlock(&(&usblp->lock)->raw_lock); (void)0; do { do { } while (0); raw_local_irq_enable(); } while (0); } while (0); if ((rv = usb_submit_urb(writeurb, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)))) < 0) { usblp->wstatus = 0; _spin_lock_irq(&usblp->lock); usblp->no_paper = 0; usblp->wcomplete = 1; __wake_up(&usblp->wwait, (1 | 2), 1, ((void *)0)); do { __raw_spin_unlock(&(&usblp->lock)->raw_lock); (void)0; do { do { } while (0); raw_local_irq_enable(); } while (0); } while (0); if (rv != -12) rv = -5; goto raise_submit; } rv = usblp_wwait(usblp, !!(file->f_flags&00004000)); if (rv < 0) { if (rv == -11) { writecount += transfer_length; } if (rv == -28) { _spin_lock_irq(&usblp->lock); usblp->no_paper = 1; do { __raw_spin_unlock(&(&usblp->lock)->raw_lock); (void)0; do { do { } while (0); raw_local_irq_enable(); } while (0); } while (0); writecount += transfer_length; } goto collect_error; } if (usblp->wstatus < 0) { rv = -5; goto collect_error; } writecount += usblp->wstatus; } mutex_unlock(&usblp->wmut); return writecount; raise_submit: raise_badaddr: usb_unanchor_urb(writeurb); usb_free_urb(writeurb); raise_urb: raise_wait: collect_error: mutex_unlock(&usblp->wmut); raise_biglock: return writecount ? writecount : rv; } static ssize_t usblp_read(struct file *file, char *buffer, size_t len, loff_t *ppos) { struct usblp *usblp = file->private_data; ssize_t count; ssize_t avail; int rv; if (!usblp->bidir) return -22; rv = usblp_rwait_and_lock(usblp, !!(file->f_flags & 00004000)); if (rv < 0) return rv; if ((avail = usblp->rstatus) < 0) { printk("<3>" "usblp%d: error %d reading from printer\n", usblp->minor, (int)avail); usblp_submit_read(usblp); count = -5; goto done; } count = len < avail - usblp->readcount ? len : avail - usblp->readcount; if (count != 0 && copy_to_user(buffer, usblp->readbuf + usblp->readcount, count)) { count = -14; goto done; } if ((usblp->readcount += count) == avail) { if (usblp_submit_read(usblp) < 0) { if (count == 0) count = -5; goto done; } } done: mutex_unlock (&usblp->mut); return count; } # 863 "/home/l/latest/xxx/drivers/usb/class/usblp.c" static int usblp_wwait(struct usblp *usblp, int nonblock) { wait_queue_t waita = { .private = get_current(), .func = default_wake_function, .task_list = { ((void *)0), ((void *)0) } }; int rc; int err = 0; add_wait_queue(&usblp->wwait, &waita); for (;;) { do { (void)((__typeof__(*(&get_current()->state)))__xchg((unsigned long)((1)), (&get_current()->state), sizeof(*(&get_current()->state)))); } while (0); if (mutex_lock_interruptible(&usblp->mut)) { rc = -4; break; } rc = usblp_wtest(usblp, nonblock); mutex_unlock(&usblp->mut); if (rc <= 0) break; if (usblp->flags & 0x0040) { if (schedule_timeout(msecs_to_jiffies(5000)) == 0) { err = usblp_check_status(usblp, err); if (err == 1) { rc = -28; break; } } } else { schedule(); } } do { (void)((__typeof__(*(&get_current()->state)))__xchg((unsigned long)((0)), (&get_current()->state), sizeof(*(&get_current()->state)))); } while (0); remove_wait_queue(&usblp->wwait, &waita); return rc; } static int usblp_wtest(struct usblp *usblp, int nonblock) { unsigned long flags; if (!usblp->present) return -19; if (signal_pending(get_current())) return -4; flags = _spin_lock_irqsave(&usblp->lock); if (usblp->wcomplete) { _spin_unlock_irqrestore(&usblp->lock, flags); return 0; } _spin_unlock_irqrestore(&usblp->lock, flags); if (usblp->sleeping) return -19; if (nonblock) return -11; return 1; } # 926 "/home/l/latest/xxx/drivers/usb/class/usblp.c" static int usblp_rwait_and_lock(struct usblp *usblp, int nonblock) { wait_queue_t waita = { .private = get_current(), .func = default_wake_function, .task_list = { ((void *)0), ((void *)0) } }; int rc; add_wait_queue(&usblp->rwait, &waita); for (;;) { if (mutex_lock_interruptible(&usblp->mut)) { rc = -4; break; } do { (void)((__typeof__(*(&get_current()->state)))__xchg((unsigned long)((1)), (&get_current()->state), sizeof(*(&get_current()->state)))); } while (0); if ((rc = usblp_rtest(usblp, nonblock)) < 0) { mutex_unlock(&usblp->mut); break; } if (rc == 0) break; mutex_unlock(&usblp->mut); schedule(); } do { (void)((__typeof__(*(&get_current()->state)))__xchg((unsigned long)((0)), (&get_current()->state), sizeof(*(&get_current()->state)))); } while (0); remove_wait_queue(&usblp->rwait, &waita); return rc; } static int usblp_rtest(struct usblp *usblp, int nonblock) { unsigned long flags; if (!usblp->present) return -19; if (signal_pending(get_current())) return -4; flags = _spin_lock_irqsave(&usblp->lock); if (usblp->rcomplete) { _spin_unlock_irqrestore(&usblp->lock, flags); return 0; } _spin_unlock_irqrestore(&usblp->lock, flags); if (usblp->sleeping) return -19; if (nonblock) return -11; return 1; } static int usblp_submit_read(struct usblp *usblp) { struct urb *urb; unsigned long flags; int rc; rc = -12; if ((urb = usb_alloc_urb(0, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)))) == ((void *)0)) goto raise_urb; usb_fill_bulk_urb(urb, usblp->dev, ((3 << 30) | __create_pipe(usblp->dev, usblp->protocol[usblp->current_protocol].epread->bEndpointAddress) | 0x80), usblp->readbuf, 1024, usblp_bulk_read, usblp); usb_anchor_urb(urb, &usblp->urbs); flags = _spin_lock_irqsave(&usblp->lock); usblp->readcount = 0; usblp->rcomplete = 0; _spin_unlock_irqrestore(&usblp->lock, flags); if ((rc = usb_submit_urb(urb, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)))) < 0) { do {} while (0); flags = _spin_lock_irqsave(&usblp->lock); usblp->rstatus = rc; usblp->rcomplete = 1; _spin_unlock_irqrestore(&usblp->lock, flags); goto raise_submit; } return 0; raise_submit: usb_unanchor_urb(urb); usb_free_urb(urb); raise_urb: return rc; } # 1032 "/home/l/latest/xxx/drivers/usb/class/usblp.c" static unsigned int usblp_quirks (__u16 vendor, __u16 product) { int i; for (i = 0; quirk_printers[i].vendorId; i++) { if (vendor == quirk_printers[i].vendorId && product == quirk_printers[i].productId) return quirk_printers[i].quirks; } return 0; } static const struct file_operations usblp_fops = { .owner = (&__this_module), .read = usblp_read, .write = usblp_write, .poll = usblp_poll, .unlocked_ioctl = usblp_ioctl, .compat_ioctl = usblp_ioctl, .open = usblp_open, .release = usblp_release, }; static struct usb_class_driver usblp_class = { .name = "lp%d", .fops = &usblp_fops, .minor_base = 0, }; static ssize_t usblp_show_ieee1284_id(struct device *dev, struct device_attribute *attr, char *buf) { struct usb_interface *intf = ({ const typeof( ((struct usb_interface *)0)->dev ) *__mptr = (dev); (struct usb_interface *)( (char *)__mptr - __builtin_offsetof(struct usb_interface,dev) );}); struct usblp *usblp = usb_get_intfdata (intf); if (usblp->device_id_string[0] == 0 && usblp->device_id_string[1] == 0) return 0; return sprintf(buf, "%s", usblp->device_id_string+2); } static struct device_attribute dev_attr_ieee1284_id = { .attr = {.name = "ieee1284_id", .mode = (00400|00040|00004) }, .show = usblp_show_ieee1284_id, .store = ((void *)0), }; static int usblp_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct usb_device *dev = ({ const typeof( ((struct usb_device *)0)->dev ) *__mptr = (intf->dev.parent); (struct usb_device *)( (char *)__mptr - __builtin_offsetof(struct usb_device,dev) );}); struct usblp *usblp = ((void *)0); int protocol; int retval; if (!(usblp = kzalloc(sizeof(struct usblp), ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))))) { retval = -12; goto abort; } usblp->dev = dev; do { static struct lock_class_key __key; __mutex_init((&usblp->wmut), "&usblp->wmut", &__key); } while (0); do { static struct lock_class_key __key; __mutex_init((&usblp->mut), "&usblp->mut", &__key); } while (0); do { *(&usblp->lock) = (spinlock_t) { .raw_lock = { 0 }, }; } while (0); init_waitqueue_head(&usblp->rwait); init_waitqueue_head(&usblp->wwait); init_usb_anchor(&usblp->urbs); usblp->ifnum = intf->cur_altsetting->desc.bInterfaceNumber; usblp->intf = intf; if (!(usblp->device_id_string = kmalloc(1024, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))))) { retval = -12; goto abort; } if (!(usblp->readbuf = kmalloc(1024, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))))) { retval = -12; goto abort; } usblp->statusbuf = kmalloc(8, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); if (!usblp->statusbuf) { retval = -12; goto abort; } usblp->quirks = usblp_quirks( (( __u16)(__le16)(dev->descriptor.idVendor)), (( __u16)(__le16)(dev->descriptor.idProduct))); protocol = usblp_select_alts(usblp); if (protocol < 0) { do {} while (0); retval = -19; goto abort; } if (usblp_set_protocol(usblp, protocol) < 0) { retval = -19; goto abort; } usblp_cache_device_id_string(usblp); retval = device_create_file(&intf->dev, &dev_attr_ieee1284_id); if (retval) goto abort_intfdata; usb_set_intfdata (intf, usblp); usblp->present = 1; retval = usb_register_dev(intf, &usblp_class); if (retval) { printk("<3>" "usblp: Not able to get a minor" " (base %u, slice default): %d\n", 0, retval); goto abort_intfdata; } usblp->minor = intf->minor; printk("<6>" "usblp%d: USB %sdirectional printer dev %d " "if %d alt %d proto %d vid 0x%4.4X pid 0x%4.4X\n", usblp->minor, usblp->bidir ? "Bi" : "Uni", dev->devnum, usblp->ifnum, usblp->protocol[usblp->current_protocol].alt_setting, usblp->current_protocol, (( __u16)(__le16)(usblp->dev->descriptor.idVendor)), (( __u16)(__le16)(usblp->dev->descriptor.idProduct))); return 0; abort_intfdata: usb_set_intfdata (intf, ((void *)0)); device_remove_file(&intf->dev, &dev_attr_ieee1284_id); abort: if (usblp) { kfree(usblp->readbuf); kfree(usblp->statusbuf); kfree(usblp->device_id_string); kfree(usblp); } return retval; } # 1210 "/home/l/latest/xxx/drivers/usb/class/usblp.c" static int usblp_select_alts(struct usblp *usblp) { struct usb_interface *if_alt; struct usb_host_interface *ifd; struct usb_endpoint_descriptor *epd, *epwrite, *epread; int p, i, e; if_alt = usblp->intf; for (p = 0; p < (3 +1); p++) usblp->protocol[p].alt_setting = -1; for (i = 0; i < if_alt->num_altsetting; i++) { ifd = &if_alt->altsetting[i]; if (ifd->desc.bInterfaceClass != 7 || ifd->desc.bInterfaceSubClass != 1) if (!(usblp->quirks & 0x4)) continue; if (ifd->desc.bInterfaceProtocol < 1 || ifd->desc.bInterfaceProtocol > 3) continue; epwrite = epread = ((void *)0); for (e = 0; e < ifd->desc.bNumEndpoints; e++) { epd = &ifd->endpoint[e].desc; if (usb_endpoint_is_bulk_out(epd)) if (!epwrite) epwrite = epd; if (usb_endpoint_is_bulk_in(epd)) if (!epread) epread = epd; } if (!epwrite || (ifd->desc.bInterfaceProtocol > 1 && !epread)) continue; if (ifd->desc.bInterfaceProtocol == 1) { epread = ((void *)0); } else if (usblp->quirks & 0x1) { printk("<6>" "usblp%d: Disabling reads from " "problematic bidirectional printer\n", usblp->minor); epread = ((void *)0); } usblp->protocol[ifd->desc.bInterfaceProtocol].alt_setting = ifd->desc.bAlternateSetting; usblp->protocol[ifd->desc.bInterfaceProtocol].epwrite = epwrite; usblp->protocol[ifd->desc.bInterfaceProtocol].epread = epread; } if (proto_bias >= 1 && proto_bias <= 3 && usblp->protocol[proto_bias].alt_setting != -1) return proto_bias; if (usblp->protocol[2].alt_setting != -1) return 2; if (usblp->protocol[1].alt_setting != -1) return 1; if (usblp->protocol[3].alt_setting != -1) return 3; return -1; } static int usblp_set_protocol(struct usblp *usblp, int protocol) { int r, alts; if (protocol < 1 || protocol > 3) return -22; alts = usblp->protocol[protocol].alt_setting; if (alts < 0) return -22; r = usb_set_interface(usblp->dev, usblp->ifnum, alts); if (r < 0) { printk("<3>" "usblp: can't set desired altsetting %d on interface %d\n", alts, usblp->ifnum); return r; } usblp->bidir = (usblp->protocol[protocol].epread != ((void *)0)); usblp->current_protocol = protocol; do {} while (0); return 0; } static int usblp_cache_device_id_string(struct usblp *usblp) { int err, length; err = usblp_ctrl_msg(usblp, 0x00, (0x01 << 5), 0x80, 0x01, 0, usblp->device_id_string, 1024 - 1); if (err < 0) { do {} while (0); usblp->device_id_string[0] = usblp->device_id_string[1] = '\0'; return -5; } length = (__builtin_constant_p((__u16)(( __u16)(__be16)(*((__be16 *)usblp->device_id_string)))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*((__be16 *)usblp->device_id_string)))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*((__be16 *)usblp->device_id_string)))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*((__be16 *)usblp->device_id_string))))); if (length < 2) length = 2; else if (length >= 1024) length = 1024 - 1; usblp->device_id_string[length] = '\0'; do {} while (0); return length; } static void usblp_disconnect(struct usb_interface *intf) { struct usblp *usblp = usb_get_intfdata (intf); usb_deregister_dev(intf, &usblp_class); if (!usblp || !usblp->dev) { printk("<3>" "usblp" ": " "bogus disconnect" "\n"); do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.quad 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/home/l/latest/xxx/drivers/usb/class/usblp.c"), "i" (1349), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } device_remove_file(&intf->dev, &dev_attr_ieee1284_id); mutex_lock (&usblp_mutex); mutex_lock (&usblp->mut); usblp->present = 0; __wake_up(&usblp->wwait, (1 | 2), 1, ((void *)0)); __wake_up(&usblp->rwait, (1 | 2), 1, ((void *)0)); usb_set_intfdata (intf, ((void *)0)); usblp_unlink_urbs(usblp); mutex_unlock (&usblp->mut); if (!usblp->used) usblp_cleanup (usblp); mutex_unlock (&usblp_mutex); } static int usblp_suspend (struct usb_interface *intf, pm_message_t message) { struct usblp *usblp = usb_get_intfdata (intf); usblp->sleeping = 1; usblp_unlink_urbs(usblp); return 0; } static int usblp_resume (struct usb_interface *intf) { struct usblp *usblp = usb_get_intfdata (intf); int r; usblp->sleeping = 0; r = handle_bidir (usblp); return r; } static struct usb_device_id usblp_ids [] = { { .match_flags = (0x0010 | 0x0020 | 0x0040), .bDeviceClass = (7), .bDeviceSubClass = (1), .bDeviceProtocol = (1) }, { .match_flags = (0x0010 | 0x0020 | 0x0040), .bDeviceClass = (7), .bDeviceSubClass = (1), .bDeviceProtocol = (2) }, { .match_flags = (0x0010 | 0x0020 | 0x0040), .bDeviceClass = (7), .bDeviceSubClass = (1), .bDeviceProtocol = (3) }, { .match_flags = (0x0080 | 0x0100 | 0x0200), .bInterfaceClass = (7), .bInterfaceSubClass = (1), .bInterfaceProtocol = (1) }, { .match_flags = (0x0080 | 0x0100 | 0x0200), .bInterfaceClass = (7), .bInterfaceSubClass = (1), .bInterfaceProtocol = (2) }, { .match_flags = (0x0080 | 0x0100 | 0x0200), .bInterfaceClass = (7), .bInterfaceSubClass = (1), .bInterfaceProtocol = (3) }, { .match_flags = (0x0001 | 0x0002), .idVendor = (0x04b8), .idProduct = (0x0202) }, { } }; extern const struct usb_device_id __mod_usb_device_table __attribute__ ((unused, alias("usblp_ids"))); static struct usb_driver usblp_driver = { .name = "usblp", .probe = usblp_probe, .disconnect = usblp_disconnect, .suspend = usblp_suspend, .resume = usblp_resume, .id_table = usblp_ids, .supports_autosuspend = 1, }; static int __attribute__ ((__section__(".init.text"))) __attribute__((__cold__)) usblp_init(void) { return usb_register(&usblp_driver); } static void __attribute__ ((__section__(".exit.text"))) __attribute__((__cold__)) usblp_exit(void) { usb_deregister(&usblp_driver); } static inline initcall_t __inittest(void) { return usblp_init; } int init_module(void) __attribute__((alias("usblp_init")));; static inline exitcall_t __exittest(void) { return usblp_exit; } void cleanup_module(void) __attribute__((alias("usblp_exit")));; static const char __mod_author1432[] __attribute__((__used__)) __attribute__((section(".modinfo"),unused)) = "author" "=" "Michael Gee, Pavel Machek, Vojtech Pavlik, Randy Dunlap, Pete Zaitcev, David Paschal"; static const char __mod_description1433[] __attribute__((__used__)) __attribute__((section(".modinfo"),unused)) = "description" "=" "USB Printer Device Class driver"; static inline int *__check_proto_bias(void) { return(&(proto_bias)); }; static int __param_perm_check_proto_bias __attribute__((unused)) = (sizeof(char[1 - 2 * !!(((00400|00040|00004) | 00200) < 0 || ((00400|00040|00004) | 00200) > 0777 || (((00400|00040|00004) | 00200) & 2))]) - 1); static const char __param_str_proto_bias[] = "proto_bias"; static struct kernel_param const __param_proto_bias __attribute__((__used__)) __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) = { __param_str_proto_bias, (00400|00040|00004) | 00200, param_set_int, param_get_int, { &proto_bias } }; static const char __mod_proto_biastype1434[] __attribute__((__used__)) __attribute__((section(".modinfo"),unused)) = "parmtype" "=" "proto_bias" ":" "int"; static const char __mod_proto_bias1435[] __attribute__((__used__)) __attribute__((section(".modinfo"),unused)) = "parm" "=" "proto_bias" ":" "Favourite protocol number"; static const char __mod_license1436[] __attribute__((__used__)) __attribute__((section(".modinfo"),unused)) = "license" "=" "GPL";