# 1 "init/initramfs.c" # 1 "" # 1 "" # 1 "./include/linux/autoconf.h" 1 # 1 "" 2 # 1 "init/initramfs.c" # 1 "include/linux/init.h" 1 # 1 "include/linux/compiler.h" 1 # 40 "include/linux/compiler.h" # 1 "include/linux/compiler-gcc4.h" 1 # 1 "include/linux/compiler-gcc.h" 1 # 5 "include/linux/compiler-gcc4.h" 2 # 41 "include/linux/compiler.h" 2 # 5 "include/linux/init.h" 2 # 76 "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; void setup_arch(char **); void prepare_namespace(void); # 148 "include/linux/init.h" struct obs_kernel_param { const char *str; int (*setup_func)(char *); int early; }; # 183 "include/linux/init.h" void __attribute__ ((__section__ (".init.text"))) parse_early_param(void); # 2 "init/initramfs.c" 2 # 1 "include/linux/fs.h" 1 # 9 "include/linux/fs.h" # 1 "include/linux/limits.h" 1 # 10 "include/linux/fs.h" 2 # 1 "include/linux/ioctl.h" 1 # 1 "include/asm/ioctl.h" 1 # 1 "include/asm-generic/ioctl.h" 1 # 51 "include/asm-generic/ioctl.h" extern unsigned int __invalid_size_argument_for_IOC; # 1 "include/asm/ioctl.h" 2 # 5 "include/linux/ioctl.h" 2 # 11 "include/linux/fs.h" 2 # 36 "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; # 271 "include/linux/fs.h" # 1 "include/linux/linkage.h" 1 # 1 "include/asm/linkage.h" 1 # 5 "include/linux/linkage.h" 2 # 272 "include/linux/fs.h" 2 # 1 "include/linux/wait.h" 1 # 22 "include/linux/wait.h" # 1 "include/linux/list.h" 1 # 1 "include/linux/stddef.h" 1 # 15 "include/linux/stddef.h" enum { false = 0, true = 1 }; # 7 "include/linux/list.h" 2 # 1 "include/linux/poison.h" 1 # 8 "include/linux/list.h" 2 # 1 "include/linux/prefetch.h" 1 # 13 "include/linux/prefetch.h" # 1 "include/linux/types.h" 1 # 14 "include/linux/types.h" # 1 "include/linux/posix_types.h" 1 # 36 "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 "include/asm/posix_types.h" 1 # 10 "include/asm/posix_types.h" typedef unsigned long __kernel_ino_t; typedef unsigned short __kernel_mode_t; typedef unsigned short __kernel_nlink_t; typedef long __kernel_off_t; typedef int __kernel_pid_t; typedef unsigned 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 int __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 unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef unsigned short __kernel_old_uid_t; typedef unsigned short __kernel_old_gid_t; typedef unsigned short __kernel_old_dev_t; typedef long long __kernel_loff_t; typedef struct { int val[2]; } __kernel_fsid_t; # 48 "include/linux/posix_types.h" 2 # 15 "include/linux/types.h" 2 # 1 "include/asm/types.h" 1 # 13 "include/asm/types.h" 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; # 45 "include/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 u32 dma_addr_t; typedef u64 dma64_addr_t; # 16 "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 __kernel_old_uid_t old_uid_t; typedef __kernel_old_gid_t old_gid_t; # 58 "include/linux/types.h" typedef __kernel_loff_t loff_t; # 67 "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; # 143 "include/linux/types.h" typedef unsigned long sector_t; # 152 "include/linux/types.h" typedef unsigned long blkcnt_t; # 181 "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 u32 resource_size_t; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; # 14 "include/linux/prefetch.h" 2 # 1 "include/asm/processor.h" 1 # 10 "include/asm/processor.h" # 1 "include/asm/blackfin.h" 1 # 14 "include/asm/blackfin.h" # 1 "include/asm/mach/anomaly.h" 1 # 15 "include/asm/blackfin.h" 2 static inline __attribute__((always_inline)) void SSYNC(void) { int _tmp; if ((1)) __asm__ __volatile__( "cli %0;" "nop;" "nop;" "ssync;" "sti %0;" : "=d" (_tmp) ); else if ((0x0002 < 3)) __asm__ __volatile__( "nop;" "nop;" "nop;" "ssync;" ); else __asm__ __volatile__("ssync;"); } static inline __attribute__((always_inline)) void CSYNC(void) { int _tmp; if ((1)) __asm__ __volatile__( "cli %0;" "nop;" "nop;" "csync;" "sti %0;" : "=d" (_tmp) ); else if ((0x0002 < 3)) __asm__ __volatile__( "nop;" "nop;" "nop;" "csync;" ); else __asm__ __volatile__("csync;"); } # 89 "include/asm/blackfin.h" # 1 "include/asm/mach/blackfin.h" 1 # 37 "include/asm/mach/blackfin.h" # 1 "include/asm/mach/bf537.h" 1 # 38 "include/asm/mach/blackfin.h" 2 # 1 "include/asm/mach/mem_map.h" 1 # 39 "include/asm/mach/blackfin.h" 2 # 1 "include/asm/mach/defBF534.h" 1 # 35 "include/asm/mach/defBF534.h" # 1 "include/asm/mach-common/def_LPBlackfin.h" 1 # 36 "include/asm/mach/defBF534.h" 2 # 40 "include/asm/mach/blackfin.h" 2 # 1 "include/asm/mach/anomaly.h" 1 # 41 "include/asm/mach/blackfin.h" 2 # 1 "include/asm/mach/defBF537.h" 1 # 36 "include/asm/mach/defBF537.h" # 1 "include/asm/mach-common/cdef_LPBlackfin.h" 1 # 37 "include/asm/mach/defBF537.h" 2 # 44 "include/asm/mach/blackfin.h" 2 # 1 "include/asm/mach/cdefBF534.h" 1 # 35 "include/asm/mach/cdefBF534.h" # 1 "include/asm/blackfin.h" 1 # 36 "include/asm/mach/cdefBF534.h" 2 # 1 "include/asm/system.h" 1 # 45 "include/asm/system.h" extern unsigned long irq_flags; # 151 "include/asm/system.h" struct __xchg_dummy { unsigned long a[100]; }; static inline __attribute__((always_inline)) unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { unsigned long tmp = 0; unsigned long flags = 0; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); switch (size) { case 1: __asm__ __volatile__ ("%0 = b%2 (z);\n\t" "b%2 = %1;\n\t" : "=&d" (tmp) : "d" (x), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; case 2: __asm__ __volatile__ ("%0 = w%2 (z);\n\t" "w%2 = %1;\n\t" : "=&d" (tmp) : "d" (x), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; case 4: __asm__ __volatile__ ("%0 = %2;\n\t" "%2 = %1;\n\t" : "=&d" (tmp) : "d" (x), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; } do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return tmp; } static inline __attribute__((always_inline)) unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { unsigned long tmp = 0; unsigned long flags = 0; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); switch (size) { case 1: __asm__ __volatile__ ("%0 = b%3 (z);\n\t" "CC = %1 == %0;\n\t" "IF !CC JUMP 1f;\n\t" "b%3 = %2;\n\t" "1:\n\t" : "=&d" (tmp) : "d" (old), "d" (new), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; case 2: __asm__ __volatile__ ("%0 = w%3 (z);\n\t" "CC = %1 == %0;\n\t" "IF !CC JUMP 1f;\n\t" "w%3 = %2;\n\t" "1:\n\t" : "=&d" (tmp) : "d" (old), "d" (new), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; case 4: __asm__ __volatile__ ("%0 = %3;\n\t" "CC = %1 == %0;\n\t" "IF !CC JUMP 1f;\n\t" "%3 = %2;\n\t" "1:\n\t" : "=&d" (tmp) : "d" (old), "d" (new), "m" (*((volatile struct __xchg_dummy *)(ptr))) : "memory"); break; } do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return tmp; } # 247 "include/asm/system.h" struct task_struct *resume(struct task_struct *prev, struct task_struct *next); # 44 "include/asm/mach/cdefBF534.h" 2 # 52 "include/asm/mach/cdefBF534.h" static __inline__ __attribute__((always_inline)) void bfin_write_VR_CTL(unsigned int val) { unsigned long flags, iwr; iwr = ({ uint32_t __v; __asm__ __volatile__( "%0 = [%1];" : "=d" (__v) : "a" (0xFFC00124) ); __v; }); __asm__ __volatile__( "[%0] = %1;" : : "a" (0xFFC00124), "d" ((1 << ((0)&0x1F))) : "memory" ); __asm__ __volatile__( "w[%0] = %1;" : : "a" (0xFFC00008), "d" ((uint16_t)(val)) : "memory" ); SSYNC(); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); asm("IDLE;"); do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); __asm__ __volatile__( "[%0] = %1;" : : "a" (0xFFC00124), "d" (iwr) : "memory" ); } # 48 "include/asm/mach/blackfin.h" 2 # 74 "include/asm/mach/blackfin.h" # 1 "include/asm/mach/cdefBF537.h" 1 # 75 "include/asm/mach/blackfin.h" 2 # 90 "include/asm/blackfin.h" 2 # 1 "include/asm/bfin-global.h" 1 # 34 "include/asm/bfin-global.h" # 1 "include/asm-generic/sections.h" 1 extern char _text[], _stext[], _etext[]; extern char _data[], _sdata[], _edata[]; extern char __bss_start[], __bss_stop[]; extern char __init_begin[], __init_end[]; extern char _sinittext[], _einittext[]; extern char _end[]; extern char __per_cpu_start[], __per_cpu_end[]; extern char __kprobes_text_start[], __kprobes_text_end[]; extern char __initdata_begin[], __initdata_end[]; extern char __start_rodata[], __end_rodata[]; # 35 "include/asm/bfin-global.h" 2 # 1 "include/asm/ptrace.h" 1 # 24 "include/asm/ptrace.h" struct pt_regs { long orig_pc; long ipend; long seqstat; long rete; long retn; long retx; long pc; long rets; long reserved; long astat; long lb1; long lb0; long lt1; long lt0; long lc1; long lc0; long a1w; long a1x; long a0w; long a0x; long b3; long b2; long b1; long b0; long l3; long l2; long l1; long l0; long m3; long m2; long m1; long m0; long i3; long i2; long i1; long i0; long usp; long fp; long p5; long p4; long p3; long p2; long p1; long p0; long r7; long r6; long r5; long r4; long r3; long r2; long r1; long r0; long orig_r0; long orig_p0; long syscfg; }; # 99 "include/asm/ptrace.h" extern void show_regs(struct pt_regs *); # 36 "include/asm/bfin-global.h" 2 # 1 "include/asm/user.h" 1 # 36 "include/asm/user.h" struct user_bfinfp_struct { }; struct user_regs_struct { long r0, r1, r2, r3, r4, r5, r6, r7; long p0, p1, p2, p3, p4, p5, usp, fp; long i0, i1, i2, i3; long l0, l1, l2, l3; long b0, b1, b2, b3; long m0, m1, m2, m3; long a0w, a1w; long a0x, a1x; unsigned long rets; unsigned long astat; unsigned long pc; unsigned long orig_p0; }; struct user { struct user_regs_struct regs; 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; struct user_regs_struct *u_ar0; unsigned long magic; char u_comm[32]; }; # 37 "include/asm/bfin-global.h" 2 # 48 "include/asm/bfin-global.h" extern unsigned long get_cclk(void); extern unsigned long get_sclk(void); extern unsigned long sclk_to_usecs(unsigned long sclk); extern unsigned long usecs_to_sclk(unsigned long usecs); extern void dump_bfin_process(struct pt_regs *regs); extern void dump_bfin_mem(struct pt_regs *regs); extern void dump_bfin_trace_buffer(void); extern int init_arch_irq(void); extern void bfin_reset(void); extern void _cplb_hdr(void); extern void bfin_icache_init(void); extern void bfin_dcache_init(void); extern int read_iloc(void); extern int bfin_console_init(void); extern void lower_to_irq14(void); extern void bfin_return_from_exception(void); extern void init_exception_vectors(void); extern void init_dma(void); extern void program_IAR(void); extern void evt14_softirq(void); extern void asm_do_IRQ(unsigned int irq, struct pt_regs *regs); extern void bfin_gpio_interrupt_setup(int irq, int irq_pfx, int type); extern void finish_atomic_sections (struct pt_regs *regs); extern char fixed_code_start; extern char fixed_code_end; extern int atomic_xchg32(void); extern int atomic_cas32(void); extern int atomic_add32(void); extern int atomic_sub32(void); extern int atomic_ior32(void); extern int atomic_and32(void); extern int atomic_xor32(void); extern void safe_user_instruction(void); extern void sigreturn_stub(void); extern void *l1_data_A_sram_alloc(size_t); extern void *l1_data_B_sram_alloc(size_t); extern void *l1_inst_sram_alloc(size_t); extern void *l1_data_sram_alloc(size_t); extern void *l1_data_sram_zalloc(size_t); extern int l1_data_A_sram_free(const void*); extern int l1_data_B_sram_free(const void*); extern int l1_inst_sram_free(const void*); extern int l1_data_sram_free(const void*); extern int sram_free(const void*); extern void *sram_alloc_with_lsl(size_t, unsigned long); extern int sram_free_with_lsl(const void*); extern void led_on(int); extern void led_off(int); extern void led_toggle(int); extern void led_disp_num(int); extern void led_toggle_num(int); extern void init_leds(void); extern const char bfin_board_name[]; extern unsigned long wall_jiffies; extern unsigned long ipdt_table[]; extern unsigned long dpdt_table[]; extern unsigned long icplb_table[]; extern unsigned long dcplb_table[]; extern unsigned long ipdt_swapcount_table[]; extern unsigned long dpdt_swapcount_table[]; extern unsigned long table_start, table_end; extern u16 _bfin_swrst; extern struct file_operations dpmc_fops; extern char _start; extern unsigned long _ramstart, _ramend, _rambase; extern unsigned long memory_start, memory_end, physical_mem_end; extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[], _ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _ebss_b_l1[]; # 91 "include/asm/blackfin.h" 2 # 11 "include/asm/processor.h" 2 # 1 "include/asm/segment.h" 1 # 12 "include/asm/processor.h" 2 static inline __attribute__((always_inline)) unsigned long rdusp(void) { unsigned long usp; __asm__ __volatile__("%0 = usp;\n\t":"=da"(usp)); return usp; } static inline __attribute__((always_inline)) void wrusp(unsigned long usp) { __asm__ __volatile__("usp = %0;\n\t"::"da"(usp)); } extern unsigned long memory_end; struct thread_struct { unsigned long ksp; unsigned long usp; unsigned short seqstat; unsigned long esp0; unsigned long pc; void * debuggerinfo; }; # 70 "include/asm/processor.h" struct task_struct; static inline __attribute__((always_inline)) void release_thread(struct task_struct *dead_task) { } extern int kernel_thread(int (*fn) (void *), void *arg, unsigned long flags); static inline __attribute__((always_inline)) void exit_thread(void) { } unsigned long get_wchan(struct task_struct *p); # 107 "include/asm/processor.h" static inline __attribute__((always_inline)) __attribute__((pure)) uint32_t bfin_revid(void) { return ({ uint32_t __v; __asm__ __volatile__( "%0 = [%1];" : "=d" (__v) : "a" (0xFFC00014) ); __v; }) >> 28; } static inline __attribute__((always_inline)) __attribute__((pure)) uint32_t bfin_compiled_revid(void) { return 2; # 132 "include/asm/processor.h" } # 15 "include/linux/prefetch.h" 2 # 1 "include/asm/cache.h" 1 # 16 "include/linux/prefetch.h" 2 # 43 "include/linux/prefetch.h" static inline __attribute__((always_inline)) void prefetch(const void *x) {;} static inline __attribute__((always_inline)) void prefetchw(const void *x) {;} # 58 "include/linux/prefetch.h" static inline __attribute__((always_inline)) void prefetch_range(void *addr, size_t len) { } # 9 "include/linux/list.h" 2 # 21 "include/linux/list.h" struct list_head { struct list_head *next, *prev; }; static inline __attribute__((always_inline)) void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } # 43 "include/linux/list.h" static inline __attribute__((always_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; } # 67 "include/linux/list.h" static inline __attribute__((always_inline)) void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 84 "include/linux/list.h" static inline __attribute__((always_inline)) void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } static inline __attribute__((always_inline)) void __list_add_rcu(struct list_head * new, struct list_head * prev, struct list_head * next) { new->next = next; new->prev = prev; __asm__ __volatile__("": : :"memory"); next->prev = new; prev->next = new; } # 121 "include/linux/list.h" static inline __attribute__((always_inline)) void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); } # 142 "include/linux/list.h" static inline __attribute__((always_inline)) void list_add_tail_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head->prev, head); } # 155 "include/linux/list.h" static inline __attribute__((always_inline)) void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; prev->next = next; } # 168 "include/linux/list.h" static inline __attribute__((always_inline)) void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->next = ((void *) 0x00100100); entry->prev = ((void *) 0x00200200); } # 202 "include/linux/list.h" static inline __attribute__((always_inline)) void list_del_rcu(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->prev = ((void *) 0x00200200); } # 215 "include/linux/list.h" static inline __attribute__((always_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 __attribute__((always_inline)) void list_replace_init(struct list_head *old, struct list_head *new) { list_replace(old, new); INIT_LIST_HEAD(old); } # 239 "include/linux/list.h" static inline __attribute__((always_inline)) void list_replace_rcu(struct list_head *old, struct list_head *new) { new->next = old->next; new->prev = old->prev; __asm__ __volatile__("": : :"memory"); new->next->prev = new; new->prev->next = new; old->prev = ((void *) 0x00200200); } static inline __attribute__((always_inline)) void list_del_init(struct list_head *entry) { __list_del(entry->prev, entry->next); INIT_LIST_HEAD(entry); } static inline __attribute__((always_inline)) void list_move(struct list_head *list, struct list_head *head) { __list_del(list->prev, list->next); list_add(list, head); } static inline __attribute__((always_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 __attribute__((always_inline)) int list_is_last(const struct list_head *list, const struct list_head *head) { return list->next == head; } static inline __attribute__((always_inline)) int list_empty(const struct list_head *head) { return head->next == head; } # 316 "include/linux/list.h" static inline __attribute__((always_inline)) int list_empty_careful(const struct list_head *head) { struct list_head *next = head->next; return (next == head) && (next == head->prev); } static inline __attribute__((always_inline)) void __list_splice(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 __attribute__((always_inline)) void list_splice(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head); } # 354 "include/linux/list.h" static inline __attribute__((always_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); } } # 380 "include/linux/list.h" static inline __attribute__((always_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); # 402 "include/linux/list.h" sync(); # 412 "include/linux/list.h" last->next = at; __asm__ __volatile__("": : :"memory"); head->next = first; first->prev = head; at->prev = last; } # 675 "include/linux/list.h" struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; static inline __attribute__((always_inline)) void INIT_HLIST_NODE(struct hlist_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((always_inline)) int hlist_unhashed(const struct hlist_node *h) { return !h->pprev; } static inline __attribute__((always_inline)) int hlist_empty(const struct hlist_head *h) { return !h->first; } static inline __attribute__((always_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 __attribute__((always_inline)) void hlist_del(struct hlist_node *n) { __hlist_del(n); n->next = ((void *) 0x00100100); n->pprev = ((void *) 0x00200200); } # 737 "include/linux/list.h" static inline __attribute__((always_inline)) void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x00200200); } static inline __attribute__((always_inline)) void hlist_del_init(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); INIT_HLIST_NODE(n); } } # 758 "include/linux/list.h" static inline __attribute__((always_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; __asm__ __volatile__("": : :"memory"); if (next) new->next->pprev = &new->next; *new->pprev = new; old->pprev = ((void *) 0x00200200); } static inline __attribute__((always_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; } # 802 "include/linux/list.h" static inline __attribute__((always_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; __asm__ __volatile__("": : :"memory"); if (first) first->pprev = &n->next; h->first = n; } static inline __attribute__((always_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 __attribute__((always_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; } # 853 "include/linux/list.h" static inline __attribute__((always_inline)) void hlist_add_before_rcu(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; __asm__ __volatile__("": : :"memory"); next->pprev = &n->next; *(n->pprev) = n; } # 881 "include/linux/list.h" static inline __attribute__((always_inline)) void hlist_add_after_rcu(struct hlist_node *prev, struct hlist_node *n) { n->next = prev->next; n->pprev = &prev->next; __asm__ __volatile__("": : :"memory"); prev->next = n; if (n->next) n->next->pprev = &n->next; } # 23 "include/linux/wait.h" 2 # 1 "include/linux/spinlock.h" 1 # 49 "include/linux/spinlock.h" # 1 "include/linux/preempt.h" 1 # 9 "include/linux/preempt.h" # 1 "include/linux/thread_info.h" 1 # 15 "include/linux/thread_info.h" struct restart_block { long (*fn)(struct restart_block *); union { struct { unsigned long arg0, arg1, arg2, arg3; }; struct { u32 *uaddr; u32 val; u32 flags; u64 time; } futex; }; }; extern long do_no_restart_syscall(struct restart_block *parm); # 1 "include/linux/bitops.h" 1 # 9 "include/linux/bitops.h" # 1 "include/asm/bitops.h" 1 # 9 "include/asm/bitops.h" # 1 "include/asm/byteorder.h" 1 # 9 "include/asm/byteorder.h" static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 ___arch__swahb32(__u32 xx) { __u32 tmp; __asm__("%1 = %0 >> 8 (V);\n\t" "%0 = %0 << 8 (V);\n\t" "%0 = %0 | %1;\n\t" : "+d"(xx), "=&d"(tmp)); return xx; } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 ___arch__swahw32(__u32 xx) { __u32 rv; __asm__("%0 = PACK(%1.L, %1.H);\n\t": "=d"(rv): "d"(xx)); return rv; } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 ___arch__swab16(__u16 xx) { __u32 xw = xx; __asm__("%0 <<= 8;\n %0.L = %0.L + %0.H (NS);\n": "+d"(xw)); return (__u16)xw; } # 46 "include/asm/byteorder.h" # 1 "include/linux/byteorder/little_endian.h" 1 # 12 "include/linux/byteorder/little_endian.h" # 1 "include/linux/byteorder/swab.h" 1 # 64 "include/linux/byteorder/swab.h" static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 ___swab16(__u16 x) { return x<<8 | x>>8; } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 ___swab32(__u32 x) { return x<<24 | x>>24 | (x & (__u32)0x0000ff00UL)<<8 | (x & (__u32)0x00ff0000UL)>>8; } static __inline__ __attribute__((always_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 "include/linux/byteorder/swab.h" static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 __fswab16(__u16 x) { return ___arch__swab16(x); } static __inline__ __attribute__((always_inline)) __u16 __swab16p(const __u16 *x) { return ___arch__swab16(*(x)); } static __inline__ __attribute__((always_inline)) void __swab16s(__u16 *addr) { ((void)(*(addr) = ___arch__swab16(*(addr)))); } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 __fswab32(__u32 x) { return ___arch__swahb32(___arch__swahw32(x)); } static __inline__ __attribute__((always_inline)) __u32 __swab32p(const __u32 *x) { return ___arch__swahb32(___arch__swahw32(*(x))); } static __inline__ __attribute__((always_inline)) void __swab32s(__u32 *addr) { ((void)(*(addr) = ___arch__swahb32(___arch__swahw32(*(addr))))); } static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 __fswab64(__u64 x) { __u32 h = x >> 32; __u32 l = x & ((1ULL<<32)-1); return (((__u64)(__builtin_constant_p((__u32)(l)) ? ((__u32)( (((__u32)((l)) & (__u32)0x000000ffUL) << 24) | (((__u32)((l)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((l)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((l)) & (__u32)0xff000000UL) >> 24) )) : __fswab32((l)))) << 32) | ((__u64)((__builtin_constant_p((__u32)(h)) ? ((__u32)( (((__u32)((h)) & (__u32)0x000000ffUL) << 24) | (((__u32)((h)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((h)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((h)) & (__u32)0xff000000UL) >> 24) )) : __fswab32((h))))); } static __inline__ __attribute__((always_inline)) __u64 __swab64p(const __u64 *x) { return ___swab64(*(x)); } static __inline__ __attribute__((always_inline)) void __swab64s(__u64 *addr) { ((void)(*(addr) = ___swab64(*(addr)))); } # 13 "include/linux/byteorder/little_endian.h" 2 # 43 "include/linux/byteorder/little_endian.h" static inline __attribute__((always_inline)) __le64 __cpu_to_le64p(const __u64 *p) { return ( __le64)*p; } static inline __attribute__((always_inline)) __u64 __le64_to_cpup(const __le64 *p) { return ( __u64)*p; } static inline __attribute__((always_inline)) __le32 __cpu_to_le32p(const __u32 *p) { return ( __le32)*p; } static inline __attribute__((always_inline)) __u32 __le32_to_cpup(const __le32 *p) { return ( __u32)*p; } static inline __attribute__((always_inline)) __le16 __cpu_to_le16p(const __u16 *p) { return ( __le16)*p; } static inline __attribute__((always_inline)) __u16 __le16_to_cpup(const __le16 *p) { return ( __u16)*p; } static inline __attribute__((always_inline)) __be64 __cpu_to_be64p(const __u64 *p) { return ( __be64)__swab64p(p); } static inline __attribute__((always_inline)) __u64 __be64_to_cpup(const __be64 *p) { return __swab64p((__u64 *)p); } static inline __attribute__((always_inline)) __be32 __cpu_to_be32p(const __u32 *p) { return ( __be32)__swab32p(p); } static inline __attribute__((always_inline)) __u32 __be32_to_cpup(const __be32 *p) { return __swab32p((__u32 *)p); } static inline __attribute__((always_inline)) __be16 __cpu_to_be16p(const __u16 *p) { return ( __be16)__swab16p(p); } static inline __attribute__((always_inline)) __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 104 "include/linux/byteorder/little_endian.h" # 1 "include/linux/byteorder/generic.h" 1 # 105 "include/linux/byteorder/little_endian.h" 2 # 47 "include/asm/byteorder.h" 2 # 10 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/ffs.h" 1 # 12 "include/asm-generic/bitops/ffs.h" static inline __attribute__((always_inline)) int ffs(int x) { int r = 1; if (!x) return 0; if (!(x & 0xffff)) { x >>= 16; r += 16; } if (!(x & 0xff)) { x >>= 8; r += 8; } if (!(x & 0xf)) { x >>= 4; r += 4; } if (!(x & 3)) { x >>= 2; r += 2; } if (!(x & 1)) { x >>= 1; r += 1; } return r; } # 15 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/__ffs.h" 1 # 12 "include/asm-generic/bitops/__ffs.h" static inline __attribute__((always_inline)) unsigned long __ffs(unsigned long word) { int num = 0; if ((word & 0xffff) == 0) { num += 16; word >>= 16; } if ((word & 0xff) == 0) { num += 8; word >>= 8; } if ((word & 0xf) == 0) { num += 4; word >>= 4; } if ((word & 0x3) == 0) { num += 2; word >>= 2; } if ((word & 0x1) == 0) num += 1; return num; } # 16 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/sched.h" 1 # 13 "include/asm-generic/bitops/sched.h" static inline __attribute__((always_inline)) int sched_find_first_bit(const unsigned long *b) { if (__builtin_expect(!!(b[0]), 0)) return __ffs(b[0]); if (__builtin_expect(!!(b[1]), 0)) return __ffs(b[1]) + 32; if (__builtin_expect(!!(b[2]), 0)) return __ffs(b[2]) + 64; if (b[3]) return __ffs(b[3]) + 96; return __ffs(b[4]) + 128; } # 17 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/ffz.h" 1 # 18 "include/asm/bitops.h" 2 static __inline__ __attribute__((always_inline)) void set_bit(int nr, volatile unsigned long *addr) { int *a = (int *)addr; int mask; unsigned long flags; a += nr >> 5; mask = 1 << (nr & 0x1f); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); *a |= mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void __set_bit(int nr, volatile unsigned long *addr) { int *a = (int *)addr; int mask; a += nr >> 5; mask = 1 << (nr & 0x1f); *a |= mask; } static __inline__ __attribute__((always_inline)) void clear_bit(int nr, volatile unsigned long *addr) { int *a = (int *)addr; int mask; unsigned long flags; a += nr >> 5; mask = 1 << (nr & 0x1f); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); *a &= ~mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void __clear_bit(int nr, volatile unsigned long *addr) { int *a = (int *)addr; int mask; a += nr >> 5; mask = 1 << (nr & 0x1f); *a &= ~mask; } static __inline__ __attribute__((always_inline)) void change_bit(int nr, volatile unsigned long *addr) { int mask, flags; unsigned long *ADDR = (unsigned long *)addr; ADDR += nr >> 5; mask = 1 << (nr & 31); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); *ADDR ^= mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void __change_bit(int nr, volatile unsigned long *addr) { int mask; unsigned long *ADDR = (unsigned long *)addr; ADDR += nr >> 5; mask = 1 << (nr & 31); *ADDR ^= mask; } static __inline__ __attribute__((always_inline)) int test_and_set_bit(int nr, void *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; unsigned long flags; a += nr >> 5; mask = 1 << (nr & 0x1f); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); retval = (mask & *a) != 0; *a |= mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return retval; } static __inline__ __attribute__((always_inline)) int __test_and_set_bit(int nr, volatile unsigned long *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; a += nr >> 5; mask = 1 << (nr & 0x1f); retval = (mask & *a) != 0; *a |= mask; return retval; } static __inline__ __attribute__((always_inline)) int test_and_clear_bit(int nr, volatile unsigned long *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; unsigned long flags; a += nr >> 5; mask = 1 << (nr & 0x1f); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); retval = (mask & *a) != 0; *a &= ~mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return retval; } static __inline__ __attribute__((always_inline)) int __test_and_clear_bit(int nr, volatile unsigned long *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; a += nr >> 5; mask = 1 << (nr & 0x1f); retval = (mask & *a) != 0; *a &= ~mask; return retval; } static __inline__ __attribute__((always_inline)) int test_and_change_bit(int nr, volatile unsigned long *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; unsigned long flags; a += nr >> 5; mask = 1 << (nr & 0x1f); __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); retval = (mask & *a) != 0; *a ^= mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return retval; } static __inline__ __attribute__((always_inline)) int __test_and_change_bit(int nr, volatile unsigned long *addr) { int mask, retval; volatile unsigned int *a = (volatile unsigned int *)addr; a += nr >> 5; mask = 1 << (nr & 0x1f); retval = (mask & *a) != 0; *a ^= mask; return retval; } static __inline__ __attribute__((always_inline)) int __constant_test_bit(int nr, const void *addr) { return ((1UL << (nr & 31)) & (((const volatile unsigned int *)addr)[nr >> 5])) != 0; } static __inline__ __attribute__((always_inline)) int __test_bit(int nr, const void *addr) { int *a = (int *)addr; int mask; a += nr >> 5; mask = 1 << (nr & 0x1f); return ((mask & *a) != 0); } # 1 "include/asm-generic/bitops/find.h" 1 extern unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset); extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, unsigned long offset); # 201 "include/asm/bitops.h" 2 # 1 "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); # 202 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/ext2-atomic.h" 1 # 204 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/ext2-non-atomic.h" 1 # 1 "include/asm-generic/bitops/le.h" 1 # 5 "include/asm-generic/bitops/ext2-non-atomic.h" 2 # 205 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/minix.h" 1 # 207 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/fls.h" 1 # 12 "include/asm-generic/bitops/fls.h" static inline __attribute__((always_inline)) int fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) { x <<= 8; r -= 8; } if (!(x & 0xf0000000u)) { x <<= 4; r -= 4; } if (!(x & 0xc0000000u)) { x <<= 2; r -= 2; } if (!(x & 0x80000000u)) { x <<= 1; r -= 1; } return r; } # 211 "include/asm/bitops.h" 2 # 1 "include/asm-generic/bitops/fls64.h" 1 static inline __attribute__((always_inline)) int fls64(__u64 x) { __u32 h = x >> 32; if (h) return fls(h) + 32; return fls(x); } # 212 "include/asm/bitops.h" 2 # 10 "include/linux/bitops.h" 2 static __inline__ __attribute__((always_inline)) int get_bitmask_order(unsigned int count) { int order; order = fls(count); return order; } static __inline__ __attribute__((always_inline)) int get_count_order(unsigned int count) { int order; order = fls(count) - 1; if (count & (count - 1)) order++; return order; } static inline __attribute__((always_inline)) unsigned long hweight_long(unsigned long w) { return sizeof(w) == 4 ? hweight32(w) : hweight64(w); } static inline __attribute__((always_inline)) __u32 rol32(__u32 word, unsigned int shift) { return (word << shift) | (word >> (32 - shift)); } static inline __attribute__((always_inline)) __u32 ror32(__u32 word, unsigned int shift) { return (word >> shift) | (word << (32 - shift)); } static inline __attribute__((always_inline)) unsigned fls_long(unsigned long l) { if (sizeof(l) == 4) return fls(l); return fls64(l); } # 34 "include/linux/thread_info.h" 2 # 1 "include/asm/thread_info.h" 1 # 30 "include/asm/thread_info.h" # 1 "include/asm/page.h" 1 # 16 "include/asm/page.h" # 1 "include/asm/setup.h" 1 # 17 "include/asm/page.h" 2 # 32 "include/asm/page.h" typedef struct { unsigned long pte; } pte_t; typedef struct { unsigned long pmd[16]; } pmd_t; typedef struct { unsigned long pgd; } pgd_t; typedef struct { unsigned long pgprot; } pgprot_t; # 58 "include/asm/page.h" extern unsigned long memory_start; extern unsigned long memory_end; # 1 "include/asm/page_offset.h" 1 # 64 "include/asm/page.h" 2 # 1 "include/asm/io.h" 1 # 23 "include/asm/io.h" static inline __attribute__((always_inline)) unsigned char readb(const volatile void *addr) { unsigned int val; int tmp; __asm__ __volatile__ ("cli %1;\n\t" "NOP; NOP; SSYNC;\n\t" "%0 = b [%2] (z);\n\t" "sti %1;\n\t" : "=d"(val), "=d"(tmp): "a"(addr) ); return (unsigned char) val; } static inline __attribute__((always_inline)) unsigned short readw(const volatile void *addr) { unsigned int val; int tmp; __asm__ __volatile__ ("cli %1;\n\t" "NOP; NOP; SSYNC;\n\t" "%0 = w [%2] (z);\n\t" "sti %1;\n\t" : "=d"(val), "=d"(tmp): "a"(addr) ); return (unsigned short) val; } static inline __attribute__((always_inline)) unsigned int readl(const volatile void *addr) { unsigned int val; int tmp; __asm__ __volatile__ ("cli %1;\n\t" "NOP; NOP; SSYNC;\n\t" "%0 = [%2];\n\t" "sti %1;\n\t" : "=d"(val), "=d"(tmp): "a"(addr) ); return val; } # 118 "include/asm/io.h" extern void outsb(unsigned long port, const void *addr, unsigned long count); extern void outsw(unsigned long port, const void *addr, unsigned long count); extern void outsl(unsigned long port, const void *addr, unsigned long count); extern void insb(unsigned long port, void *addr, unsigned long count); extern void insw(unsigned long port, void *addr, unsigned long count); extern void insl(unsigned long port, void *addr, unsigned long count); extern void insl_16(unsigned long port, void *addr, unsigned long count); extern void dma_outsb(unsigned long port, const void *addr, unsigned short count); extern void dma_outsw(unsigned long port, const void *addr, unsigned short count); extern void dma_outsl(unsigned long port, const void *addr, unsigned short count); extern void dma_insb(unsigned long port, void *addr, unsigned short count); extern void dma_insw(unsigned long port, void *addr, unsigned short count); extern void dma_insl(unsigned long port, void *addr, unsigned short count); static inline __attribute__((always_inline)) void *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag) { return (void *)physaddr; } static inline __attribute__((always_inline)) void iounmap(void *addr) { } static inline __attribute__((always_inline)) void __iounmap(void *addr, unsigned long size) { } static inline __attribute__((always_inline)) void kernel_set_cachemode(void *addr, unsigned long size, int cmode) { } static inline __attribute__((always_inline)) void *ioremap(unsigned long physaddr, unsigned long size) { return __ioremap(physaddr, size, 1); } static inline __attribute__((always_inline)) void *ioremap_nocache(unsigned long physaddr, unsigned long size) { return __ioremap(physaddr, size, 1); } extern void blkfin_inv_cache_all(void); # 65 "include/asm/page.h" 2 # 88 "include/asm/page.h" # 1 "include/asm-generic/page.h" 1 # 10 "include/asm-generic/page.h" static __inline__ __attribute__((always_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; } # 89 "include/asm/page.h" 2 # 31 "include/asm/thread_info.h" 2 # 1 "include/asm/entry.h" 1 # 32 "include/asm/thread_info.h" 2 # 1 "include/asm/l1layout.h" 1 # 16 "include/asm/l1layout.h" struct l1_scratch_task_info { void *stack_start; void *lowest_sp; }; # 33 "include/asm/thread_info.h" 2 # 49 "include/asm/thread_info.h" typedef unsigned long mm_segment_t; struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; unsigned long flags; int cpu; int preempt_count; mm_segment_t addr_limit; struct restart_block restart_block; struct l1_scratch_task_info l1_task_info; }; # 86 "include/asm/thread_info.h" static inline __attribute__((always_inline)) struct thread_info *current_thread_info(void) __attribute__ ((__const__)); static inline __attribute__((always_inline)) struct thread_info *current_thread_info(void) { struct thread_info *ti; __asm__("%0 = sp;": "=&d"(ti): ); return (struct thread_info *)((long)ti & ~((long)8192 -1)); } # 35 "include/linux/thread_info.h" 2 # 43 "include/linux/thread_info.h" static inline __attribute__((always_inline)) void set_ti_thread_flag(struct thread_info *ti, int flag) { set_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) void clear_ti_thread_flag(struct thread_info *ti, int flag) { clear_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_set_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_clear_bit(flag,&ti->flags); } static inline __attribute__((always_inline)) int test_ti_thread_flag(struct thread_info *ti, int flag) { return (__builtin_constant_p(flag) ? __constant_test_bit((flag),(&ti->flags)) : __test_bit((flag),(&ti->flags))); } # 10 "include/linux/preempt.h" 2 # 50 "include/linux/spinlock.h" 2 # 1 "include/linux/kernel.h" 1 # 10 "include/linux/kernel.h" # 1 "/usr/local/src/blackfin/toolchains/20071218/bfin-uclinux/lib/gcc/bfin-uclinux/4.1.2/include/stdarg.h" 1 3 4 # 43 "/usr/local/src/blackfin/toolchains/20071218/bfin-uclinux/lib/gcc/bfin-uclinux/4.1.2/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/local/src/blackfin/toolchains/20071218/bfin-uclinux/lib/gcc/bfin-uclinux/4.1.2/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 11 "include/linux/kernel.h" 2 # 1 "include/linux/log2.h" 1 # 21 "include/linux/log2.h" extern __attribute__((const, noreturn)) int ____ilog2_NaN(void); # 31 "include/linux/log2.h" static inline __attribute__((always_inline)) __attribute__((const)) int __ilog2_u32(u32 n) { return fls(n) - 1; } static inline __attribute__((always_inline)) __attribute__((const)) int __ilog2_u64(u64 n) { return fls64(n) - 1; } static inline __attribute__((always_inline)) __attribute__((const)) bool is_power_of_2(unsigned long n) { return (n != 0 && ((n & (n - 1)) == 0)); } static inline __attribute__((always_inline)) __attribute__((const)) unsigned long __roundup_pow_of_two(unsigned long n) { return 1UL << fls_long(n - 1); } # 17 "include/linux/kernel.h" 2 # 1 "include/asm/bug.h" 1 # 1 "include/asm-generic/bug.h" 1 # 4 "include/asm/bug.h" 2 # 19 "include/linux/kernel.h" 2 extern const char linux_banner[]; extern const char linux_proc_banner[]; # 63 "include/linux/kernel.h" extern int console_printk[]; struct completion; struct pt_regs; struct user; # 85 "include/linux/kernel.h" extern int cond_resched(void); # 106 "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))); 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 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); extern void dump_thread(struct pt_regs *regs, struct user *dump); int vprintk(const char *fmt, va_list args) __attribute__ ((format (printf, 1, 0))); int printk(const char * fmt, ...) __attribute__ ((format (printf, 1, 2))); 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); # 174 "include/linux/kernel.h" unsigned long int_sqrt(unsigned long); extern int printk_ratelimit(void); extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); static inline __attribute__((always_inline)) void console_silent(void) { (console_printk[0]) = 0; } static inline __attribute__((always_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 enum system_states { SYSTEM_BOOTING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, SYSTEM_SUSPEND_DISK, } system_state; # 220 "include/linux/kernel.h" extern void dump_stack(void); 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, void *buf, size_t len, bool ascii); extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, void *buf, size_t len); static inline __attribute__((always_inline)) int __attribute__ ((format (printf, 1, 2))) pr_debug(const char * fmt, ...) { return 0; } # 346 "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)]; }; # 54 "include/linux/spinlock.h" 2 # 1 "include/linux/stringify.h" 1 # 55 "include/linux/spinlock.h" 2 # 1 "include/linux/bottom_half.h" 1 extern void local_bh_disable(void); extern void __local_bh_enable(void); extern void _local_bh_enable(void); extern void local_bh_enable(void); extern void local_bh_enable_ip(unsigned long ip); # 56 "include/linux/spinlock.h" 2 # 79 "include/linux/spinlock.h" # 1 "include/linux/spinlock_types.h" 1 # 12 "include/linux/spinlock_types.h" # 1 "include/linux/lockdep.h" 1 # 11 "include/linux/lockdep.h" struct task_struct; # 252 "include/linux/lockdep.h" static inline __attribute__((always_inline)) void lockdep_off(void) { } static inline __attribute__((always_inline)) void lockdep_on(void) { } # 278 "include/linux/lockdep.h" struct lock_class_key { }; # 287 "include/linux/lockdep.h" static inline __attribute__((always_inline)) void early_init_irq_lock_class(void) { } static inline __attribute__((always_inline)) void early_boot_irqs_off(void) { } static inline __attribute__((always_inline)) void early_boot_irqs_on(void) { } static inline __attribute__((always_inline)) void print_irqtrace_events(struct task_struct *curr) { } # 13 "include/linux/spinlock_types.h" 2 # 1 "include/linux/spinlock_types_up.h" 1 # 29 "include/linux/spinlock_types_up.h" typedef struct { } raw_spinlock_t; typedef struct { } raw_rwlock_t; # 18 "include/linux/spinlock_types.h" 2 typedef struct { raw_spinlock_t raw_lock; # 32 "include/linux/spinlock_types.h" } spinlock_t; typedef struct { raw_rwlock_t raw_lock; # 48 "include/linux/spinlock_types.h" } rwlock_t; # 80 "include/linux/spinlock.h" 2 extern int __attribute__((section(".spinlock.text"))) generic__raw_read_trylock(raw_rwlock_t *lock); # 1 "include/linux/spinlock_up.h" 1 # 90 "include/linux/spinlock.h" 2 # 135 "include/linux/spinlock.h" # 1 "include/linux/spinlock_api_up.h" 1 # 136 "include/linux/spinlock.h" 2 # 289 "include/linux/spinlock.h" static inline __attribute__((always_inline)) void double_spin_lock(spinlock_t *l1, spinlock_t *l2, bool l1_first) { if (l1_first) { do { do { } while (0); (void)0; (void)(l1); } while (0); do { do { } while (0); (void)0; (void)(l2); } while (0); } else { do { do { } while (0); (void)0; (void)(l2); } while (0); do { do { } while (0); (void)0; (void)(l1); } while (0); } } static inline __attribute__((always_inline)) void double_spin_unlock(spinlock_t *l1, spinlock_t *l2, bool l1_taken_first) { if (l1_taken_first) { do { do { } while (0); (void)0; (void)(l2); } while (0); do { do { } while (0); (void)0; (void)(l1); } while (0); } else { do { do { } while (0); (void)0; (void)(l1); } while (0); do { do { } while (0); (void)0; (void)(l2); } while (0); } } # 1 "include/asm/atomic.h" 1 # 16 "include/asm/atomic.h" typedef struct { int counter; } atomic_t; static __inline__ __attribute__((always_inline)) void atomic_add(int i, atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter += i; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void atomic_sub(int i, atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter -= i; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static inline __attribute__((always_inline)) int atomic_add_return(int i, atomic_t * v) { int __temp = 0; long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter += i; __temp = v->counter; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return __temp; } static inline __attribute__((always_inline)) int atomic_sub_return(int i, atomic_t * v) { int __temp = 0; long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter -= i; __temp = v->counter; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); return __temp; } static __inline__ __attribute__((always_inline)) void atomic_inc(volatile atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter++; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } # 93 "include/asm/atomic.h" static __inline__ __attribute__((always_inline)) void atomic_dec(volatile atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter--; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void atomic_clear_mask(unsigned int mask, atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter &= ~mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } static __inline__ __attribute__((always_inline)) void atomic_set_mask(unsigned int mask, atomic_t * v) { long flags; __asm__ __volatile__( "cli %0;" : "=&d" (flags) ); v->counter |= mask; do { if (((flags) != 0x1f)) __asm__ __volatile__( "sti %0;" : : "d" (irq_flags) ); } while (0); } # 142 "include/asm/atomic.h" # 1 "include/asm-generic/atomic.h" 1 # 141 "include/asm-generic/atomic.h" typedef atomic_t atomic_long_t; static inline __attribute__((always_inline)) long atomic_long_read(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)((v)->counter); } static inline __attribute__((always_inline)) void atomic_long_set(atomic_long_t *l, long i) { atomic_t *v = (atomic_t *)l; (((v)->counter) = i); } static inline __attribute__((always_inline)) void atomic_long_inc(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_inc(v); } static inline __attribute__((always_inline)) void atomic_long_dec(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_dec(v); } static inline __attribute__((always_inline)) void atomic_long_add(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_add(i, v); } static inline __attribute__((always_inline)) void atomic_long_sub(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; atomic_sub(i, v); } static inline __attribute__((always_inline)) int atomic_long_sub_and_test(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_sub_return((i), (v)) == 0); } static inline __attribute__((always_inline)) int atomic_long_dec_and_test(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_sub_return(1, (v)) == 0); } static inline __attribute__((always_inline)) int atomic_long_inc_and_test(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_add_return(1,(v)) == 0); } static inline __attribute__((always_inline)) int atomic_long_add_negative(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (atomic_add_return((i), (v)) < 0); } static inline __attribute__((always_inline)) long atomic_long_add_return(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_add_return(i, v); } static inline __attribute__((always_inline)) long atomic_long_sub_return(long i, atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_sub_return(i, v); } static inline __attribute__((always_inline)) long atomic_long_inc_return(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_add_return(1,(v)); } static inline __attribute__((always_inline)) long atomic_long_dec_return(atomic_long_t *l) { atomic_t *v = (atomic_t *)l; return (long)atomic_sub_return(1,(v)); } static inline __attribute__((always_inline)) long atomic_long_add_unless(atomic_long_t *l, long a, long u) { atomic_t *v = (atomic_t *)l; return (long)({ int c, old; c = ((v)->counter); while (c != (u) && (old = ((int)((__typeof__(*(&(((v))->counter))))__cmpxchg((&(((v))->counter)),(unsigned long)((c)), (unsigned long)((c + (a))),sizeof(*(&(((v))->counter))))))) != c) c = old; c != (u); }); } # 143 "include/asm/atomic.h" 2 # 327 "include/linux/spinlock.h" 2 extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); # 25 "include/linux/wait.h" 2 # 1 "include/asm/current.h" 1 # 13 "include/asm/current.h" struct task_struct; static inline __attribute__((always_inline)) struct task_struct *get_current(void) __attribute__ ((__const__)); static inline __attribute__((always_inline)) struct task_struct *get_current(void) { return (current_thread_info()->task); } # 27 "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 "include/linux/wait.h" extern void init_waitqueue_head(wait_queue_head_t *q); # 91 "include/linux/wait.h" static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_inline)) int waitqueue_active(wait_queue_head_t *q) { return !list_empty(&q->task_list); } # 120 "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 __attribute__((always_inline)) void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new) { list_add(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) void __add_wait_queue_tail(wait_queue_head_t *head, wait_queue_t *new) { list_add_tail(&new->task_list, &head->task_list); } static inline __attribute__((always_inline)) 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); # 351 "include/linux/wait.h" static inline __attribute__((always_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 __attribute__((always_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); # 429 "include/linux/wait.h" static inline __attribute__((always_inline)) int wait_on_bit(void *word, int bit, int (*action)(void *), unsigned mode) { if (!(__builtin_constant_p(bit) ? __constant_test_bit((bit),(word)) : __test_bit((bit),(word)))) return 0; return out_of_line_wait_on_bit(word, bit, action, mode); } # 453 "include/linux/wait.h" static inline __attribute__((always_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); } # 273 "include/linux/fs.h" 2 # 1 "include/linux/kdev_t.h" 1 # 21 "include/linux/kdev_t.h" static inline __attribute__((always_inline)) int old_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < 256 && ((unsigned int) ((dev) & ((1U << 20) - 1))) < 256; } static inline __attribute__((always_inline)) u16 old_encode_dev(dev_t dev) { return (((unsigned int) ((dev) >> 20)) << 8) | ((unsigned int) ((dev) & ((1U << 20) - 1))); } static inline __attribute__((always_inline)) dev_t old_decode_dev(u16 val) { return ((((val >> 8) & 255) << 20) | (val & 255)); } static inline __attribute__((always_inline)) int new_valid_dev(dev_t dev) { return 1; } static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_inline)) int huge_valid_dev(dev_t dev) { return 1; } static inline __attribute__((always_inline)) u64 huge_encode_dev(dev_t dev) { return new_encode_dev(dev); } static inline __attribute__((always_inline)) dev_t huge_decode_dev(u64 dev) { return new_decode_dev(dev); } static inline __attribute__((always_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 __attribute__((always_inline)) u32 sysv_encode_dev(dev_t dev) { return ((unsigned int) ((dev) & ((1U << 20) - 1))) | (((unsigned int) ((dev) >> 20)) << 18); } static inline __attribute__((always_inline)) unsigned sysv_major(u32 dev) { return (dev >> 18) & 0x3fff; } static inline __attribute__((always_inline)) unsigned sysv_minor(u32 dev) { return dev & 0x3ffff; } # 275 "include/linux/fs.h" 2 # 1 "include/linux/dcache.h" 1 # 9 "include/linux/dcache.h" # 1 "include/linux/cache.h" 1 # 10 "include/linux/dcache.h" 2 # 1 "include/linux/rcupdate.h" 1 # 40 "include/linux/rcupdate.h" # 1 "include/linux/threads.h" 1 # 41 "include/linux/rcupdate.h" 2 # 1 "include/linux/percpu.h" 1 # 1 "include/linux/slab.h" 1 # 14 "include/linux/slab.h" # 1 "include/linux/gfp.h" 1 # 1 "include/linux/mmzone.h" 1 # 12 "include/linux/mmzone.h" # 1 "include/linux/numa.h" 1 # 13 "include/linux/mmzone.h" 2 # 1 "include/linux/seqlock.h" 1 # 32 "include/linux/seqlock.h" typedef struct { unsigned sequence; spinlock_t lock; } seqlock_t; # 60 "include/linux/seqlock.h" static inline __attribute__((always_inline)) void write_seqlock(seqlock_t *sl) { do { do { } while (0); (void)0; (void)(&sl->lock); } while (0); ++sl->sequence; __asm__ __volatile__("": : :"memory"); } static inline __attribute__((always_inline)) void write_sequnlock(seqlock_t *sl) { __asm__ __volatile__("": : :"memory"); sl->sequence++; do { do { } while (0); (void)0; (void)(&sl->lock); } while (0); } static inline __attribute__((always_inline)) int write_tryseqlock(seqlock_t *sl) { int ret = (({ do { do { } while (0); (void)0; (void)(&sl->lock); } while (0); 1; })); if (ret) { ++sl->sequence; __asm__ __volatile__("": : :"memory"); } return ret; } static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl) { unsigned ret = sl->sequence; __asm__ __volatile__("": : :"memory"); return ret; } # 101 "include/linux/seqlock.h" static inline __attribute__((always_inline)) __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned iv) { __asm__ __volatile__("": : :"memory"); return (iv & 1) | (sl->sequence ^ iv); } # 115 "include/linux/seqlock.h" typedef struct seqcount { unsigned sequence; } seqcount_t; static inline __attribute__((always_inline)) unsigned read_seqcount_begin(const seqcount_t *s) { unsigned ret = s->sequence; __asm__ __volatile__("": : :"memory"); return ret; } static inline __attribute__((always_inline)) int read_seqcount_retry(const seqcount_t *s, unsigned iv) { __asm__ __volatile__("": : :"memory"); return (iv & 1) | (s->sequence ^ iv); } static inline __attribute__((always_inline)) void write_seqcount_begin(seqcount_t *s) { s->sequence++; __asm__ __volatile__("": : :"memory"); } static inline __attribute__((always_inline)) void write_seqcount_end(seqcount_t *s) { __asm__ __volatile__("": : :"memory"); s->sequence++; } # 15 "include/linux/mmzone.h" 2 # 1 "include/linux/nodemask.h" 1 # 85 "include/linux/nodemask.h" # 1 "include/linux/bitmap.h" 1 # 1 "include/linux/string.h" 1 # 16 "include/linux/string.h" extern char *strndup_user(const char *, long); # 1 "include/asm/string.h" 1 # 9 "include/asm/string.h" extern inline __attribute__((always_inline)) char *strcpy(char *dest, const char *src) { char *xdest = dest; char temp = 0; __asm__ __volatile__ ( "1:" "%2 = B [%1++] (Z);" "B [%0++] = %2;" "CC = %2;" "if cc jump 1b (bp);" : "+&a" (dest), "+&a" (src), "=&d" (temp) : : "memory", "CC"); return xdest; } extern inline __attribute__((always_inline)) char *strncpy(char *dest, const char *src, size_t n) { char *xdest = dest; char temp = 0; if (n == 0) return xdest; __asm__ __volatile__ ( "1:" "%3 = B [%1++] (Z);" "B [%0++] = %3;" "CC = %3;" "if ! cc jump 2f;" "%2 += -1;" "CC = %2 == 0;" "if ! cc jump 1b (bp);" "jump 4f;" "2:" "%3 = 0;" "3:" "%2 += -1;" "CC = %2 == 0;" "if cc jump 4f;" "B [%0++] = %3;" "jump 3b;" "4:" : "+&a" (dest), "+&a" (src), "+&da" (n), "=&d" (temp) : : "memory", "CC"); return xdest; } extern inline __attribute__((always_inline)) int strcmp(const char *cs, const char *ct) { int __res1, __res2; __asm__ __volatile__ ( "1:" "%2 = B[%0++] (Z);" "%3 = B[%1++] (Z);" "CC = %2 == %3;" "if ! cc jump 2f;" "CC = %2;" "if cc jump 1b (bp);" "jump.s 3f;" "2:" "%2 = %2 - %3;" "3:" : "+&a" (cs), "+&a" (ct), "=&d" (__res1), "=&d" (__res2) : : "memory", "CC"); return __res1; } extern inline __attribute__((always_inline)) int strncmp(const char *cs, const char *ct, size_t count) { int __res1, __res2; if (!count) return 0; __asm__ __volatile__ ( "1:" "%3 = B[%0++] (Z);" "%4 = B[%1++] (Z);" "CC = %3 == %4;" "if ! cc jump 3f;" "CC = %3;" "if ! cc jump 4f;" "%2 += -1;" "CC = %2 == 0;" "if ! cc jump 1b;" "2:" "%3 = 0;" "jump.s 4f;" "3:" "%3 = %3 - %4;" "4:" : "+&a" (cs), "+&a" (ct), "+&da" (count), "=&d" (__res1), "=&d" (__res2) : : "memory", "CC"); return __res1; } extern void *memset(void *s, int c, size_t count); extern void *memcpy(void *d, const void *s, size_t count); extern int memcmp(const void *, const void *, __kernel_size_t); extern void *memchr(const void *s, int c, size_t n); extern void *memmove(void *dest, const void *src, size_t count); # 22 "include/linux/string.h" 2 # 30 "include/linux/string.h" 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); # 48 "include/linux/string.h" 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 *); # 98 "include/linux/string.h" extern void * memscan(void *,int,__kernel_size_t); # 107 "include/linux/string.h" extern char *kstrdup(const char *s, gfp_t gfp); extern void *kmemdup(const void *src, size_t len, gfp_t gfp); # 9 "include/linux/bitmap.h" 2 # 84 "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 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); static inline __attribute__((always_inline)) void bitmap_zero(unsigned long *dst, int nbits) { if (nbits <= 32) *dst = 0UL; else { int len = (((nbits)+32 -1)/32) * sizeof(unsigned long); memset(dst, 0, len); } } static inline __attribute__((always_inline)) void bitmap_fill(unsigned long *dst, int nbits) { size_t nlongs = (((nbits)+32 -1)/32); if (nlongs > 1) { int len = (nlongs - 1) * sizeof(unsigned long); memset(dst, 0xff, len); } dst[nlongs - 1] = ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); } static inline __attribute__((always_inline)) void bitmap_copy(unsigned long *dst, const unsigned long *src, int nbits) { if (nbits <= 32) *dst = *src; else { int len = (((nbits)+32 -1)/32) * sizeof(unsigned long); memcpy(dst, src, len); } } static inline __attribute__((always_inline)) void bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) *dst = *src1 & *src2; else __bitmap_and(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_or(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) *dst = *src1 | *src2; else __bitmap_or(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) *dst = *src1 & ~(*src2); else __bitmap_andnot(dst, src1, src2, nbits); } static inline __attribute__((always_inline)) void bitmap_complement(unsigned long *dst, const unsigned long *src, int nbits) { if (nbits <= 32) *dst = ~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); else __bitmap_complement(dst, src, nbits); } static inline __attribute__((always_inline)) int bitmap_equal(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) return ! ((*src1 ^ *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_equal(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_intersects(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) return ((*src1 & *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )) != 0; else return __bitmap_intersects(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_subset(const unsigned long *src1, const unsigned long *src2, int nbits) { if (nbits <= 32) return ! ((*src1 & ~(*src2)) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_subset(src1, src2, nbits); } static inline __attribute__((always_inline)) int bitmap_empty(const unsigned long *src, int nbits) { if (nbits <= 32) return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_empty(src, nbits); } static inline __attribute__((always_inline)) int bitmap_full(const unsigned long *src, int nbits) { if (nbits <= 32) return ! (~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); else return __bitmap_full(src, nbits); } static inline __attribute__((always_inline)) int bitmap_weight(const unsigned long *src, int nbits) { if (nbits <= 32) return hweight_long(*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); return __bitmap_weight(src, nbits); } static inline __attribute__((always_inline)) void bitmap_shift_right(unsigned long *dst, const unsigned long *src, int n, int nbits) { if (nbits <= 32) *dst = *src >> n; else __bitmap_shift_right(dst, src, n, nbits); } static inline __attribute__((always_inline)) void bitmap_shift_left(unsigned long *dst, const unsigned long *src, int n, int nbits) { if (nbits <= 32) *dst = (*src << n) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); else __bitmap_shift_left(dst, src, n, nbits); } static inline __attribute__((always_inline)) int bitmap_parse(const char *buf, unsigned int buflen, unsigned long *maskp, int nmaskbits) { return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); } # 86 "include/linux/nodemask.h" 2 typedef struct { unsigned long bits[((((1 << 0))+32 -1)/32)]; } nodemask_t; extern nodemask_t _unused_nodemask_arg_; static inline __attribute__((always_inline)) void __node_set(int node, volatile nodemask_t *dstp) { set_bit(node, dstp->bits); } static inline __attribute__((always_inline)) void __node_clear(int node, volatile nodemask_t *dstp) { clear_bit(node, dstp->bits); } static inline __attribute__((always_inline)) void __nodes_setall(nodemask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) void __nodes_clear(nodemask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) int __node_test_and_set(int node, nodemask_t *addr) { return test_and_set_bit(node, addr->bits); } static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 __attribute__((always_inline)) void __nodes_complement(nodemask_t *dstp, const nodemask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_equal(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_intersects(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_subset(const nodemask_t *src1p, const nodemask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_empty(const nodemask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_full(const nodemask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodes_weight(const nodemask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_inline)) int __first_node(const nodemask_t *srcp) { return ({ int __x = ((1 << 0)); int __y = (find_next_bit((srcp->bits), ((1 << 0)), 0)); __x < __y ? __x: __y; }); } static inline __attribute__((always_inline)) int __next_node(int n, const nodemask_t *srcp) { return ({ int __x = ((1 << 0)); int __y = (find_next_bit(srcp->bits, (1 << 0), n+1)); __x < __y ? __x: __y; }); } # 251 "include/linux/nodemask.h" static inline __attribute__((always_inline)) int __first_unset_node(const nodemask_t *maskp) { return ({ int __x = ((1 << 0)); int __y = (find_next_zero_bit((maskp->bits), ((1 << 0)), 0)); __x < __y ? __x: __y; }); } # 285 "include/linux/nodemask.h" static inline __attribute__((always_inline)) int __nodemask_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodemask_parse_user(const char *buf, int len, nodemask_t *dstp, int nbits) { return bitmap_parse_user(buf, len, dstp->bits, nbits); } static inline __attribute__((always_inline)) int __nodelist_scnprintf(char *buf, int len, const nodemask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((always_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 __attribute__((always_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); } # 345 "include/linux/nodemask.h" extern nodemask_t node_online_map; extern nodemask_t node_possible_map; # 16 "include/linux/mmzone.h" 2 # 27 "include/linux/mmzone.h" struct free_area { struct list_head free_list; unsigned long nr_free; }; struct pglist_data; # 49 "include/linux/mmzone.h" 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, # 75 "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[2]; } ; enum zone_type { # 122 "include/linux/mmzone.h" ZONE_DMA, # 137 "include/linux/mmzone.h" ZONE_NORMAL, # 149 "include/linux/mmzone.h" MAX_NR_ZONES }; # 182 "include/linux/mmzone.h" struct zone { unsigned long pages_min, pages_low, pages_high; # 193 "include/linux/mmzone.h" unsigned long lowmem_reserve[MAX_NR_ZONES]; unsigned long max_pagecache_pages; # 206 "include/linux/mmzone.h" struct per_cpu_pageset pageset[1]; spinlock_t lock; struct free_area free_area[14]; 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; int all_unreclaimable; atomic_t reclaim_in_progress; atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; # 251 "include/linux/mmzone.h" int prev_priority; # 281 "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; # 302 "include/linux/mmzone.h" unsigned long spanned_pages; unsigned long present_pages; const char *name; } ; # 387 "include/linux/mmzone.h" struct zonelist_cache; # 400 "include/linux/mmzone.h" struct zonelist { struct zonelist_cache *zlcache_ptr; struct zone *zones[((1 << 0) * MAX_NR_ZONES) + 1]; }; # 418 "include/linux/mmzone.h" extern struct page *mem_map; # 432 "include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[MAX_NR_ZONES]; struct zonelist node_zonelists[MAX_NR_ZONES]; int nr_zones; struct page *node_mem_map; struct bootmem_data *bdata; # 451 "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; # 470 "include/linux/mmzone.h" # 1 "include/linux/memory_hotplug.h" 1 # 1 "include/linux/mmzone.h" 1 # 5 "include/linux/memory_hotplug.h" 2 # 1 "include/linux/notifier.h" 1 # 12 "include/linux/notifier.h" # 1 "include/linux/errno.h" 1 # 1 "include/asm/errno.h" 1 # 1 "include/asm-generic/errno.h" 1 # 1 "include/asm-generic/errno-base.h" 1 # 5 "include/asm-generic/errno.h" 2 # 5 "include/asm/errno.h" 2 # 5 "include/linux/errno.h" 2 # 13 "include/linux/notifier.h" 2 # 1 "include/linux/mutex.h" 1 # 47 "include/linux/mutex.h" struct mutex { atomic_t count; spinlock_t wait_lock; struct list_head wait_list; # 60 "include/linux/mutex.h" }; struct mutex_waiter { struct list_head list; struct task_struct *task; }; # 105 "include/linux/mutex.h" extern void __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key); static inline __attribute__((always_inline)) int mutex_is_locked(struct mutex *lock) { return ((&lock->count)->counter) != 1; } extern void mutex_lock(struct mutex *lock); extern int __attribute__((warn_unused_result)) mutex_lock_interruptible(struct mutex *lock); # 139 "include/linux/mutex.h" extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); # 14 "include/linux/notifier.h" 2 # 1 "include/linux/rwsem.h" 1 # 19 "include/linux/rwsem.h" struct rw_semaphore; # 1 "include/linux/rwsem-spinlock.h" 1 # 22 "include/linux/rwsem-spinlock.h" struct rwsem_waiter; # 31 "include/linux/rwsem-spinlock.h" struct rw_semaphore { __s32 activity; spinlock_t wait_lock; struct list_head wait_list; }; # 53 "include/linux/rwsem-spinlock.h" extern void __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key); # 63 "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 __attribute__((always_inline)) int rwsem_is_locked(struct rw_semaphore *sem) { return (sem->activity != 0); } # 23 "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 "include/linux/notifier.h" 2 # 1 "include/linux/srcu.h" 1 # 30 "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 "include/linux/notifier.h" 2 # 50 "include/linux/notifier.h" struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); struct notifier_block *next; int priority; }; struct atomic_notifier_head { spinlock_t lock; struct notifier_block *head; }; struct blocking_notifier_head { struct rw_semaphore rwsem; struct notifier_block *head; }; struct raw_notifier_head { struct notifier_block *head; }; struct srcu_notifier_head { struct mutex mutex; struct srcu_struct srcu; struct notifier_block *head; }; # 89 "include/linux/notifier.h" extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); # 115 "include/linux/notifier.h" extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_register(struct blocking_notifier_head *nh, struct notifier_block *nb); extern int raw_notifier_chain_register(struct raw_notifier_head *nh, struct notifier_block *nb); extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh, struct notifier_block *nb); extern int 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); # 8 "include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; # 140 "include/linux/memory_hotplug.h" static inline __attribute__((always_inline)) void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} static inline __attribute__((always_inline)) void pgdat_resize_init(struct pglist_data *pgdat) {} static inline __attribute__((always_inline)) unsigned zone_span_seqbegin(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) int zone_span_seqretry(struct zone *zone, unsigned iv) { return 0; } static inline __attribute__((always_inline)) void zone_span_writelock(struct zone *zone) {} static inline __attribute__((always_inline)) void zone_span_writeunlock(struct zone *zone) {} static inline __attribute__((always_inline)) void zone_seqlock_init(struct zone *zone) {} static inline __attribute__((always_inline)) int mhp_notimplemented(const char *func) { printk("<4>" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func); dump_stack(); return -38; } static inline __attribute__((always_inline)) int __remove_pages(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages) { printk("<4>" "%s() called, not yet supported\n", (__func__)); dump_stack(); return -38; } 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); # 471 "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); static inline __attribute__((always_inline)) void memory_present(int nid, unsigned long start, unsigned long end) {} # 501 "include/linux/mmzone.h" static inline __attribute__((always_inline)) int populated_zone(struct zone *zone) { return (!!zone->present_pages); } static inline __attribute__((always_inline)) int is_highmem_idx(enum zone_type idx) { return 0; } static inline __attribute__((always_inline)) int is_normal_idx(enum zone_type idx) { return (idx == ZONE_NORMAL); } static inline __attribute__((always_inline)) int is_highmem(struct zone *zone) { return 0; } static inline __attribute__((always_inline)) int is_normal(struct zone *zone) { return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; } static inline __attribute__((always_inline)) int is_dma32(struct zone *zone) { return 0; } static inline __attribute__((always_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[MAX_NR_ZONES-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 *); int sysctl_pagecache_ratio_sysctl_handler(struct ctl_table *, int, struct file *, void *, size_t *, loff_t *); # 1 "include/linux/topology.h" 1 # 30 "include/linux/topology.h" # 1 "include/linux/cpumask.h" 1 # 88 "include/linux/cpumask.h" typedef struct { unsigned long bits[(((1)+32 -1)/32)]; } cpumask_t; extern cpumask_t _unused_cpumask_arg_; static inline __attribute__((always_inline)) void __cpu_set(int cpu, volatile cpumask_t *dstp) { set_bit(cpu, dstp->bits); } static inline __attribute__((always_inline)) void __cpu_clear(int cpu, volatile cpumask_t *dstp) { clear_bit(cpu, dstp->bits); } static inline __attribute__((always_inline)) void __cpus_setall(cpumask_t *dstp, int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((always_inline)) void __cpus_clear(cpumask_t *dstp, int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((always_inline)) int __cpu_test_and_set(int cpu, cpumask_t *addr) { return test_and_set_bit(cpu, addr->bits); } static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 __attribute__((always_inline)) void __cpus_complement(cpumask_t *dstp, const cpumask_t *srcp, int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_equal(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_intersects(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_subset(const cpumask_t *src1p, const cpumask_t *src2p, int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_empty(const cpumask_t *srcp, int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_full(const cpumask_t *srcp, int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpus_weight(const cpumask_t *srcp, int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((always_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 __attribute__((always_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); } # 270 "include/linux/cpumask.h" static inline __attribute__((always_inline)) int __cpumask_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_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 __attribute__((always_inline)) int __cpulist_scnprintf(char *buf, int len, const cpumask_t *srcp, int nbits) { return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); } static inline __attribute__((always_inline)) int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((always_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 __attribute__((always_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); } # 380 "include/linux/cpumask.h" extern cpumask_t cpu_possible_map; extern cpumask_t cpu_online_map; extern cpumask_t cpu_present_map; # 31 "include/linux/topology.h" 2 # 1 "include/linux/smp.h" 1 # 11 "include/linux/smp.h" extern void cpu_idle(void); # 87 "include/linux/smp.h" static inline __attribute__((always_inline)) int up_smp_call_function(void) { return 0; } # 99 "include/linux/smp.h" static inline __attribute__((always_inline)) void smp_send_reschedule(int cpu) { } static inline __attribute__((always_inline)) int smp_call_function_single(int cpuid, void (*func) (void *info), void *info, int retry, int wait) { return -16; } # 136 "include/linux/smp.h" void smp_setup_processor_id(void); # 34 "include/linux/topology.h" 2 # 1 "include/asm/topology.h" 1 # 1 "include/asm-generic/topology.h" 1 # 5 "include/asm/topology.h" 2 # 35 "include/linux/topology.h" 2 # 576 "include/linux/mmzone.h" 2 extern struct pglist_data contig_page_data; # 594 "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); # 793 "include/linux/mmzone.h" void memory_present(int nid, unsigned long start, unsigned long end); unsigned long __attribute__ ((__section__ (".init.text"))) node_memmap_size_bytes(int, unsigned long, unsigned long); # 5 "include/linux/gfp.h" 2 struct vm_area_struct; # 86 "include/linux/gfp.h" static inline __attribute__((always_inline)) enum zone_type gfp_zone(gfp_t flags) { if (flags & (( gfp_t)0x01u)) return ZONE_DMA; # 100 "include/linux/gfp.h" return ZONE_NORMAL; } # 119 "include/linux/gfp.h" static inline __attribute__((always_inline)) void arch_free_page(struct page *page, int order) { } static inline __attribute__((always_inline)) void arch_alloc_page(struct page *page, int order) { } extern struct page * __alloc_pages(gfp_t, unsigned int, struct zonelist *); static inline __attribute__((always_inline)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (__builtin_expect(!!(order >= 14), 0)) return ((void *)0); if (nid < 0) nid = ((0)); return __alloc_pages(gfp_mask, order, (&contig_page_data)->node_zonelists + gfp_zone(gfp_mask)); } # 162 "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); # 15 "include/linux/slab.h" 2 typedef struct kmem_cache kmem_cache_t __attribute__((deprecated)); # 38 "include/linux/slab.h" void __attribute__ ((__section__ (".init.text"))) kmem_cache_init(void); int slab_is_available(void); struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, unsigned long, void (*)(void *, struct kmem_cache *, unsigned long), void (*)(void *, struct kmem_cache *, unsigned long)); void kmem_cache_destroy(struct kmem_cache *); int kmem_cache_shrink(struct kmem_cache *); void *kmem_cache_alloc(struct kmem_cache *, gfp_t); void *kmem_cache_zalloc(struct kmem_cache *, gfp_t); 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); # 69 "include/linux/slab.h" static inline __attribute__((always_inline)) void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int node) { return kmem_cache_alloc(cachep, flags); } # 94 "include/linux/slab.h" void *__kmalloc(size_t, gfp_t); void *__kzalloc(size_t, gfp_t); void * __attribute__((warn_unused_result)) krealloc(const void *, size_t, gfp_t); void kfree(const void *); size_t ksize(const void *); static inline __attribute__((always_inline)) void *kcalloc(size_t n, size_t size, gfp_t flags) { if (n != 0 && size > (~0UL) / n) return ((void *)0); return __kzalloc(n * size, flags); } # 123 "include/linux/slab.h" # 1 "include/linux/slab_def.h" 1 # 19 "include/linux/slab_def.h" struct cache_sizes { size_t cs_size; struct kmem_cache *cs_cachep; struct kmem_cache *cs_dmacachep; }; extern struct cache_sizes malloc_sizes[]; static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { int i = 0; # 1 "include/linux/kmalloc_sizes.h" 1 if (size <= 32) goto found; else i++; if (size <= 64) goto found; else i++; if (size <= 96) goto found; else i++; if (size <= 128) goto found; else i++; if (size <= 192) goto found; else i++; if (size <= 256) goto found; else i++; if (size <= 512) goto found; else i++; if (size <= 1024) goto found; else i++; if (size <= 2048) goto found; else i++; if (size <= 4096) goto found; else i++; if (size <= 8192) goto found; else i++; if (size <= 16384) goto found; else i++; if (size <= 32768) goto found; else i++; if (size <= 65536) goto found; else i++; if (size <= 131072) goto found; else i++; if (size <= 262144) goto found; else i++; if (size <= 524288) goto found; else i++; if (size <= 1048576) goto found; else i++; if (size <= 2097152) goto found; else i++; if (size <= 4194304) goto found; else i++; if (size <= 8388608) goto found; else i++; if (size <= 16777216) goto found; else i++; if (size <= 33554432) goto found; else i++; # 38 "include/linux/slab_def.h" 2 { extern void __you_cannot_kmalloc_that_much(void); __you_cannot_kmalloc_that_much(); } found: if (flags & (( gfp_t)0x01u)) return kmem_cache_alloc(malloc_sizes[i].cs_dmacachep, flags); return kmem_cache_alloc(malloc_sizes[i].cs_cachep, flags); } return __kmalloc(size, flags); } static inline __attribute__((always_inline)) void *kzalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { int i = 0; # 1 "include/linux/kmalloc_sizes.h" 1 if (size <= 32) goto found; else i++; if (size <= 64) goto found; else i++; if (size <= 96) goto found; else i++; if (size <= 128) goto found; else i++; if (size <= 192) goto found; else i++; if (size <= 256) goto found; else i++; if (size <= 512) goto found; else i++; if (size <= 1024) goto found; else i++; if (size <= 2048) goto found; else i++; if (size <= 4096) goto found; else i++; if (size <= 8192) goto found; else i++; if (size <= 16384) goto found; else i++; if (size <= 32768) goto found; else i++; if (size <= 65536) goto found; else i++; if (size <= 131072) goto found; else i++; if (size <= 262144) goto found; else i++; if (size <= 524288) goto found; else i++; if (size <= 1048576) goto found; else i++; if (size <= 2097152) goto found; else i++; if (size <= 4194304) goto found; else i++; if (size <= 8388608) goto found; else i++; if (size <= 16777216) goto found; else i++; if (size <= 33554432) goto found; else i++; # 64 "include/linux/slab_def.h" 2 { extern void __you_cannot_kzalloc_that_much(void); __you_cannot_kzalloc_that_much(); } found: if (flags & (( gfp_t)0x01u)) return kmem_cache_zalloc(malloc_sizes[i].cs_dmacachep, flags); return kmem_cache_zalloc(malloc_sizes[i].cs_cachep, flags); } return __kzalloc(size, flags); } # 112 "include/linux/slab_def.h" extern const struct seq_operations slabinfo_op; ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *); # 124 "include/linux/slab.h" 2 # 194 "include/linux/slab.h" static inline __attribute__((always_inline)) void *kmalloc_node(size_t size, gfp_t flags, int node) { return kmalloc(size, flags); } static inline __attribute__((always_inline)) void *__kmalloc_node(size_t size, gfp_t flags, int node) { return __kmalloc(size, flags); } # 6 "include/linux/percpu.h" 2 # 1 "include/asm/percpu.h" 1 # 1 "include/asm-generic/percpu.h" 1 # 5 "include/asm/percpu.h" 2 # 11 "include/linux/percpu.h" 2 # 64 "include/linux/percpu.h" static inline __attribute__((always_inline)) void percpu_depopulate(void *__pdata, int cpu) { } static inline __attribute__((always_inline)) void __percpu_depopulate_mask(void *__pdata, cpumask_t *mask) { } static inline __attribute__((always_inline)) void *percpu_populate(void *__pdata, size_t size, gfp_t gfp, int cpu) { return ({ (void)(cpu); (__pdata); }); } static inline __attribute__((always_inline)) int __percpu_populate_mask(void *__pdata, size_t size, gfp_t gfp, cpumask_t *mask) { return 0; } static inline __attribute__((always_inline)) __attribute__((always_inline)) void *__percpu_alloc_mask(size_t size, gfp_t gfp, cpumask_t *mask) { return kzalloc(size, gfp); } static inline __attribute__((always_inline)) void percpu_free(void *__pdata) { kfree(__pdata); } # 42 "include/linux/rcupdate.h" 2 # 50 "include/linux/rcupdate.h" struct rcu_head { struct rcu_head *next; void (*func)(struct rcu_head *head); }; # 64 "include/linux/rcupdate.h" struct rcu_ctrlblk { long cur; long completed; int next_pending; int signaled; spinlock_t lock ; cpumask_t cpumask; } ; static inline __attribute__((always_inline)) int rcu_batch_before(long a, long b) { return (a - b) < 0; } static inline __attribute__((always_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 __attribute__((always_inline)) void rcu_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*((void)(cpu), &per_cpu__rcu_data)); rdp->passed_quiesc = 1; } static inline __attribute__((always_inline)) void rcu_bh_qsctr_inc(int cpu) { struct rcu_data *rdp = &(*((void)(cpu), &per_cpu__rcu_bh_data)); rdp->passed_quiesc = 1; } extern int rcu_pending(int cpu); extern int rcu_needs_cpu(int cpu); # 272 "include/linux/rcupdate.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); extern void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *head)); extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); extern void synchronize_rcu(void); void synchronize_idle(void); extern void rcu_barrier(void); # 11 "include/linux/dcache.h" 2 struct nameidata; struct vfsmount; # 33 "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 __attribute__((always_inline)) unsigned long partial_name_hash(unsigned long c, unsigned long prevhash) { return (prevhash + (c << 4) + (c >> 4)) * 11; } static inline __attribute__((always_inline)) unsigned long end_name_hash(unsigned long hash) { return (unsigned int) hash; } static inline __attribute__((always_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 "include/linux/dcache.h" extern spinlock_t dcache_lock; # 198 "include/linux/dcache.h" static inline __attribute__((always_inline)) void __d_drop(struct dentry *dentry) { if (!(dentry->d_flags & 0x0010)) { dentry->d_flags |= 0x0010; hlist_del_rcu(&dentry->d_hash); } } static inline __attribute__((always_inline)) void d_drop(struct dentry *dentry) { do { do { } while (0); (void)0; (void)(&dcache_lock); } while (0); do { do { } while (0); (void)0; (void)(&dentry->d_lock); } while (0); __d_drop(dentry); do { do { } while (0); (void)0; (void)(&dentry->d_lock); } while (0); do { do { } while (0); (void)0; (void)(&dcache_lock); } while (0); } static inline __attribute__((always_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 *); # 263 "include/linux/dcache.h" static inline __attribute__((always_inline)) void d_add(struct dentry *entry, struct inode *inode) { d_instantiate(entry, inode); d_rehash(entry); } # 277 "include/linux/dcache.h" static inline __attribute__((always_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(struct dentry *, struct vfsmount *, char *, int); # 319 "include/linux/dcache.h" static inline __attribute__((always_inline)) struct dentry *dget(struct dentry *dentry) { if (dentry) { do { if (__builtin_expect(!!((!((&dentry->d_count)->counter))!=0), 0)) do { printk("BUG: failure at %s:%d/%s()!\n", "include/linux/dcache.h", 322, (__func__)); panic("BUG!"); } while (0); } while(0); atomic_inc(&dentry->d_count); } return dentry; } extern struct dentry * dget_locked(struct dentry *); # 337 "include/linux/dcache.h" static inline __attribute__((always_inline)) int d_unhashed(struct dentry *dentry) { return (dentry->d_flags & 0x0010); } static inline __attribute__((always_inline)) struct dentry *dget_parent(struct dentry *dentry) { struct dentry *ret; do { do { } while (0); (void)0; (void)(&dentry->d_lock); } while (0); ret = dget(dentry->d_parent); do { do { } while (0); (void)0; (void)(&dentry->d_lock); } while (0); return ret; } extern void dput(struct dentry *); static inline __attribute__((always_inline)) int d_mountpoint(struct dentry *dentry) { return dentry->d_mounted; } extern struct vfsmount *lookup_mnt(struct vfsmount *, struct dentry *); extern struct vfsmount *__lookup_mnt(struct vfsmount *, struct dentry *, int); extern struct dentry *lookup_create(struct nameidata *nd, int is_dir); extern int sysctl_vfs_cache_pressure; # 276 "include/linux/fs.h" 2 # 1 "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 dentry *dentry; struct vfsmount *mnt; struct qstr last; unsigned int flags; int last_type; unsigned depth; char *saved_names[MAX_NESTED_LINKS + 1]; union { struct open_intent open; } intent; }; struct path { struct vfsmount *mnt; struct dentry *dentry; }; enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; # 65 "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 path_walk(const char *, struct nameidata *); extern int link_path_walk(const char *, struct nameidata *); extern void path_release(struct nameidata *); extern void path_release_on_umount(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_len_kern(const char *, struct dentry *, int); 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 __attribute__((always_inline)) void nd_set_link(struct nameidata *nd, char *path) { nd->saved_names[nd->depth] = path; } static inline __attribute__((always_inline)) char *nd_get_link(struct nameidata *nd) { return nd->saved_names[nd->depth]; } # 277 "include/linux/fs.h" 2 # 1 "include/linux/stat.h" 1 # 1 "include/asm/stat.h" 1 struct stat { unsigned short st_dev; unsigned short __pad1; unsigned long st_ino; unsigned short st_mode; unsigned short st_nlink; unsigned short st_uid; unsigned short st_gid; unsigned short st_rdev; unsigned short __pad2; unsigned long st_size; unsigned long st_blksize; unsigned long st_blocks; unsigned long st_atime; unsigned long __unused1; unsigned long st_mtime; unsigned long __unused2; unsigned long st_ctime; unsigned long __unused3; unsigned long __unused4; unsigned long __unused5; }; struct stat64 { unsigned long long st_dev; unsigned char __pad1[4]; unsigned long __st_ino; unsigned int st_mode; unsigned int st_nlink; unsigned long st_uid; unsigned long st_gid; unsigned long long st_rdev; unsigned char __pad2[4]; long long st_size; unsigned long st_blksize; long long st_blocks; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long long st_ino; }; # 7 "include/linux/stat.h" 2 # 60 "include/linux/stat.h" # 1 "include/linux/time.h" 1 # 12 "include/linux/time.h" 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; }; # 39 "include/linux/time.h" static inline __attribute__((always_inline)) int timespec_equal(struct timespec *a, struct timespec *b) { return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } static inline __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 __attribute__((weak)); extern unsigned long read_persistent_clock(void); void timekeeping_init(void); static inline __attribute__((always_inline)) unsigned long get_seconds(void) { return xtime.tv_sec; } 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 struct timespec timespec_trunc(struct timespec t, unsigned gran); extern int timekeeping_is_continuous(void); extern void update_wall_time(void); # 131 "include/linux/time.h" static inline __attribute__((always_inline)) s64 timespec_to_ns(const struct timespec *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } # 143 "include/linux/time.h" static inline __attribute__((always_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 __attribute__((always_inline)) void timespec_add_ns(struct timespec *a, u64 ns) { ns += a->tv_nsec; while(__builtin_expect(!!(ns >= 1000000000L), 0)) { ns -= 1000000000L; a->tv_sec++; } a->tv_nsec = ns; } # 197 "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 "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; }; # 278 "include/linux/fs.h" 2 # 1 "include/linux/kobject.h" 1 # 22 "include/linux/kobject.h" # 1 "include/linux/sysfs.h" 1 # 18 "include/linux/sysfs.h" struct kobject; struct module; struct nameidata; struct dentry; struct attribute { const char * name; struct module * owner; mode_t mode; }; struct attribute_group { const char * name; struct attribute ** attrs; }; # 56 "include/linux/sysfs.h" struct vm_area_struct; struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct kobject *, char *, loff_t, size_t); ssize_t (*write)(struct kobject *, 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); }; # 82 "include/linux/sysfs.h" extern int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *), void *data, struct module *owner); extern int __attribute__((warn_unused_result)) sysfs_create_dir(struct kobject *, struct dentry *); extern void sysfs_remove_dir(struct kobject *); extern int __attribute__((warn_unused_result)) sysfs_rename_dir(struct kobject *, struct dentry *, const char *new_name); extern int __attribute__((warn_unused_result)) sysfs_move_dir(struct kobject *, struct kobject *); extern int __attribute__((warn_unused_result)) sysfs_create_file(struct kobject *, const struct attribute *); extern int __attribute__((warn_unused_result)) sysfs_update_file(struct kobject *, const struct attribute *); extern int __attribute__((warn_unused_result)) sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode); extern void sysfs_remove_file(struct kobject *, const struct attribute *); extern int __attribute__((warn_unused_result)) sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name); extern void sysfs_remove_link(struct kobject *, const char * name); int __attribute__((warn_unused_result)) sysfs_create_bin_file(struct kobject *kobj, struct bin_attribute *attr); void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr); int __attribute__((warn_unused_result)) sysfs_create_group(struct kobject *, const struct attribute_group *); void sysfs_remove_group(struct kobject *, const struct attribute_group *); 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 * k, char *dir, char *attr); extern int sysfs_make_shadowed_dir(struct kobject *kobj, void * (*follow_link)(struct dentry *, struct nameidata *)); extern struct dentry *sysfs_create_shadow_dir(struct kobject *kobj); extern void sysfs_remove_shadow_dir(struct dentry *dir); extern int __attribute__((warn_unused_result)) sysfs_init(void); # 23 "include/linux/kobject.h" 2 # 1 "include/linux/kref.h" 1 # 23 "include/linux/kref.h" struct kref { atomic_t refcount; }; void kref_init(struct kref *kref); void kref_get(struct kref *kref); int kref_put(struct kref *kref, void (*release) (struct kref *kref)); # 26 "include/linux/kobject.h" 2 # 34 "include/linux/kobject.h" extern char uevent_helper[]; extern u64 uevent_seqnum; typedef int kobject_action_t; enum kobject_action { KOBJ_ADD = ( kobject_action_t) 0x01, KOBJ_REMOVE = ( kobject_action_t) 0x02, KOBJ_CHANGE = ( kobject_action_t) 0x03, KOBJ_OFFLINE = ( kobject_action_t) 0x04, KOBJ_ONLINE = ( kobject_action_t) 0x05, KOBJ_MOVE = ( kobject_action_t) 0x06, }; struct kobject { const char * k_name; char name[20]; struct kref kref; struct list_head entry; struct kobject * parent; struct kset * kset; struct kobj_type * ktype; struct dentry * dentry; wait_queue_head_t poll; }; extern int kobject_set_name(struct kobject *, const char *, ...) __attribute__((format(printf,2,3))); static inline __attribute__((always_inline)) const char * kobject_name(const struct kobject * kobj) { return kobj->k_name; } extern void kobject_init(struct kobject *); extern void kobject_cleanup(struct kobject *); extern int __attribute__((warn_unused_result)) kobject_add(struct kobject *); extern int __attribute__((warn_unused_result)) kobject_shadow_add(struct kobject *, struct dentry *); extern void kobject_del(struct kobject *); extern int __attribute__((warn_unused_result)) kobject_rename(struct kobject *, const char *new_name); extern int __attribute__((warn_unused_result)) kobject_shadow_rename(struct kobject *kobj, struct dentry *new_parent, const char *new_name); extern int __attribute__((warn_unused_result)) kobject_move(struct kobject *, struct kobject *); extern int __attribute__((warn_unused_result)) kobject_register(struct kobject *); extern void kobject_unregister(struct kobject *); extern struct kobject * kobject_get(struct kobject *); extern void kobject_put(struct kobject *); extern struct kobject *kobject_kset_add_dir(struct kset *kset, struct kobject *, const char *); extern struct kobject *kobject_add_dir(struct kobject *, const char *); extern char * kobject_get_path(struct kobject *, gfp_t); struct kobj_type { void (*release)(struct kobject *); struct sysfs_ops * sysfs_ops; struct attribute ** default_attrs; }; # 119 "include/linux/kobject.h" 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, char **envp, int num_envp, char *buffer, int buffer_size); }; struct kset { struct kobj_type * ktype; struct list_head list; spinlock_t list_lock; struct kobject kobj; struct kset_uevent_ops * uevent_ops; }; extern void kset_init(struct kset * k); extern int __attribute__((warn_unused_result)) kset_add(struct kset * k); extern int __attribute__((warn_unused_result)) kset_register(struct kset * k); extern void kset_unregister(struct kset * k); static inline __attribute__((always_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 __attribute__((always_inline)) struct kset * kset_get(struct kset * k) { return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0); } static inline __attribute__((always_inline)) void kset_put(struct kset * k) { kobject_put(&k->kobj); } static inline __attribute__((always_inline)) struct kobj_type * get_ktype(struct kobject * k) { if (k->kset && k->kset->ktype) return k->kset->ktype; else return k->ktype; } extern struct kobject * kset_find_obj(struct kset *, const char *); # 187 "include/linux/kobject.h" extern struct kset kernel_subsys; extern struct kset hypervisor_subsys; # 236 "include/linux/kobject.h" extern void subsystem_init(struct kset *); extern int __attribute__((warn_unused_result)) subsystem_register(struct kset *); extern void subsystem_unregister(struct kset *); static inline __attribute__((always_inline)) struct kset *subsys_get(struct kset *s) { if (s) return kset_get(s); return ((void *)0); } static inline __attribute__((always_inline)) void subsys_put(struct kset *s) { kset_put(s); } struct subsys_attribute { struct attribute attr; ssize_t (*show)(struct kset *, char *); ssize_t (*store)(struct kset *, const char *, size_t); }; extern int __attribute__((warn_unused_result)) subsys_create_file(struct kset *, struct subsys_attribute *); 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(char **envp, int num_envp, int *cur_index, char *buffer, int buffer_size, int *cur_len, const char *format, ...) __attribute__((format (printf, 7, 8))); # 280 "include/linux/fs.h" 2 # 1 "include/linux/radix-tree.h" 1 # 38 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) void *radix_tree_ptr_to_direct(void *ptr) { return (void *)((unsigned long)ptr | 1); } static inline __attribute__((always_inline)) void *radix_tree_direct_to_ptr(void *ptr) { return (void *)((unsigned long)ptr & ~1); } static inline __attribute__((always_inline)) int radix_tree_is_direct_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; }; # 131 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) void *radix_tree_deref_slot(void **pslot) { return radix_tree_direct_to_ptr(*pslot); } # 143 "include/linux/radix-tree.h" static inline __attribute__((always_inline)) void radix_tree_replace_slot(void **pslot, void *item) { do { if (__builtin_expect(!!((radix_tree_is_direct_ptr(item))!=0), 0)) do { printk("BUG: failure at %s:%d/%s()!\n", "include/linux/radix-tree.h", 145, (__func__)); panic("BUG!"); } while (0); } while(0); ({ __asm__ __volatile__("": : :"memory"); (*pslot) = ((void *)((unsigned long)item | ((unsigned long)*pslot & 1))); }); } 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); 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 __attribute__((always_inline)) void radix_tree_preload_end(void) { do { } while (0); } # 282 "include/linux/fs.h" 2 # 1 "include/linux/prio_tree.h" 1 # 14 "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 __attribute__((always_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 "include/linux/prio_tree.h" static inline __attribute__((always_inline)) int prio_tree_empty(const struct prio_tree_root *root) { return root->prio_tree_node == ((void *)0); } static inline __attribute__((always_inline)) int prio_tree_root(const struct prio_tree_node *node) { return node->parent == node; } static inline __attribute__((always_inline)) int prio_tree_left_empty(const struct prio_tree_node *node) { return node->left == node; } static inline __attribute__((always_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); # 283 "include/linux/fs.h" 2 # 1 "include/linux/pid.h" 1 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; # 43 "include/linux/pid.h" struct pid { atomic_t count; int nr; struct hlist_node pid_chain; struct hlist_head tasks[PIDTYPE_MAX]; struct rcu_head rcu; }; extern struct pid init_struct_pid; struct pid_link { struct hlist_node node; struct pid *pid; }; static inline __attribute__((always_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 int 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 transfer_pid(struct task_struct *old, struct task_struct *new, enum pid_type); extern struct pid *find_pid(int nr); extern struct pid *find_get_pid(int nr); extern struct pid *find_ge_pid(int nr); extern struct pid *alloc_pid(void); extern void free_pid(struct pid *pid); static inline __attribute__((always_inline)) pid_t pid_nr(struct pid *pid) { pid_t nr = 0; if (pid) nr = pid->nr; return nr; } # 285 "include/linux/fs.h" 2 # 1 "include/asm/semaphore.h" 1 # 21 "include/asm/semaphore.h" struct semaphore { atomic_t count; int sleepers; wait_queue_head_t wait; }; # 40 "include/asm/semaphore.h" static inline __attribute__((always_inline)) void sema_init(struct semaphore *sem, int val) { *sem = (struct semaphore){ .count = { (val) }, .sleepers = 0, .wait = { .lock = (spinlock_t) { .raw_lock = { }, }, .task_list = { &((*sem).wait).task_list, &((*sem).wait).task_list } } }; } static inline __attribute__((always_inline)) void init_MUTEX(struct semaphore *sem) { sema_init(sem, 1); } static inline __attribute__((always_inline)) void init_MUTEX_LOCKED(struct semaphore *sem) { sema_init(sem, 0); } void __down(struct semaphore *sem); int __down_interruptible(struct semaphore *sem); int __down_trylock(struct semaphore *sem); void __up(struct semaphore *sem); extern spinlock_t semaphore_wake_lock; static inline __attribute__((always_inline)) void down(struct semaphore *sem) { do { cond_resched(); } while (0); if (atomic_sub_return(1,(&sem->count)) < 0) __down(sem); } static inline __attribute__((always_inline)) int down_interruptible(struct semaphore *sem) { int ret = 0; do { cond_resched(); } while (0); if (atomic_sub_return(1,(&sem->count)) < 0) ret = __down_interruptible(sem); return (ret); } static inline __attribute__((always_inline)) int down_trylock(struct semaphore *sem) { int ret = 0; if (atomic_sub_return(1,(&sem->count)) < 0) ret = __down_trylock(sem); return ret; } static inline __attribute__((always_inline)) void up(struct semaphore *sem) { if (atomic_add_return(1,(&sem->count)) <= 0) __up(sem); } # 289 "include/linux/fs.h" 2 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"))) inode_init(unsigned long); extern void __attribute__ ((__section__ (".init.text"))) inode_init_early(void); extern void __attribute__ ((__section__ (".init.text"))) mnt_init(unsigned long); extern void __attribute__ ((__section__ (".init.text"))) 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); # 340 "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 "include/linux/quota.h" 1 # 44 "include/linux/quota.h" typedef __kernel_uid32_t qid_t; typedef __u64 qsize_t; # 103 "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 "include/linux/quota.h" struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; }; # 1 "include/linux/dqblk_xfs.h" 1 # 50 "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 "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; # 137 "include/linux/quota.h" 2 # 1 "include/linux/dqblk_v1.h" 1 # 21 "include/linux/dqblk_v1.h" struct v1_mem_dqinfo { }; # 138 "include/linux/quota.h" 2 # 1 "include/linux/dqblk_v2.h" 1 # 20 "include/linux/dqblk_v2.h" struct v2_mem_dqinfo { unsigned int dqi_blocks; unsigned int dqi_free_blk; unsigned int dqi_free_entry; }; # 139 "include/linux/quota.h" 2 extern spinlock_t dq_data_lock; # 152 "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; struct list_head dqi_dirty_list; unsigned long dqi_flags; unsigned int dqi_bgrace; unsigned int dqi_igrace; 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; # 214 "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 (*quota_off)(struct super_block *, int); int (*quota_sync)(struct super_block *, int); int (*get_info)(struct super_block *, int, struct if_dqinfo *); int (*set_info)(struct super_block *, int, struct if_dqinfo *); int (*get_dqblk)(struct super_block *, 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; }; 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]; }; int mark_dquot_dirty(struct dquot *dquot); # 308 "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; }; # 362 "include/linux/fs.h" 2 # 389 "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 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); 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); struct page* (*get_xip_page)(struct address_space *, sector_t, int); int (*migratepage) (struct address_space *, struct page *, struct page *); int (*launder_page) (struct page *); }; 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; }; # 497 "include/linux/fs.h" int mapping_tagged(struct address_space *mapping, int tag); static inline __attribute__((always_inline)) int mapping_mapped(struct address_space *mapping) { return !prio_tree_empty(&mapping->i_mmap) || !list_empty(&mapping->i_mmap_nonlinear); } static inline __attribute__((always_inline)) int mapping_writably_mapped(struct address_space *mapping) { return mapping->i_mmap_writable != 0; } # 530 "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; unsigned long 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; 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_security; void *i_private; }; # 608 "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); # 630 "include/linux/fs.h" static inline __attribute__((always_inline)) loff_t i_size_read(const struct inode *inode) { # 649 "include/linux/fs.h" return inode->i_size; } static inline __attribute__((always_inline)) void i_size_write(struct inode *inode, loff_t i_size) { # 669 "include/linux/fs.h" inode->i_size = i_size; } static inline __attribute__((always_inline)) unsigned iminor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) & ((1U << 20) - 1))); } static inline __attribute__((always_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 long size; unsigned long flags; unsigned long cache_hit; unsigned long prev_index; unsigned long ahead_start; unsigned long ahead_size; unsigned long ra_pages; unsigned long mmap_hit; unsigned long mmap_miss; unsigned int prev_offset; }; 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; unsigned long f_version; void *f_security; void *private_data; struct list_head f_ep_links; spinlock_t f_ep_lock; struct address_space *f_mapping; }; extern spinlock_t files_lock; # 779 "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 "include/linux/nfs_fs_i.h" 1 # 1 "include/linux/nfs.h" 1 # 39 "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 "include/linux/sunrpc/msg_prot.h" 1 # 18 "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 "include/linux/sunrpc/msg_prot.h" typedef __be32 rpc_fraghdr; # 131 "include/linux/nfs.h" 2 struct nfs_fh { unsigned short size; unsigned char data[128]; }; static inline __attribute__((always_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 __attribute__((always_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 "include/linux/nfs.h" enum nfs3_stable_how { NFS_UNSTABLE = 0, NFS_DATA_SYNC = 1, NFS_FILE_SYNC = 2 }; # 7 "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; }; # 801 "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; 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; } fl_u; }; # 833 "include/linux/fs.h" # 1 "include/linux/fcntl.h" 1 # 1 "include/asm/fcntl.h" 1 # 11 "include/asm/fcntl.h" # 1 "include/asm-generic/fcntl.h" 1 # 114 "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; }; # 137 "include/asm-generic/fcntl.h" struct flock64 { short l_type; short l_whence; loff_t l_start; loff_t l_len; pid_t l_pid; }; # 12 "include/asm/fcntl.h" 2 # 5 "include/linux/fcntl.h" 2 # 834 "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 int fcntl_getlk64(struct file *, struct flock64 *); extern int fcntl_setlk64(unsigned int, struct file *, unsigned int, struct flock64 *); 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 int 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 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); 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); # 903 "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; 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; void *s_security; struct xattr_handler **s_xattr; struct list_head s_inodes; struct list_head s_dirty; struct list_head s_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; }; extern struct timespec current_fs_time(struct super_block *sb); enum { SB_UNFROZEN = 0, SB_FREEZE_WRITE = 1, SB_FREEZE_TRANS = 2, }; # 988 "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); # 1033 "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, unsigned long *); int (*media_changed) (struct gendisk *); int (*revalidate_disk) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); struct module *owner; }; # 1065 "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); # 1088 "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 (*sendfile) (struct file *, loff_t *, size_t, read_actor_t, void *); 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); }; 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); }; 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 (*read_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); int (*show_options)(struct seq_file *, struct vfsmount *); int (*show_stats)(struct seq_file *, struct vfsmount *); }; # 1203 "include/linux/fs.h" extern void __mark_inode_dirty(struct inode *, int); static inline __attribute__((always_inline)) void mark_inode_dirty(struct inode *inode) { __mark_inode_dirty(inode, (1 | 2 | 4)); } static inline __attribute__((always_inline)) void mark_inode_dirty_sync(struct inode *inode) { __mark_inode_dirty(inode, 1); } # 1222 "include/linux/fs.h" static inline __attribute__((always_inline)) void inc_nlink(struct inode *inode) { inode->i_nlink++; } static inline __attribute__((always_inline)) void inode_inc_link_count(struct inode *inode) { inc_nlink(inode); mark_inode_dirty(inode); } # 1244 "include/linux/fs.h" static inline __attribute__((always_inline)) void drop_nlink(struct inode *inode) { inode->i_nlink--; } # 1257 "include/linux/fs.h" static inline __attribute__((always_inline)) void clear_nlink(struct inode *inode) { inode->i_nlink = 0; } static inline __attribute__((always_inline)) void inode_dec_link_count(struct inode *inode) { drop_nlink(inode); mark_inode_dirty(inode); } extern void touch_atime(struct vfsmount *mnt, struct dentry *dentry); static inline __attribute__((always_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); # 1363 "include/linux/fs.h" struct export_operations { struct dentry *(*decode_fh)(struct super_block *sb, __u32 *fh, int fh_len, int fh_type, int (*acceptable)(void *context, struct dentry *de), void *context); int (*encode_fh)(struct dentry *de, __u32 *fh, int *max_len, int connectable); int (*get_name)(struct dentry *parent, char *name, struct dentry *child); struct dentry * (*get_parent)(struct dentry *child); struct dentry * (*get_dentry)(struct super_block *sb, void *inump); struct dentry * (*find_exported_dentry)( struct super_block *sb, void *obj, void *parent, int (*acceptable)(void *context, struct dentry *de), void *context); }; extern struct dentry * find_exported_dentry(struct super_block *sb, void *obj, void *parent, int (*acceptable)(void *context, struct dentry *de), void *context); 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; }; 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(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(struct file_system_type *); extern int may_umount_tree(struct vfsmount *); extern int may_umount(struct vfsmount *); extern void umount_tree(struct vfsmount *, int, struct list_head *); extern void release_mounts(struct list_head *); extern long do_mount(char *, char *, char *, unsigned long, void *); extern struct vfsmount *copy_tree(struct vfsmount *, struct dentry *, int); extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *, struct vfsmount *); extern int vfs_statfs(struct dentry *, struct kstatfs *); extern struct kset fs_subsys; extern int locks_mandatory_locked(struct inode *); extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t); # 1469 "include/linux/fs.h" static inline __attribute__((always_inline)) int locks_verify_locked(struct inode *inode) { if ((((inode)->i_sb->s_flags & (64)) && ((inode)->i_mode & (0002000 | 00010)) == 0002000)) return locks_mandatory_locked(inode); return 0; } extern int rw_verify_area(int, struct file *, loff_t *, size_t); static inline __attribute__((always_inline)) int locks_verify_truncate(struct inode *inode, struct file *filp, loff_t size) { if (inode->i_flock && (((inode)->i_sb->s_flags & (64)) && ((inode)->i_mode & (0002000 | 00010)) == 0002000)) return locks_mandatory_area( 2, inode, filp, size < inode->i_size ? size : inode->i_size, (size < inode->i_size ? inode->i_size - size : size - inode->i_size) ); return 0; } static inline __attribute__((always_inline)) 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 fdf, 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"))) vfs_caches_init_early(void); extern void __attribute__ ((__section__ (".init.text"))) vfs_caches_init(unsigned long); extern struct kmem_cache *names_cachep; # 1525 "include/linux/fs.h" extern int register_blkdev(unsigned int, const char *); extern int 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 address_space_operations def_blk_aops; 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 *); # 1562 "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 int unregister_chrdev(unsigned int, const char *); extern void unregister_chrdev_region(dev_t, unsigned); extern int chrdev_open(struct inode *, struct file *); 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 *); # 1609 "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); static inline __attribute__((always_inline)) unsigned long __attribute__((deprecated)) invalidate_inode_pages(struct address_space *mapping) { return invalidate_mapping_pages(mapping, 0, ~0UL); } static inline __attribute__((always_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 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 __attribute__((always_inline)) void put_write_access(struct inode * inode) { atomic_dec(&inode->i_writecount); } static inline __attribute__((always_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 int open_namei(int dfd, const char *, int, int, struct nameidata *); 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 "include/linux/err.h" 1 # 22 "include/linux/err.h" static inline __attribute__((always_inline)) void *ERR_PTR(long error) { return (void *) error; } static inline __attribute__((always_inline)) long PTR_ERR(const void *ptr) { return (long) ptr; } static inline __attribute__((always_inline)) long IS_ERR(const void *ptr) { return __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); } # 1687 "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 *); static inline __attribute__((always_inline)) struct inode *iget(struct super_block *sb, unsigned long ino) { struct inode *inode = iget_locked(sb, ino); if (inode && (inode->i_state & 64)) { sb->s_op->read_inode(inode); unlock_new_inode(inode); } return inode; } extern void __iget(struct inode * 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 __attribute__((always_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 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); extern int file_send_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 ssize_t generic_file_sendfile(struct file *, loff_t *, size_t, read_actor_t, void *); extern void do_generic_mapping_read(struct address_space *mapping, struct file_ra_state *, struct file *, loff_t *, read_descriptor_t *, read_actor_t); 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); # 1803 "include/linux/fs.h" static inline __attribute__((always_inline)) int xip_truncate_page(struct address_space *mapping, loff_t from) { return 0; } static inline __attribute__((always_inline)) void do_generic_file_read(struct file * filp, loff_t *ppos, read_descriptor_t * desc, read_actor_t actor) { do_generic_mapping_read(filp->f_mapping, &filp->f_ra, filp, ppos, desc, actor); } 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 __attribute__((always_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 __attribute__((always_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 __attribute__((always_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 vfs_ioctl(struct file *, unsigned int, unsigned int, unsigned long); 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_commit_write(struct file *file, struct page *page, unsigned offset, unsigned to); 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); # 1934 "include/linux/fs.h" extern int inode_change_ok(struct inode *, struct iattr *); extern int __attribute__((warn_unused_result)) inode_setattr(struct inode *, struct iattr *); extern void file_update_time(struct file *file); static inline __attribute__((always_inline)) ino_t parent_ino(struct dentry *dentry) { ino_t res; do { do { } while (0); (void)0; (void)(&dentry->d_lock); } while (0); res = dentry->d_parent->d_inode->i_ino; do { do { } while (0); (void)0; (void)(&dentry->d_lock); } 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 __attribute__((always_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), 0)) do { printk("BUG: failure at %s:%d/%s()!\n", "include/linux/fs.h", 1975, (__func__)); panic("BUG!"); } while (0); } while(0); __asm__ __volatile__("": : :"memory"); ar->size = n; } # 2015 "include/linux/fs.h" static inline __attribute__((always_inline)) void __attribute__((format(printf, 1, 2))) __simple_attr_check_format(const char *fmt, ...) { } int simple_attr_open(struct inode *inode, struct file *file, u64 (*get)(void *), void (*set)(void *, u64), const char *fmt); int simple_attr_close(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); static inline __attribute__((always_inline)) char *alloc_secdata(void) { return (char *)get_zeroed_page(((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); } static inline __attribute__((always_inline)) void free_secdata(void *secdata) { free_pages(((unsigned long)secdata),0); } # 3 "init/initramfs.c" 2 # 1 "include/linux/delay.h" 1 # 10 "include/linux/delay.h" extern unsigned long loops_per_jiffy; # 1 "include/asm/delay.h" 1 # 14 "include/asm/delay.h" static inline __attribute__((always_inline)) void __delay(unsigned long loops) { if ((1)) { unsigned long tmp; __asm__ __volatile__( "[--SP] = LC0;" "[--SP] = LT0;" "[--SP] = LB0;" "LSETUP (1f,1f) LC0 = %1;" "1: NOP;" "CLI %0;" "LB0 = [SP++];" "LT0 = [SP++];" "LC0 = [SP++];" "STI %0;" : "=d" (tmp) : "a" (loops) ); } else __asm__ __volatile__ ( "LSETUP(1f, 1f) LC0 = %0;" "1: NOP;" : : "a" (loops) : "LT0", "LB0", "LC0" ); } # 1 "include/linux/param.h" 1 # 1 "include/asm/param.h" 1 # 5 "include/linux/param.h" 2 # 48 "include/asm/delay.h" 2 # 56 "include/asm/delay.h" static inline __attribute__((always_inline)) void udelay(unsigned long usecs) { extern unsigned long loops_per_jiffy; __delay(usecs * loops_per_jiffy / (1000000 / 250)); } # 13 "include/linux/delay.h" 2 # 38 "include/linux/delay.h" void calibrate_delay(void); void msleep(unsigned int msecs); unsigned long msleep_interruptible(unsigned int msecs); static inline __attribute__((always_inline)) void ssleep(unsigned int seconds) { msleep(seconds * 1000); } # 7 "init/initramfs.c" 2 # 1 "include/linux/syscalls.h" 1 # 14 "include/linux/syscalls.h" struct epoll_event; struct iattr; struct inode; struct iocb; struct io_event; struct iovec; struct itimerspec; struct itimerval; struct kexec_segment; struct linux_dirent; struct linux_dirent64; struct list_head; struct msgbuf; struct msghdr; struct msqid_ds; struct new_utsname; struct nfsctl_arg; struct __old_kernel_stat; struct pollfd; struct rlimit; struct rusage; struct sched_param; struct semaphore; struct sembuf; struct shmid_ds; struct sockaddr; struct stat; struct stat64; struct statfs; struct statfs64; struct __sysctl_args; struct sysinfo; struct timespec; struct timeval; struct timex; struct timezone; struct tms; struct utimbuf; struct mq_attr; struct compat_stat; struct compat_timeval; struct robust_list_head; struct getcpu_cache; # 1 "include/linux/aio_abi.h" 1 # 32 "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 "include/linux/aio_abi.h" struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; # 78 "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; }; # 60 "include/linux/syscalls.h" 2 # 1 "include/linux/capability.h" 1 # 19 "include/linux/capability.h" struct task_struct; # 34 "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; # 60 "include/linux/capability.h" typedef __u32 kernel_cap_t; # 297 "include/linux/capability.h" extern kernel_cap_t cap_bset; # 325 "include/linux/capability.h" static inline __attribute__((always_inline)) kernel_cap_t cap_combine(kernel_cap_t a, kernel_cap_t b) { kernel_cap_t dest; (dest) = (a) | (b); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_intersect(kernel_cap_t a, kernel_cap_t b) { kernel_cap_t dest; (dest) = (a) & (b); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_drop(kernel_cap_t a, kernel_cap_t drop) { kernel_cap_t dest; (dest) = (a) & ~(drop); return dest; } static inline __attribute__((always_inline)) kernel_cap_t cap_invert(kernel_cap_t c) { kernel_cap_t dest; (dest) = ~(c); return dest; } # 362 "include/linux/capability.h" int capable(int cap); int __capable(struct task_struct *t, int cap); # 61 "include/linux/syscalls.h" 2 # 1 "include/linux/sem.h" 1 # 1 "include/linux/ipc.h" 1 # 9 "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 "include/asm/ipcbuf.h" 1 # 16 "include/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 "include/linux/ipc.h" 2 # 59 "include/linux/ipc.h" struct kern_ipc_perm { spinlock_t lock; int deleted; key_t key; uid_t uid; gid_t gid; uid_t cuid; gid_t cgid; mode_t mode; unsigned long seq; void *security; }; struct ipc_ids; struct ipc_namespace { struct kref kref; struct ipc_ids *ids[3]; int sem_ctls[4]; int used_sems; int msg_ctlmax; int msg_ctlmnb; int msg_ctlmni; size_t shm_ctlmax; size_t shm_ctlall; int shm_ctlmni; int shm_tot; }; extern struct ipc_namespace init_ipc_ns; extern struct ipc_namespace *copy_ipcs(unsigned long flags, struct ipc_namespace *ns); # 110 "include/linux/ipc.h" static inline __attribute__((always_inline)) struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) { return ns; } static inline __attribute__((always_inline)) void put_ipc_ns(struct ipc_namespace *ns) { } # 5 "include/linux/sem.h" 2 # 23 "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 "include/asm/sembuf.h" 1 # 14 "include/asm/sembuf.h" struct semid64_ds { struct ipc64_perm sem_perm; __kernel_time_t sem_otime; unsigned long __unused1; __kernel_time_t sem_ctime; unsigned long __unused2; unsigned long sem_nsems; unsigned long __unused3; unsigned long __unused4; }; # 36 "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; }; # 82 "include/linux/sem.h" struct task_struct; struct sem { int semval; int sempid; }; struct sem_array { struct kern_ipc_perm sem_perm; int sem_id; 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); # 63 "include/linux/syscalls.h" 2 # 1 "include/asm/siginfo.h" 1 # 1 "include/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 40 "include/asm-generic/siginfo.h" typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 - (3 * sizeof(int))) / sizeof(int))]; struct { 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 "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 __attribute__((always_inline)) void copy_siginfo(struct siginfo *to, struct siginfo *from) { if (from->si_code < 0) memcpy(to, from, sizeof(*to)); else memcpy(to, from, (3 * sizeof(int)) + sizeof(from->_sifields._sigchld)); } extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); # 6 "include/asm/siginfo.h" 2 # 65 "include/linux/syscalls.h" 2 # 1 "include/asm/signal.h" 1 struct siginfo; # 17 "include/asm/signal.h" typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 32)]; } sigset_t; # 107 "include/asm/signal.h" # 1 "include/asm-generic/signal.h" 1 # 17 "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; # 108 "include/asm/signal.h" 2 struct old_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; unsigned long sa_flags; void (*sa_restorer) (void); }; struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; void (*sa_restorer) (void); sigset_t sa_mask; }; struct k_sigaction { struct sigaction sa; }; # 145 "include/asm/signal.h" typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 1 "include/asm/sigcontext.h" 1 struct sigcontext { unsigned long sc_r0; unsigned long sc_r1; unsigned long sc_r2; unsigned long sc_r3; unsigned long sc_r4; unsigned long sc_r5; unsigned long sc_r6; unsigned long sc_r7; unsigned long sc_p0; unsigned long sc_p1; unsigned long sc_p2; unsigned long sc_p3; unsigned long sc_p4; unsigned long sc_p5; unsigned long sc_usp; unsigned long sc_a0w; unsigned long sc_a1w; unsigned long sc_a0x; unsigned long sc_a1x; unsigned long sc_astat; unsigned long sc_rets; unsigned long sc_pc; unsigned long sc_retx; unsigned long sc_fp; unsigned long sc_i0; unsigned long sc_i1; unsigned long sc_i2; unsigned long sc_i3; unsigned long sc_m0; unsigned long sc_m1; unsigned long sc_m2; unsigned long sc_m3; unsigned long sc_l0; unsigned long sc_l1; unsigned long sc_l2; unsigned long sc_l3; unsigned long sc_b0; unsigned long sc_b1; unsigned long sc_b2; unsigned long sc_b3; unsigned long sc_lc0; unsigned long sc_lc1; unsigned long sc_lt0; unsigned long sc_lt1; unsigned long sc_lb0; unsigned long sc_lb1; unsigned long sc_seqstat; }; # 154 "include/asm/signal.h" 2 # 66 "include/linux/syscalls.h" 2 # 1 "include/linux/key.h" 1 # 20 "include/linux/key.h" # 1 "include/linux/rbtree.h" 1 # 100 "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 "include/linux/rbtree.h" static inline __attribute__((always_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 __attribute__((always_inline)) void rb_set_color(struct rb_node *rb, int color) { rb->rb_parent_color = (rb->rb_parent_color & ~1) | color; } # 139 "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 __attribute__((always_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; } # 21 "include/linux/key.h" 2 typedef int32_t key_serial_t; typedef uint32_t key_perm_t; struct key; # 383 "include/linux/key.h" extern struct key root_user_keyring; extern struct key root_session_keyring; # 68 "include/linux/syscalls.h" 2 long sys_time(time_t *tloc); long sys_stime(time_t *tptr); long sys_gettimeofday(struct timeval *tv, struct timezone *tz); long sys_settimeofday(struct timeval *tv, struct timezone *tz); long sys_adjtimex(struct timex *txc_p); long sys_times(struct tms *tbuf); long sys_gettid(void); long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp); unsigned long sys_alarm(unsigned int seconds); long sys_getpid(void); long sys_getppid(void); long sys_getuid(void); long sys_geteuid(void); long sys_getgid(void); long sys_getegid(void); long sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); long sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); long sys_getpgid(pid_t pid); long sys_getpgrp(void); long sys_getsid(pid_t pid); long sys_getgroups(int gidsetsize, gid_t *grouplist); long sys_setregid(gid_t rgid, gid_t egid); long sys_setgid(gid_t gid); long sys_setreuid(uid_t ruid, uid_t euid); long sys_setuid(uid_t uid); long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); long sys_setfsuid(uid_t uid); long sys_setfsgid(gid_t gid); long sys_setpgid(pid_t pid, pid_t pgid); long sys_setsid(void); long sys_setgroups(int gidsetsize, gid_t *grouplist); long sys_acct(const char *name); long sys_capget(cap_user_header_t header, cap_user_data_t dataptr); long sys_capset(cap_user_header_t header, const cap_user_data_t data); long sys_personality(u_long personality); long sys_sigpending(old_sigset_t *set); long sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset); long sys_getitimer(int which, struct itimerval *value); long sys_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); long sys_timer_create(clockid_t which_clock, struct sigevent *timer_event_spec, timer_t * created_timer_id); long sys_timer_gettime(timer_t timer_id, struct itimerspec *setting); long sys_timer_getoverrun(timer_t timer_id); long sys_timer_settime(timer_t timer_id, int flags, const struct itimerspec *new_setting, struct itimerspec *old_setting); long sys_timer_delete(timer_t timer_id); long sys_clock_settime(clockid_t which_clock, const struct timespec *tp); long sys_clock_gettime(clockid_t which_clock, struct timespec *tp); long sys_clock_getres(clockid_t which_clock, struct timespec *tp); long sys_clock_nanosleep(clockid_t which_clock, int flags, const struct timespec *rqtp, struct timespec *rmtp); long sys_nice(int increment); long sys_sched_setscheduler(pid_t pid, int policy, struct sched_param *param); long sys_sched_setparam(pid_t pid, struct sched_param *param); long sys_sched_getscheduler(pid_t pid); long sys_sched_getparam(pid_t pid, struct sched_param *param); long sys_sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); long sys_sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); long sys_sched_yield(void); long sys_sched_get_priority_max(int policy); long sys_sched_get_priority_min(int policy); long sys_sched_rr_get_interval(pid_t pid, struct timespec *interval); long sys_setpriority(int which, int who, int niceval); long sys_getpriority(int which, int who); long sys_shutdown(int, int); long sys_reboot(int magic1, int magic2, unsigned int cmd, void *arg); long sys_restart_syscall(void); long sys_kexec_load(unsigned long entry, unsigned long nr_segments, struct kexec_segment *segments, unsigned long flags); long sys_exit(int error_code); void sys_exit_group(int error_code); long sys_wait4(pid_t pid, int *stat_addr, int options, struct rusage *ru); long sys_waitid(int which, pid_t pid, struct siginfo *infop, int options, struct rusage *ru); long sys_waitpid(pid_t pid, int *stat_addr, int options); long sys_set_tid_address(int *tidptr); long sys_futex(u32 *uaddr, int op, u32 val, struct timespec *utime, u32 *uaddr2, u32 val3); long sys_init_module(void *umod, unsigned long len, const char *uargs); long sys_delete_module(const char *name_user, unsigned int flags); long sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize); long sys_rt_sigpending(sigset_t *set, size_t sigsetsize); long sys_rt_sigtimedwait(const sigset_t *uthese, siginfo_t *uinfo, const struct timespec *uts, size_t sigsetsize); long sys_kill(int pid, int sig); long sys_tgkill(int tgid, int pid, int sig); long sys_tkill(int pid, int sig); long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t *uinfo); long sys_sgetmask(void); long sys_ssetmask(int newmask); unsigned long sys_signal(int sig, __sighandler_t handler); long sys_pause(void); long sys_sync(void); long sys_fsync(unsigned int fd); long sys_fdatasync(unsigned int fd); long sys_bdflush(int func, long data); long sys_mount(char *dev_name, char *dir_name, char *type, unsigned long flags, void *data); long sys_umount(char *name, int flags); long sys_oldumount(char *name); long sys_truncate(const char *path, unsigned long length); long sys_ftruncate(unsigned int fd, unsigned long length); long sys_stat(char *filename, struct __old_kernel_stat *statbuf); long sys_statfs(const char * path, struct statfs *buf); long sys_statfs64(const char *path, size_t sz, struct statfs64 *buf); long sys_fstatfs(unsigned int fd, struct statfs *buf); long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 *buf); long sys_lstat(char *filename, struct __old_kernel_stat *statbuf); long sys_fstat(unsigned int fd, struct __old_kernel_stat *statbuf); long sys_newstat(char *filename, struct stat *statbuf); long sys_newlstat(char *filename, struct stat *statbuf); long sys_newfstat(unsigned int fd, struct stat *statbuf); long sys_ustat(unsigned dev, struct ustat *ubuf); long sys_stat64(char *filename, struct stat64 *statbuf); long sys_fstat64(unsigned long fd, struct stat64 *statbuf); long sys_lstat64(char *filename, struct stat64 *statbuf); long sys_truncate64(const char *path, loff_t length); long sys_ftruncate64(unsigned int fd, loff_t length); long sys_setxattr(char *path, char *name, void *value, size_t size, int flags); long sys_lsetxattr(char *path, char *name, void *value, size_t size, int flags); long sys_fsetxattr(int fd, char *name, void *value, size_t size, int flags); ssize_t sys_getxattr(char *path, char *name, void *value, size_t size); ssize_t sys_lgetxattr(char *path, char *name, void *value, size_t size); ssize_t sys_fgetxattr(int fd, char *name, void *value, size_t size); ssize_t sys_listxattr(char *path, char *list, size_t size); ssize_t sys_llistxattr(char *path, char *list, size_t size); ssize_t sys_flistxattr(int fd, char *list, size_t size); long sys_removexattr(char *path, char *name); long sys_lremovexattr(char *path, char *name); long sys_fremovexattr(int fd, char *name); unsigned long sys_brk(unsigned long brk); long sys_mprotect(unsigned long start, size_t len, unsigned long prot); unsigned long sys_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr); long sys_remap_file_pages(unsigned long start, unsigned long size, unsigned long prot, unsigned long pgoff, unsigned long flags); long sys_msync(unsigned long start, size_t len, int flags); long sys_fadvise64(int fd, loff_t offset, size_t len, int advice); long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice); long sys_munmap(unsigned long addr, size_t len); long sys_mlock(unsigned long start, size_t len); long sys_munlock(unsigned long start, size_t len); long sys_mlockall(int flags); long sys_munlockall(void); long sys_madvise(unsigned long start, size_t len, int behavior); long sys_mincore(unsigned long start, size_t len, unsigned char * vec); long sys_pivot_root(const char *new_root, const char *put_old); long sys_chroot(const char *filename); long sys_mknod(const char *filename, int mode, unsigned dev); long sys_link(const char *oldname, const char *newname); long sys_symlink(const char *old, const char *new); long sys_unlink(const char *pathname); long sys_rename(const char *oldname, const char *newname); long sys_chmod(const char *filename, mode_t mode); long sys_fchmod(unsigned int fd, mode_t mode); long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg); long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg); long sys_dup(unsigned int fildes); long sys_dup2(unsigned int oldfd, unsigned int newfd); long sys_ioperm(unsigned long from, unsigned long num, int on); long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); long sys_flock(unsigned int fd, unsigned int cmd); long sys_io_setup(unsigned nr_reqs, aio_context_t *ctx); long sys_io_destroy(aio_context_t ctx); long sys_io_getevents(aio_context_t ctx_id, long min_nr, long nr, struct io_event *events, struct timespec *timeout); long sys_io_submit(aio_context_t, long, struct iocb * *); long sys_io_cancel(aio_context_t ctx_id, struct iocb *iocb, struct io_event *result); ssize_t sys_sendfile(int out_fd, int in_fd, off_t *offset, size_t count); ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t *offset, size_t count); long sys_readlink(const char *path, char *buf, int bufsiz); long sys_creat(const char *pathname, int mode); long sys_open(const char *filename, int flags, int mode); long sys_close(unsigned int fd); long sys_access(const char *filename, int mode); long sys_vhangup(void); long sys_chown(const char *filename, uid_t user, gid_t group); long sys_lchown(const char *filename, uid_t user, gid_t group); long sys_fchown(unsigned int fd, uid_t user, gid_t group); long sys_chown16(const char *filename, old_uid_t user, old_gid_t group); long sys_lchown16(const char *filename, old_uid_t user, old_gid_t group); long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group); long sys_setregid16(old_gid_t rgid, old_gid_t egid); long sys_setgid16(old_gid_t gid); long sys_setreuid16(old_uid_t ruid, old_uid_t euid); long sys_setuid16(old_uid_t uid); long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid); long sys_getresuid16(old_uid_t *ruid, old_uid_t *euid, old_uid_t *suid); long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid); long sys_getresgid16(old_gid_t *rgid, old_gid_t *egid, old_gid_t *sgid); long sys_setfsuid16(old_uid_t uid); long sys_setfsgid16(old_gid_t gid); long sys_getgroups16(int gidsetsize, old_gid_t *grouplist); long sys_setgroups16(int gidsetsize, old_gid_t *grouplist); long sys_getuid16(void); long sys_geteuid16(void); long sys_getgid16(void); long sys_getegid16(void); long sys_utime(char *filename, struct utimbuf *times); long sys_utimes(char *filename, struct timeval *utimes); off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin); long sys_llseek(unsigned int fd, unsigned long offset_high, unsigned long offset_low, loff_t *result, unsigned int origin); ssize_t sys_read(unsigned int fd, char *buf, size_t count); ssize_t sys_readahead(int fd, loff_t offset, size_t count); ssize_t sys_readv(unsigned long fd, const struct iovec *vec, unsigned long vlen); ssize_t sys_write(unsigned int fd, const char *buf, size_t count); ssize_t sys_writev(unsigned long fd, const struct iovec *vec, unsigned long vlen); ssize_t sys_pread64(unsigned int fd, char *buf, size_t count, loff_t pos); ssize_t sys_pwrite64(unsigned int fd, const char *buf, size_t count, loff_t pos); long sys_getcwd(char *buf, unsigned long size); long sys_mkdir(const char *pathname, int mode); long sys_chdir(const char *filename); long sys_fchdir(unsigned int fd); long sys_rmdir(const char *pathname); long sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); long sys_quotactl(unsigned int cmd, const char *special, qid_t id, void *addr); long sys_getdents(unsigned int fd, struct linux_dirent *dirent, unsigned int count); long sys_getdents64(unsigned int fd, struct linux_dirent64 *dirent, unsigned int count); long sys_setsockopt(int fd, int level, int optname, char *optval, int optlen); long sys_getsockopt(int fd, int level, int optname, char *optval, int *optlen); long sys_bind(int, struct sockaddr *, int); long sys_connect(int, struct sockaddr *, int); long sys_accept(int, struct sockaddr *, int *); long sys_getsockname(int, struct sockaddr *, int *); long sys_getpeername(int, struct sockaddr *, int *); long sys_send(int, void *, size_t, unsigned); long sys_sendto(int, void *, size_t, unsigned, struct sockaddr *, int); long sys_sendmsg(int fd, struct msghdr *msg, unsigned flags); long sys_recv(int, void *, size_t, unsigned); long sys_recvfrom(int, void *, size_t, unsigned, struct sockaddr *, int *); long sys_recvmsg(int fd, struct msghdr *msg, unsigned flags); long sys_socket(int, int, int); long sys_socketpair(int, int, int, int *); long sys_socketcall(int call, unsigned long *args); long sys_listen(int, int); long sys_poll(struct pollfd *ufds, unsigned int nfds, long timeout); long sys_select(int n, fd_set *inp, fd_set *outp, fd_set *exp, struct timeval *tvp); long sys_epoll_create(int size); long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); long sys_epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); long sys_epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask, size_t sigsetsize); long sys_gethostname(char *name, int len); long sys_sethostname(char *name, int len); long sys_setdomainname(char *name, int len); long sys_newuname(struct new_utsname *name); long sys_getrlimit(unsigned int resource, struct rlimit *rlim); long sys_old_getrlimit(unsigned int resource, struct rlimit *rlim); long sys_setrlimit(unsigned int resource, struct rlimit *rlim); long sys_getrusage(int who, struct rusage *ru); long sys_umask(int mask); long sys_msgget(key_t key, int msgflg); long sys_msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); long sys_msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg); long sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); long sys_semget(key_t key, int nsems, int semflg); long sys_semop(int semid, struct sembuf *sops, unsigned nsops); long sys_semctl(int semid, int semnum, int cmd, union semun arg); long sys_semtimedop(int semid, struct sembuf *sops, unsigned nsops, const struct timespec *timeout); long sys_shmat(int shmid, char *shmaddr, int shmflg); long sys_shmget(key_t key, size_t size, int flag); long sys_shmdt(char *shmaddr); long sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); long sys_mq_open(const char *name, int oflag, mode_t mode, struct mq_attr *attr); long sys_mq_unlink(const char *name); long sys_mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout); ssize_t sys_mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio, const struct timespec *abs_timeout); long sys_mq_notify(mqd_t mqdes, const struct sigevent *notification); long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); long sys_pciconfig_iobase(long which, unsigned long bus, unsigned long devfn); long sys_pciconfig_read(unsigned long bus, unsigned long dfn, unsigned long off, unsigned long len, void *buf); long sys_pciconfig_write(unsigned long bus, unsigned long dfn, unsigned long off, unsigned long len, void *buf); long sys_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); long sys_swapon(const char *specialfile, int swap_flags); long sys_swapoff(const char *specialfile); long sys_sysctl(struct __sysctl_args *args); long sys_sysinfo(struct sysinfo *info); long sys_sysfs(int option, unsigned long arg1, unsigned long arg2); long sys_nfsservctl(int cmd, struct nfsctl_arg *arg, void *res); long sys_syslog(int type, char *buf, int len); long sys_uselib(const char *library); long sys_ni_syscall(void); long sys_ptrace(long request, long pid, long addr, long data); long sys_add_key(const char *_type, const char *_description, const void *_payload, size_t plen, key_serial_t destringid); long sys_request_key(const char *_type, const char *_description, const char *_callout_info, key_serial_t destringid); long sys_keyctl(int cmd, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); long sys_ioprio_set(int which, int who, int ioprio); long sys_ioprio_get(int which, int who); long sys_set_mempolicy(int mode, unsigned long *nmask, unsigned long maxnode); long sys_migrate_pages(pid_t pid, unsigned long maxnode, const unsigned long *from, const unsigned long *to); long sys_move_pages(pid_t pid, unsigned long nr_pages, const void * *pages, const int *nodes, int *status, int flags); long compat_sys_move_pages(pid_t pid, unsigned long nr_page, __u32 *pages, const int *nodes, int *status, int flags); long sys_mbind(unsigned long start, unsigned long len, unsigned long mode, unsigned long *nmask, unsigned long maxnode, unsigned flags); long sys_get_mempolicy(int *policy, unsigned long *nmask, unsigned long maxnode, unsigned long addr, unsigned long flags); long sys_inotify_init(void); long sys_inotify_add_watch(int fd, const char *path, u32 mask); long sys_inotify_rm_watch(int fd, u32 wd); long sys_spu_run(int fd, __u32 *unpc, __u32 *ustatus); long sys_spu_create(const char *name, unsigned int flags, mode_t mode); long sys_mknodat(int dfd, const char * filename, int mode, unsigned dev); long sys_mkdirat(int dfd, const char * pathname, int mode); long sys_unlinkat(int dfd, const char * pathname, int flag); long sys_symlinkat(const char * oldname, int newdfd, const char * newname); long sys_linkat(int olddfd, const char *oldname, int newdfd, const char *newname, int flags); long sys_renameat(int olddfd, const char * oldname, int newdfd, const char * newname); long sys_futimesat(int dfd, char *filename, struct timeval *utimes); long sys_faccessat(int dfd, const char *filename, int mode); long sys_fchmodat(int dfd, const char * filename, mode_t mode); long sys_fchownat(int dfd, const char *filename, uid_t user, gid_t group, int flag); long sys_openat(int dfd, const char *filename, int flags, int mode); long sys_newfstatat(int dfd, char *filename, struct stat *statbuf, int flag); long sys_fstatat64(int dfd, char *filename, struct stat64 *statbuf, int flag); long sys_readlinkat(int dfd, const char *path, char *buf, int bufsiz); long sys_utimensat(int dfd, char *filename, struct timespec *utimes, int flags); long compat_sys_futimesat(unsigned int dfd, char *filename, struct compat_timeval *t); long compat_sys_newfstatat(unsigned int dfd, char * filename, struct compat_stat *statbuf, int flag); long compat_sys_openat(unsigned int dfd, const char *filename, int flags, int mode); long sys_unshare(unsigned long unshare_flags); long sys_splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags); long sys_vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags); long sys_tee(int fdin, int fdout, size_t len, unsigned int flags); long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, unsigned int flags); long sys_sync_file_range2(int fd, unsigned int flags, loff_t offset, loff_t nbytes); long sys_get_robust_list(int pid, struct robust_list_head * *head_ptr, size_t *len_ptr); long sys_set_robust_list(struct robust_list_head *head, size_t len); long sys_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *cache); long sys_signalfd(int ufd, sigset_t *user_mask, size_t sizemask); long sys_timerfd(int ufd, int clockid, int flags, const struct itimerspec *utmr); long sys_eventfd(unsigned int count); int kernel_execve(const char *filename, char *const argv[], char *const envp[]); # 9 "init/initramfs.c" 2 static __attribute__ ((__section__ (".init.data"))) char *message; static void __attribute__ ((__section__ (".init.text"))) error(char *x) { if (!message) message = x; } static void __attribute__ ((__section__ (".init.text"))) *malloc(size_t size) { return kmalloc(size, ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); } static void __attribute__ ((__section__ (".init.text"))) free(void *where) { kfree(where); } static __attribute__ ((__section__ (".init.data"))) struct hash { int ino, minor, major; mode_t mode; struct hash *next; char name[((((4096) + 1) & ~3) + 2)]; } *head[32]; static inline __attribute__((always_inline)) int hash(int major, int minor, int ino) { unsigned long tmp = ino + minor + (major << 3); tmp += tmp >> 5; return tmp & 31; } static char __attribute__ ((__section__ (".init.text"))) *find_link(int major, int minor, int ino, mode_t mode, char *name) { struct hash **p, *q; for (p = head + hash(major, minor, ino); *p; p = &(*p)->next) { if ((*p)->ino != ino) continue; if ((*p)->minor != minor) continue; if ((*p)->major != major) continue; if (((*p)->mode ^ mode) & 00170000) continue; return (*p)->name; } q = (struct hash *)malloc(sizeof(struct hash)); if (!q) panic("can't allocate link hash entry"); q->major = major; q->minor = minor; q->ino = ino; q->mode = mode; strcpy(q->name, name); q->next = ((void *)0); *p = q; return ((void *)0); } static void __attribute__ ((__section__ (".init.text"))) free_hash(void) { struct hash **p, *q; for (p = head; p < head + 32; p++) { while (*p) { q = *p; *p = q->next; free(q); } } } static __attribute__ ((__section__ (".init.data"))) unsigned long ino, major, minor, nlink; static __attribute__ ((__section__ (".init.data"))) mode_t mode; static __attribute__ ((__section__ (".init.data"))) unsigned long body_len, name_len; static __attribute__ ((__section__ (".init.data"))) uid_t uid; static __attribute__ ((__section__ (".init.data"))) gid_t gid; static __attribute__ ((__section__ (".init.data"))) unsigned rdev; static void __attribute__ ((__section__ (".init.text"))) parse_header(char *s) { unsigned long parsed[12]; char buf[9]; int i; buf[8] = '\0'; for (i = 0, s += 6; i < 12; i++, s += 8) { memcpy(buf, s, 8); parsed[i] = simple_strtoul(buf, ((void *)0), 16); } ino = parsed[0]; mode = parsed[1]; uid = parsed[2]; gid = parsed[3]; nlink = parsed[4]; body_len = parsed[6]; major = parsed[7]; minor = parsed[8]; rdev = new_encode_dev((((parsed[9]) << 20) | (parsed[10]))); name_len = parsed[11]; } static __attribute__ ((__section__ (".init.data"))) enum state { Start, Collect, GotHeader, SkipIt, GotName, CopyFile, GotSymlink, Reset } state, next_state; static __attribute__ ((__section__ (".init.data"))) char *victim; static __attribute__ ((__section__ (".init.data"))) unsigned count; static __attribute__ ((__section__ (".init.data"))) loff_t this_header, next_header; static __attribute__ ((__section__ (".init.data"))) int dry_run; static inline __attribute__((always_inline)) void eat(unsigned n) { victim += n; this_header += n; count -= n; } static __attribute__ ((__section__ (".init.data"))) char *collected; static __attribute__ ((__section__ (".init.data"))) int remains; static __attribute__ ((__section__ (".init.data"))) char *collect; static void __attribute__ ((__section__ (".init.text"))) read_into(char *buf, unsigned size, enum state next) { if (count >= size) { collected = victim; eat(size); state = next; } else { collect = collected = buf; remains = size; next_state = next; state = Collect; } } static __attribute__ ((__section__ (".init.data"))) char *header_buf, *symlink_buf, *name_buf; static int __attribute__ ((__section__ (".init.text"))) do_start(void) { read_into(header_buf, 110, GotHeader); return 0; } static int __attribute__ ((__section__ (".init.text"))) do_collect(void) { unsigned n = remains; if (count < n) n = count; memcpy(collect, victim, n); eat(n); collect += n; if ((remains -= n) != 0) return 1; state = next_state; return 0; } static int __attribute__ ((__section__ (".init.text"))) do_header(void) { if (memcmp(collected, "070707", 6)==0) { error("incorrect cpio method used: use -H newc option"); return 1; } if (memcmp(collected, "070701", 6)) { error("no cpio magic"); return 1; } parse_header(collected); next_header = this_header + ((((name_len) + 1) & ~3) + 2) + body_len; next_header = (next_header + 3) & ~3; if (dry_run) { read_into(name_buf, ((((name_len) + 1) & ~3) + 2), GotName); return 0; } state = SkipIt; if (name_len <= 0 || name_len > 4096) return 0; if ((((mode) & 00170000) == 0120000)) { if (body_len > 4096) return 0; collect = collected = symlink_buf; remains = ((((name_len) + 1) & ~3) + 2) + body_len; next_state = GotSymlink; state = Collect; return 0; } if ((((mode) & 00170000) == 0100000) || !body_len) read_into(name_buf, ((((name_len) + 1) & ~3) + 2), GotName); return 0; } static int __attribute__ ((__section__ (".init.text"))) do_skip(void) { if (this_header + count < next_header) { eat(count); return 1; } else { eat(next_header - this_header); state = next_state; return 0; } } static int __attribute__ ((__section__ (".init.text"))) do_reset(void) { while(count && *victim == '\0') eat(1); if (count && (this_header & 3)) error("broken padding"); return 1; } static int __attribute__ ((__section__ (".init.text"))) maybe_link(void) { if (nlink >= 2) { char *old = find_link(major, minor, ino, mode, collected); if (old) return (sys_link(old, collected) < 0) ? -1 : 1; } return 0; } static void __attribute__ ((__section__ (".init.text"))) clean_path(char *path, mode_t mode) { struct stat st; if (!sys_newlstat(path, &st) && (st.st_mode^mode) & 00170000) { if ((((st.st_mode) & 00170000) == 0040000)) sys_rmdir(path); else sys_unlink(path); } } static __attribute__ ((__section__ (".init.data"))) int wfd; static int __attribute__ ((__section__ (".init.text"))) do_name(void) { state = SkipIt; next_state = Reset; if (strcmp(collected, "TRAILER!!!") == 0) { free_hash(); return 0; } if (dry_run) return 0; clean_path(collected, mode); if ((((mode) & 00170000) == 0100000)) { int ml = maybe_link(); if (ml >= 0) { int openflags = 00000001|00000100; if (ml != 1) openflags |= 00001000; wfd = sys_open(collected, openflags, mode); if (wfd >= 0) { sys_fchown(wfd, uid, gid); sys_fchmod(wfd, mode); state = CopyFile; } } } else if ((((mode) & 00170000) == 0040000)) { sys_mkdir(collected, mode); sys_chown(collected, uid, gid); sys_chmod(collected, mode); } else if ((((mode) & 00170000) == 0060000) || (((mode) & 00170000) == 0020000) || (((mode) & 00170000) == 0010000) || (((mode) & 00170000) == 0140000)) { if (maybe_link() == 0) { sys_mknod(collected, mode, rdev); sys_chown(collected, uid, gid); sys_chmod(collected, mode); } } return 0; } static int __attribute__ ((__section__ (".init.text"))) do_copy(void) { if (count >= body_len) { sys_write(wfd, victim, body_len); sys_close(wfd); eat(body_len); state = SkipIt; return 0; } else { sys_write(wfd, victim, count); body_len -= count; eat(count); return 1; } } static int __attribute__ ((__section__ (".init.text"))) do_symlink(void) { collected[((((name_len) + 1) & ~3) + 2) + body_len] = '\0'; clean_path(collected, 0); sys_symlink(collected + ((((name_len) + 1) & ~3) + 2), collected); sys_lchown(collected, uid, gid); state = SkipIt; next_state = Reset; return 0; } static __attribute__ ((__section__ (".init.data"))) int (*actions[])(void) = { [Start] = do_start, [Collect] = do_collect, [GotHeader] = do_header, [SkipIt] = do_skip, [GotName] = do_name, [CopyFile] = do_copy, [GotSymlink] = do_symlink, [Reset] = do_reset, }; static int __attribute__ ((__section__ (".init.text"))) write_buffer(char *buf, unsigned len) { count = len; victim = buf; while (!actions[state]()) ; return len - count; } static void __attribute__ ((__section__ (".init.text"))) flush_buffer(char *buf, unsigned len) { int written; if (message) return; while ((written = write_buffer(buf, len)) < len && !message) { char c = buf[written]; if (c == '0') { buf += written; len -= written; state = Start; } else if (c == 0) { buf += written; len -= written; state = Reset; } else error("junk in compressed archive"); } } # 380 "init/initramfs.c" typedef unsigned char uch; typedef unsigned short ush; typedef unsigned long ulg; static uch *inbuf; static uch *window; static unsigned insize; static unsigned inptr; static unsigned outcnt; static long bytes_out; # 408 "init/initramfs.c" static void __attribute__ ((__section__ (".init.text"))) flush_window(void); static void __attribute__ ((__section__ (".init.text"))) error(char *m); static void __attribute__ ((__section__ (".init.text"))) gzip_mark(void **); static void __attribute__ ((__section__ (".init.text"))) gzip_release(void **); # 1 "init/../lib/inflate.c" 1 # 135 "init/../lib/inflate.c" struct huft { uch e; uch b; union { ush n; struct huft *t; } v; }; static int __attribute__ ((__section__ (".init.text"))) huft_build (unsigned *, unsigned, unsigned, const ush *, const ush *, struct huft **, int *); static int __attribute__ ((__section__ (".init.text"))) huft_free (struct huft *); static int __attribute__ ((__section__ (".init.text"))) inflate_codes (struct huft *, struct huft *, int, int); static int __attribute__ ((__section__ (".init.text"))) inflate_stored (void); static int __attribute__ ((__section__ (".init.text"))) inflate_fixed (void); static int __attribute__ ((__section__ (".init.text"))) inflate_dynamic (void); static int __attribute__ ((__section__ (".init.text"))) inflate_block (int *); static int __attribute__ ((__section__ (".init.text"))) inflate (void); # 170 "init/../lib/inflate.c" static const unsigned border[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; static const ush cplens[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const ush cplext[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; static const ush cpdist[] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577}; static const ush cpdext[] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; # 220 "init/../lib/inflate.c" static ulg bb; static unsigned bk; static const ush mask_bits[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff }; # 267 "init/../lib/inflate.c" static const int lbits = 9; static const int dbits = 6; static unsigned hufts; static int __attribute__ ((__section__ (".init.text"))) huft_build( unsigned *b, unsigned n, unsigned s, const ush *d, const ush *e, struct huft **t, int *m ) { unsigned a; unsigned f; int g; int h; register unsigned i; register unsigned j; register int k; int l; register unsigned *p; register struct huft *q; struct huft r; register int w; unsigned *xp; int y; unsigned z; struct { unsigned c[16 +1]; struct huft *u[16]; unsigned v[288]; unsigned x[16 +1]; } *stk; unsigned *c, *v, *x; struct huft **u; int ret; ; stk = malloc(sizeof(*stk)); if (stk == ((void *)0)) return 3; c = stk->c; v = stk->v; x = stk->x; u = stk->u; memset ((stk->c), 0, (sizeof(stk->c))); p = b; i = n; do { ; c[*p]++; p++; } while (--i); if (c[0] == n) { *t = (struct huft *)((void *)0); *m = 0; ret = 2; goto out; } ; l = *m; for (j = 1; j <= 16; j++) if (c[j]) break; k = j; if ((unsigned)l < j) l = j; for (i = 16; i; i--) if (c[i]) break; g = i; if ((unsigned)l > i) l = i; *m = l; ; for (y = 1 << j; j < i; j++, y <<= 1) if ((y -= c[j]) < 0) { ret = 2; goto out; } if ((y -= c[i]) < 0) { ret = 2; goto out; } c[i] += y; ; x[1] = j = 0; p = c + 1; xp = x + 2; while (--i) { *xp++ = (j += *p++); } ; p = b; i = 0; do { if ((j = *p++) != 0) v[x[j]++] = i; } while (++i < n); n = x[g]; ; x[0] = i = 0; p = v; h = -1; w = -l; u[0] = (struct huft *)((void *)0); q = (struct huft *)((void *)0); z = 0; ; for (; k <= g; k++) { ; a = c[k]; while (a--) { ; while (k > w + l) { ; h++; w += l; z = (z = g - w) > (unsigned)l ? l : z; if ((f = 1 << (j = k - w)) > a + 1) { ; f -= a + 1; xp = c + k; if (j < z) while (++j < z) { if ((f <<= 1) <= *++xp) break; f -= *xp; } } ; z = 1 << j; if ((q = (struct huft *)malloc((z + 1)*sizeof(struct huft))) == (struct huft *)((void *)0)) { if (h) huft_free(u[0]); ret = 3; goto out; } ; hufts += z + 1; *t = q + 1; *(t = &(q->v.t)) = (struct huft *)((void *)0); u[h] = ++q; ; if (h) { x[h] = i; r.b = (uch)l; r.e = (uch)(16 + j); r.v.t = q; j = i >> (w - l); u[h-1][j] = r; } ; } ; r.b = (uch)(k - w); if (p >= v + n) r.e = 99; else if (*p < s) { r.e = (uch)(*p < 256 ? 16 : 15); r.v.n = (ush)(*p); p++; } else { r.e = (uch)e[*p - s]; r.v.n = d[*p++ - s]; } ; f = 1 << (k - w); for (j = i >> w; j < z; j += f) q[j] = r; for (j = 1 << (k - 1); i & j; j >>= 1) i ^= j; i ^= j; while ((i & ((1 << w) - 1)) != x[h]) { h--; w -= l; } ; } ; } ; ret = y != 0 && g != 1; out: free(stk); return ret; } static int __attribute__ ((__section__ (".init.text"))) huft_free( struct huft *t ) { register struct huft *p, *q; p = t; while (p != (struct huft *)((void *)0)) { q = (--p)->v.t; free((char*)p); p = q; } return 0; } static int __attribute__ ((__section__ (".init.text"))) inflate_codes( struct huft *tl, struct huft *td, int bl, int bd ) { register unsigned e; unsigned n, d; unsigned w; struct huft *t; unsigned ml, md; register ulg b; register unsigned k; b = bb; k = bk; w = outcnt; ml = mask_bits[bl]; md = mask_bits[bd]; for (;;) { {while(k<((unsigned)bl)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<e) > 16) do { if (e == 99) return 1; {b>>=(t->b);k-=(t->b);} e -= 16; {while(k<(e)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<v.t + ((unsigned)b & mask_bits[e]))->e) > 16); {b>>=(t->b);k-=(t->b);} if (e == 16) { window[w++] = (uch)t->v.n; ; if (w == 0x8000) { (outcnt=(w),flush_window()); w = 0; } } else { if (e == 15) break; {while(k<(e)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<v.n + ((unsigned)b & mask_bits[e]); {b>>=(e);k-=(e);}; {while(k<((unsigned)bd)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<e) > 16) do { if (e == 99) return 1; {b>>=(t->b);k-=(t->b);} e -= 16; {while(k<(e)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<v.t + ((unsigned)b & mask_bits[e]))->e) > 16); {b>>=(t->b);k-=(t->b);} {while(k<(e)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<v.n - ((unsigned)b & mask_bits[e]); {b>>=(e);k-=(e);} ; do { n -= (e = (e = 0x8000 - ((d &= 0x8000 -1) > w ? d : w)) > n ? n : e); if (w - d >= e) { memcpy(window + w, window + d, e); w += e; d += e; } else do { window[w++] = window[d++]; ; } while (--e); if (w == 0x8000) { (outcnt=(w),flush_window()); w = 0; } } while (n); } } outcnt = w; bb = b; bk = k; return 0; underrun: return 4; } static int __attribute__ ((__section__ (".init.text"))) inflate_stored(void) { unsigned n; unsigned w; register ulg b; register unsigned k; ; b = bb; k = bk; w = outcnt; n = k & 7; {b>>=(n);k-=(n);}; {while(k<(16)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(16);k-=(16);} {while(k<(16)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(16);k-=(16);} while (n--) { {while(k<(8)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(8);k-=(8);} } outcnt = w; bb = b; bk = k; ; return 0; underrun: return 4; } static int __attribute__((noinline)) __attribute__ ((__section__ (".init.text"))) inflate_fixed(void) { int i; struct huft *tl; struct huft *td; int bl; int bd; unsigned *l; ; l = malloc(sizeof(*l) * 288); if (l == ((void *)0)) return 3; for (i = 0; i < 144; i++) l[i] = 8; for (; i < 256; i++) l[i] = 9; for (; i < 280; i++) l[i] = 7; for (; i < 288; i++) l[i] = 8; bl = 7; if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0) { free(l); return i; } for (i = 0; i < 30; i++) l[i] = 5; bd = 5; if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1) { huft_free(tl); free(l); ; return i; } if (inflate_codes(tl, td, bl, bd)) { free(l); return 1; } free(l); huft_free(tl); huft_free(td); return 0; } static int __attribute__((noinline)) __attribute__ ((__section__ (".init.text"))) inflate_dynamic(void) { int i; unsigned j; unsigned l; unsigned m; unsigned n; struct huft *tl; struct huft *td; int bl; int bd; unsigned nb; unsigned nl; unsigned nd; unsigned *ll; register ulg b; register unsigned k; int ret; ; ll = malloc(sizeof(*ll) * (286+30)); b = bb; k = bk; {while(k<(5)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(5);k-=(5);} {while(k<(5)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(5);k-=(5);} {while(k<(4)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(4);k-=(4);} if (nl > 286 || nd > 30) { ret = 1; goto out; } ; for (j = 0; j < nb; j++) { {while(k<(3)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(3);k-=(3);} } for (; j < 19; j++) ll[border[j]] = 0; ; bl = 7; if ((i = huft_build(ll, 19, 19, ((void *)0), ((void *)0), &tl, &bl)) != 0) { if (i == 1) huft_free(tl); ret = i; goto out; } ; n = nl + nd; m = mask_bits[bl]; i = l = 0; while ((unsigned)i < n) { {while(k<((unsigned)bl)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<b; {b>>=(j);k-=(j);} j = td->v.n; if (j < 16) ll[i++] = l = j; else if (j == 16) { {while(k<(2)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(2);k-=(2);} if ((unsigned)i + j > n) { ret = 1; goto out; } while (j--) ll[i++] = l; } else if (j == 17) { {while(k<(3)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(3);k-=(3);} if ((unsigned)i + j > n) { ret = 1; goto out; } while (j--) ll[i++] = 0; l = 0; } else { {while(k<(7)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(7);k-=(7);} if ((unsigned)i + j > n) { ret = 1; goto out; } while (j--) ll[i++] = 0; l = 0; } } ; huft_free(tl); ; bb = b; bk = k; ; bl = lbits; if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) { ; if (i == 1) { error("incomplete literal tree"); huft_free(tl); } ret = i; goto out; } ; bd = dbits; if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) { ; if (i == 1) { error("incomplete distance tree"); huft_free(td); } huft_free(tl); ret = i; goto out; } ; if (inflate_codes(tl, td, bl, bd)) { ret = 1; goto out; } ; huft_free(tl); huft_free(td); ; ret = 0; out: free(ll); return ret; underrun: ret = 4; goto out; } static int __attribute__ ((__section__ (".init.text"))) inflate_block( int *e ) { unsigned t; register ulg b; register unsigned k; ; b = bb; k = bk; {while(k<(1)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(1);k-=(1);} {while(k<(2)){b|=((ulg)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<>=(2);k-=(2);} bb = b; bk = k; if (t == 2) return inflate_dynamic(); if (t == 0) return inflate_stored(); if (t == 1) return inflate_fixed(); ; return 2; underrun: return 4; } static int __attribute__ ((__section__ (".init.text"))) inflate(void) { int e; int r; unsigned h; void *ptr; outcnt = 0; bk = 0; bb = 0; h = 0; do { hufts = 0; gzip_mark(&ptr); if ((r = inflate_block(&e)) != 0) { gzip_release(&ptr); return r; } gzip_release(&ptr); if (hufts > h) h = hufts; } while (!e); while (bk >= 8) { bk -= 8; inptr--; } (outcnt=(outcnt),flush_window()); return 0; } static ulg crc_32_tab[256]; static ulg crc; static void __attribute__ ((__section__ (".init.text"))) makecrc(void) { unsigned long c; unsigned long e; int i; int k; static const int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; e = 0; for (i = 0; i < sizeof(p)/sizeof(int); i++) e |= 1L << (31 - p[i]); crc_32_tab[0] = 0; for (i = 1; i < 256; i++) { c = 0; for (k = i | 256; k != 1; k >>= 1) { c = c & 1 ? (c >> 1) ^ e : c >> 1; if (k & 1) c ^= e; } crc_32_tab[i] = c; } crc = (ulg)0xffffffffUL; } # 1149 "init/../lib/inflate.c" static int __attribute__ ((__section__ (".init.text"))) gunzip(void) { uch flags; unsigned char magic[2]; char method; ulg orig_crc = 0; ulg orig_len = 0; int res; magic[0] = ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); magic[1] = ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); method = ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); if (magic[0] != 037 || ((magic[1] != 0213) && (magic[1] != 0236))) { error("bad gzip magic numbers"); return -1; } if (method != 8) { error("internal error, invalid method"); return -1; } flags = (uch)(inptr < insize ? inbuf[inptr++] : -1); if ((flags & 0x20) != 0) { error("Input is encrypted"); return -1; } if ((flags & 0x02) != 0) { error("Multi part input"); return -1; } if ((flags & 0xC0) != 0) { error("Input has invalid flags"); return -1; } ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); (void)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); (void)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); if ((flags & 0x04) != 0) { unsigned len = (unsigned)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); len |= ((unsigned)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }))<<8; while (len--) (void)({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); } if ((flags & 0x08) != 0) { while (({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) != 0) ; } if ((flags & 0x10) != 0) { while (({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) != 0) ; } if ((res = inflate())) { switch (res) { case 0: break; case 1: error("invalid compressed format (err=1)"); break; case 2: error("invalid compressed format (err=2)"); break; case 3: error("out of memory"); break; case 4: error("out of input data"); break; default: error("invalid compressed format (other)"); } return -1; } orig_crc = (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); orig_crc |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 8; orig_crc |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 16; orig_crc |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 24; orig_len = (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }); orig_len |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 8; orig_len |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 16; orig_len |= (ulg) ({ int v = (inptr < insize ? inbuf[inptr++] : -1); if (v < 0) goto underrun; (uch)v; }) << 24; if (orig_crc != (crc ^ 0xffffffffUL)) { error("crc error"); return -1; } if (orig_len != bytes_out) { error("length error"); return -1; } return 0; underrun: error("out of input data"); return -1; } # 414 "init/initramfs.c" 2 static void __attribute__ ((__section__ (".init.text"))) gzip_mark(void **ptr) { } static void __attribute__ ((__section__ (".init.text"))) gzip_release(void **ptr) { } static void __attribute__ ((__section__ (".init.text"))) flush_window(void) { ulg c = crc; unsigned n; uch *in, ch; flush_buffer(window, outcnt); in = window; for (n = 0; n < outcnt; n++) { ch = *in++; c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8); } crc = c; bytes_out += (ulg)outcnt; outcnt = 0; } static char * __attribute__ ((__section__ (".init.text"))) unpack_to_rootfs(char *buf, unsigned len, int check_only) { int written; dry_run = check_only; header_buf = malloc(110); symlink_buf = malloc(4096 + ((((4096) + 1) & ~3) + 2) + 1); name_buf = malloc(((((4096) + 1) & ~3) + 2)); window = malloc(0x8000); if (!window || !header_buf || !symlink_buf || !name_buf) panic("can't allocate buffers"); state = Start; this_header = 0; message = ((void *)0); while (!message && len) { loff_t saved_offset = this_header; if (*buf == '0' && !(this_header & 3)) { state = Start; written = write_buffer(buf, len); buf += written; len -= written; continue; } if (!*buf) { buf++; len--; this_header++; continue; } this_header = 0; insize = len; inbuf = buf; inptr = 0; outcnt = 0; bytes_out = 0; crc = (ulg)0xffffffffL; makecrc(); gunzip(); if (state != Reset) error("junk in gzipped archive"); this_header = saved_offset + inptr; buf += inptr; len -= inptr; } free(window); free(name_buf); free(symlink_buf); free(header_buf); return message; } static int __attribute__ ((__section__ (".init.data"))) do_retain_initrd; static int __attribute__ ((__section__ (".init.text"))) retain_initrd_param(char *str) { if (*str) return 0; do_retain_initrd = 1; return 1; } static char __setup_str_retain_initrd_param[] __attribute__ ((__section__ (".init.data"))) = "retain_initrd"; static struct obs_kernel_param __setup_retain_initrd_param __attribute__((__used__)) __attribute__((__section__(".init.setup"))) __attribute__((aligned((sizeof(long))))) = { __setup_str_retain_initrd_param, retain_initrd_param, 0 }; extern char __initramfs_start[], __initramfs_end[]; # 1 "include/linux/initrd.h" 1 extern int rd_doload; extern int rd_prompt; extern int rd_image_start; extern int initrd_below_start_ok; extern unsigned long initrd_start, initrd_end; extern void free_initrd_mem(unsigned long, unsigned long); extern unsigned int real_root_dev; # 508 "init/initramfs.c" 2 # 1 "include/linux/kexec.h" 1 # 159 "include/linux/kexec.h" struct pt_regs; struct task_struct; static inline __attribute__((always_inline)) void crash_kexec(struct pt_regs *regs) { } static inline __attribute__((always_inline)) int kexec_should_crash(struct task_struct *p) { return 0; } # 509 "init/initramfs.c" 2 static void __attribute__ ((__section__ (".init.text"))) free_initrd(void) { if (do_retain_initrd) goto skip; # 536 "init/initramfs.c" free_initrd_mem(initrd_start, initrd_end); skip: initrd_start = 0; initrd_end = 0; } static int __attribute__ ((__section__ (".init.text"))) populate_rootfs(void) { char *err = unpack_to_rootfs(__initramfs_start, __initramfs_end - __initramfs_start, 0); if (err) panic(err); if (initrd_start) { int fd; printk("<6>" "checking if image is initramfs..."); err = unpack_to_rootfs((char *)initrd_start, initrd_end - initrd_start, 1); if (!err) { printk(" it is\n"); unpack_to_rootfs((char *)initrd_start, initrd_end - initrd_start, 0); free_initrd(); return 0; } printk("it isn't (%s); looks like an initrd\n", err); fd = sys_open("/initrd.image", 00000001|00000100, 0700); if (fd >= 0) { sys_write(fd, (char *)initrd_start, initrd_end - initrd_start); sys_close(fd); free_initrd(); } # 581 "init/initramfs.c" } return 0; } static initcall_t __initcall_populate_rootfsrootfs __attribute__((__used__)) __attribute__((__section__(".initcall" "rootfs" ".init"))) = populate_rootfs;