This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c/5419: ICE with gcc3.1/ia64 on sched.c



>Number:         5419
>Category:       c
>Synopsis:       ICE when compiling Linux kernel's kernel/sched.c on ia64
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jan 17 16:26:02 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     David Mosberger
>Release:        3.1 20020117 (experimental)
>Organization:
HP Labs
>Environment:
System: Linux wailua.hpl.hp.com 2.4.17 #2 SMP Thu Jan 17 13:53:26 PST 2002 ia64 unknown
Architecture: ia64

	ia64, Linux, ia64
host: ia64-hp-linux-gnu
build: ia64-hp-linux-gnu
target: ia64-hp-linux-gnu
configured with: ../gcc/configure --prefix=/opt/gcc3.1 --host=ia64-hp-linux : (reconfigured) 
>Description:
	The compiler gets an ICE when compiling the attached file with
	option -frename-registers.
>How-To-Repeat:
	$ cc1 -frename-registers sched.i
	kernel/sched.c:156: Internal compiler error in verify_local_live_at_start, at flow.c:578
>Fix:
	unknown

<-- sched.i --><-- sched.i --><-- sched.i --><-- sched.i --><-- sched.i -->
# 1 "kernel/sched.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "kernel/sched.c"
# 15 "kernel/sched.c"
# 1 "/data1/src/linux/include/linux/mm.h" 1



# 1 "/data1/src/linux/include/linux/sched.h" 1



# 1 "/data1/src/linux/include/asm/param.h" 1
# 11 "/data1/src/linux/include/asm/param.h"
# 1 "/data1/src/linux/include/linux/config.h" 1



# 1 "/data1/src/linux/include/linux/autoconf.h" 1
# 5 "/data1/src/linux/include/linux/config.h" 2
# 12 "/data1/src/linux/include/asm/param.h" 2
# 5 "/data1/src/linux/include/linux/sched.h" 2

extern unsigned long event;


# 1 "/data1/src/linux/include/linux/binfmts.h" 1



# 1 "/data1/src/linux/include/linux/ptrace.h" 1
# 24 "/data1/src/linux/include/linux/ptrace.h"
# 1 "/data1/src/linux/include/asm/ptrace.h" 1
# 53 "/data1/src/linux/include/asm/ptrace.h"
# 1 "/data1/src/linux/include/asm/fpu.h" 1
# 9 "/data1/src/linux/include/asm/fpu.h"
# 1 "/data1/src/linux/include/asm/types.h" 1
# 25 "/data1/src/linux/include/asm/types.h"
typedef unsigned int 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 __s64;
typedef unsigned long __u64;






typedef __s8 s8;
typedef __u8 u8;

typedef __s16 s16;
typedef __u16 u16;

typedef __s32 s32;
typedef __u32 u32;

typedef __s64 s64;
typedef __u64 u64;





typedef u64 dma_addr_t;
# 10 "/data1/src/linux/include/asm/fpu.h" 2
# 57 "/data1/src/linux/include/asm/fpu.h"
struct ia64_fpreg {
        union {
                unsigned long bits[2];
        } u;
} __attribute__ ((aligned (16)));
# 54 "/data1/src/linux/include/asm/ptrace.h" 2
# 1 "/data1/src/linux/include/asm/offsets.h" 1
# 55 "/data1/src/linux/include/asm/ptrace.h" 2
# 77 "/data1/src/linux/include/asm/ptrace.h"
# 1 "/data1/src/linux/include/asm/current.h" 1
# 11 "/data1/src/linux/include/asm/current.h"
register struct task_struct *current asm ("r13");
# 78 "/data1/src/linux/include/asm/ptrace.h" 2
# 1 "/data1/src/linux/include/asm/page.h" 1
# 40 "/data1/src/linux/include/asm/page.h"
extern void clear_page (void *page);
extern void copy_page (void *to, void *from);
# 70 "/data1/src/linux/include/asm/page.h"
typedef union ia64_va {
        struct {
                unsigned long off : 61;
                unsigned long reg : 3;
        } f;
        unsigned long l;
        void *p;
} ia64_va;
# 97 "/data1/src/linux/include/asm/page.h"
static __inline__ int
get_order (unsigned long size)
{
        double d = size - 1;
        long order;

        __asm__ ("getf.exp %0=%1" : "=r"(order) : "f"(d));
        order = order - 14 - 0xffff + 1;
        if (order < 0)
                order = 0;
        return order;
}
# 117 "/data1/src/linux/include/asm/page.h"
  typedef struct { unsigned long pte; } pte_t;
  typedef struct { unsigned long pmd; } pmd_t;
  typedef struct { unsigned long pgd; } pgd_t;
  typedef struct { unsigned long pgprot; } pgprot_t;
# 79 "/data1/src/linux/include/asm/ptrace.h" 2
# 92 "/data1/src/linux/include/asm/ptrace.h"
struct pt_regs {


        unsigned long cr_ipsr;
        unsigned long cr_iip;
        unsigned long cr_ifs;

        unsigned long ar_unat;
        unsigned long ar_pfs;
        unsigned long ar_rsc;

        unsigned long ar_rnat;
        unsigned long ar_bspstore;

        unsigned long pr;
        unsigned long b6;
        unsigned long loadrs;

        unsigned long r1;
        unsigned long r2;
        unsigned long r3;
        unsigned long r12;
        unsigned long r13;
        unsigned long r14;
        unsigned long r15;

        unsigned long r8;
        unsigned long r9;
        unsigned long r10;
        unsigned long r11;



        unsigned long r16;
        unsigned long r17;
        unsigned long r18;
        unsigned long r19;
        unsigned long r20;
        unsigned long r21;
        unsigned long r22;
        unsigned long r23;
        unsigned long r24;
        unsigned long r25;
        unsigned long r26;
        unsigned long r27;
        unsigned long r28;
        unsigned long r29;
        unsigned long r30;
        unsigned long r31;

        unsigned long ar_ccv;
        unsigned long ar_fpsr;

        unsigned long b0;
        unsigned long b7;




        struct ia64_fpreg f6;
        struct ia64_fpreg f7;
        struct ia64_fpreg f8;
        struct ia64_fpreg f9;
};






struct switch_stack {
        unsigned long caller_unat;
        unsigned long ar_fpsr;

        struct ia64_fpreg f2;
        struct ia64_fpreg f3;
        struct ia64_fpreg f4;
        struct ia64_fpreg f5;

        struct ia64_fpreg f10;
        struct ia64_fpreg f11;
        struct ia64_fpreg f12;
        struct ia64_fpreg f13;
        struct ia64_fpreg f14;
        struct ia64_fpreg f15;
        struct ia64_fpreg f16;
        struct ia64_fpreg f17;
        struct ia64_fpreg f18;
        struct ia64_fpreg f19;
        struct ia64_fpreg f20;
        struct ia64_fpreg f21;
        struct ia64_fpreg f22;
        struct ia64_fpreg f23;
        struct ia64_fpreg f24;
        struct ia64_fpreg f25;
        struct ia64_fpreg f26;
        struct ia64_fpreg f27;
        struct ia64_fpreg f28;
        struct ia64_fpreg f29;
        struct ia64_fpreg f30;
        struct ia64_fpreg f31;

        unsigned long r4;
        unsigned long r5;
        unsigned long r6;
        unsigned long r7;

        unsigned long b0;
        unsigned long b1;
        unsigned long b2;
        unsigned long b3;
        unsigned long b4;
        unsigned long b5;

        unsigned long ar_pfs;
        unsigned long ar_lc;
        unsigned long ar_unat;
        unsigned long ar_rnat;
        unsigned long ar_bspstore;
        unsigned long pr;
};







  struct task_struct;

  extern void show_regs (struct pt_regs *);
  extern unsigned long ia64_get_user_rbs_end (struct task_struct *, struct pt_regs *,
                                              unsigned long *);
  extern long ia64_peek (struct task_struct *, struct switch_stack *, unsigned long,
                         unsigned long, long *);
  extern long ia64_poke (struct task_struct *, struct switch_stack *, unsigned long,
                         unsigned long, long);
  extern void ia64_flush_fph (struct task_struct *);
  extern void ia64_sync_fph (struct task_struct *);
  extern long ia64_sync_user_rbs (struct task_struct *, struct switch_stack *,
                                  unsigned long, unsigned long);


  extern unsigned long ia64_get_scratch_nat_bits (struct pt_regs *pt, unsigned long scratch_unat);

  extern unsigned long ia64_put_scratch_nat_bits (struct pt_regs *pt, unsigned long nat);

  extern void ia64_increment_ip (struct pt_regs *pt);
  extern void ia64_decrement_ip (struct pt_regs *pt);

static inline void
force_successful_syscall_return (void)
{
        (((struct pt_regs *) ((char *) (current) + ((1 << 1)*(1UL << 14)))) - 1)->r8 = 0;
}
# 25 "/data1/src/linux/include/linux/ptrace.h" 2
# 5 "/data1/src/linux/include/linux/binfmts.h" 2
# 1 "/data1/src/linux/include/linux/capability.h" 1
# 16 "/data1/src/linux/include/linux/capability.h"
# 1 "/data1/src/linux/include/linux/types.h" 1







# 1 "/data1/src/linux/include/linux/posix_types.h" 1



# 1 "/data1/src/linux/include/linux/stddef.h" 1
# 5 "/data1/src/linux/include/linux/posix_types.h" 2
# 36 "/data1/src/linux/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;

# 1 "/data1/src/linux/include/asm/posix_types.h" 1
# 13 "/data1/src/linux/include/asm/posix_types.h"
typedef unsigned int __kernel_dev_t;
typedef unsigned int __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
typedef unsigned int __kernel_nlink_t;
typedef long __kernel_off_t;
typedef long long __kernel_loff_t;
typedef int __kernel_pid_t;
typedef int __kernel_ipc_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
typedef unsigned long __kernel_size_t;
typedef long __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_suseconds_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
typedef unsigned long __kernel_sigset_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;

typedef struct {
        int val[2];
} __kernel_fsid_t;

typedef __kernel_uid_t __kernel_old_uid_t;
typedef __kernel_gid_t __kernel_old_gid_t;
typedef __kernel_uid_t __kernel_uid32_t;
typedef __kernel_gid_t __kernel_gid32_t;
# 59 "/data1/src/linux/include/asm/posix_types.h"
static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
        unsigned long _tmp = fd / (8 * sizeof(unsigned long));
        unsigned long _rem = fd % (8 * sizeof(unsigned long));
        fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
}


static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
{
        unsigned long _tmp = fd / (8 * sizeof(unsigned long));
        unsigned long _rem = fd % (8 * sizeof(unsigned long));
        fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
}


static __inline__ int __FD_ISSET(unsigned long fd, const __kernel_fd_set *p)
{
        unsigned long _tmp = fd / (8 * sizeof(unsigned long));
        unsigned long _rem = fd % (8 * sizeof(unsigned long));
        return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
}






static __inline__ void __FD_ZERO(__kernel_fd_set *p)
{
        unsigned long *tmp = p->fds_bits;
        int i;

        if (__builtin_constant_p((1024/(8 * sizeof(unsigned long))))) {
                switch ((1024/(8 * sizeof(unsigned long)))) {
                      case 16:
                        tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
                        tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
                        tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0;
                        tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0;
                        return;

                      case 8:
                        tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
                        tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
                        return;

                      case 4:
                        tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
                        return;
                }
        }
        i = (1024/(8 * sizeof(unsigned long)));
        while (i) {
                i--;
                *tmp = 0;
                tmp++;
        }
}
# 47 "/data1/src/linux/include/linux/posix_types.h" 2
# 9 "/data1/src/linux/include/linux/types.h" 2




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_uid32_t uid_t;
typedef __kernel_gid32_t gid_t;
typedef __kernel_uid16_t uid16_t;
typedef __kernel_gid16_t gid16_t;
# 45 "/data1/src/linux/include/linux/types.h"
typedef __kernel_loff_t loff_t;
# 54 "/data1/src/linux/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;
# 124 "/data1/src/linux/include/linux/types.h"
typedef unsigned long sector_t;
# 134 "/data1/src/linux/include/linux/types.h"
struct ustat {
        __kernel_daddr_t f_tfree;
        __kernel_ino_t f_tinode;
        char f_fname[6];
        char f_fpack[6];
};
# 17 "/data1/src/linux/include/linux/capability.h" 2
# 1 "/data1/src/linux/include/linux/fs.h" 1
# 10 "/data1/src/linux/include/linux/fs.h"
# 1 "/data1/src/linux/include/linux/linkage.h" 1
# 11 "/data1/src/linux/include/linux/fs.h" 2
# 1 "/data1/src/linux/include/linux/limits.h" 1
# 12 "/data1/src/linux/include/linux/fs.h" 2
# 1 "/data1/src/linux/include/linux/wait.h" 1
# 13 "/data1/src/linux/include/linux/wait.h"
# 1 "/data1/src/linux/include/linux/kernel.h" 1
# 10 "/data1/src/linux/include/linux/kernel.h"
# 1 "/opt/gcc3.1/lib/gcc-lib/ia64-hp-linux/3.1/include/stdarg.h" 1 3
# 43 "/opt/gcc3.1/lib/gcc-lib/ia64-hp-linux/3.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "/opt/gcc3.1/lib/gcc-lib/ia64-hp-linux/3.1/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 11 "/data1/src/linux/include/linux/kernel.h" 2



# 1 "/data1/src/linux/include/linux/compiler.h" 1
# 15 "/data1/src/linux/include/linux/kernel.h" 2
# 40 "/data1/src/linux/include/linux/kernel.h"
extern int console_printk[];






struct completion;

extern struct notifier_block *panic_notifier_list;
 void panic(const char * fmt, ...)
        __attribute__ ((noreturn, format (printf, 1, 2)));
 __attribute__((syscall_linkage)) void do_exit(long error_code)
        __attribute__((noreturn));
 void complete_and_exit(struct completion *, long)
        __attribute__((noreturn));
extern int abs(int);
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);
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);

extern int sscanf(const char *, const char *, ...)
        __attribute__ ((format (scanf,2,3)));
extern int vsscanf(const char *, const char *, va_list);

extern int get_option(char **str, int *pint);
extern char *get_options(char *str, int nints, int *ints);
extern unsigned long long memparse(char *ptr, char **retptr);
extern void dev_probe_lock(void);
extern void dev_probe_unlock(void);

extern int session_of_pgrp(int pgrp);

 __attribute__((syscall_linkage)) int printk(const char * fmt, ...)
        __attribute__ ((format (printf, 1, 2)));

static inline void console_silent(void)
{
        (console_printk[0]) = 0;
}

static inline void console_verbose(void)
{
        if ((console_printk[0]))
                (console_printk[0]) = 15;
}

extern void bust_spinlocks(int yes);
extern int oops_in_progress;

extern int tainted;
extern const char *print_tainted(void);
# 158 "/data1/src/linux/include/linux/kernel.h"
struct sysinfo {
        long uptime;
        unsigned long loads[3];
        unsigned long totalram;
        unsigned long freeram;
        unsigned long sharedram;
        unsigned long bufferram;
        unsigned long totalswap;
        unsigned long freeswap;
        unsigned short procs;
        unsigned short pad;
        unsigned long totalhigh;
        unsigned long freehigh;
        unsigned int mem_unit;
        char _f[20-2*sizeof(long)-sizeof(int)];
};
# 14 "/data1/src/linux/include/linux/wait.h" 2
# 1 "/data1/src/linux/include/linux/list.h" 1





# 1 "/data1/src/linux/include/linux/prefetch.h" 1
# 13 "/data1/src/linux/include/linux/prefetch.h"
# 1 "/data1/src/linux/include/asm/processor.h" 1
# 19 "/data1/src/linux/include/asm/processor.h"
# 1 "/data1/src/linux/include/asm/kregs.h" 1
# 20 "/data1/src/linux/include/asm/processor.h" 2
# 1 "/data1/src/linux/include/asm/system.h" 1
# 37 "/data1/src/linux/include/asm/system.h"
struct pci_vector_struct {
        __u16 bus;
        __u32 pci_id;
        __u8 pin;
        __u8 irq;
};

extern struct ia64_boot_param {
        __u64 command_line;
        __u64 efi_systab;
        __u64 efi_memmap;
        __u64 efi_memmap_size;
        __u64 efi_memdesc_size;
        __u32 efi_memdesc_version;
        struct {
                __u16 num_cols;
                __u16 num_rows;
                __u16 orig_x;
                __u16 orig_y;
        } console_info;
        __u64 fpswa;
        __u64 initrd_start;
        __u64 initrd_size;
} *ia64_boot_param;

static inline void
ia64_insn_group_barrier (void)
{
        __asm__ __volatile__ (";;" ::: "memory");
}
# 178 "/data1/src/linux/include/asm/system.h"
  extern void __global_cli (void);
  extern void __global_sti (void);
  extern unsigned long __global_save_flags (void);
  extern void __global_restore_flags (unsigned long);
# 197 "/data1/src/linux/include/asm/system.h"
extern unsigned long __bad_size_for_ia64_fetch_and_add (void);
extern unsigned long __bad_increment_for_ia64_fetch_and_add (void);
# 242 "/data1/src/linux/include/asm/system.h"
extern void __xchg_called_with_bad_pointer (void);

static __inline__ unsigned long
__xchg (unsigned long x, volatile void *ptr, int size)
{
        unsigned long result;

        switch (size) {
              case 1:
                __asm__ __volatile ("xchg1 %0=[%1],%2" : "=r" (result)
                                    : "r" (ptr), "r" (x) : "memory");
                return result;

              case 2:
                __asm__ __volatile ("xchg2 %0=[%1],%2" : "=r" (result)
                                    : "r" (ptr), "r" (x) : "memory");
                return result;

              case 4:
                __asm__ __volatile ("xchg4 %0=[%1],%2" : "=r" (result)
                                    : "r" (ptr), "r" (x) : "memory");
                return result;

              case 8:
                __asm__ __volatile ("xchg8 %0=[%1],%2" : "=r" (result)
                                    : "r" (ptr), "r" (x) : "memory");
                return result;
        }
        __xchg_called_with_bad_pointer();
        return x;
}
# 289 "/data1/src/linux/include/asm/system.h"
extern long __cmpxchg_called_with_bad_pointer(void);
# 376 "/data1/src/linux/include/asm/system.h"
extern struct task_struct *ia64_switch_to (void *next_task);

extern void ia64_save_extra (struct task_struct *task);
extern void ia64_load_extra (struct task_struct *task);
# 21 "/data1/src/linux/include/asm/processor.h" 2
# 189 "/data1/src/linux/include/asm/processor.h"
# 1 "/data1/src/linux/include/linux/threads.h" 1
# 190 "/data1/src/linux/include/asm/processor.h" 2




# 1 "/data1/src/linux/include/asm/rse.h" 1
# 14 "/data1/src/linux/include/asm/rse.h"
static __inline__ unsigned long
ia64_rse_slot_num (unsigned long *addr)
{
        return (((unsigned long) addr) >> 3) & 0x3f;
}




static __inline__ unsigned long
ia64_rse_is_rnat_slot (unsigned long *addr)
{
        return ia64_rse_slot_num(addr) == 0x3f;
}





static __inline__ unsigned long *
ia64_rse_rnat_addr (unsigned long *slot_addr)
{
        return (unsigned long *) ((unsigned long) slot_addr | (0x3f << 3));
}






static __inline__ unsigned long
ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp)
{
        unsigned long slots = (bsp - bspstore);

        return slots - (ia64_rse_slot_num(bspstore) + slots)/0x40;
}





static __inline__ unsigned long *
ia64_rse_skip_regs (unsigned long *addr, long num_regs)
{
        long delta = ia64_rse_slot_num(addr) + num_regs;

        if (num_regs < 0)
                delta -= 0x3e;
        return addr + num_regs + delta/0x3f;
}
# 195 "/data1/src/linux/include/asm/processor.h" 2
# 1 "/data1/src/linux/include/asm/unwind.h" 1
# 16 "/data1/src/linux/include/asm/unwind.h"
struct task_struct;
struct switch_stack;

enum unw_application_register {
        UNW_AR_BSP,
        UNW_AR_BSPSTORE,
        UNW_AR_PFS,
        UNW_AR_RNAT,
        UNW_AR_UNAT,
        UNW_AR_LC,
        UNW_AR_EC,
        UNW_AR_FPSR,
        UNW_AR_RSC,
        UNW_AR_CCV
};






struct unw_stack {
        unsigned long limit;
        unsigned long top;
};
# 49 "/data1/src/linux/include/asm/unwind.h"
struct unw_frame_info {
        struct unw_stack regstk;
        struct unw_stack memstk;
        unsigned int flags;
        short hint;
        short prev_script;


        unsigned long bsp;
        unsigned long sp;
        unsigned long psp;
        unsigned long ip;
        unsigned long pr;
        unsigned long *cfm_loc;

        struct task_struct *task;
        struct switch_stack *sw;


        unsigned long *bsp_loc;
        unsigned long *bspstore_loc;
        unsigned long *pfs_loc;
        unsigned long *rnat_loc;
        unsigned long *rp_loc;
        unsigned long *pri_unat_loc;
        unsigned long *unat_loc;
        unsigned long *pr_loc;
        unsigned long *lc_loc;
        unsigned long *fpsr_loc;
        struct unw_ireg {
                unsigned long *loc;
                struct unw_ireg_nat {
                        long type : 3;
                        signed long off : 61;
                } nat;
        } r4, r5, r6, r7;
        unsigned long *b1_loc, *b2_loc, *b3_loc, *b4_loc, *b5_loc;
        struct ia64_fpreg *f2_loc, *f3_loc, *f4_loc, *f5_loc, *fr_loc[16];
};
# 96 "/data1/src/linux/include/asm/unwind.h"
extern void unw_init (void);
extern void unw_create_gate_table (void);

extern void *unw_add_unwind_table (const char *name, unsigned long segment_base, unsigned long gp,
                                   const void *table_start, const void *table_end);

extern void unw_remove_unwind_table (void *handle);




extern void unw_init_from_blocked_task (struct unw_frame_info *info, struct task_struct *t);

extern void unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t,
                                 struct switch_stack *sw);




extern void unw_init_running (void (*callback)(struct unw_frame_info *info, void *arg), void *arg);





extern int unw_unwind (struct unw_frame_info *info);






extern int unw_unwind_to_user (struct unw_frame_info *info);



static inline int
unw_get_ip (struct unw_frame_info *info, unsigned long *valp)
{
        *valp = (info)->ip;
        return 0;
}

static inline int
unw_get_sp (struct unw_frame_info *info, unsigned long *valp)
{
        *valp = (info)->sp;
        return 0;
}

static inline int
unw_get_psp (struct unw_frame_info *info, unsigned long *valp)
{
        *valp = (info)->psp;
        return 0;
}

static inline int
unw_get_bsp (struct unw_frame_info *info, unsigned long *valp)
{
        *valp = (info)->bsp;
        return 0;
}

static inline int
unw_get_cfm (struct unw_frame_info *info, unsigned long *valp)
{
        *valp = *(info)->cfm_loc;
        return 0;
}

static inline int
unw_set_cfm (struct unw_frame_info *info, unsigned long val)
{
        *(info)->cfm_loc = val;
        return 0;
}

static inline int
unw_get_rp (struct unw_frame_info *info, unsigned long *val)
{
        if (!info->rp_loc)
                return -1;
        *val = *info->rp_loc;
        return 0;
}

extern int unw_access_gr (struct unw_frame_info *, int, unsigned long *, char *, int);
extern int unw_access_br (struct unw_frame_info *, int, unsigned long *, int);
extern int unw_access_fr (struct unw_frame_info *, int, struct ia64_fpreg *, int);
extern int unw_access_ar (struct unw_frame_info *, int, unsigned long *, int);
extern int unw_access_pr (struct unw_frame_info *, unsigned long *, int);

static inline int
unw_set_gr (struct unw_frame_info *i, int n, unsigned long v, char nat)
{
        return unw_access_gr(i, n, &v, &nat, 1);
}

static inline int
unw_set_br (struct unw_frame_info *i, int n, unsigned long v)
{
        return unw_access_br(i, n, &v, 1);
}

static inline int
unw_set_fr (struct unw_frame_info *i, int n, struct ia64_fpreg v)
{
        return unw_access_fr(i, n, &v, 1);
}

static inline int
unw_set_ar (struct unw_frame_info *i, int n, unsigned long v)
{
        return unw_access_ar(i, n, &v, 1);
}

static inline int
unw_set_pr (struct unw_frame_info *i, unsigned long v)
{
        return unw_access_pr(i, &v, 1);
}
# 196 "/data1/src/linux/include/asm/processor.h" 2
# 1 "/data1/src/linux/include/asm/atomic.h" 1
# 23 "/data1/src/linux/include/asm/atomic.h"
typedef struct { volatile __s32 counter; } atomic_t;






static __inline__ int
ia64_atomic_add (int i, atomic_t *v)
{
        __s32 old, new;
       

        do {
                ;
                old = ((v)->counter);
                new = old + i;
        } while (({ __typeof__(v) _p_ = (v); __typeof__(old + i) _n_ = (old + i); __u64 _o_, _r_; switch (sizeof(atomic_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(atomic_t)) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old);
        return new;
}

static __inline__ int
ia64_atomic_sub (int i, atomic_t *v)
{
        __s32 old, new;
       

        do {
                ;
                old = ((v)->counter);
                new = old - i;
        } while (({ __typeof__(v) _p_ = (v); __typeof__(new) _n_ = (new); __u64 _o_, _r_; switch (sizeof(atomic_t)) { case 1: _o_ = (__u8 ) (long) (old); break; case 2: _o_ = (__u16) (long) (old); break; case 4: _o_ = (__u32) (long) (old); break; case 8: _o_ = (__u64) (long) (old); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(atomic_t)) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__(old)) _r_; }) != old);
        return new;
}





static __inline__ int
atomic_add_negative (int i, atomic_t *v)
{
        return ia64_atomic_add(i, v) < 0;
}
# 197 "/data1/src/linux/include/asm/processor.h" 2


struct ia64_psr {
        __u64 reserved0 : 1;
        __u64 be : 1;
        __u64 up : 1;
        __u64 ac : 1;
        __u64 mfl : 1;
        __u64 mfh : 1;
        __u64 reserved1 : 7;
        __u64 ic : 1;
        __u64 i : 1;
        __u64 pk : 1;
        __u64 reserved2 : 1;
        __u64 dt : 1;
        __u64 dfl : 1;
        __u64 dfh : 1;
        __u64 sp : 1;
        __u64 pp : 1;
        __u64 di : 1;
        __u64 si : 1;
        __u64 db : 1;
        __u64 lp : 1;
        __u64 tb : 1;
        __u64 rt : 1;
        __u64 reserved3 : 4;
        __u64 cpl : 2;
        __u64 is : 1;
        __u64 mc : 1;
        __u64 it : 1;
        __u64 id : 1;
        __u64 da : 1;
        __u64 dd : 1;
        __u64 ss : 1;
        __u64 ri : 2;
        __u64 ed : 1;
        __u64 bn : 1;
        __u64 reserved4 : 19;
};





struct cpuinfo_ia64 {

        union {
                struct {
                        __u32 irq_count;
                        __u32 bh_count;
                } f;
                __u64 irq_and_bh_counts;
        } irq_stat;
        __u32 softirq_pending;
        __u32 phys_stacked_size_p8;
        __u64 itm_delta;
        __u64 itm_next;
        __u64 *pgd_quick;
        __u64 *pmd_quick;
        __u64 *pte_quick;
        __u64 pgtable_cache_sz;

        __u64 ppn;
        __u64 features;
        __u8 number;
        __u8 revision;
        __u8 model;
        __u8 family;
        __u8 archrev;
        char vendor[16];
        __u64 itc_freq;
        __u64 proc_freq;
        __u64 cyc_per_usec;
        __u64 usec_per_cyc;
        __u64 unimpl_va_mask;
        __u64 unimpl_pa_mask;
        __u64 ptce_base;
        __u32 ptce_count[2];
        __u32 ptce_stride[2];
        struct task_struct *ksoftirqd;

        int cpu;
        __u64 loops_per_jiffy;
        __u64 ipi_count;
        __u64 prof_counter;
        __u64 prof_multiplier;
        __u64 ipi_operation;







        __u64 platform_specific;
} __attribute__ ((aligned ((1UL << 14)))) ;
# 314 "/data1/src/linux/include/asm/processor.h"
  extern struct cpuinfo_ia64 _cpu_data[32];



extern void identify_cpu (struct cpuinfo_ia64 *);
extern void print_cpu_info (struct cpuinfo_ia64 *);

typedef struct {
        unsigned long seg;
} mm_segment_t;
# 349 "/data1/src/linux/include/asm/processor.h"
struct siginfo;

struct thread_struct {
        __u64 ksp;
        unsigned long flags;
        __u64 map_base;
        __u64 task_size;
        struct siginfo *siginfo;


        __u64 eflag;
        __u64 fsr;
        __u64 fcr;
        __u64 fir;
        __u64 fdr;
        __u64 csd;
        __u64 ssd;
        __u64 old_k1;
        __u64 old_iob;





        __u64 pmc[32];
        __u64 pmd[32];
        unsigned long pfm_must_block;
        void *pfm_context;
        atomic_t pfm_notifiers_check;




        __u64 dbr[8];
        __u64 ibr[8];
        struct ia64_fpreg fph[96];
};
# 444 "/data1/src/linux/include/asm/processor.h"
struct mm_struct;
struct task_struct;







  extern void release_thread (struct task_struct *task);
# 472 "/data1/src/linux/include/asm/processor.h"
extern int kernel_thread (int (*fn)(void *), void *arg, unsigned long flags);






extern unsigned long get_wchan (struct task_struct *p);
# 491 "/data1/src/linux/include/asm/processor.h"
static inline unsigned long
ia64_get_kr (unsigned long regnum)
{
        unsigned long r;

        switch (regnum) {
              case 0: asm volatile ("mov %0=ar.k0" : "=r"(r)); break;
              case 1: asm volatile ("mov %0=ar.k1" : "=r"(r)); break;
              case 2: asm volatile ("mov %0=ar.k2" : "=r"(r)); break;
              case 3: asm volatile ("mov %0=ar.k3" : "=r"(r)); break;
              case 4: asm volatile ("mov %0=ar.k4" : "=r"(r)); break;
              case 5: asm volatile ("mov %0=ar.k5" : "=r"(r)); break;
              case 6: asm volatile ("mov %0=ar.k6" : "=r"(r)); break;
              case 7: asm volatile ("mov %0=ar.k7" : "=r"(r)); break;
        }
        return r;
}

static inline void
ia64_set_kr (unsigned long regnum, unsigned long r)
{
        switch (regnum) {
              case 0: asm volatile ("mov ar.k0=%0" :: "r"(r)); break;
              case 1: asm volatile ("mov ar.k1=%0" :: "r"(r)); break;
              case 2: asm volatile ("mov ar.k2=%0" :: "r"(r)); break;
              case 3: asm volatile ("mov ar.k3=%0" :: "r"(r)); break;
              case 4: asm volatile ("mov ar.k4=%0" :: "r"(r)); break;
              case 5: asm volatile ("mov ar.k5=%0" :: "r"(r)); break;
              case 6: asm volatile ("mov ar.k6=%0" :: "r"(r)); break;
              case 7: asm volatile ("mov ar.k7=%0" :: "r"(r)); break;
        }
}
# 540 "/data1/src/linux/include/asm/processor.h"
extern void __ia64_init_fpu (void);
extern void __ia64_save_fpu (struct ia64_fpreg *fph);
extern void __ia64_load_fpu (struct ia64_fpreg *fph);
extern void ia64_save_debug_regs (unsigned long *save_area);
extern void ia64_load_debug_regs (unsigned long *save_area);


extern void ia32_save_state (struct task_struct *task);
extern void ia32_load_state (struct task_struct *task);



extern void ia64_save_pm_regs (struct task_struct *task);
extern void ia64_load_pm_regs (struct task_struct *task);






static inline void
ia64_init_fpu (void) {
        asm volatile (";; rsm psr.dfh;; srlz.d;;" ::: "memory");;
        __ia64_init_fpu();
        asm volatile (";; ssm psr.dfh;; srlz.d;;" ::: "memory");;
}


static inline void
ia64_save_fpu (struct ia64_fpreg *fph) {
        asm volatile (";; rsm psr.dfh;; srlz.d;;" ::: "memory");;
        __ia64_save_fpu(fph);
        asm volatile (";; ssm psr.dfh;; srlz.d;;" ::: "memory");;
}


static inline void
ia64_load_fpu (struct ia64_fpreg *fph) {
        asm volatile (";; rsm psr.dfh;; srlz.d;;" ::: "memory");;
        __ia64_load_fpu(fph);
        asm volatile (";; ssm psr.dfh;; srlz.d;;" ::: "memory");;
}

static inline void
ia64_fc (void *addr)
{
        asm volatile ("fc %0" :: "r"(addr) : "memory");
}

static inline void
ia64_sync_i (void)
{
        asm volatile (";; sync.i" ::: "memory");
}

static inline void
ia64_srlz_i (void)
{
        asm volatile (";; srlz.i ;;" ::: "memory");
}

static inline void
ia64_srlz_d (void)
{
        asm volatile (";; srlz.d" ::: "memory");
}

static inline __u64
ia64_get_rr (__u64 reg_bits)
{
        __u64 r;
        asm volatile ("mov %0=rr[%1]" : "=r"(r) : "r"(reg_bits) : "memory");
        return r;
}

static inline void
ia64_set_rr (__u64 reg_bits, __u64 rr_val)
{
        asm volatile ("mov rr[%0]=%1" :: "r"(reg_bits), "r"(rr_val) : "memory");
}

static inline __u64
ia64_get_dcr (void)
{
        __u64 r;
        asm volatile ("mov %0=cr.dcr" : "=r"(r));
        return r;
}

static inline void
ia64_set_dcr (__u64 val)
{
        asm volatile ("mov cr.dcr=%0;;" :: "r"(val) : "memory");
        ia64_srlz_d();
}

static inline __u64
ia64_get_lid (void)
{
        __u64 r;
        asm volatile ("mov %0=cr.lid" : "=r"(r));
        return r;
}

static inline void
ia64_invala (void)
{
        asm volatile ("invala" ::: "memory");
}
# 663 "/data1/src/linux/include/asm/processor.h"
static inline void
ia64_itr (__u64 target_mask, __u64 tr_num,
          __u64 vmaddr, __u64 pte,
          __u64 log_page_size)
{
        asm volatile ("mov cr.itir=%0" :: "r"(log_page_size << 2) : "memory");
        asm volatile ("mov cr.ifa=%0;;" :: "r"(vmaddr) : "memory");
        if (target_mask & 0x1)
                asm volatile ("itr.i itr[%0]=%1"
                                      :: "r"(tr_num), "r"(pte) : "memory");
        if (target_mask & 0x2)
                asm volatile (";;itr.d dtr[%0]=%1"
                                      :: "r"(tr_num), "r"(pte) : "memory");
}





static inline void
ia64_itc (__u64 target_mask, __u64 vmaddr, __u64 pte,
          __u64 log_page_size)
{
        asm volatile ("mov cr.itir=%0" :: "r"(log_page_size << 2) : "memory");
        asm volatile ("mov cr.ifa=%0;;" :: "r"(vmaddr) : "memory");

        if (target_mask & 0x1)
                asm volatile ("itc.i %0;;" :: "r"(pte) : "memory");
        if (target_mask & 0x2)
                asm volatile (";;itc.d %0;;" :: "r"(pte) : "memory");
}





static inline void
ia64_ptr (__u64 target_mask, __u64 vmaddr, __u64 log_size)
{
        if (target_mask & 0x1)
                asm volatile ("ptr.i %0,%1" :: "r"(vmaddr), "r"(log_size << 2));
        if (target_mask & 0x2)
                asm volatile ("ptr.d %0,%1" :: "r"(vmaddr), "r"(log_size << 2));
}


static inline void
ia64_set_iva (void *ivt_addr)
{
        asm volatile ("mov cr.iva=%0;; srlz.i;;" :: "r"(ivt_addr) : "memory");
}


static inline void
ia64_set_pta (__u64 pta)
{

        asm volatile ("mov cr.pta=%0;; srlz.i;;" :: "r"(pta) : "memory");
}

static inline __u64
ia64_get_cpuid (__u64 regnum)
{
        __u64 r;

        asm ("mov %0=cpuid[%r1]" : "=r"(r) : "rO"(regnum));
        return r;
}

static inline void
ia64_eoi (void)
{
        asm ("mov cr.eoi=r0;; srlz.d;;" ::: "memory");
}

static inline void
ia64_set_lrr0 (unsigned long val)
{
        asm volatile ("mov cr.lrr0=%0;; srlz.d" :: "r"(val) : "memory");
}




static inline void
ia64_set_lrr1 (unsigned long val)
{
        asm volatile ("mov cr.lrr1=%0;; srlz.d" :: "r"(val) : "memory");
}

static inline void
ia64_set_pmv (__u64 val)
{
        asm volatile ("mov cr.pmv=%0" :: "r"(val) : "memory");
}

static inline __u64
ia64_get_pmc (__u64 regnum)
{
        __u64 retval;

        asm volatile ("mov %0=pmc[%1]" : "=r"(retval) : "r"(regnum));
        return retval;
}

static inline void
ia64_set_pmc (__u64 regnum, __u64 value)
{
        asm volatile ("mov pmc[%0]=%1" :: "r"(regnum), "r"(value));
}

static inline __u64
ia64_get_pmd (__u64 regnum)
{
        __u64 retval;

        asm volatile ("mov %0=pmd[%1]" : "=r"(retval) : "r"(regnum));
        return retval;
}

static inline void
ia64_set_pmd (__u64 regnum, __u64 value)
{
        asm volatile ("mov pmd[%0]=%1" :: "r"(regnum), "r"(value));
}





static inline __u64
ia64_unat_pos (void *spill_addr)
{
        return ((__u64) spill_addr >> 3) & 0x3f;
}





static inline void
ia64_set_unat (__u64 *unat, void *spill_addr, unsigned long nat)
{
        __u64 bit = ia64_unat_pos(spill_addr);
        __u64 mask = 1UL << bit;

        *unat = (*unat & ~mask) | (nat << bit);
}





static inline unsigned long
thread_saved_pc (struct thread_struct *t)
{
        struct unw_frame_info info;
        unsigned long ip;


        struct task_struct *p = (void *) ((unsigned long) t - 1488);

        unw_init_from_blocked_task(&info, p);
        if (unw_unwind(&info) < 0)
                return 0;
        unw_get_ip(&info, &ip);
        return ip;
}
# 851 "/data1/src/linux/include/asm/processor.h"
static inline void
ia64_set_cmcv (__u64 val)
{
        asm volatile ("mov cr.cmcv=%0" :: "r"(val) : "memory");
}




static inline __u64
ia64_get_cmcv (void)
{
        __u64 val;

        asm volatile ("mov %0=cr.cmcv" : "=r"(val) :: "memory");
        return val;
}

static inline __u64
ia64_get_ivr (void)
{
        __u64 r;
        asm volatile ("srlz.d;; mov %0=cr.ivr;; srlz.d;;" : "=r"(r));
        return r;
}

static inline void
ia64_set_tpr (__u64 val)
{
        asm volatile ("mov cr.tpr=%0" :: "r"(val));
}

static inline __u64
ia64_get_tpr (void)
{
        __u64 r;
        asm volatile ("mov %0=cr.tpr" : "=r"(r));
        return r;
}

static inline void
ia64_set_irr0 (__u64 val)
{
        asm volatile("mov cr.irr0=%0;;" :: "r"(val) : "memory");
        ia64_srlz_d();
}

static inline __u64
ia64_get_irr0 (void)
{
        __u64 val;


        asm volatile("mov %0=cr.irr0" : "=r"(val));
        return val;
}

static inline void
ia64_set_irr1 (__u64 val)
{
        asm volatile("mov cr.irr1=%0;;" :: "r"(val) : "memory");
        ia64_srlz_d();
}

static inline __u64
ia64_get_irr1 (void)
{
        __u64 val;


        asm volatile("mov %0=cr.irr1" : "=r"(val));
        return val;
}

static inline void
ia64_set_irr2 (__u64 val)
{
        asm volatile("mov cr.irr2=%0;;" :: "r"(val) : "memory");
        ia64_srlz_d();
}

static inline __u64
ia64_get_irr2 (void)
{
        __u64 val;


        asm volatile("mov %0=cr.irr2" : "=r"(val));
        return val;
}

static inline void
ia64_set_irr3 (__u64 val)
{
        asm volatile("mov cr.irr3=%0;;" :: "r"(val) : "memory");
        ia64_srlz_d();
}

static inline __u64
ia64_get_irr3 (void)
{
        __u64 val;


        asm volatile ("mov %0=cr.irr3" : "=r"(val));
        return val;
}

static inline __u64
ia64_get_gp(void)
{
        __u64 val;

        asm ("mov %0=gp" : "=r"(val));
        return val;
}

static inline void
ia64_set_ibr (__u64 regnum, __u64 value)
{
        asm volatile ("mov ibr[%0]=%1" :: "r"(regnum), "r"(value));
}

static inline void
ia64_set_dbr (__u64 regnum, __u64 value)
{
        asm volatile ("mov dbr[%0]=%1" :: "r"(regnum), "r"(value));

        asm volatile (";; srlz.d");

}

static inline __u64
ia64_get_ibr (__u64 regnum)
{
        __u64 retval;

        asm volatile ("mov %0=ibr[%1]" : "=r"(retval) : "r"(regnum));
        return retval;
}

static inline __u64
ia64_get_dbr (__u64 regnum)
{
        __u64 retval;

        asm volatile ("mov %0=dbr[%1]" : "=r"(retval) : "r"(regnum));

        asm volatile (";; srlz.d");

        return retval;
}
# 1023 "/data1/src/linux/include/asm/processor.h"
static inline __u64
ia64_thash (__u64 addr)
{
        __u64 result;
        asm ("thash %0=%1" : "=r"(result) : "r" (addr));
        return result;
}

static inline __u64
ia64_tpa (__u64 addr)
{
        __u64 result;
        asm ("tpa %0=%1" : "=r"(result) : "r"(addr));
        return result;
}






extern inline void
prefetch (const void *x)
{
         __asm__ __volatile__ ("lfetch [%0]" : : "r"(x));
}

extern inline void
prefetchw (const void *x)
{
        __asm__ __volatile__ ("lfetch.excl [%0]" : : "r"(x));
}
# 14 "/data1/src/linux/include/linux/prefetch.h" 2
# 1 "/data1/src/linux/include/asm/cache.h" 1
# 15 "/data1/src/linux/include/linux/prefetch.h" 2
# 7 "/data1/src/linux/include/linux/list.h" 2
# 18 "/data1/src/linux/include/linux/list.h"
struct list_head {
        struct list_head *next, *prev;
};

typedef struct list_head list_t;
# 39 "/data1/src/linux/include/linux/list.h"
static __inline__ void __list_add(struct list_head * new,
        struct list_head * prev,
        struct list_head * next)
{
        next->prev = new;
        new->next = next;
        new->prev = prev;
        prev->next = new;
}
# 57 "/data1/src/linux/include/linux/list.h"
static __inline__ void list_add(struct list_head *new, struct list_head *head)
{
        __list_add(new, head, head->next);
}
# 70 "/data1/src/linux/include/linux/list.h"
static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
{
        __list_add(new, head->prev, head);
}
# 82 "/data1/src/linux/include/linux/list.h"
static __inline__ void __list_del(struct list_head * prev,
                                  struct list_head * next)
{
        next->prev = prev;
        prev->next = next;
}






static __inline__ void list_del(struct list_head *entry)
{
        __list_del(entry->prev, entry->next);
}





static __inline__ void list_del_init(struct list_head *entry)
{
        __list_del(entry->prev, entry->next);
        do { (entry)->next = (entry); (entry)->prev = (entry); } while (0);
}





static __inline__ int list_empty(struct list_head *head)
{
        return head->next == head;
}






static __inline__ void list_splice(struct list_head *list, struct list_head *head)
{
        struct list_head *first = list->next;

        if (first != list) {
                struct list_head *last = list->prev;
                struct list_head *at = head->next;

                first->prev = head;
                head->next = first;

                last->next = at;
                at->prev = last;
        }
}
# 15 "/data1/src/linux/include/linux/wait.h" 2

# 1 "/data1/src/linux/include/linux/spinlock.h" 1
# 39 "/data1/src/linux/include/linux/spinlock.h"
# 1 "/data1/src/linux/include/asm/spinlock.h" 1
# 15 "/data1/src/linux/include/asm/spinlock.h"
# 1 "/data1/src/linux/include/asm/bitops.h" 1
# 10 "/data1/src/linux/include/asm/bitops.h"
# 1 "/data1/src/linux/include/linux/sched_param.h" 1
# 11 "/data1/src/linux/include/asm/bitops.h" 2
# 29 "/data1/src/linux/include/asm/bitops.h"
static __inline__ void
set_bit (int nr, volatile void *addr)
{
        __u32 bit, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        bit = 1 << (nr & 31);
        do {
                ;
                old = *m;
                new = old | bit;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
}
# 54 "/data1/src/linux/include/asm/bitops.h"
static __inline__ void
__set_bit (int nr, volatile void *addr)
{
        *((__u32 *) addr + (nr >> 5)) |= (1 << (nr & 31));
}
# 76 "/data1/src/linux/include/asm/bitops.h"
static __inline__ void
clear_bit (int nr, volatile void *addr)
{
        __u32 mask, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        mask = ~(1 << (nr & 31));
        do {
                ;
                old = *m;
                new = old & mask;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
}




static __inline__ void
__clear_bit (int nr, volatile void *addr)
{
        volatile __u32 *p = (__u32 *) addr + (nr >> 5);;
        __u32 m = 1 << (nr & 31);
        *p &= ~m;
}
# 112 "/data1/src/linux/include/asm/bitops.h"
static __inline__ void
change_bit (int nr, volatile void *addr)
{
        __u32 bit, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        bit = (1 << (nr & 31));
        do {
                ;
                old = *m;
                new = old ^ bit;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
}
# 137 "/data1/src/linux/include/asm/bitops.h"
static __inline__ void
__change_bit (int nr, volatile void *addr)
{
        *((__u32 *) addr + (nr >> 5)) ^= (1 << (nr & 31));
}
# 151 "/data1/src/linux/include/asm/bitops.h"
static __inline__ int
test_and_set_bit (int nr, volatile void *addr)
{
        __u32 bit, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        bit = 1 << (nr & 31);
        do {
                ;
                old = *m;
                new = old | bit;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
        return (old & bit) != 0;
}
# 177 "/data1/src/linux/include/asm/bitops.h"
static __inline__ int
__test_and_set_bit (int nr, volatile void *addr)
{
        __u32 *p = (__u32 *) addr + (nr >> 5);
        __u32 m = 1 << (nr & 31);
        int oldbitset = (*p & m) != 0;

        *p |= m;
        return oldbitset;
}
# 196 "/data1/src/linux/include/asm/bitops.h"
static __inline__ int
test_and_clear_bit (int nr, volatile void *addr)
{
        __u32 mask, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        mask = ~(1 << (nr & 31));
        do {
                ;
                old = *m;
                new = old & mask;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
        return (old & ~mask) != 0;
}
# 222 "/data1/src/linux/include/asm/bitops.h"
static __inline__ int
__test_and_clear_bit(int nr, volatile void * addr)
{
        __u32 *p = (__u32 *) addr + (nr >> 5);
        __u32 m = 1 << (nr & 31);
        int oldbitset = *p & m;

        *p &= ~m;
        return oldbitset;
}
# 241 "/data1/src/linux/include/asm/bitops.h"
static __inline__ int
test_and_change_bit (int nr, volatile void *addr)
{
        __u32 bit, old, new;
        volatile __u32 *m;
       

        m = (volatile __u32 *) addr + (nr >> 5);
        bit = (1 << (nr & 31));
        do {
                ;
                old = *m;
                new = old ^ bit;
        } while (({ __typeof__((m)) _p_ = ((m)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*(m))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (long) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*(m))) { case 1: __asm__ __volatile__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_called_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
        return (old & bit) != 0;
}




static __inline__ int
__test_and_change_bit (int nr, void *addr)
{
        __u32 old, bit = (1 << (nr & 31));
        __u32 *m = (__u32 *) addr + (nr >> 5);

        old = *m;
        *m = old ^ bit;
        return (old & bit) != 0;
}

static __inline__ int
test_bit (int nr, volatile void *addr)
{
        return 1 & (((const volatile __u32 *) addr)[nr >> 5] >> (nr & 31));
}
# 286 "/data1/src/linux/include/asm/bitops.h"
static inline unsigned long
ffz (unsigned long x)
{
        unsigned long result;

        __asm__ ("popcnt %0=%1" : "=r" (result) : "r" (x & (~x - 1)));
        return result;
}







static inline unsigned long
ia64_fls (unsigned long x)
{
        double d = x;
        long exp;

        __asm__ ("getf.exp %0=%1" : "=r"(exp) : "f"(d));
        return exp - 0xffff;
}
# 323 "/data1/src/linux/include/asm/bitops.h"
static __inline__ unsigned long
hweight64 (unsigned long x)
{
        unsigned long result;
        __asm__ ("popcnt %0=%1" : "=r" (result) : "r" (x));
        return result;
}
# 340 "/data1/src/linux/include/asm/bitops.h"
static inline int
find_next_zero_bit (void *addr, unsigned long size, unsigned long offset)
{
        unsigned long *p = ((unsigned long *) addr) + (offset >> 6);
        unsigned long result = offset & ~63UL;
        unsigned long tmp;

        if (offset >= size)
                return size;
        size -= result;
        offset &= 63UL;
        if (offset) {
                tmp = *(p++);
                tmp |= ~0UL >> (64-offset);
                if (size < 64)
                        goto found_first;
                if (~tmp)
                        goto found_middle;
                size -= 64;
                result += 64;
        }
        while (size & ~63UL) {
                if (~(tmp = *(p++)))
                        goto found_middle;
                result += 64;
                size -= 64;
        }
        if (!size)
                return result;
        tmp = *p;
found_first:
        tmp |= ~0UL << size;
found_middle:
        return result + ffz(tmp);
}
# 405 "/data1/src/linux/include/asm/bitops.h"
static inline int
sched_find_first_zero_bit (char *bitmap)
{




        u64 *b = (u64 *) bitmap;
        u64 rt;

        rt = b[0] & b[1];
        if (__builtin_expect((rt != 0xffffffffffffffff),0))
                return find_next_zero_bit((bitmap), (128), 0);

        return ffz(b[2]) + 128;
}
# 16 "/data1/src/linux/include/asm/spinlock.h" 2
# 70 "/data1/src/linux/include/asm/spinlock.h"
typedef struct {
        volatile unsigned int lock;
} spinlock_t;
# 105 "/data1/src/linux/include/asm/spinlock.h"
typedef struct {
        volatile int read_counter:31;
        volatile int write_lock:1;
} rwlock_t;
# 40 "/data1/src/linux/include/linux/spinlock.h" 2
# 138 "/data1/src/linux/include/linux/spinlock.h"
extern int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
# 17 "/data1/src/linux/include/linux/wait.h" 2





struct __wait_queue {
        unsigned int flags;

        struct task_struct * task;
        struct list_head task_list;
};
typedef struct __wait_queue wait_queue_t;
# 64 "/data1/src/linux/include/linux/wait.h"
struct __wait_queue_head {
        spinlock_t lock;
        struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;
# 89 "/data1/src/linux/include/linux/wait.h"
static inline void init_waitqueue_head(wait_queue_head_t *q)
{
        q->lock = (spinlock_t) { 0 };
        do { (&q->task_list)->next = (&q->task_list); (&q->task_list)->prev = (&q->task_list); } while (0);
}

static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p)
{
        q->flags = 0;
        q->task = p;
}

static inline int waitqueue_active(wait_queue_head_t *q)
{
        return !list_empty(&q->task_list);
}

static inline void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new)
{
        list_add(&new->task_list, &head->task_list);
}




static inline void __add_wait_queue_tail(wait_queue_head_t *head,
                                                wait_queue_t *new)
{
        list_add_tail(&new->task_list, &head->task_list);
}

static inline void __remove_wait_queue(wait_queue_head_t *head,
                                                        wait_queue_t *old)
{
        list_del(&old->task_list);
}
# 13 "/data1/src/linux/include/linux/fs.h" 2

# 1 "/data1/src/linux/include/linux/vfs.h" 1



# 1 "/data1/src/linux/include/asm/statfs.h" 1
# 11 "/data1/src/linux/include/asm/statfs.h"
   typedef __kernel_fsid_t fsid_t;


struct statfs {
        long f_type;
        long f_bsize;
        long f_blocks;
        long f_bfree;
        long f_bavail;
        long f_files;
        long f_ffree;
        __kernel_fsid_t f_fsid;
        long f_namelen;
        long f_spare[6];
};
# 5 "/data1/src/linux/include/linux/vfs.h" 2
# 15 "/data1/src/linux/include/linux/fs.h" 2
# 1 "/data1/src/linux/include/linux/net.h" 1
# 22 "/data1/src/linux/include/linux/net.h"
# 1 "/data1/src/linux/include/linux/socket.h" 1





# 1 "/data1/src/linux/include/asm/socket.h" 1
# 11 "/data1/src/linux/include/asm/socket.h"
# 1 "/data1/src/linux/include/asm/sockios.h" 1
# 12 "/data1/src/linux/include/asm/socket.h" 2
# 7 "/data1/src/linux/include/linux/socket.h" 2
# 1 "/data1/src/linux/include/linux/sockios.h" 1
# 8 "/data1/src/linux/include/linux/socket.h" 2
# 1 "/data1/src/linux/include/linux/uio.h" 1
# 19 "/data1/src/linux/include/linux/uio.h"
struct iovec
{
        void *iov_base;
        __kernel_size_t iov_len;
};
# 9 "/data1/src/linux/include/linux/socket.h" 2


typedef unsigned short sa_family_t;





struct sockaddr {
        sa_family_t sa_family;
        char sa_data[14];
};

struct linger {
        int l_onoff;
        int l_linger;
};







struct msghdr {
        void * msg_name;
        int msg_namelen;
        struct iovec * msg_iov;
        __kernel_size_t msg_iovlen;
        void * msg_control;
        __kernel_size_t msg_controllen;
        unsigned msg_flags;
};







struct cmsghdr {
        __kernel_size_t cmsg_len;
        int cmsg_level;
        int cmsg_type;
};
# 102 "/data1/src/linux/include/linux/socket.h"
static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
                                               struct cmsghdr *__cmsg)
{
        struct cmsghdr * __ptr;

        __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_len)+sizeof(long)-1) & ~(sizeof(long)-1) ));
        if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)
                return (struct cmsghdr *)0;

        return __ptr;
}

static inline struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)
{
        return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
}







struct ucred {
        __u32 pid;
        __u32 uid;
        __u32 gid;
};
# 249 "/data1/src/linux/include/linux/socket.h"
extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov,
                                int offset, int len);
extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
                                          struct iovec *iov,
                                          int offset,
                                          unsigned int len, int *csump);

extern int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode);
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
extern void memcpy_tokerneliovec(struct iovec *iov, unsigned char *kdata, int len);
extern int move_addr_to_user(void *kaddr, int klen, void *uaddr, int *ulen);
extern int move_addr_to_kernel(void *uaddr, int ulen, void *kaddr);
extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
# 23 "/data1/src/linux/include/linux/net.h" 2


struct poll_table_struct;
# 49 "/data1/src/linux/include/linux/net.h"
typedef enum {
  SS_FREE = 0,
  SS_UNCONNECTED,
  SS_CONNECTING,
  SS_CONNECTED,
  SS_DISCONNECTING
} socket_state;
# 65 "/data1/src/linux/include/linux/net.h"
struct socket
{
        socket_state state;

        unsigned long flags;
        struct proto_ops *ops;
        struct inode *inode;
        struct fasync_struct *fasync_list;
        struct file *file;
        struct sock *sk;
        wait_queue_head_t wait;

        short type;
        unsigned char passcred;
};



struct scm_cookie;
struct vm_area_struct;
struct page;

struct proto_ops {
  int family;

  int (*release) (struct socket *sock);
  int (*bind) (struct socket *sock, struct sockaddr *umyaddr,
                         int sockaddr_len);
  int (*connect) (struct socket *sock, struct sockaddr *uservaddr,
                         int sockaddr_len, int flags);
  int (*socketpair) (struct socket *sock1, struct socket *sock2);
  int (*accept) (struct socket *sock, struct socket *newsock,
                         int flags);
  int (*getname) (struct socket *sock, struct sockaddr *uaddr,
                         int *usockaddr_len, int peer);
  unsigned int (*poll) (struct file *file, struct socket *sock, struct poll_table_struct *wait);
  int (*ioctl) (struct socket *sock, unsigned int cmd,
                         unsigned long arg);
  int (*listen) (struct socket *sock, int len);
  int (*shutdown) (struct socket *sock, int flags);
  int (*setsockopt) (struct socket *sock, int level, int optname,
                         char *optval, int optlen);
  int (*getsockopt) (struct socket *sock, int level, int optname,
                         char *optval, int *optlen);
  int (*sendmsg) (struct socket *sock, struct msghdr *m, int total_len, struct scm_cookie *scm);
  int (*recvmsg) (struct socket *sock, struct msghdr *m, int total_len, int flags, struct scm_cookie *scm);
  int (*mmap) (struct file *file, struct socket *sock, struct vm_area_struct * vma);
  ssize_t (*sendpage) (struct socket *sock, struct page *page, int offset, size_t size, int flags);
};

struct net_proto_family
{
        int family;
        int (*create)(struct socket *sock, int protocol);


        short authentication;
        short encryption;
        short encrypt_net;
};

struct net_proto
{
        const char *name;
        void (*init_func)(struct net_proto *);
};

extern int sock_wake_async(struct socket *sk, int how, int band);
extern int sock_register(struct net_proto_family *fam);
extern int sock_unregister(int family);
extern struct socket *sock_alloc(void);
extern int sock_create(int family, int type, int proto, struct socket **);
extern void sock_release(struct socket *);
extern int sock_sendmsg(struct socket *, struct msghdr *m, int len);
extern int sock_recvmsg(struct socket *, struct msghdr *m, int len, int flags);
extern int sock_readv_writev(int type, struct inode * inode, struct file * file,
                                  const struct iovec * iov, long count, long size);

extern int net_ratelimit(void);
extern unsigned long net_random(void);
extern void net_srandom(unsigned long);
# 16 "/data1/src/linux/include/linux/fs.h" 2
# 1 "/data1/src/linux/include/linux/kdev_t.h" 1
# 73 "/data1/src/linux/include/linux/kdev_t.h"
typedef struct {
        unsigned short value;
} kdev_t;
# 89 "/data1/src/linux/include/linux/kdev_t.h"
static inline unsigned int kdev_val(kdev_t dev)
{
        return dev.value;
}

static inline kdev_t val_to_kdev(unsigned int val)
{
        kdev_t dev;
        dev.value = val;
        return dev;
}





extern const char * kdevname(kdev_t);

static inline int kdev_same(kdev_t dev1, kdev_t dev2)
{
        return dev1.value == dev2.value;
}
# 130 "/data1/src/linux/include/linux/kdev_t.h"
static inline int kdev_t_to_nr(kdev_t dev)
{
        return ((((((dev).value >> 8) & 0xff)) << 8) | (((dev).value & 0xff)));
}

static inline kdev_t to_kdev_t(int dev)
{
        return ((kdev_t) { (((((unsigned int) ((dev) >> 8))) << 8) + (((unsigned int) ((dev) & ((1U << 8) - 1))))) } );
}
# 17 "/data1/src/linux/include/linux/fs.h" 2
# 1 "/data1/src/linux/include/linux/ioctl.h" 1



# 1 "/data1/src/linux/include/asm/ioctl.h" 1
# 5 "/data1/src/linux/include/linux/ioctl.h" 2
# 18 "/data1/src/linux/include/linux/fs.h" 2

# 1 "/data1/src/linux/include/linux/dcache.h" 1






# 1 "/data1/src/linux/include/linux/mount.h" 1
# 19 "/data1/src/linux/include/linux/mount.h"
struct vfsmount
{
        struct list_head mnt_hash;
        struct vfsmount *mnt_parent;
        struct dentry *mnt_mountpoint;
        struct dentry *mnt_root;
        struct super_block *mnt_sb;
        struct list_head mnt_mounts;
        struct list_head mnt_child;
        atomic_t mnt_count;
        int mnt_flags;
        char *mnt_devname;
        struct list_head mnt_list;
};

static inline struct vfsmount *mntget(struct vfsmount *mnt)
{
        if (mnt)
                ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&mnt->mnt_count)))->counter)) *_v = (&(((&mnt->mnt_count)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case !
-4: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia6!
4_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&mnt->mnt_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); !
break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&mnt->mnt_count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&mnt->mnt_count))));
        return mnt;
}

extern void __mntput(struct vfsmount *mnt);

static inline void mntput(struct vfsmount *mnt)
{
        if (mnt) {
                if ((((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&mnt->mnt_count))->counter)) *_v = (&((&mnt->mnt_count))->counter); switch (-(1)) { case -16: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeo!
f(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); b!
reak; case 4: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&mnt->mnt_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_i!
a64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&mnt->mnt_count))->counter)) (_tmp + (-(1))); }) : ia64_atomic_sub(1, (&mnt->mnt_count))) == 0))
                        __mntput(mnt);
        }
}
# 8 "/data1/src/linux/include/linux/dcache.h" 2
# 24 "/data1/src/linux/include/linux/dcache.h"
struct qstr {
        const unsigned char * name;
        unsigned int len;
        unsigned int hash;
};

struct dentry_stat_t {
        int nr_dentry;
        int nr_unused;
        int age_limit;
        int want_pages;
        int dummy[2];
};
extern struct dentry_stat_t dentry_stat;






static __inline__ unsigned long partial_name_hash(unsigned long c, unsigned long prevhash)
{
        return (prevhash + (c << 4) + (c >> 4)) * 11;
}


static __inline__ unsigned long end_name_hash(unsigned long hash)
{
        return (unsigned int) hash;
}


static __inline__ unsigned int full_name_hash(const unsigned char * name, unsigned int len)
{
        unsigned long hash = 0;
        while (len--)
                hash = partial_name_hash(*name++, hash);
        return end_name_hash(hash);
}



struct dentry {
        atomic_t d_count;
        unsigned int d_flags;
        struct inode * d_inode;
        struct dentry * d_parent;
        struct list_head d_hash;
        struct list_head d_lru;
        struct list_head d_child;
        struct list_head d_subdirs;
        struct list_head d_alias;
        int d_mounted;
        struct qstr d_name;
        unsigned long d_time;
        struct dentry_operations *d_op;
        struct super_block * d_sb;
        unsigned long d_vfs_flags;
        void * d_fsdata;
        unsigned char d_iname[16];
};

struct dentry_operations {
        int (*d_revalidate)(struct dentry *, int);
        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 *);
};
# 127 "/data1/src/linux/include/linux/dcache.h"
extern spinlock_t dcache_lock;
# 146 "/data1/src/linux/include/linux/dcache.h"
static __inline__ void d_drop(struct dentry * dentry)
{
        __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&dcache_lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
        list_del(&dentry->d_hash);
        do { (&dentry->d_hash)->next = (&dentry->d_hash); (&dentry->d_hash)->prev = (&dentry->d_hash); } while (0);
        do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &dcache_lock)->lock = 0; } while (0);
}

static __inline__ int dname_external(struct dentry *d)
{
        return d->d_name.name != d->d_iname;
}




extern void d_instantiate(struct dentry *, struct inode *);
extern void d_delete(struct dentry *);


extern struct dentry * d_alloc(struct dentry *, const struct qstr *);
extern void shrink_dcache_sb(struct super_block *);
extern void shrink_dcache_parent(struct dentry *);
extern int d_invalidate(struct dentry *);


struct zone_struct;

extern int shrink_dcache_memory(int, unsigned int);
extern void prune_dcache(int);


extern int shrink_icache_memory(int, int);
extern void prune_icache(int);


extern int shrink_dqcache_memory(int, unsigned int);


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 *);
# 210 "/data1/src/linux/include/linux/dcache.h"
static __inline__ void d_add(struct dentry * entry, struct inode * inode)
{
        d_instantiate(entry, inode);
        d_rehash(entry);
}


extern void d_move(struct dentry *, struct dentry *);


extern struct dentry * d_lookup(struct dentry *, struct qstr *);


extern int d_validate(struct dentry *, struct dentry *);

extern char * __d_path(struct dentry *, struct vfsmount *, struct dentry *,
        struct vfsmount *, char *, int);
# 243 "/data1/src/linux/include/linux/dcache.h"
static __inline__ struct dentry * dget(struct dentry *dentry)
{
        if (dentry) {
                if (!((&dentry->d_count)->counter))
                        do { printk("kernel BUG at %s:%d!\n", "/data1/src/linux/include/linux/dcache.h", 247); *(int *)0=0; } while (0);
                ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&dentry->d_count)))->counter)) *_v = (&(((&dentry->d_count)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; c!
ase -4: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_!
for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&dentry->d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&dentry-
>Release-Note:
>Audit-Trail:
>Unformatted:
 >d_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "!
 memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&dentry->d_count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&dentry->d_count))) );
         }
         return dentry;
 }
 
 extern struct dentry * dget_locked(struct dentry *);
 # 262 "/data1/src/linux/include/linux/dcache.h"
 static __inline__ int d_unhashed(struct dentry *dentry)
 {
         return list_empty(&dentry->d_hash);
 }
 
 extern void dput(struct dentry *);
 
 static __inline__ int d_mountpoint(struct dentry *dentry)
 {
         return dentry->d_mounted;
 }
 
 extern struct vfsmount *lookup_mnt(struct vfsmount *, struct dentry *);
 # 20 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/stat.h" 1
 
 
 
 
 
 # 1 "/data1/src/linux/include/asm/stat.h" 1
 # 9 "/data1/src/linux/include/asm/stat.h"
 struct stat {
         unsigned long st_dev;
         unsigned long st_ino;
         unsigned long st_nlink;
         unsigned int st_mode;
         unsigned int st_uid;
         unsigned int st_gid;
         unsigned int __pad0;
         unsigned long st_rdev;
         unsigned long st_size;
         unsigned long st_atime;
         unsigned long __reserved0;
         unsigned long st_mtime;
         unsigned long __reserved1;
         unsigned long st_ctime;
         unsigned long __reserved2;
         unsigned long st_blksize;
         long st_blocks;
         unsigned long __unused[3];
 };
 
 struct ia64_oldstat {
         unsigned int st_dev;
         unsigned int st_ino;
         unsigned int st_mode;
         unsigned int st_nlink;
         unsigned int st_uid;
         unsigned int st_gid;
         unsigned int st_rdev;
         unsigned int __pad1;
         unsigned long st_size;
         unsigned long st_atime;
         unsigned long st_mtime;
         unsigned long st_ctime;
         unsigned int st_blksize;
         int st_blocks;
         unsigned int __unused1;
         unsigned int __unused2;
 };
 # 7 "/data1/src/linux/include/linux/stat.h" 2
 # 21 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/cache.h" 1
 # 22 "/data1/src/linux/include/linux/fs.h" 2
 
 # 1 "/data1/src/linux/include/linux/string.h" 1
 # 15 "/data1/src/linux/include/linux/string.h"
 extern char * ___strtok;
 extern char * strpbrk(const char *,const char *);
 extern char * strtok(char *,const char *);
 extern char * strsep(char **,const char *);
 extern __kernel_size_t strspn(const char *,const char *);
 
 
 
 
 
 # 1 "/data1/src/linux/include/asm/string.h" 1
 # 19 "/data1/src/linux/include/asm/string.h"
 extern __kernel_size_t strlen (const char *);
 extern void *memset (void *, int, __kernel_size_t);
 extern void *memcpy (void *, const void *, __kernel_size_t);
 # 26 "/data1/src/linux/include/linux/string.h" 2
 
 
 extern char * strcpy(char *,const char *);
 
 
 extern char * strncpy(char *,const char *, __kernel_size_t);
 
 
 extern char * strcat(char *, const char *);
 
 
 extern char * strncat(char *, const char *, __kernel_size_t);
 
 
 extern int strcmp(const char *,const char *);
 
 
 extern int strncmp(const char *,const char *,__kernel_size_t);
 
 
 extern int strnicmp(const char *, const char *, __kernel_size_t);
 
 
 extern char * strchr(const char *,int);
 
 
 extern char * strrchr(const char *,int);
 
 
 extern char * strstr(const char *,const char *);
 
 
 
 
 
 extern __kernel_size_t strnlen(const char *,__kernel_size_t);
 # 71 "/data1/src/linux/include/linux/string.h"
 extern void * memmove(void *,const void *,__kernel_size_t);
 
 
 extern void * memscan(void *,int,__kernel_size_t);
 
 
 extern int memcmp(const void *,const void *,__kernel_size_t);
 
 
 extern void * memchr(const void *,int,__kernel_size_t);
 
 extern char * kstrdup(const char *,int);
 # 24 "/data1/src/linux/include/linux/fs.h" 2
 
 
 
 
 struct poll_table_struct;
 # 50 "/data1/src/linux/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;
 
 struct inodes_stat_t {
         int nr_inodes;
         int nr_unused;
         int dummy[5];
 };
 extern struct inodes_stat_t inodes_stat;
 
 extern int leases_enable, dir_notify_enable, lease_break_time;
 # 202 "/data1/src/linux/include/linux/fs.h"
 # 1 "/data1/src/linux/include/asm/semaphore.h" 1
 # 10 "/data1/src/linux/include/asm/semaphore.h"
 # 1 "/data1/src/linux/include/linux/rwsem.h" 1
 # 22 "/data1/src/linux/include/linux/rwsem.h"
 struct rw_semaphore;
 
 
 # 1 "/data1/src/linux/include/linux/rwsem-spinlock.h" 1
 # 22 "/data1/src/linux/include/linux/rwsem-spinlock.h"
 struct rwsem_waiter;
 # 31 "/data1/src/linux/include/linux/rwsem-spinlock.h"
 struct rw_semaphore {
         __s32 activity;
         spinlock_t wait_lock;
         struct list_head wait_list;
 
 
 
 };
 # 55 "/data1/src/linux/include/linux/rwsem-spinlock.h"
 extern void init_rwsem(struct rw_semaphore *sem);
 extern void __down_read(struct rw_semaphore *sem);
 extern void __down_write(struct rw_semaphore *sem);
 extern void __up_read(struct rw_semaphore *sem);
 extern void __up_write(struct rw_semaphore *sem);
 # 26 "/data1/src/linux/include/linux/rwsem.h" 2
 # 41 "/data1/src/linux/include/linux/rwsem.h"
 static inline void down_read(struct rw_semaphore *sem)
 {
         ;
         __down_read(sem);
         ;
 }
 
 
 
 
 static inline void down_write(struct rw_semaphore *sem)
 {
         ;
         __down_write(sem);
         ;
 }
 
 
 
 
 static inline void up_read(struct rw_semaphore *sem)
 {
         ;
         __up_read(sem);
         ;
 }
 
 
 
 
 static inline void up_write(struct rw_semaphore *sem)
 {
         ;
         __up_write(sem);
         ;
 }
 # 11 "/data1/src/linux/include/asm/semaphore.h" 2
 
 
 
 struct semaphore {
         atomic_t count;
         int sleepers;
         wait_queue_head_t wait;
 
 
 
 };
 # 43 "/data1/src/linux/include/asm/semaphore.h"
 static inline void
 sema_init (struct semaphore *sem, int val)
 {
         *sem = (struct semaphore) { ((atomic_t) { (val) }), 0, { lock: (spinlock_t) { 0 }, task_list: { &((*sem).wait).task_list, &((*sem).wait).task_list } } };
 }
 
 static inline void
 init_MUTEX (struct semaphore *sem)
 {
         sema_init(sem, 1);
 }
 
 static inline void
 init_MUTEX_LOCKED (struct semaphore *sem)
 {
         sema_init(sem, 0);
 }
 
 extern void __down (struct semaphore * sem);
 extern int __down_interruptible (struct semaphore * sem);
 extern int __down_trylock (struct semaphore * sem);
 extern void __up (struct semaphore * sem);
 
 
 
 
 
 static inline void
 down (struct semaphore *sem)
 {
 
 
 
         if (((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&sem->count))->counter)) *_v = (&((&sem->count))->counter); switch ( -(1)) { case -16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r" (_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory") ; break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&((&sem->count))->cou!
 nter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia 64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1] ,%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v) , "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&((!
 &sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: _ _bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchad d8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_ tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp =!
  __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&sem->count))->counter)) (_tmp + (-(1))); }) : ia64_atomic_sub(1, (&sem->count))) < 0)
                 __down(sem);
 }
 
 
 
 
 
 static inline int
 down_interruptible (struct semaphore * sem)
 {
         int ret = 0;
 
 
 
 
         if (((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&sem->count))->counter)) *_v = (&((&sem->count))->counter); switch ( -(1)) { case -16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r" (_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory") ; break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&((&sem->count))->cou!
 nter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia 64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1] ,%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v) , "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&((!
 &sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: _ _bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchad d8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_ tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp =!
  __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&sem->count))->counter)) (_tmp + (-(1))); }) : ia64_atomic_sub(1, (&sem->count))) < 0)
                 ret = __down_interruptible(sem);
         return ret;
 }
 
 static inline int
 down_trylock (struct semaphore *sem)
 {
         int ret = 0;
 
 
 
 
         if (((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&sem->count))->counter)) *_v = (&((&sem->count))->counter); switch ( -(1)) { case -16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r" (_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory") ; break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&((&sem->count))->cou!
 nter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia 64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1] ,%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v) , "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&((!
 &sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: _ _bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchad d8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_ tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp =!
  __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&sem->count))->counter)) (_tmp + (-(1))); }) : ia64_atomic_sub(1, (&sem->count))) < 0)
                 ret = __down_trylock(sem);
         return ret;
 }
 
 static inline void
 up (struct semaphore * sem)
 {
 
 
 
         if (((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&sem->count))->counter)) *_v = (&((&sem->count))->counter); switch ( 1) { case -16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v ), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); b reak; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&((&sem->count))->counte!
 r))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_ fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2 " : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), " i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&((&se!
 m->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __ba d_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&sem->count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp ) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __!
 bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&sem->count))->counter)) (_tmp + (1)); }) : ia64_atomic_add(1, (&sem->count))) <= 0)
                 __up(sem);
 }
 # 203 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/asm/byteorder.h" 1
 # 11 "/data1/src/linux/include/asm/byteorder.h"
 static __inline__ __const__ __u64
 __ia64_swab64 (__u64 x)
 {
         __u64 result;
 
         __asm__ ("mux1 %0=%1,@rev" : "=r" (result) : "r" (x));
         return result;
 }
 
 static __inline__ __const__ __u32
 __ia64_swab32 (__u32 x)
 {
         return __ia64_swab64(x) >> 32;
 }
 
 static __inline__ __const__ __u16
 __ia64_swab16(__u16 x)
 {
         return __ia64_swab64(x) >> 48;
 }
 
 
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/byteorder/little_endian.h" 1
 # 11 "/data1/src/linux/include/linux/byteorder/little_endian.h"
 # 1 "/data1/src/linux/include/linux/byteorder/swab.h" 1
 # 131 "/data1/src/linux/include/linux/byteorder/swab.h"
 static __inline__ __const__ __u16 __fswab16(__u16 x)
 {
         return __ia64_swab16(x);
 }
 static __inline__ __u16 __swab16p(__u16 *x)
 {
         return __ia64_swab16(*(x));
 }
 static __inline__ void __swab16s(__u16 *addr)
 {
         do { *(addr) = __ia64_swab16(*((addr))); } while (0);
 }
 
 static __inline__ __const__ __u32 __fswab32(__u32 x)
 {
         return __ia64_swab32(x);
 }
 static __inline__ __u32 __swab32p(__u32 *x)
 {
         return __ia64_swab32(*(x));
 }
 static __inline__ void __swab32s(__u32 *addr)
 {
         do { *(addr) = __ia64_swab32(*((addr))); } while (0);
 }
 
 
 static __inline__ __const__ __u64 __fswab64(__u64 x)
 {
 
 
 
 
 
         return __ia64_swab64(x);
 
 }
 static __inline__ __u64 __swab64p(__u64 *x)
 {
         return __ia64_swab64(*(x));
 }
 static __inline__ void __swab64s(__u64 *addr)
 {
         do { *(addr) = __ia64_swab64(*((addr))); } while (0);
 }
 # 12 "/data1/src/linux/include/linux/byteorder/little_endian.h" 2
 # 66 "/data1/src/linux/include/linux/byteorder/little_endian.h"
 # 1 "/data1/src/linux/include/linux/byteorder/generic.h" 1
 # 150 "/data1/src/linux/include/linux/byteorder/generic.h"
 extern __u32 ntohl(__u32);
 extern __u32 htonl(__u32);
 
 
 
 
 extern unsigned short int ntohs(unsigned short int);
 extern unsigned short int htons(unsigned short int);
 # 67 "/data1/src/linux/include/linux/byteorder/little_endian.h" 2
 # 39 "/data1/src/linux/include/asm/byteorder.h" 2
 # 204 "/data1/src/linux/include/linux/fs.h" 2
 
 extern void update_atime (struct inode *);
 
 
 extern void buffer_init(unsigned long);
 extern void inode_init(unsigned long);
 extern void mnt_init(unsigned long);
 
 
 enum bh_state_bits {
         BH_Uptodate,
         BH_Dirty,
         BH_Lock,
         BH_Req,
         BH_Mapped,
         BH_New,
         BH_Async,
         BH_Wait_IO,
         BH_launder,
         BH_JBD,
 
         BH_PrivateStart,
 
 
 };
 # 241 "/data1/src/linux/include/linux/fs.h"
 struct buffer_head {
 
         struct buffer_head *b_next;
         sector_t b_blocknr;
         unsigned short b_size;
         unsigned short b_list;
         kdev_t b_dev;
         struct block_device *b_bdev;
 
         atomic_t b_count;
         unsigned long b_state;
         unsigned long b_flushtime;
 
         struct buffer_head *b_next_free;
         struct buffer_head *b_prev_free;
         struct buffer_head *b_this_page;
         struct buffer_head **b_pprev;
         char * b_data;
         struct page *b_page;
         void (*b_end_io)(struct buffer_head *bh, int uptodate);
         void *b_private;
 
         wait_queue_head_t b_wait;
 
         struct inode * b_inode;
         struct list_head b_inode_buffers;
 };
 
 typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
 void init_buffer(struct buffer_head *, bh_end_io_t *, void *);
 # 284 "/data1/src/linux/include/linux/fs.h"
 extern void set_bh_page(struct buffer_head *bh, struct page *page, unsigned long offset);
 
 
 
 
 # 1 "/data1/src/linux/include/linux/pipe_fs_i.h" 1
 
 
 
 
 struct pipe_inode_info {
         wait_queue_head_t wait;
         char *base;
         unsigned int len;
         unsigned int start;
         unsigned int readers;
         unsigned int writers;
         unsigned int waiting_readers;
         unsigned int waiting_writers;
         unsigned int r_counter;
         unsigned int w_counter;
 };
 # 42 "/data1/src/linux/include/linux/pipe_fs_i.h"
 void pipe_wait(struct inode * inode);
 
 struct inode* pipe_new(struct inode* inode);
 # 290 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/minix_fs_i.h" 1
 
 
 
 
 
 
 struct minix_inode_info {
         union {
                 __u16 i1_data[16];
                 __u32 i2_data[16];
         } u;
 };
 # 291 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ext2_fs_i.h" 1
 # 22 "/data1/src/linux/include/linux/ext2_fs_i.h"
 struct ext2_inode_info {
         __u32 i_data[15];
         __u32 i_flags;
         __u32 i_faddr;
         __u8 i_frag_no;
         __u8 i_frag_size;
         __u16 i_osync;
         __u32 i_file_acl;
         __u32 i_dir_acl;
         __u32 i_dtime;
         __u32 i_block_group;
         __u32 i_next_alloc_block;
         __u32 i_next_alloc_goal;
         __u32 i_prealloc_block;
         __u32 i_prealloc_count;
         __u32 i_dir_start_lookup;
         int i_new_inode:1;
 };
 # 292 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ext3_fs_i.h" 1
 # 24 "/data1/src/linux/include/linux/ext3_fs_i.h"
 struct ext3_inode_info {
         __u32 i_data[15];
         __u32 i_flags;
 
 
 
 
 
 
         __u32 i_file_acl;
         __u32 i_dir_acl;
         __u32 i_dtime;
         __u32 i_block_group;
         __u32 i_state;
         __u32 i_next_alloc_block;
         __u32 i_next_alloc_goal;
 
 
 
 
         __u32 i_dir_start_lookup;
 
         struct list_head i_orphan;
 # 63 "/data1/src/linux/include/linux/ext3_fs_i.h"
         loff_t i_disksize;
 # 75 "/data1/src/linux/include/linux/ext3_fs_i.h"
         struct rw_semaphore truncate_sem;
 };
 # 293 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/hpfs_fs_i.h" 1
 
 
 
 struct hpfs_inode_info {
         unsigned long mmu_private;
         ino_t i_parent_dir;
         unsigned i_dno;
         unsigned i_dpos;
         unsigned i_dsubdno;
         unsigned i_file_sec;
         unsigned i_disk_sec;
         unsigned i_n_secs;
         unsigned i_ea_size;
         unsigned i_conv : 2;
         unsigned i_ea_mode : 1;
         unsigned i_ea_uid : 1;
         unsigned i_ea_gid : 1;
         unsigned i_dirty : 1;
         struct semaphore i_sem;
         loff_t **i_rddir_off;
 };
 # 294 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ntfs_fs_i.h" 1
 
 
 
 
 
 
 struct ntfs_attribute;
 struct ntfs_sb_info;
 
 
 
 
 typedef u8 ntfs_u8;
 typedef u16 ntfs_u16;
 typedef u32 ntfs_u32;
 typedef u64 ntfs_u64;
 typedef s8 ntfs_s8;
 typedef s16 ntfs_s16;
 typedef s32 ntfs_s32;
 typedef s64 ntfs_s64;
 
 
 
 
 typedef __kernel_mode_t ntmode_t;
 
 
 
 typedef uid_t ntfs_uid_t;
 
 
 
 typedef gid_t ntfs_gid_t;
 
 
 
 typedef __kernel_size_t ntfs_size_t;
 
 
 
 typedef __kernel_time_t ntfs_time_t;
 
 
 
 
 
 typedef u16 ntfs_wchar_t;
 
 
 
 
 typedef s64 ntfs_offset_t;
 
 
 
 
 typedef u64 ntfs_time64_t;
 # 69 "/data1/src/linux/include/linux/ntfs_fs_i.h"
 typedef s32 ntfs_cluster_t;
 
 
 
 struct ntfs_inode_info {
         struct ntfs_sb_info *vol;
         unsigned long i_number;
         __u16 sequence_number;
         unsigned char *attr;
         int attr_count;
         struct ntfs_attribute *attrs;
         int record_count;
         int *records;
 
         union {
                 struct {
                         int recordsize;
                         int clusters_per_record;
                 } index;
         } u;
 };
 # 295 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/msdos_fs_i.h" 1
 
 
 
 
 
 
 
 struct msdos_inode_info {
         unsigned long mmu_private;
         int i_start;
         int i_logstart;
         int i_attrs;
         int i_ctime_ms;
         int i_location;
         struct inode *i_fat_inode;
         struct list_head i_fat_hash;
 };
 # 296 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/umsdos_fs_i.h" 1
 # 39 "/data1/src/linux/include/linux/umsdos_fs_i.h"
 struct dir_locking_info {
         wait_queue_head_t p;
         short int looking;
         short int creating;
 
 
 
         long pid;
 
 };
 
 struct umsdos_inode_info {
         struct msdos_inode_info msdos_info;
         struct dir_locking_info dir_info;
         int i_patched;
         int i_is_hlink;
         off_t pos;
 };
 # 297 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/iso_fs_i.h" 1
 
 
 
 enum isofs_file_format {
         isofs_file_normal = 0,
         isofs_file_sparse = 1,
         isofs_file_compressed = 2,
 };
 
 
 
 
 struct iso_inode_info {
         unsigned int i_first_extent;
         unsigned char i_file_format;
         unsigned char i_format_parm[3];
         unsigned long i_next_section_ino;
         off_t i_section_size;
 };
 # 298 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/nfs_fs_i.h" 1
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/nfs.h" 1
 # 10 "/data1/src/linux/include/linux/nfs.h"
 # 1 "/data1/src/linux/include/linux/sunrpc/msg_prot.h" 1
 # 14 "/data1/src/linux/include/linux/sunrpc/msg_prot.h"
 enum rpc_auth_flavor {
         RPC_AUTH_NULL = 0,
         RPC_AUTH_UNIX = 1,
         RPC_AUTH_SHORT = 2,
         RPC_AUTH_DES = 3,
         RPC_AUTH_KRB = 4,
 };
 
 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
 };
 
 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
 };
 # 11 "/data1/src/linux/include/linux/nfs.h" 2
 # 41 "/data1/src/linux/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
  };
 
 
 
 enum nfs_ftype {
         NFNON = 0,
         NFREG = 1,
         NFDIR = 2,
         NFBLK = 3,
         NFCHR = 4,
         NFLNK = 5,
         NFSOCK = 6,
         NFBAD = 7,
         NFFIFO = 8
 };
 
 
 
 
 
 
 struct nfs_fh {
         unsigned short size;
         unsigned char data[64];
 };
 # 107 "/data1/src/linux/include/linux/nfs.h"
 enum nfs3_stable_how {
         NFS_UNSTABLE = 0,
         NFS_DATA_SYNC = 1,
         NFS_FILE_SYNC = 2
 };
 # 7 "/data1/src/linux/include/linux/nfs_fs_i.h" 2
 
 
 
 
 struct nfs_inode_info {
 
 
 
         __u64 fsid;
         __u64 fileid;
 
 
 
 
         struct nfs_fh fh;
 
 
 
 
         unsigned short flags;
 # 45 "/data1/src/linux/include/linux/nfs_fs_i.h"
         unsigned long read_cache_jiffies;
         __u64 read_cache_ctime;
         __u64 read_cache_mtime;
         __u64 read_cache_isize;
         unsigned long attrtimeo;
         unsigned long attrtimeo_timestamp;
 
 
 
 
 
         __u32 cookieverf[2];
 
 
 
 
         struct list_head read;
         struct list_head dirty;
         struct list_head commit;
         struct list_head writeback;
 
         unsigned int nread,
                                 ndirty,
                                 ncommit,
                                 npages;
 
 
         struct inode *hash_next,
                                 *hash_prev;
         unsigned long nextscan;
 
 
         struct rpc_cred *mm_cred;
 };
 # 92 "/data1/src/linux/include/linux/nfs_fs_i.h"
 struct nfs_lock_info {
         u32 state;
         u32 flags;
         struct nlm_host *host;
 };
 # 299 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/sysv_fs_i.h" 1
 
 
 
 
 
 
 struct sysv_inode_info {
         u32 i_data[10+1+1+1];
 
 
 
 
         u32 i_dir_start_lookup;
 };
 # 300 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/affs_fs_i.h" 1
 
 
 
 # 1 "/data1/src/linux/include/linux/a.out.h" 1
 
 
 
 
 
 
 
 # 1 "/data1/src/linux/include/asm/a.out.h" 1
 # 16 "/data1/src/linux/include/asm/a.out.h"
 struct exec {
         unsigned long a_info;
         unsigned long a_text;
         unsigned long a_data;
         unsigned long a_bss;
         unsigned long a_entry;
 };
 # 9 "/data1/src/linux/include/linux/a.out.h" 2
 
 
 
 
 enum machine_type {
 
 
 
   M_OLDSUN2 = 0,
 
 
 
 
   M_68010 = 1,
 
 
 
 
   M_68020 = 2,
 
 
 
 
   M_SPARC = 3,
 
 
   M_386 = 100,
   M_MIPS1 = 151,
   M_MIPS2 = 152
 };
 # 157 "/data1/src/linux/include/linux/a.out.h"
 struct nlist {
   union {
     char *n_name;
     struct nlist *n_next;
     long n_strx;
   } n_un;
   unsigned char n_type;
   char n_other;
   short n_desc;
   unsigned long n_value;
 };
 # 235 "/data1/src/linux/include/linux/a.out.h"
 struct relocation_info
 {
 
   int r_address;
 
   unsigned int r_symbolnum:24;
 
 
 
   unsigned int r_pcrel:1;
 
 
   unsigned int r_length:2;
 
 
 
 
 
 
   unsigned int r_extern:1;
 
 
 
 
 
 
 
   unsigned int r_pad:4;
 
 };
 # 5 "/data1/src/linux/include/linux/affs_fs_i.h" 2
 
 
 # 1 "/data1/src/linux/include/linux/time.h" 1
 # 9 "/data1/src/linux/include/linux/time.h"
 struct timespec {
         time_t tv_sec;
         long tv_nsec;
 };
 # 31 "/data1/src/linux/include/linux/time.h"
 static __inline__ unsigned long
 timespec_to_jiffies(struct timespec *value)
 {
         unsigned long sec = value->tv_sec;
         long nsec = value->tv_nsec;
 
         if (sec >= (((~0UL >> 1)-1) / 1024))
                 return ((~0UL >> 1)-1);
         nsec += 1000000000L / 1024 - 1;
         nsec /= 1000000000L / 1024;
         return 1024 * sec + nsec;
 }
 
 static __inline__ void
 jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
 {
         value->tv_nsec = (jiffies % 1024) * (1000000000L / 1024);
         value->tv_sec = jiffies / 1024;
 }
 # 67 "/data1/src/linux/include/linux/time.h"
 static inline unsigned long
 mktime (unsigned int year, unsigned int mon,
         unsigned int day, unsigned int hour,
         unsigned int min, unsigned int sec)
 {
         if (0 >= (int) (mon -= 2)) {
                 mon += 12;
                 year -= 1;
         }
 
         return (((
                 (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
                         year*365 - 719499
             )*24 + hour
           )*60 + min
         )*60 + sec;
 }
 
 
 
 
 struct timeval {
         time_t tv_sec;
         suseconds_t tv_usec;
 };
 
 struct timezone {
         int tz_minuteswest;
         int tz_dsttime;
 };
 
 
 
 
 extern void do_gettimeofday(struct timeval *tv);
 extern void do_settimeofday(struct timeval *tv);
 extern void get_fast_time(struct timeval *tv);
 # 124 "/data1/src/linux/include/linux/time.h"
 struct itimerspec {
         struct timespec it_interval;
         struct timespec it_value;
 };
 
 struct itimerval {
         struct timeval it_interval;
         struct timeval it_value;
 };
 # 8 "/data1/src/linux/include/linux/affs_fs_i.h" 2
 # 17 "/data1/src/linux/include/linux/affs_fs_i.h"
 struct affs_ext_key {
         u32 ext;
         u32 key;
 };
 
 
 
 
 struct affs_inode_info {
         u32 i_opencnt;
         struct semaphore i_link_lock;
         struct semaphore i_ext_lock;
 
         u32 i_blkcnt;
         u32 i_extcnt;
         u32 *i_lc;
         u32 i_lc_size;
         u32 i_lc_shift;
         u32 i_lc_mask;
         struct affs_ext_key *i_ac;
         u32 i_ext_last;
         struct buffer_head *i_ext_bh;
         unsigned long mmu_private;
         u32 i_protect;
         u32 i_lastalloc;
         int i_pa_cnt;
 # 51 "/data1/src/linux/include/linux/affs_fs_i.h"
 };
 # 301 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ufs_fs_i.h" 1
 # 16 "/data1/src/linux/include/linux/ufs_fs_i.h"
 struct ufs_inode_info {
         union {
                 __u32 i_data[15];
                 __u8 i_symlink[4*15];
         } i_u1;
         __u32 i_flags;
         __u32 i_gen;
         __u32 i_shadow;
         __u32 i_unused1;
         __u32 i_unused2;
         __u32 i_oeftflag;
         __u16 i_osync;
         __u32 i_lastfrag;
 };
 # 302 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/efs_fs_i.h" 1
 # 12 "/data1/src/linux/include/linux/efs_fs_i.h"
 typedef int32_t efs_block_t;
 typedef uint32_t efs_ino_t;
 
 
 
 
 
 
 typedef union extent_u {
         unsigned char raw[8];
         struct extent_s {
                 unsigned int ex_magic:8;
                 unsigned int ex_bn:24;
                 unsigned int ex_length:8;
                 unsigned int ex_offset:24;
         } cooked;
 } efs_extent;
 
 typedef struct edevs {
         short odev;
         unsigned int ndev;
 } efs_devs;
 
 
 
 
 
 struct efs_dinode {
         u_short di_mode;
         short di_nlink;
         u_short di_uid;
         u_short di_gid;
         int32_t di_size;
         int32_t di_atime;
         int32_t di_mtime;
         int32_t di_ctime;
         uint32_t di_gen;
         short di_numextents;
         u_char di_version;
         u_char di_spare;
         union di_addr {
                 efs_extent di_extents[12];
                 efs_devs di_dev;
         } di_u;
 };
 
 
 struct efs_inode_info {
         int numextents;
         int lastextent;
 
         efs_extent extents[12];
 };
 # 303 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/coda_fs_i.h" 1
 # 14 "/data1/src/linux/include/linux/coda_fs_i.h"
 # 1 "/data1/src/linux/include/linux/coda.h" 1
 # 109 "/data1/src/linux/include/linux/coda.h"
 typedef unsigned long long u_quad_t;
 # 164 "/data1/src/linux/include/linux/coda.h"
 struct venus_dirent {
         unsigned long d_fileno;
         unsigned short d_reclen;
         unsigned char d_type;
         unsigned char d_namlen;
         char d_name[255 + 1];
 };
 # 198 "/data1/src/linux/include/linux/coda.h"
 typedef u_long VolumeId;
 typedef u_long VnodeId;
 typedef u_long Unique_t;
 typedef u_long FileVersion;
 
 
 
 
 typedef struct ViceFid {
     VolumeId Volume;
     VnodeId Vnode;
     Unique_t Unique;
 } ViceFid;
 
 
 
 
 static __inline__ ino_t coda_f2i(struct ViceFid *fid)
 {
         if ( ! fid )
                 return 0;
         if (fid->Vnode == 0xfffffffe || fid->Vnode == 0xffffffff)
                 return ((fid->Volume << 20) | (fid->Unique & 0xfffff));
         else
                 return (fid->Unique + (fid->Vnode<<10) + (fid->Volume<<20));
 }
 # 233 "/data1/src/linux/include/linux/coda.h"
 typedef u_int32_t vuid_t;
 typedef u_int32_t vgid_t;
 
 
 
 
 struct coda_cred {
     vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid;
     vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid;
 };
 
 
 
 
 
 
 
 enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
 
 struct coda_vattr {
         long va_type;
         u_short va_mode;
         short va_nlink;
         vuid_t va_uid;
         vgid_t va_gid;
         long va_fileid;
         u_quad_t va_size;
         long va_blocksize;
         struct timespec va_atime;
         struct timespec va_mtime;
         struct timespec va_ctime;
         u_long va_gen;
         u_long va_flags;
         u_quad_t va_rdev;
         u_quad_t va_bytes;
         u_quad_t va_filerev;
 };
 
 
 
 
 struct coda_statfs {
     int32_t f_blocks;
     int32_t f_bfree;
     int32_t f_bavail;
     int32_t f_files;
     int32_t f_ffree;
 };
 # 337 "/data1/src/linux/include/linux/coda.h"
 struct coda_in_hdr {
     unsigned long opcode;
     unsigned long unique;
     u_short pid;
     u_short pgid;
     u_short sid;
     struct coda_cred cred;
 };
 
 
 struct coda_out_hdr {
     unsigned long opcode;
     unsigned long unique;
     unsigned long result;
 };
 
 
 struct coda_root_out {
     struct coda_out_hdr oh;
     ViceFid VFid;
 };
 
 struct coda_root_in {
     struct coda_in_hdr in;
 };
 
 
 struct coda_open_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_open_out {
     struct coda_out_hdr oh;
     u_quad_t dev;
     ino_t inode;
 };
 
 
 
 struct coda_store_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_store_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_release_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_release_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_close_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_close_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_ioctl_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int cmd;
     int len;
     int rwflag;
     char *data;
 };
 
 struct coda_ioctl_out {
     struct coda_out_hdr oh;
     int len;
     caddr_t data;
 };
 
 
 
 struct coda_getattr_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
 };
 
 struct coda_getattr_out {
     struct coda_out_hdr oh;
     struct coda_vattr attr;
 };
 
 
 
 struct coda_setattr_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     struct coda_vattr attr;
 };
 
 struct coda_setattr_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_access_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_access_out {
     struct coda_out_hdr out;
 };
 
 
 
 
 
 
 
 struct coda_lookup_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int name;
     int flags;
 };
 
 struct coda_lookup_out {
     struct coda_out_hdr oh;
     ViceFid VFid;
     int vtype;
 };
 
 
 
 struct coda_create_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     struct coda_vattr attr;
     int excl;
     int mode;
     int name;
 };
 
 struct coda_create_out {
     struct coda_out_hdr oh;
     ViceFid VFid;
     struct coda_vattr attr;
 };
 
 
 
 struct coda_remove_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int name;
 };
 
 struct coda_remove_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_link_in {
     struct coda_in_hdr ih;
     ViceFid sourceFid;
     ViceFid destFid;
     int tname;
 };
 
 struct coda_link_out {
     struct coda_out_hdr out;
 };
 
 
 
 struct coda_rename_in {
     struct coda_in_hdr ih;
     ViceFid sourceFid;
     int srcname;
     ViceFid destFid;
     int destname;
 };
 
 struct coda_rename_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_mkdir_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     struct coda_vattr attr;
     int name;
 };
 
 struct coda_mkdir_out {
     struct coda_out_hdr oh;
     ViceFid VFid;
     struct coda_vattr attr;
 };
 
 
 
 struct coda_rmdir_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int name;
 };
 
 struct coda_rmdir_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_symlink_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int srcname;
     struct coda_vattr attr;
     int tname;
 };
 
 struct coda_symlink_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_readlink_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
 };
 
 struct coda_readlink_out {
     struct coda_out_hdr oh;
     int count;
     caddr_t data;
 };
 
 
 
 struct coda_fsync_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
 };
 
 struct coda_fsync_out {
     struct coda_out_hdr out;
 };
 
 
 struct coda_vget_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
 };
 
 struct coda_vget_out {
     struct coda_out_hdr oh;
     ViceFid VFid;
     int vtype;
 };
 # 616 "/data1/src/linux/include/linux/coda.h"
 struct coda_purgeuser_out {
     struct coda_out_hdr oh;
     struct coda_cred cred;
 };
 
 
 
 struct coda_zapfile_out {
     struct coda_out_hdr oh;
     ViceFid CodaFid;
 };
 
 
 
 struct coda_zapdir_out {
     struct coda_out_hdr oh;
     ViceFid CodaFid;
 };
 
 
 
 struct coda_zapvnode_out {
     struct coda_out_hdr oh;
     struct coda_cred cred;
     ViceFid VFid;
 };
 
 
 
 struct coda_purgefid_out {
     struct coda_out_hdr oh;
     ViceFid CodaFid;
 };
 
 
 
 struct coda_replace_out {
     struct coda_out_hdr oh;
     ViceFid NewFid;
     ViceFid OldFid;
 };
 
 
 struct coda_open_by_fd_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_open_by_fd_out {
     struct coda_out_hdr oh;
     int fd;
 
 
     struct file *fh;
 
 };
 
 
 struct coda_open_by_path_in {
     struct coda_in_hdr ih;
     ViceFid VFid;
     int flags;
 };
 
 struct coda_open_by_path_out {
     struct coda_out_hdr oh;
         int path;
 };
 
 
 struct coda_statfs_in {
     struct coda_in_hdr in;
 };
 
 struct coda_statfs_out {
     struct coda_out_hdr oh;
     struct coda_statfs stat;
 };
 # 703 "/data1/src/linux/include/linux/coda.h"
 union inputArgs {
     struct coda_in_hdr ih;
     struct coda_open_in coda_open;
     struct coda_store_in coda_store;
     struct coda_release_in coda_release;
     struct coda_close_in coda_close;
     struct coda_ioctl_in coda_ioctl;
     struct coda_getattr_in coda_getattr;
     struct coda_setattr_in coda_setattr;
     struct coda_access_in coda_access;
     struct coda_lookup_in coda_lookup;
     struct coda_create_in coda_create;
     struct coda_remove_in coda_remove;
     struct coda_link_in coda_link;
     struct coda_rename_in coda_rename;
     struct coda_mkdir_in coda_mkdir;
     struct coda_rmdir_in coda_rmdir;
     struct coda_symlink_in coda_symlink;
     struct coda_readlink_in coda_readlink;
     struct coda_fsync_in coda_fsync;
     struct coda_vget_in coda_vget;
     struct coda_open_by_fd_in coda_open_by_fd;
     struct coda_open_by_path_in coda_open_by_path;
     struct coda_statfs_in coda_statfs;
 };
 
 union outputArgs {
     struct coda_out_hdr oh;
     struct coda_root_out coda_root;
     struct coda_open_out coda_open;
     struct coda_ioctl_out coda_ioctl;
     struct coda_getattr_out coda_getattr;
     struct coda_lookup_out coda_lookup;
     struct coda_create_out coda_create;
     struct coda_mkdir_out coda_mkdir;
     struct coda_readlink_out coda_readlink;
     struct coda_vget_out coda_vget;
     struct coda_purgeuser_out coda_purgeuser;
     struct coda_zapfile_out coda_zapfile;
     struct coda_zapdir_out coda_zapdir;
     struct coda_zapvnode_out coda_zapvnode;
     struct coda_purgefid_out coda_purgefid;
     struct coda_replace_out coda_replace;
     struct coda_open_by_fd_out coda_open_by_fd;
     struct coda_open_by_path_out coda_open_by_path;
     struct coda_statfs_out coda_statfs;
 };
 
 union coda_downcalls {
 
 
     struct coda_purgeuser_out purgeuser;
     struct coda_zapfile_out zapfile;
     struct coda_zapdir_out zapdir;
     struct coda_zapvnode_out zapvnode;
     struct coda_purgefid_out purgefid;
     struct coda_replace_out replace;
 };
 
 
 
 
 
 
 
 struct ViceIoctl {
         caddr_t in, out;
         short in_size;
         short out_size;
 };
 
 struct PioctlData {
         const char *path;
         int follow;
         struct ViceIoctl vi;
 };
 # 797 "/data1/src/linux/include/linux/coda.h"
 struct coda_mount_data {
         int version;
         int fd;
 };
 # 15 "/data1/src/linux/include/linux/coda_fs_i.h" 2
 
 
 
 
 struct coda_inode_info {
         struct ViceFid c_fid;
         u_short c_flags;
         struct list_head c_cilist;
         struct file *c_container;
         unsigned int c_contcount;
         struct coda_cred c_cached_cred;
         unsigned int c_cached_perm;
 };
 
 
 
 
 
 
 
 int coda_cnode_make(struct inode **, struct ViceFid *, struct super_block *);
 int coda_cnode_makectl(struct inode **inode, struct super_block *sb);
 struct inode *coda_fid_to_inode(ViceFid *fid, struct super_block *sb);
 void coda_replace_fid(struct inode *, ViceFid *, ViceFid *);
 # 304 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/romfs_fs_i.h" 1
 
 
 
 
 
 struct romfs_inode_info {
         unsigned long i_metasize;
         unsigned long i_dataoffset;
 };
 # 305 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/shmem_fs.h" 1
 # 16 "/data1/src/linux/include/linux/shmem_fs.h"
 typedef struct {
         unsigned long val;
 } swp_entry_t;
 
 extern atomic_t shmem_nrpages;
 
 struct shmem_inode_info {
         spinlock_t lock;
         struct semaphore sem;
         unsigned long next_index;
         swp_entry_t i_direct[16];
         void **i_indirect;
         unsigned long swapped;
         int locked;
         struct list_head list;
         struct inode *inode;
 };
 
 struct shmem_sb_info {
         unsigned long max_blocks;
         unsigned long free_blocks;
         unsigned long max_inodes;
         unsigned long free_inodes;
         spinlock_t stat_lock;
 };
 # 306 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/smb_fs_i.h" 1
 # 18 "/data1/src/linux/include/linux/smb_fs_i.h"
 struct smb_inode_info {
 
 
 
 
 
         unsigned int open;
         __u16 fileid;
         __u16 attr;
 
         __u16 access;
         __u16 flags;
         unsigned long oldmtime;
         unsigned long closed;
         unsigned openers;
 };
 # 307 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/hfs_fs_i.h" 1
 # 19 "/data1/src/linux/include/linux/hfs_fs_i.h"
 struct hfs_inode_info {
         int magic;
 
         unsigned long mmu_private;
         struct hfs_cat_entry *entry;
 
 
         struct hfs_fork *fork;
         int convert;
 
 
         ino_t file_type;
         char dir_size;
 
 
         const struct hfs_hdr_layout *default_layout;
         struct hfs_hdr_layout *layout;
 
 
         int tz_secondswest;
 
 
         void (*d_drop_op)(struct dentry *, const ino_t);
 };
 # 308 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/adfs_fs_i.h" 1
 # 13 "/data1/src/linux/include/linux/adfs_fs_i.h"
 struct adfs_inode_info {
         unsigned long mmu_private;
         unsigned long parent_id;
         __u32 loadaddr;
         __u32 execaddr;
         unsigned int filetype;
         unsigned int attr;
         int stamped:1;
 };
 # 309 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/qnx4_fs_i.h" 1
 # 14 "/data1/src/linux/include/linux/qnx4_fs_i.h"
 # 1 "/data1/src/linux/include/linux/qnxtypes.h" 1
 # 15 "/data1/src/linux/include/linux/qnxtypes.h"
 typedef __u16 qnx4_nxtnt_t;
 typedef __u8 qnx4_ftype_t;
 
 typedef struct {
         __u32 xtnt_blk;
         __u32 xtnt_size;
 } qnx4_xtnt_t;
 
 typedef __u16 qnx4_mode_t;
 typedef __u16 qnx4_muid_t;
 typedef __u16 qnx4_mgid_t;
 typedef __u32 qnx4_off_t;
 typedef __u16 qnx4_nlink_t;
 # 15 "/data1/src/linux/include/linux/qnx4_fs_i.h" 2
 
 
 
 
 struct qnx4_inode_info {
         char i_reserved[16];
         qnx4_off_t i_size;
         qnx4_xtnt_t i_first_xtnt;
         __u32 i_xblk;
         __s32 i_ftime;
         __s32 i_mtime;
         __s32 i_atime;
         __s32 i_ctime;
         qnx4_nxtnt_t i_num_xtnts;
         qnx4_mode_t i_mode;
         qnx4_muid_t i_uid;
         qnx4_mgid_t i_gid;
         qnx4_nlink_t i_nlink;
         __u8 i_zero[4];
         qnx4_ftype_t i_type;
         __u8 i_status;
         unsigned long mmu_private;
 };
 # 310 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/reiserfs_fs_i.h" 1
 
 
 
 
 
 struct reiserfs_inode_info {
   __u32 i_key [4];
 
 
 
 
 
 
   int i_version;
 
   int i_pack_on_close ;
 
   __u32 i_first_direct_byte;
 # 35 "/data1/src/linux/include/linux/reiserfs_fs_i.h"
   int i_prealloc_block;
   int i_prealloc_count;
   struct list_head i_prealloc_list;
 
 
 
 
   int nopack;
 
 
 
 
   unsigned long i_trans_id ;
   unsigned long i_trans_index ;
 };
 # 311 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/bfs_fs_i.h" 1
 # 12 "/data1/src/linux/include/linux/bfs_fs_i.h"
 struct bfs_inode_info {
         unsigned long i_dsk_ino;
         unsigned long i_sblock;
         unsigned long i_eblock;
 };
 # 312 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/udf_fs_i.h" 1
 # 24 "/data1/src/linux/include/linux/udf_fs_i.h"
 typedef struct
 {
         __u32 logicalBlockNum;
         __u16 partitionReferenceNum;
 } lb_addr;
 
 
 struct udf_inode_info
 {
         long i_umtime;
         long i_uctime;
         long i_crtime;
         long i_ucrtime;
 
         lb_addr i_location;
         __u64 i_unique;
         __u32 i_lenEAttr;
         __u32 i_lenAlloc;
         __u64 i_lenExtents;
         __u32 i_next_alloc_block;
         __u32 i_next_alloc_goal;
         unsigned i_alloc_type : 3;
         unsigned i_extended_fe : 1;
         unsigned i_strat_4096 : 1;
         unsigned i_new_inode : 1;
         unsigned reserved : 26;
 };
 # 313 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ncp_fs_i.h" 1
 # 17 "/data1/src/linux/include/linux/ncp_fs_i.h"
 struct ncp_inode_info {
         __u32 dirEntNum __attribute__((packed));
         __u32 DosDirNum __attribute__((packed));
         __u32 volNumber __attribute__((packed));
         __u32 nwattr;
         struct semaphore open_sem;
         atomic_t opened;
         int access;
         __u32 server_file_handle __attribute__((packed));
         __u8 open_create_action __attribute__((packed));
         __u8 file_handle[6] __attribute__((packed));
 };
 # 314 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/proc_fs_i.h" 1
 struct proc_inode_info {
         struct task_struct *task;
         int type;
         union {
                 int (*proc_get_link)(struct inode *, struct dentry **, struct vfsmount **);
                 int (*proc_read)(struct task_struct *task, char *page);
         } op;
         struct file *file;
 };
 # 315 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/jffs2_fs_i.h" 1
 # 16 "/data1/src/linux/include/linux/jffs2_fs_i.h"
 struct jffs2_inode_info {
 # 26 "/data1/src/linux/include/linux/jffs2_fs_i.h"
         struct semaphore sem;
 
 
         __u32 highest_version;
 
 
         struct jffs2_node_frag *fraglist;
 
 
 
 
 
 
         struct jffs2_full_dnode *metadata;
 
 
         struct jffs2_full_dirent *dents;
 
 
         struct jffs2_inode_cache *inocache;
 
 
 
 
 
         __u16 flags;
         __u8 usercompr;
 };
 # 316 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/cramfs_fs_sb.h" 1
 
 
 
 
 
 
 struct cramfs_sb_info {
                         unsigned long magic;
                         unsigned long size;
                         unsigned long blocks;
                         unsigned long files;
                         unsigned long flags;
 };
 # 317 "/data1/src/linux/include/linux/fs.h" 2
 # 343 "/data1/src/linux/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;
         time_t ia_atime;
         time_t ia_mtime;
         time_t ia_ctime;
         unsigned int ia_attr_flags;
 };
 # 367 "/data1/src/linux/include/linux/fs.h"
 # 1 "/data1/src/linux/include/linux/quota.h" 1
 # 42 "/data1/src/linux/include/linux/quota.h"
 # 1 "/data1/src/linux/include/linux/errno.h" 1
 
 
 
 # 1 "/data1/src/linux/include/asm/errno.h" 1
 # 5 "/data1/src/linux/include/linux/errno.h" 2
 # 43 "/data1/src/linux/include/linux/quota.h" 2
 # 109 "/data1/src/linux/include/linux/quota.h"
 struct dqblk {
         __u32 dqb_bhardlimit;
         __u32 dqb_bsoftlimit;
         __u32 dqb_curblocks;
         __u32 dqb_ihardlimit;
         __u32 dqb_isoftlimit;
         __u32 dqb_curinodes;
         time_t dqb_btime;
         time_t dqb_itime;
 };
 # 134 "/data1/src/linux/include/linux/quota.h"
 struct dqstats {
         __u32 lookups;
         __u32 drops;
         __u32 reads;
         __u32 writes;
         __u32 cache_hits;
         __u32 allocated_dquots;
         __u32 free_dquots;
         __u32 syncs;
 };
 
 
 
 extern int nr_dquots, nr_free_dquots;
 extern int dquot_root_squash;
 # 159 "/data1/src/linux/include/linux/quota.h"
 struct dquot {
         struct list_head dq_hash;
         struct list_head dq_inuse;
         struct list_head dq_free;
         wait_queue_head_t dq_wait_lock;
         wait_queue_head_t dq_wait_free;
         int dq_count;
 
 
         struct super_block *dq_sb;
         unsigned int dq_id;
         short dq_type;
         short dq_flags;
         unsigned long dq_referenced;
 
         struct dqblk dq_dqb;
 };
 # 368 "/data1/src/linux/include/linux/fs.h" 2
 
 
 
 
 
 struct page;
 struct address_space;
 struct kiobuf;
 
 struct address_space_operations {
         int (*writepage)(struct page *);
         int (*readpage)(struct file *, struct page *);
         int (*sync_page)(struct page *);
 
 
 
 
         int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
         int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
 
         int (*bmap)(struct address_space *, long);
         int (*flushpage) (struct page *, unsigned long);
         int (*releasepage) (struct page *, int);
 
         int (*direct_IO)(int, struct inode *, struct kiobuf *, unsigned long, int);
 };
 
 struct address_space {
         struct list_head clean_pages;
         struct list_head dirty_pages;
         struct list_head locked_pages;
         unsigned long nrpages;
         struct address_space_operations *a_ops;
         struct inode *host;
         struct vm_area_struct *i_mmap;
         struct vm_area_struct *i_mmap_shared;
         spinlock_t i_shared_lock;
         int gfp_mask;
 };
 
 struct char_device {
         struct list_head hash;
         atomic_t count;
         dev_t dev;
         atomic_t openers;
         struct semaphore sem;
 };
 
 struct block_device {
         struct list_head bd_hash;
         atomic_t bd_count;
         struct inode * bd_inode;
         dev_t bd_dev;
         int bd_openers;
         const struct block_device_operations *bd_op;
         struct semaphore bd_sem;
         struct list_head bd_inodes;
 };
 
 struct inode {
         struct list_head i_hash;
         struct list_head i_list;
         struct list_head i_dentry;
 
         struct list_head i_dirty_buffers;
         struct list_head i_dirty_data_buffers;
 
         unsigned long i_ino;
         atomic_t i_count;
         kdev_t i_dev;
         umode_t i_mode;
         nlink_t i_nlink;
         uid_t i_uid;
         gid_t i_gid;
         kdev_t i_rdev;
         loff_t i_size;
         time_t i_atime;
         time_t i_mtime;
         time_t i_ctime;
         unsigned int i_blkbits;
         unsigned long i_blksize;
         unsigned long i_blocks;
         unsigned long i_version;
         struct semaphore i_sem;
         struct semaphore i_zombie;
         struct inode_operations *i_op;
         struct file_operations *i_fop;
         struct super_block *i_sb;
         wait_queue_head_t i_wait;
         struct file_lock *i_flock;
         struct address_space *i_mapping;
         struct address_space i_data;
         struct dquot *i_dquot[2];
 
         struct list_head i_devices;
         struct pipe_inode_info *i_pipe;
         struct block_device *i_bdev;
         struct char_device *i_cdev;
 
         unsigned long i_dnotify_mask;
         struct dnotify_struct *i_dnotify;
 
         unsigned long i_state;
 
         unsigned int i_flags;
         unsigned char i_sock;
 
         atomic_t i_writecount;
         unsigned int i_attr_flags;
         __u32 i_generation;
         union {
                 struct minix_inode_info minix_i;
                 struct ext2_inode_info ext2_i;
                 struct ext3_inode_info ext3_i;
                 struct hpfs_inode_info hpfs_i;
                 struct ntfs_inode_info ntfs_i;
                 struct msdos_inode_info msdos_i;
                 struct umsdos_inode_info umsdos_i;
                 struct iso_inode_info isofs_i;
                 struct nfs_inode_info nfs_i;
                 struct sysv_inode_info sysv_i;
                 struct affs_inode_info affs_i;
                 struct ufs_inode_info ufs_i;
                 struct efs_inode_info efs_i;
                 struct romfs_inode_info romfs_i;
                 struct shmem_inode_info shmem_i;
                 struct coda_inode_info coda_i;
                 struct smb_inode_info smbfs_i;
                 struct hfs_inode_info hfs_i;
                 struct adfs_inode_info adfs_i;
                 struct qnx4_inode_info qnx4_i;
                 struct reiserfs_inode_info reiserfs_i;
                 struct bfs_inode_info bfs_i;
                 struct udf_inode_info udf_i;
                 struct ncp_inode_info ncpfs_i;
                 struct proc_inode_info proc_i;
                 struct socket socket_i;
                 struct jffs2_inode_info jffs2_i;
                 void *generic_ip;
         } u;
 };
 
 struct fown_struct {
         int pid;
         uid_t uid, euid;
         int signum;
 };
 
 struct file {
         struct list_head f_list;
         struct dentry *f_dentry;
         struct vfsmount *f_vfsmnt;
         struct file_operations *f_op;
         atomic_t f_count;
         unsigned int f_flags;
         mode_t f_mode;
         loff_t f_pos;
         unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
         struct fown_struct f_owner;
         unsigned int f_uid, f_gid;
         int f_error;
 
         unsigned long f_version;
 
 
         void *private_data;
 
 
         struct kiobuf *f_iobuf;
         long f_iobuf_lock;
 };
 extern spinlock_t files_lock;
 
 
 
 
 
 
 extern int init_private_file(struct file *, struct dentry *, int);
 # 564 "/data1/src/linux/include/linux/fs.h"
 typedef struct files_struct *fl_owner_t;
 
 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;
 
         void (*fl_notify)(struct file_lock *);
         void (*fl_insert)(struct file_lock *);
         void (*fl_remove)(struct file_lock *);
 
         struct fasync_struct * fl_fasync;
 
         union {
                 struct nfs_lock_info nfs_fl;
         } fl_u;
 };
 # 597 "/data1/src/linux/include/linux/fs.h"
 extern struct list_head file_lock_list;
 
 # 1 "/data1/src/linux/include/linux/fcntl.h" 1
 
 
 
 # 1 "/data1/src/linux/include/asm/fcntl.h" 1
 # 73 "/data1/src/linux/include/asm/fcntl.h"
 struct flock {
         short l_type;
         short l_whence;
         off_t l_start;
         off_t l_len;
         pid_t l_pid;
 };
 # 5 "/data1/src/linux/include/linux/fcntl.h" 2
 # 600 "/data1/src/linux/include/linux/fs.h" 2
 
 extern int fcntl_getlk(unsigned int, struct flock *);
 extern int fcntl_setlk(unsigned int, unsigned int, struct flock *);
 
 extern int fcntl_getlk64(unsigned int, struct flock *);
 extern int fcntl_setlk64(unsigned int, unsigned int, struct flock *);
 
 
 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 struct file_lock *posix_test_lock(struct file *, struct file_lock *);
 extern int posix_lock_file(struct file *, struct file_lock *, unsigned int);
 extern void posix_block_lock(struct file_lock *, struct file_lock *);
 extern void posix_unblock_lock(struct file_lock *);
 extern int posix_locks_deadlock(struct file_lock *, struct file_lock *);
 extern int __get_lease(struct inode *inode, unsigned int flags);
 extern time_t lease_get_mtime(struct inode *);
 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);
 
 struct nameidata {
         struct dentry *dentry;
         struct vfsmount *mnt;
         struct qstr last;
         unsigned int flags;
         int last_type;
 };
 
 
 
 
 struct quota_mount_options
 {
         unsigned int flags;
         struct semaphore dqio_sem;
         struct semaphore dqoff_sem;
         struct file *files[2];
         time_t inode_expire[2];
         time_t block_expire[2];
         char rsquash[2];
 };
 # 667 "/data1/src/linux/include/linux/fs.h"
 # 1 "/data1/src/linux/include/linux/minix_fs_sb.h" 1
 
 
 
 
 
 
 struct minix_sb_info {
                         unsigned long s_ninodes;
                         unsigned long s_nzones;
                         unsigned long s_imap_blocks;
                         unsigned long s_zmap_blocks;
                         unsigned long s_firstdatazone;
                         unsigned long s_log_zone_size;
                         unsigned long s_max_size;
                         int s_dirsize;
                         int s_namelen;
                         int s_link_max;
                         struct buffer_head ** s_imap;
                         struct buffer_head ** s_zmap;
                         struct buffer_head * s_sbh;
                         struct minix_super_block * s_ms;
                         unsigned short s_mount_state;
                         unsigned short s_version;
 };
 # 668 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ext2_fs_sb.h" 1
 # 30 "/data1/src/linux/include/linux/ext2_fs_sb.h"
 struct ext2_sb_info {
         unsigned long s_frag_size;
         unsigned long s_frags_per_block;
         unsigned long s_inodes_per_block;
         unsigned long s_frags_per_group;
         unsigned long s_blocks_per_group;
         unsigned long s_inodes_per_group;
         unsigned long s_itb_per_group;
         unsigned long s_gdb_count;
         unsigned long s_desc_per_block;
         unsigned long s_groups_count;
         struct buffer_head * s_sbh;
         struct ext2_super_block * s_es;
         struct buffer_head ** s_group_desc;
         unsigned short s_loaded_inode_bitmaps;
         unsigned short s_loaded_block_bitmaps;
         unsigned long s_inode_bitmap_number[8];
         struct buffer_head * s_inode_bitmap[8];
         unsigned long s_block_bitmap_number[8];
         struct buffer_head * s_block_bitmap[8];
         unsigned long s_mount_opt;
         uid_t s_resuid;
         gid_t s_resgid;
         unsigned short s_mount_state;
         unsigned short s_pad;
         int s_addr_per_block_bits;
         int s_desc_per_block_bits;
         int s_inode_size;
         int s_first_ino;
         u32 s_next_generation;
 };
 # 669 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ext3_fs_sb.h" 1
 # 20 "/data1/src/linux/include/linux/ext3_fs_sb.h"
 # 1 "/data1/src/linux/include/linux/timer.h" 1
 # 16 "/data1/src/linux/include/linux/timer.h"
 struct timer_list {
         struct list_head list;
         unsigned long expires;
         unsigned long data;
         void (*function)(unsigned long);
 };
 
 extern void add_timer(struct timer_list * timer);
 extern int del_timer(struct timer_list * timer);
 
 
 extern int del_timer_sync(struct timer_list * timer);
 extern void sync_timers(void);
 # 41 "/data1/src/linux/include/linux/timer.h"
 int mod_timer(struct timer_list *timer, unsigned long expires);
 
 extern void it_real_fn(unsigned long);
 
 static inline void init_timer(struct timer_list * timer)
 {
         timer->list.next = timer->list.prev = ((void *)0);
 }
 
 static inline int timer_pending (const struct timer_list * timer)
 {
         return timer->list.next != ((void *)0);
 }
 # 21 "/data1/src/linux/include/linux/ext3_fs_sb.h" 2
 # 35 "/data1/src/linux/include/linux/ext3_fs_sb.h"
 struct ext3_sb_info {
         unsigned long s_frag_size;
         unsigned long s_frags_per_block;
         unsigned long s_inodes_per_block;
         unsigned long s_frags_per_group;
         unsigned long s_blocks_per_group;
         unsigned long s_inodes_per_group;
         unsigned long s_itb_per_group;
         unsigned long s_gdb_count;
         unsigned long s_desc_per_block;
         unsigned long s_groups_count;
         struct buffer_head * s_sbh;
         struct ext3_super_block * s_es;
         struct buffer_head ** s_group_desc;
         unsigned short s_loaded_inode_bitmaps;
         unsigned short s_loaded_block_bitmaps;
         unsigned long s_inode_bitmap_number[8];
         struct buffer_head * s_inode_bitmap[8];
         unsigned long s_block_bitmap_number[8];
         struct buffer_head * s_block_bitmap[8];
         unsigned long s_mount_opt;
         uid_t s_resuid;
         gid_t s_resgid;
         unsigned short s_mount_state;
         unsigned short s_pad;
         int s_addr_per_block_bits;
         int s_desc_per_block_bits;
         int s_inode_size;
         int s_first_ino;
 
 
         struct inode * s_journal_inode;
         struct journal_s * s_journal;
         struct list_head s_orphan;
         unsigned long s_commit_interval;
         struct block_device *journal_bdev;
 
 
 
 
 };
 # 670 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/hpfs_fs_sb.h" 1
 
 
 
 struct hpfs_sb_info {
         ino_t sb_root;
         unsigned sb_fs_size;
         unsigned sb_bitmaps;
         unsigned sb_dirband_start;
         unsigned sb_dirband_size;
         unsigned sb_dmap;
         unsigned sb_n_free;
         unsigned sb_n_free_dnodes;
         uid_t sb_uid;
         gid_t sb_gid;
         umode_t sb_mode;
         unsigned sb_conv : 2;
         unsigned sb_eas : 2;
         unsigned sb_err : 2;
         unsigned sb_chk : 2;
         unsigned sb_lowercase : 1;
         unsigned sb_was_error : 1;
         unsigned sb_chkdsk : 2;
         unsigned sb_rd_fnode : 2;
         unsigned sb_rd_inode : 2;
 
 
         wait_queue_head_t sb_iget_q;
         unsigned char *sb_cp_table;
 
 
         unsigned *sb_bmp_dir;
         unsigned sb_c_bitmap;
         wait_queue_head_t sb_creation_de;
 
         unsigned sb_creation_de_lock : 1;
 
         int sb_timeshift;
 };
 # 671 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ntfs_fs_sb.h" 1
 
 
 
 
 
 struct ntfs_sb_info{
 
         ntfs_uid_t uid;
         ntfs_gid_t gid;
         ntmode_t umask;
         void *nls_map;
         unsigned int ngt;
         char mft_zone_multiplier;
         unsigned long mft_data_pos;
         ntfs_cluster_t mft_zone_pos;
         ntfs_cluster_t mft_zone_start;
         ntfs_cluster_t mft_zone_end;
         ntfs_cluster_t data1_zone_pos;
         ntfs_cluster_t data2_zone_pos;
 
 
         ntfs_size_t partition_bias;
 
         ntfs_u32 at_standard_information;
         ntfs_u32 at_attribute_list;
         ntfs_u32 at_file_name;
         ntfs_u32 at_volume_version;
         ntfs_u32 at_security_descriptor;
         ntfs_u32 at_volume_name;
         ntfs_u32 at_volume_information;
         ntfs_u32 at_data;
         ntfs_u32 at_index_root;
         ntfs_u32 at_index_allocation;
         ntfs_u32 at_bitmap;
         ntfs_u32 at_symlink;
 
         int sector_size;
         int cluster_size;
         int cluster_size_bits;
         int mft_clusters_per_record;
         int mft_record_size;
         int mft_record_size_bits;
         int index_clusters_per_record;
         int index_record_size;
         int index_record_size_bits;
         ntfs_cluster_t nr_clusters;
         ntfs_cluster_t mft_lcn;
         ntfs_cluster_t mft_mirr_lcn;
 
         unsigned char *mft;
         unsigned short *upcase;
         unsigned int upcase_length;
 
         struct ntfs_inode_info *mft_ino;
         struct ntfs_inode_info *mftmirr;
         struct ntfs_inode_info *bitmap;
         struct super_block *sb;
         unsigned char ino_flags;
 };
 # 672 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/msdos_fs_sb.h" 1
 
 
 # 1 "/data1/src/linux/include/linux/fat_cvf.h" 1
 
 
 
 
 
 struct cvf_format
 { int cvf_version;
   char* cvf_version_text;
   unsigned long flags;
   int (*detect_cvf) (struct super_block*sb);
   int (*mount_cvf) (struct super_block*sb,char*options);
   int (*unmount_cvf) (struct super_block*sb);
   struct buffer_head* (*cvf_bread) (struct super_block*sb,int block);
   struct buffer_head* (*cvf_getblk) (struct super_block*sb,int block);
   void (*cvf_brelse) (struct super_block *sb,struct buffer_head *bh);
   void (*cvf_mark_buffer_dirty) (struct super_block *sb,
                               struct buffer_head *bh);
   void (*cvf_set_uptodate) (struct super_block *sb,
                          struct buffer_head *bh,
                          int val);
   int (*cvf_is_uptodate) (struct super_block *sb,struct buffer_head *bh);
   void (*cvf_ll_rw_block) (struct super_block *sb,
                         int opr,
                         int nbreq,
                         struct buffer_head *bh[32]);
   int (*fat_access) (struct super_block *sb,int nr,int new_value);
   int (*cvf_statfs) (struct super_block *sb,struct statfs *buf, int bufsiz);
   int (*cvf_bmap) (struct inode *inode,int block);
   ssize_t (*cvf_file_read) ( struct file *, char *, size_t, loff_t *);
   ssize_t (*cvf_file_write) ( struct file *, const char *, size_t, loff_t *);
   int (*cvf_mmap) (struct file *, struct vm_area_struct *);
   int (*cvf_readpage) (struct inode *, struct page *);
   int (*cvf_writepage) (struct inode *, struct page *);
   int (*cvf_dir_ioctl) (struct inode * inode, struct file * filp,
                         unsigned int cmd, unsigned long arg);
   void (*zero_out_cluster) (struct inode*, int clusternr);
 };
 
 int register_cvf_format(struct cvf_format*cvf_format);
 int unregister_cvf_format(struct cvf_format*cvf_format);
 void dec_cvf_format_use_count_by_version(int version);
 int detect_cvf(struct super_block*sb,char*force);
 
 extern struct cvf_format *cvf_formats[];
 extern int cvf_format_use_count[];
 # 4 "/data1/src/linux/include/linux/msdos_fs_sb.h" 2
 
 
 
 
 
 struct fat_mount_options {
         uid_t fs_uid;
         gid_t fs_gid;
         unsigned short fs_umask;
         unsigned short codepage;
         char *iocharset;
         unsigned short shortname;
         unsigned char name_check;
         unsigned char conversion;
         unsigned quiet:1,
                  showexec:1,
                  sys_immutable:1,
                  dotsOK:1,
                  isvfat:1,
                  utf8:1,
                  unicode_xlate:1,
                  posixfs:1,
                  numtail:1,
                  atari:1,
                  fat32:1,
                  nocase:1;
 };
 
 struct msdos_sb_info {
         unsigned short cluster_size;
         unsigned short cluster_bits;
         unsigned char fats,fat_bits;
         unsigned short fat_start;
         unsigned long fat_length;
         unsigned long dir_start;
         unsigned short dir_entries;
         unsigned long data_start;
         unsigned long clusters;
         unsigned long root_cluster;
         unsigned long fsinfo_sector;
         struct semaphore fat_lock;
         int prev_free;
         int free_clusters;
         struct fat_mount_options options;
         struct nls_table *nls_disk;
         struct nls_table *nls_io;
         struct cvf_format* cvf_format;
         void *dir_ops;
         void *private_data;
         int dir_per_block;
         int dir_per_block_bits;
 };
 # 673 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/iso_fs_sb.h" 1
 
 
 
 
 
 
 struct isofs_sb_info {
         unsigned long s_ninodes;
         unsigned long s_nzones;
         unsigned long s_firstdatazone;
         unsigned long s_log_zone_size;
         unsigned long s_max_size;
 
         unsigned char s_high_sierra;
         unsigned char s_mapping;
         int s_rock_offset;
         unsigned char s_rock;
         unsigned char s_joliet_level;
         unsigned char s_utf8;
         unsigned char s_cruft;
 
 
         unsigned char s_unhide;
         unsigned char s_nosuid;
         unsigned char s_nodev;
         unsigned char s_nocompress;
 
         mode_t s_mode;
         gid_t s_gid;
         uid_t s_uid;
         struct nls_table *s_nls_iocharset;
 };
 # 674 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/nfs_fs_sb.h" 1
 # 9 "/data1/src/linux/include/linux/nfs_fs_sb.h"
 struct nfs_server {
         struct rpc_clnt * client;
         struct nfs_rpc_ops * rpc_ops;
         int flags;
         unsigned int rsize;
         unsigned int rpages;
         unsigned int wsize;
         unsigned int wpages;
         unsigned int dtsize;
         unsigned int bsize;
         unsigned int acregmin;
         unsigned int acregmax;
         unsigned int acdirmin;
         unsigned int acdirmax;
         unsigned int namelen;
         char * hostname;
         struct nfs_reqlist * rw_requests;
         struct list_head lru_read,
                                 lru_dirty,
                                 lru_commit,
                                 lru_busy;
 };
 
 
 
 
 struct nfs_sb_info {
         struct nfs_server s_server;
 };
 # 675 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/sysv_fs_sb.h" 1
 # 13 "/data1/src/linux/include/linux/sysv_fs_sb.h"
 struct sysv_sb_info {
         int s_type;
         char s_bytesex;
         char s_truncate;
 
         nlink_t s_link_max;
         unsigned int s_inodes_per_block;
         unsigned int s_inodes_per_block_1;
         unsigned int s_inodes_per_block_bits;
         unsigned int s_ind_per_block;
         unsigned int s_ind_per_block_bits;
         unsigned int s_ind_per_block_2;
         unsigned int s_toobig_block;
         unsigned int s_block_base;
         unsigned short s_fic_size;
         unsigned short s_flc_size;
 
         struct buffer_head *s_bh1;
         struct buffer_head *s_bh2;
 
 
         char * s_sbd1;
         char * s_sbd2;
         u16 *s_sb_fic_count;
         u16 *s_sb_fic_inodes;
         u16 *s_sb_total_free_inodes;
         u16 *s_bcache_count;
         u32 *s_bcache;
         u32 *s_free_blocks;
         u32 *s_sb_time;
         u32 *s_sb_state;
 
 
         u32 s_firstinodezone;
         u32 s_firstdatazone;
         u32 s_ninodes;
         u32 s_ndatazones;
         u32 s_nzones;
         u16 s_namelen;
 };
 # 676 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/affs_fs_sb.h" 1
 # 11 "/data1/src/linux/include/linux/affs_fs_sb.h"
 struct affs_bm_info {
         u32 bm_key;
         u32 bm_free;
 };
 
 struct affs_sb_info {
         int s_partition_size;
         int s_reserved;
 
         u32 s_data_blksize;
         u32 s_root_block;
         int s_hashsize;
         unsigned long s_flags;
         uid_t s_uid;
         gid_t s_gid;
         umode_t s_mode;
         struct buffer_head *s_root_bh;
         struct semaphore s_bmlock;
         struct affs_bm_info *s_bitmap;
         u32 s_bmap_count;
         u32 s_bmap_bits;
         u32 s_last_bmap;
         struct buffer_head *s_bmap_bh;
         char *s_prefix;
         int s_prefix_len;
         char s_volume[32];
 };
 # 677 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ufs_fs_sb.h" 1
 # 17 "/data1/src/linux/include/linux/ufs_fs_sb.h"
 # 1 "/data1/src/linux/include/linux/ufs_fs.h" 1
 # 237 "/data1/src/linux/include/linux/ufs_fs.h"
 struct ufs_timeval {
         __s32 tv_sec;
         __s32 tv_usec;
 };
 
 struct ufs_dir_entry {
         __u32 d_ino;
         __u16 d_reclen;
         union {
                 __u16 d_namlen;
                 struct {
                         __u8 d_type;
                         __u8 d_namlen;
                 } d_44;
         } d_u;
         __u8 d_name[255 + 1];
 };
 
 struct ufs_csum {
         __u32 cs_ndir;
         __u32 cs_nbfree;
         __u32 cs_nifree;
         __u32 cs_nffree;
 };
 
 
 
 
 struct ufs_super_block {
         __u32 fs_link;
         __u32 fs_rlink;
         __u32 fs_sblkno;
         __u32 fs_cblkno;
         __u32 fs_iblkno;
         __u32 fs_dblkno;
         __u32 fs_cgoffset;
         __u32 fs_cgmask;
         __u32 fs_time;
         __u32 fs_size;
         __u32 fs_dsize;
         __u32 fs_ncg;
         __u32 fs_bsize;
         __u32 fs_fsize;
         __u32 fs_frag;
 
         __u32 fs_minfree;
         __u32 fs_rotdelay;
         __u32 fs_rps;
 
         __u32 fs_bmask;
         __u32 fs_fmask;
         __u32 fs_bshift;
         __u32 fs_fshift;
 
         __u32 fs_maxcontig;
         __u32 fs_maxbpg;
 
         __u32 fs_fragshift;
         __u32 fs_fsbtodb;
         __u32 fs_sbsize;
         __u32 fs_csmask;
         __u32 fs_csshift;
         __u32 fs_nindir;
         __u32 fs_inopb;
         __u32 fs_nspf;
 
         __u32 fs_optim;
 
         union {
                 struct {
                         __u32 fs_npsect;
                 } fs_sun;
                 struct {
                         __s32 fs_state;
                 } fs_sunx86;
         } fs_u1;
         __u32 fs_interleave;
         __u32 fs_trackskew;
 
 
 
 
         __u32 fs_id[2];
 
         __u32 fs_csaddr;
         __u32 fs_cssize;
         __u32 fs_cgsize;
 
         __u32 fs_ntrak;
         __u32 fs_nsect;
         __u32 fs_spc;
 
         __u32 fs_ncyl;
 
         __u32 fs_cpg;
         __u32 fs_ipg;
         __u32 fs_fpg;
 
         struct ufs_csum fs_cstotal;
 
         __s8 fs_fmod;
         __s8 fs_clean;
         __s8 fs_ronly;
         __s8 fs_flags;
         __s8 fs_fsmnt[512];
 
         __u32 fs_cgrotor;
         __u32 fs_csp[31];
         __u32 fs_maxcluster;
         __u32 fs_cpc;
         __u16 fs_opostbl[16][8];
         union {
                 struct {
                         __s32 fs_sparecon[53];
                         __s32 fs_reclaim;
                         __s32 fs_sparecon2[1];
                         __s32 fs_state;
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                 } fs_sun;
                 struct {
                         __s32 fs_sparecon[53];
                         __s32 fs_reclaim;
                         __s32 fs_sparecon2[1];
                         __u32 fs_npsect;
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                 } fs_sunx86;
                 struct {
                         __s32 fs_sparecon[50];
                         __s32 fs_contigsumsize;
                         __s32 fs_maxsymlinklen;
                         __s32 fs_inodefmt;
                         __u32 fs_maxfilesize[2];
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                         __s32 fs_state;
                 } fs_44;
         } fs_u2;
         __s32 fs_postblformat;
         __s32 fs_nrpos;
         __s32 fs_postbloff;
         __s32 fs_rotbloff;
         __s32 fs_magic;
         __u8 fs_space[1];
 };
 # 415 "/data1/src/linux/include/linux/ufs_fs.h"
 struct ufs_cylinder_group {
         __u32 cg_link;
         __u32 cg_magic;
         __u32 cg_time;
         __u32 cg_cgx;
         __u16 cg_ncyl;
         __u16 cg_niblk;
         __u32 cg_ndblk;
         struct ufs_csum cg_cs;
         __u32 cg_rotor;
         __u32 cg_frotor;
         __u32 cg_irotor;
         __u32 cg_frsum[(8192 / 1024)];
         __u32 cg_btotoff;
         __u32 cg_boff;
         __u32 cg_iusedoff;
         __u32 cg_freeoff;
         __u32 cg_nextfreeoff;
         union {
                 struct {
                         __u32 cg_clustersumoff;
                         __u32 cg_clusteroff;
                         __u32 cg_nclusterblks;
                         __u32 cg_sparecon[13];
                 } cg_44;
                 __u32 cg_sparecon[16];
         } cg_u;
         __u8 cg_space[1];
 
 };
 
 
 
 
 struct ufs_inode {
         __u16 ui_mode;
         __u16 ui_nlink;
         union {
                 struct {
                         __u16 ui_suid;
                         __u16 ui_sgid;
                 } oldids;
                 __u32 ui_inumber;
                 __u32 ui_author;
         } ui_u1;
         __u64 ui_size;
         struct ufs_timeval ui_atime;
         struct ufs_timeval ui_mtime;
         struct ufs_timeval ui_ctime;
         union {
                 struct {
                         __u32 ui_db[12];
                         __u32 ui_ib[3];
                 } ui_addr;
                 __u8 ui_symlink[4*(12 +3)];
         } ui_u2;
         __u32 ui_flags;
         __u32 ui_blocks;
         __u32 ui_gen;
         union {
                 struct {
                         __u32 ui_shadow;
                         __u32 ui_uid;
                         __u32 ui_gid;
                         __u32 ui_oeftflag;
                 } ui_sun;
                 struct {
                         __u32 ui_uid;
                         __u32 ui_gid;
                         __s32 ui_spare[2];
                 } ui_44;
                 struct {
                         __u32 ui_uid;
                         __u32 ui_gid;
                         __u16 ui_modeh;
                         __u16 ui_spare;
                         __u32 ui_trans;
                 } ui_hurd;
         } ui_u3;
 };
 # 514 "/data1/src/linux/include/linux/ufs_fs.h"
 extern void ufs_free_fragments (struct inode *, unsigned, unsigned);
 extern void ufs_free_blocks (struct inode *, unsigned, unsigned);
 extern unsigned ufs_new_fragments (struct inode *, u32 *, unsigned, unsigned, unsigned, int *);
 
 
 extern struct ufs_cg_private_info * ufs_load_cylinder (struct super_block *, unsigned);
 extern void ufs_put_cylinder (struct super_block *, unsigned);
 
 
 extern struct inode_operations ufs_dir_inode_operations;
 extern int ufs_check_dir_entry (const char *, struct inode *, struct ufs_dir_entry *, struct buffer_head *, unsigned long);
 extern int ufs_add_link (struct dentry *, struct inode *);
 extern ino_t ufs_inode_by_name(struct inode *, struct dentry *);
 extern int ufs_make_empty(struct inode *, struct inode *);
 extern struct ufs_dir_entry * ufs_find_entry (struct dentry *, struct buffer_head **);
 extern int ufs_delete_entry (struct inode *, struct ufs_dir_entry *, struct buffer_head *);
 extern int ufs_empty_dir (struct inode *);
 extern struct ufs_dir_entry * ufs_dotdot (struct inode *, struct buffer_head **);
 extern void ufs_set_link(struct inode *, struct ufs_dir_entry *, struct buffer_head *, struct inode *);
 
 
 extern struct inode_operations ufs_file_inode_operations;
 extern struct file_operations ufs_file_operations;
 
 extern struct address_space_operations ufs_aops;
 
 
 extern void ufs_free_inode (struct inode *inode);
 extern struct inode * ufs_new_inode (const struct inode *, int);
 
 
 extern int ufs_frag_map (struct inode *, int);
 extern void ufs_read_inode (struct inode *);
 extern void ufs_put_inode (struct inode *);
 extern void ufs_write_inode (struct inode *, int);
 extern int ufs_sync_inode (struct inode *);
 extern void ufs_delete_inode (struct inode *);
 extern struct buffer_head * ufs_getfrag (struct inode *, unsigned, int, int *);
 extern struct buffer_head * ufs_bread (struct inode *, unsigned, int, int *);
 
 
 extern struct file_operations ufs_dir_operations;
 
 
 extern struct file_system_type ufs_fs_type;
 extern void ufs_warning (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
 extern void ufs_error (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
 extern void ufs_panic (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
 extern void ufs_write_super (struct super_block *);
 
 
 extern struct inode_operations ufs_fast_symlink_inode_operations;
 
 
 extern void ufs_truncate (struct inode *);
 # 18 "/data1/src/linux/include/linux/ufs_fs_sb.h" 2
 
 
 
 
 
 struct ufs_buffer_head {
         unsigned fragment;
         unsigned count;
         struct buffer_head * bh[(8192 / 1024)];
 };
 
 struct ufs_cg_private_info {
         struct ufs_cylinder_group ucg;
         __u32 c_cgx;
         __u16 c_ncyl;
         __u16 c_niblk;
         __u32 c_ndblk;
         __u32 c_rotor;
         __u32 c_frotor;
         __u32 c_irotor;
         __u32 c_btotoff;
         __u32 c_boff;
         __u32 c_iusedoff;
         __u32 c_freeoff;
         __u32 c_nextfreeoff;
         __u32 c_clustersumoff;
         __u32 c_clusteroff;
         __u32 c_nclusterblks;
 };
 
 struct ufs_sb_private_info {
         struct ufs_buffer_head s_ubh;
         __u32 s_sblkno;
         __u32 s_cblkno;
         __u32 s_iblkno;
         __u32 s_dblkno;
         __u32 s_cgoffset;
         __u32 s_cgmask;
         __u32 s_size;
         __u32 s_dsize;
         __u32 s_ncg;
         __u32 s_bsize;
         __u32 s_fsize;
         __u32 s_fpb;
         __u32 s_minfree;
         __u32 s_bmask;
         __u32 s_fmask;
         __u32 s_bshift;
         __u32 s_fshift;
         __u32 s_fpbshift;
         __u32 s_fsbtodb;
         __u32 s_sbsize;
         __u32 s_csmask;
         __u32 s_csshift;
         __u32 s_nindir;
         __u32 s_inopb;
         __u32 s_nspf;
         __u32 s_npsect;
         __u32 s_interleave;
         __u32 s_trackskew;
         __u32 s_csaddr;
         __u32 s_cssize;
         __u32 s_cgsize;
         __u32 s_ntrak;
         __u32 s_nsect;
         __u32 s_spc;
         __u32 s_ipg;
         __u32 s_fpg;
         __u32 s_cpc;
         __s32 s_contigsumsize;
         __s64 s_qbmask;
         __s64 s_qfmask;
         __s32 s_postblformat;
         __s32 s_nrpos;
         __s32 s_postbloff;
         __s32 s_rotbloff;
 
         __u32 s_fpbmask;
         __u32 s_apb;
         __u32 s_2apb;
         __u32 s_3apb;
         __u32 s_apbmask;
         __u32 s_apbshift;
         __u32 s_2apbshift;
         __u32 s_3apbshift;
         __u32 s_nspfshift;
         __u32 s_nspb;
         __u32 s_inopf;
         __u32 s_sbbase;
         __u32 s_bpf;
         __u32 s_bpfshift;
         __u32 s_bpfmask;
 
         __u32 s_maxsymlinklen;
 };
 
 
 
 
 
 struct ufs_sb_info {
         struct ufs_sb_private_info * s_uspi;
         struct ufs_csum * s_csp[31];
         unsigned s_bytesex;
         unsigned s_flags;
         struct buffer_head ** s_ucg;
         struct ufs_cg_private_info * s_ucpi[8];
         unsigned s_cgno[8];
         unsigned short s_cg_loaded;
         unsigned s_mount_opt;
 };
 
 
 
 
 
 
 
 struct ufs_super_block_first {
         __u32 fs_link;
         __u32 fs_rlink;
         __u32 fs_sblkno;
         __u32 fs_cblkno;
         __u32 fs_iblkno;
         __u32 fs_dblkno;
         __u32 fs_cgoffset;
         __u32 fs_cgmask;
         __u32 fs_time;
         __u32 fs_size;
         __u32 fs_dsize;
         __u32 fs_ncg;
         __u32 fs_bsize;
         __u32 fs_fsize;
         __u32 fs_frag;
         __u32 fs_minfree;
         __u32 fs_rotdelay;
         __u32 fs_rps;
         __u32 fs_bmask;
         __u32 fs_fmask;
         __u32 fs_bshift;
         __u32 fs_fshift;
         __u32 fs_maxcontig;
         __u32 fs_maxbpg;
         __u32 fs_fragshift;
         __u32 fs_fsbtodb;
         __u32 fs_sbsize;
         __u32 fs_csmask;
         __u32 fs_csshift;
         __u32 fs_nindir;
         __u32 fs_inopb;
         __u32 fs_nspf;
         __u32 fs_optim;
         union {
                 struct {
                         __u32 fs_npsect;
                 } fs_sun;
                 struct {
                         __s32 fs_state;
                 } fs_sunx86;
         } fs_u1;
         __u32 fs_interleave;
         __u32 fs_trackskew;
         __u32 fs_id[2];
         __u32 fs_csaddr;
         __u32 fs_cssize;
         __u32 fs_cgsize;
         __u32 fs_ntrak;
         __u32 fs_nsect;
         __u32 fs_spc;
         __u32 fs_ncyl;
         __u32 fs_cpg;
         __u32 fs_ipg;
         __u32 fs_fpg;
         struct ufs_csum fs_cstotal;
         __s8 fs_fmod;
         __s8 fs_clean;
         __s8 fs_ronly;
         __s8 fs_flags;
         __s8 fs_fsmnt[512 - 212];
 
 };
 
 struct ufs_super_block_second {
         __s8 fs_fsmnt[212];
         __u32 fs_cgrotor;
         __u32 fs_csp[31];
         __u32 fs_maxcluster;
         __u32 fs_cpc;
         __u16 fs_opostbl[82];
 };
 
 struct ufs_super_block_third {
         __u16 fs_opostbl[46];
         union {
                 struct {
                         __s32 fs_sparecon[53];
                         __s32 fs_reclaim;
                         __s32 fs_sparecon2[1];
                         __s32 fs_state;
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                 } fs_sun;
                 struct {
                         __s32 fs_sparecon[53];
                         __s32 fs_reclaim;
                         __s32 fs_sparecon2[1];
                         __u32 fs_npsect;
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                 } fs_sunx86;
                 struct {
                         __s32 fs_sparecon[50];
                         __s32 fs_contigsumsize;
                         __s32 fs_maxsymlinklen;
                         __s32 fs_inodefmt;
                         __u32 fs_maxfilesize[2];
                         __u32 fs_qbmask[2];
                         __u32 fs_qfmask[2];
                         __s32 fs_state;
                 } fs_44;
         } fs_u2;
         __s32 fs_postblformat;
         __s32 fs_nrpos;
         __s32 fs_postbloff;
         __s32 fs_rotbloff;
         __s32 fs_magic;
         __u8 fs_space[1];
 };
 # 678 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/efs_fs_sb.h" 1
 # 25 "/data1/src/linux/include/linux/efs_fs_sb.h"
 struct efs_super {
         int32_t fs_size;
         int32_t fs_firstcg;
         int32_t fs_cgfsize;
         short fs_cgisize;
         short fs_sectors;
         short fs_heads;
         short fs_ncg;
         short fs_dirty;
         int32_t fs_time;
         int32_t fs_magic;
         char fs_fname[6];
         char fs_fpack[6];
         int32_t fs_bmsize;
         int32_t fs_tfree;
         int32_t fs_tinode;
         int32_t fs_bmblock;
         int32_t fs_replsb;
         int32_t fs_lastialloc;
         char fs_spare[20];
         int32_t fs_checksum;
 };
 
 
 struct efs_sb_info {
         int32_t fs_magic;
         int32_t fs_start;
         int32_t first_block;
         int32_t total_blocks;
         int32_t group_size;
         int32_t data_free;
         int32_t inode_free;
         short inode_blocks;
         short total_groups;
 };
 # 679 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/romfs_fs_sb.h" 1
 
 
 
 
 
 struct romfs_sb_info {
         unsigned long s_maxsize;
 };
 # 680 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/smb_fs_sb.h" 1
 # 15 "/data1/src/linux/include/linux/smb_fs_sb.h"
 # 1 "/data1/src/linux/include/linux/smb.h" 1
 # 14 "/data1/src/linux/include/linux/smb.h"
 enum smb_protocol {
         SMB_PROTOCOL_NONE,
         SMB_PROTOCOL_CORE,
         SMB_PROTOCOL_COREPLUS,
         SMB_PROTOCOL_LANMAN1,
         SMB_PROTOCOL_LANMAN2,
         SMB_PROTOCOL_NT1
 };
 
 enum smb_case_hndl {
         SMB_CASE_DEFAULT,
         SMB_CASE_LOWER,
         SMB_CASE_UPPER
 };
 
 struct smb_dskattr {
         __u16 total;
         __u16 allocblocks;
         __u16 blocksize;
         __u16 free;
 };
 
 struct smb_conn_opt {
 
 
         unsigned int fd;
 
         enum smb_protocol protocol;
         enum smb_case_hndl case_handling;
 
 
 
         __u32 max_xmit;
         __u16 server_uid;
         __u16 tid;
 
 
         __u16 secmode;
         __u16 maxmux;
         __u16 maxvcs;
         __u16 rawmode;
         __u32 sesskey;
 
 
         __u32 maxraw;
         __u32 capabilities;
         __s16 serverzone;
 };
 
 
 
 
 struct smb_nls_codepage {
         char local_name[20];
         char remote_name[20];
 };
 # 78 "/data1/src/linux/include/linux/smb.h"
 struct smb_fattr {
 
         __u16 attr;
 
         unsigned long f_ino;
         umode_t f_mode;
         nlink_t f_nlink;
         uid_t f_uid;
         gid_t f_gid;
         kdev_t f_rdev;
         off_t f_size;
         time_t f_atime;
         time_t f_mtime;
         time_t f_ctime;
         unsigned long f_blksize;
         unsigned long f_blocks;
 };
 
 enum smb_conn_state {
         CONN_VALID,
         CONN_INVALID,
 
         CONN_RETRIED,
         CONN_RETRYING
 };
 # 16 "/data1/src/linux/include/linux/smb_fs_sb.h" 2
 
 
 
 
 
 
 
 struct smb_sb_info {
         enum smb_conn_state state;
         struct file * sock_file;
 
         struct smb_mount_data_kernel *mnt;
         unsigned char *temp_buf;
 
 
 
 
         unsigned int generation;
         pid_t conn_pid;
         struct smb_conn_opt opt;
 
         struct semaphore sem;
         wait_queue_head_t wait;
 
         __u32 packet_size;
         unsigned char * packet;
         unsigned short rcls;
         unsigned short err;
 
 
         void *data_ready;
 
 
         struct nls_table *remote_nls;
         struct nls_table *local_nls;
 
 
 
 
         char *name_buf;
 
         int (*convert)(char *, int, const char *, int,
                        struct nls_table *, struct nls_table *);
 };
 
 
 static inline void
 smb_lock_server(struct smb_sb_info *server)
 {
         down(&(server->sem));
 }
 
 static inline void
 smb_unlock_server(struct smb_sb_info *server)
 {
         up(&(server->sem));
 }
 # 681 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/hfs_fs_sb.h" 1
 # 15 "/data1/src/linux/include/linux/hfs_fs_sb.h"
 struct hfs_name;
 
 typedef int (*hfs_namein_fn) (char *, const struct hfs_name *);
 typedef void (*hfs_nameout_fn) (struct hfs_name *, const char *, int);
 typedef void (*hfs_ifill_fn) (struct inode *, ino_t, const int);
 
 
 
 
 
 
 struct hfs_sb_info {
         int magic;
         struct hfs_mdb *s_mdb;
         int s_quiet;
 
         int s_lowercase;
         int s_afpd;
         int s_version;
         hfs_namein_fn s_namein;
 
 
         hfs_nameout_fn s_nameout;
 
 
         hfs_ifill_fn s_ifill;
 
         const struct hfs_name *s_reserved1;
         const struct hfs_name *s_reserved2;
         __u32 s_type;
         __u32 s_creator;
         umode_t s_umask;
 
         uid_t s_uid;
         gid_t s_gid;
         char s_conv;
 };
 # 682 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/adfs_fs_sb.h" 1
 # 13 "/data1/src/linux/include/linux/adfs_fs_sb.h"
 struct adfs_discmap;
 struct adfs_dir_ops;
 
 
 
 
 struct adfs_sb_info {
         struct adfs_discmap *s_map;
         struct adfs_dir_ops *s_dir;
 
         uid_t s_uid;
         gid_t s_gid;
         umode_t s_owner_mask;
         umode_t s_other_mask;
 
         __u32 s_ids_per_zone;
         __u32 s_idlen;
         __u32 s_map_size;
         unsigned long s_size;
         signed int s_map2blk;
         unsigned int s_log2sharesize;
         unsigned int s_version;
         unsigned int s_namelen;
 };
 # 683 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/qnx4_fs_sb.h" 1
 # 14 "/data1/src/linux/include/linux/qnx4_fs_sb.h"
 # 1 "/data1/src/linux/include/linux/qnx4_fs.h" 1
 # 45 "/data1/src/linux/include/linux/qnx4_fs.h"
 struct qnx4_inode_entry {
         char di_fname[16];
         qnx4_off_t di_size;
         qnx4_xtnt_t di_first_xtnt;
         __u32 di_xblk;
         __s32 di_ftime;
         __s32 di_mtime;
         __s32 di_atime;
         __s32 di_ctime;
         qnx4_nxtnt_t di_num_xtnts;
         qnx4_mode_t di_mode;
         qnx4_muid_t di_uid;
         qnx4_mgid_t di_gid;
         qnx4_nlink_t di_nlink;
         __u8 di_zero[4];
         qnx4_ftype_t di_type;
         __u8 di_status;
 };
 
 struct qnx4_link_info {
         char dl_fname[48];
         __u32 dl_inode_blk;
         __u8 dl_inode_ndx;
         __u8 dl_spare[10];
         __u8 dl_status;
 };
 
 struct qnx4_xblk {
         __u32 xblk_next_xblk;
         __u32 xblk_prev_xblk;
         __u8 xblk_num_xtnts;
         __u8 xblk_spare[3];
         __s32 xblk_num_blocks;
         qnx4_xtnt_t xblk_xtnts[60];
         char xblk_signature[8];
         qnx4_xtnt_t xblk_first_xtnt;
 };
 
 struct qnx4_super_block {
         struct qnx4_inode_entry RootDir;
         struct qnx4_inode_entry Inode;
         struct qnx4_inode_entry Boot;
         struct qnx4_inode_entry AltBoot;
 };
 # 100 "/data1/src/linux/include/linux/qnx4_fs.h"
 extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry);
 extern unsigned long qnx4_count_free_blocks(struct super_block *sb);
 extern unsigned long qnx4_block_map(struct inode *inode, long iblock);
 
 extern struct buffer_head *qnx4_getblk(struct inode *, int, int);
 extern struct buffer_head *qnx4_bread(struct inode *, int, int);
 
 extern int qnx4_create(struct inode *dir, struct dentry *dentry, int mode);
 extern struct inode_operations qnx4_file_inode_operations;
 extern struct inode_operations qnx4_dir_inode_operations;
 extern struct file_operations qnx4_file_operations;
 extern struct file_operations qnx4_dir_operations;
 extern int qnx4_is_free(struct super_block *sb, long block);
 extern int qnx4_set_bitmap(struct super_block *sb, long block, int busy);
 extern int qnx4_create(struct inode *inode, struct dentry *dentry, int mode);
 extern void qnx4_truncate(struct inode *inode);
 extern void qnx4_free_inode(struct inode *inode);
 extern int qnx4_unlink(struct inode *dir, struct dentry *dentry);
 extern int qnx4_rmdir(struct inode *dir, struct dentry *dentry);
 extern int qnx4_sync_file(struct file *file, struct dentry *dentry, int);
 extern int qnx4_sync_inode(struct inode *inode);
 extern int qnx4_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh, int create);
 # 15 "/data1/src/linux/include/linux/qnx4_fs_sb.h" 2
 
 
 
 
 
 struct qnx4_sb_info {
         struct buffer_head *sb_buf;
         struct qnx4_super_block *sb;
         unsigned int Version;
         struct qnx4_inode_entry *BitMap;
 };
 # 684 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/reiserfs_fs_sb.h" 1
 
 
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/tqueue.h" 1
 # 38 "/data1/src/linux/include/linux/tqueue.h"
 struct tq_struct {
         struct list_head list;
         unsigned long sync;
         void (*routine)(void *);
         void *data;
 };
 # 64 "/data1/src/linux/include/linux/tqueue.h"
 typedef struct list_head task_queue;
 
 
 
 
 extern task_queue tq_timer, tq_immediate, tq_disk;
 # 94 "/data1/src/linux/include/linux/tqueue.h"
 extern spinlock_t tqueue_lock;
 
 
 
 
 
 static inline int queue_task(struct tq_struct *bh_pointer, task_queue *bh_list)
 {
         int ret = 0;
         if (!test_and_set_bit(0,&bh_pointer->sync)) {
                 unsigned long flags;
                 do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b  \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&tqueue_lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 list_add_tail(&bh_pointer->list, bh_list);
                 do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &tqueue_lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
                 ret = 1;
         }
         return ret;
 }
 
 
 
 
 
 extern void __run_task_queue(task_queue *list);
 
 static inline void run_task_queue(task_queue *list)
 {
         if ((!list_empty(&*list)))
                 __run_task_queue(list);
 }
 # 9 "/data1/src/linux/include/linux/reiserfs_fs_sb.h" 2
 # 26 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
 struct reiserfs_super_block
 {
   __u32 s_block_count;
   __u32 s_free_blocks;
   __u32 s_root_block;
   __u32 s_journal_block;
   __u32 s_journal_dev;
 # 43 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
   __u32 s_orig_journal_size;
   __u32 s_journal_trans_max ;
   __u32 s_journal_block_count ;
   __u32 s_journal_max_batch ;
   __u32 s_journal_max_commit_age ;
   __u32 s_journal_max_trans_age ;
   __u16 s_blocksize;
   __u16 s_oid_maxsize;
   __u16 s_oid_cursize;
   __u16 s_state;
   char s_magic[12];
   __u32 s_hash_function_code;
   __u16 s_tree_height;
   __u16 s_bmap_nr;
   __u16 s_version;
 
 
 
 
   __u16 s_reserved;
   __u32 s_inode_generation;
   char s_unused[124] ;
 } __attribute__ ((__packed__));
 # 121 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
 struct reiserfs_super_block_v1
 {
   __u32 s_block_count;
   __u32 s_free_blocks;
   __u32 s_root_block;
   __u32 s_journal_block;
   __u32 s_journal_dev;
   __u32 s_orig_journal_size;
   __u32 s_journal_trans_max ;
   __u32 s_journal_block_count ;
   __u32 s_journal_max_batch ;
   __u32 s_journal_max_commit_age ;
   __u32 s_journal_max_trans_age ;
   __u16 s_blocksize;
   __u16 s_oid_maxsize;
   __u16 s_oid_cursize;
   __u16 s_state;
   char s_magic[16];
   __u16 s_tree_height;
   __u16 s_bmap_nr;
   __u32 s_reserved;
 } __attribute__ ((__packed__));
 # 200 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
 struct reiserfs_journal_cnode {
   struct buffer_head *bh ;
   struct super_block *sb ;
   unsigned long blocknr ;
   int state ;
   struct reiserfs_journal_list *jlist ;
   struct reiserfs_journal_cnode *next ;
   struct reiserfs_journal_cnode *prev ;
   struct reiserfs_journal_cnode *hprev ;
   struct reiserfs_journal_cnode *hnext ;
 };
 
 struct reiserfs_bitmap_node {
   int id ;
   char *data ;
   struct list_head list ;
 } ;
 
 struct reiserfs_list_bitmap {
   struct reiserfs_journal_list *journal_list ;
   struct reiserfs_bitmap_node **bitmaps ;
 } ;
 
 
 
 
 struct reiserfs_transaction_handle {
 
   char *t_caller ;
   int t_blocks_logged ;
   int t_blocks_allocated ;
   unsigned long t_trans_id ;
   struct super_block *t_super ;
 
 } ;
 
 
 
 
 
 
 
 struct reiserfs_journal_list {
   unsigned long j_start ;
   unsigned long j_len ;
   atomic_t j_nonzerolen ;
   atomic_t j_commit_left ;
   atomic_t j_flushing ;
   atomic_t j_commit_flushing ;
   atomic_t j_older_commits_done ;
   unsigned long j_trans_id ;
   time_t j_timestamp ;
   struct reiserfs_list_bitmap *j_list_bitmap ;
   struct buffer_head *j_commit_bh ;
   struct reiserfs_journal_cnode *j_realblock ;
   struct reiserfs_journal_cnode *j_freedlist ;
   wait_queue_head_t j_commit_wait ;
   wait_queue_head_t j_flush_wait ;
 } ;
 
 struct reiserfs_page_list ;
 
 struct reiserfs_journal {
   struct buffer_head ** j_ap_blocks ;
   struct reiserfs_journal_cnode *j_last ;
   struct reiserfs_journal_cnode *j_first ;
 
   int j_state ;
   unsigned long j_trans_id ;
   unsigned long j_mount_id ;
   unsigned long j_start ;
   unsigned long j_len ;
   unsigned long j_len_alloc ;
   atomic_t j_wcount ;
   unsigned long j_bcount ;
   unsigned long j_first_unflushed_offset ;
   unsigned long j_last_flush_trans_id ;
   struct buffer_head *j_header_bh ;
 
 
 
 
   struct reiserfs_page_list *j_flush_pages ;
   time_t j_trans_start_time ;
   wait_queue_head_t j_wait ;
   atomic_t j_wlock ;
   wait_queue_head_t j_join_wait ;
   atomic_t j_jlock ;
   int j_journal_list_index ;
   int j_list_bitmap_index ;
   int j_must_wait ;
   int j_next_full_flush ;
   int j_next_async_flush ;
 
   int j_cnode_used ;
   int j_cnode_free ;
 
   struct reiserfs_journal_cnode *j_cnode_free_list ;
   struct reiserfs_journal_cnode *j_cnode_free_orig ;
 
   int j_free_bitmap_nodes ;
   int j_used_bitmap_nodes ;
   struct list_head j_bitmap_nodes ;
   struct inode j_dummy_inode ;
   struct reiserfs_list_bitmap j_list_bitmap[5] ;
   struct reiserfs_journal_list j_journal_list[64] ;
   struct reiserfs_journal_cnode *j_hash_table[8192] ;
   struct reiserfs_journal_cnode *j_list_hash_table[8192] ;
 
   struct list_head j_prealloc_list;
 };
 
 
 
 
 typedef __u32 (*hashf_t) (const signed char *, int);
 
 struct proc_dir_entry;
 # 381 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
 typedef struct reiserfs_proc_info_data
 {} reiserfs_proc_info_data_t;
 
 
 
 struct reiserfs_sb_info
 {
     struct buffer_head * s_sbh;
 
 
     struct reiserfs_super_block * s_rs;
     struct buffer_head ** s_ap_bitmap;
     struct reiserfs_journal *s_journal ;
     unsigned short s_mount_state;
 
 
     void (*end_io_handler)(struct buffer_head *, int);
     hashf_t s_hash_function;
 
 
     unsigned long s_mount_opt;
 
 
 
 
     wait_queue_head_t s_wait;
 
     atomic_t s_generation_counter;
 
 
 
     int s_kmallocs;
     int s_disk_reads;
     int s_disk_writes;
     int s_fix_nodes;
     int s_do_balance;
     int s_unneeded_left_neighbor;
     int s_good_search_by_key_reada;
     int s_bmaps;
     int s_bmaps_without_search;
     int s_direct2indirect;
     int s_indirect2direct;
     reiserfs_proc_info_data_t s_proc_info_data;
     struct proc_dir_entry *procdir;
 };
 # 480 "/data1/src/linux/include/linux/reiserfs_fs_sb.h"
 void reiserfs_file_buffer (struct buffer_head * bh, int list);
 int reiserfs_is_super(struct super_block *s) ;
 int journal_mark_dirty(struct reiserfs_transaction_handle *, struct super_block *, struct buffer_head *bh) ;
 int flush_old_commits(struct super_block *s, int) ;
 int show_reiserfs_locks(void) ;
 int reiserfs_resize(struct super_block *, unsigned long) ;
 # 685 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/bfs_fs_sb.h" 1
 # 12 "/data1/src/linux/include/linux/bfs_fs_sb.h"
 struct bfs_sb_info {
         unsigned long si_blocks;
         unsigned long si_freeb;
         unsigned long si_freei;
         unsigned long si_lf_ioff;
         unsigned long si_lf_sblk;
         unsigned long si_lf_eblk;
         unsigned long si_lasti;
         char * si_imap;
         struct buffer_head * si_sbh;
         struct bfs_super_block * si_bfs_sb;
 };
 # 686 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/udf_fs_sb.h" 1
 # 21 "/data1/src/linux/include/linux/udf_fs_sb.h"
 #pragma pack(1)
 # 30 "/data1/src/linux/include/linux/udf_fs_sb.h"
 struct udf_sparing_data
 {
         __u16 s_packet_len;
         struct buffer_head *s_spar_map[4];
 };
 
 struct udf_virtual_data
 {
         __u32 s_num_entries;
         __u16 s_start_offset;
 };
 
 struct udf_bitmap
 {
         __u32 s_extLength;
         __u32 s_extPosition;
         __u16 s_nr_groups;
         struct buffer_head **s_block_bitmap;
 };
 
 struct udf_part_map
 {
         union
         {
                 struct udf_bitmap *s_bitmap;
                 struct inode *s_table;
         } s_uspace;
         union
         {
                 struct udf_bitmap *s_bitmap;
                 struct inode *s_table;
         } s_fspace;
         __u32 s_partition_root;
         __u32 s_partition_len;
         __u16 s_partition_type;
         __u16 s_partition_num;
         union
         {
                 struct udf_sparing_data s_sparing;
                 struct udf_virtual_data s_virtual;
         } s_type_specific;
         __u32 (*s_partition_func)(struct super_block *, __u32, __u16, __u32);
         __u16 s_volumeseqnum;
         __u16 s_partition_flags;
 };
 
 #pragma pack()
 
 struct udf_sb_info
 {
         struct udf_part_map *s_partmaps;
         __u8 s_volident[32];
 
 
         __u16 s_partitions;
         __u16 s_partition;
 
 
         __s32 s_session;
         __u32 s_anchor[4];
         __u32 s_lastblock;
 
         struct buffer_head *s_lvidbh;
 
 
         mode_t s_umask;
         gid_t s_gid;
         uid_t s_uid;
 
 
         time_t s_recordtime;
 
 
         __u16 s_serialnum;
 
 
         __u16 s_udfrev;
 
 
         __u32 s_flags;
 
 
         struct nls_table *s_nls_map;
 
 
         struct inode *s_vat;
 };
 # 687 "/data1/src/linux/include/linux/fs.h" 2
 # 1 "/data1/src/linux/include/linux/ncp_fs_sb.h" 1
 # 12 "/data1/src/linux/include/linux/ncp_fs_sb.h"
 # 1 "/data1/src/linux/include/linux/ncp_mount.h" 1
 # 12 "/data1/src/linux/include/linux/ncp_mount.h"
 # 1 "/data1/src/linux/include/linux/ncp.h" 1
 # 22 "/data1/src/linux/include/linux/ncp.h"
 struct ncp_request_header {
         __u16 type __attribute__((packed));
         __u8 sequence __attribute__((packed));
         __u8 conn_low __attribute__((packed));
         __u8 task __attribute__((packed));
         __u8 conn_high __attribute__((packed));
         __u8 function __attribute__((packed));
         __u8 data[0] __attribute__((packed));
 };
 
 
 
 
 struct ncp_reply_header {
         __u16 type __attribute__((packed));
         __u8 sequence __attribute__((packed));
         __u8 conn_low __attribute__((packed));
         __u8 task __attribute__((packed));
         __u8 conn_high __attribute__((packed));
         __u8 completion_code __attribute__((packed));
         __u8 connection_state __attribute__((packed));
         __u8 data[0] __attribute__((packed));
 };
 
 
 
 struct ncp_volume_info {
         __u32 total_blocks;
         __u32 free_blocks;
         __u32 purgeable_blocks;
         __u32 not_yet_purgeable_blocks;
         __u32 total_dir_entries;
         __u32 available_dir_entries;
         __u8 sectors_per_block;
         char volume_name[(16) + 1];
 };
 # 112 "/data1/src/linux/include/linux/ncp.h"
 struct nw_info_struct {
         __u32 spaceAlloc __attribute__((packed));
         __u32 attributes __attribute__((packed));
         __u16 flags __attribute__((packed));
         __u32 dataStreamSize __attribute__((packed));
         __u32 totalStreamSize __attribute__((packed));
         __u16 numberOfStreams __attribute__((packed));
         __u16 creationTime __attribute__((packed));
         __u16 creationDate __attribute__((packed));
         __u32 creatorID __attribute__((packed));
         __u16 modifyTime __attribute__((packed));
         __u16 modifyDate __attribute__((packed));
         __u32 modifierID __attribute__((packed));
         __u16 lastAccessDate __attribute__((packed));
         __u16 archiveTime __attribute__((packed));
         __u16 archiveDate __attribute__((packed));
         __u32 archiverID __attribute__((packed));
         __u16 inheritedRightsMask __attribute__((packed));
         __u32 dirEntNum __attribute__((packed));
         __u32 DosDirNum __attribute__((packed));
         __u32 volNumber __attribute__((packed));
         __u32 EADataSize __attribute__((packed));
         __u32 EAKeyCount __attribute__((packed));
         __u32 EAKeySize __attribute__((packed));
         __u32 NSCreator __attribute__((packed));
         __u8 nameLen __attribute__((packed));
         __u8 entryName[256] __attribute__((packed));
 };
 # 156 "/data1/src/linux/include/linux/ncp.h"
 struct nw_modify_dos_info {
         __u32 attributes __attribute__((packed));
         __u16 creationDate __attribute__((packed));
         __u16 creationTime __attribute__((packed));
         __u32 creatorID __attribute__((packed));
         __u16 modifyDate __attribute__((packed));
         __u16 modifyTime __attribute__((packed));
         __u32 modifierID __attribute__((packed));
         __u16 archiveDate __attribute__((packed));
         __u16 archiveTime __attribute__((packed));
         __u32 archiverID __attribute__((packed));
         __u16 lastAccessDate __attribute__((packed));
         __u16 inheritanceGrantMask __attribute__((packed));
         __u16 inheritanceRevokeMask __attribute__((packed));
         __u32 maximumSpace __attribute__((packed));
 };
 
 struct nw_search_sequence {
         __u8 volNumber __attribute__((packed));
         __u32 dirBase __attribute__((packed));
         __u32 sequence __attribute__((packed));
 };
 # 13 "/data1/src/linux/include/linux/ncp_mount.h" 2
 # 25 "/data1/src/linux/include/linux/ncp_mount.h"
 struct ncp_mount_data {
         int version;
         unsigned int ncp_fd;
         __kernel_uid_t mounted_uid;
         __kernel_pid_t wdog_pid;
 
         unsigned char mounted_vol[(16) + 1];
         unsigned int time_out;
 
         unsigned int retry_count;
         unsigned int flags;
 
         __kernel_uid_t uid;
         __kernel_gid_t gid;
         __kernel_mode_t file_mode;
         __kernel_mode_t dir_mode;
 };
 
 
 
 struct ncp_mount_data_v4 {
         int version;
         unsigned long flags;
 
 
         unsigned long mounted_uid;
 
         long wdog_pid;
 
         unsigned int ncp_fd;
         unsigned int time_out;
 
         unsigned int retry_count;
 
 
 
         unsigned long uid;
         unsigned long gid;
 
         unsigned long file_mode;
         unsigned long dir_mode;
 };
 
 
 
 struct ncp_mount_data_kernel {
         unsigned long flags;
         unsigned int int_flags;
 
         __kernel_uid32_t mounted_uid;
         __kernel_pid_t wdog_pid;
         unsigned int ncp_fd;
         unsigned int time_out;
 
         unsigned int retry_count;
         unsigned char mounted_vol[(16) + 1];
         __kernel_uid32_t uid;
         __kernel_gid32_t gid;
         __kernel_mode_t file_mode;
         __kernel_mode_t dir_mode;
 };
 # 13 "/data1/src/linux/include/linux/ncp_fs_sb.h" 2
 
 
 
 
 
 struct ncp_server {
 
         struct ncp_mount_data_kernel m;
 
 
 
         __u8 name_space[(64) + 2];
 
         struct file *ncp_filp;
 
         u8 sequence;
         u8 task;
         u16 connection;
 
         u8 completion;
         u8 conn_status;
 
 
 
         int buffer_size;
 
         int reply_size;
 
         int packet_size;
         unsigned char *packet;
 
 
         int lock;
         struct semaphore sem;
 
         int current_size;
         int has_subfunction;
         int ncp_reply_size;
 
         int root_setuped;
 
 
         int sign_wanted;
         int sign_active;
         char sign_root[8];
         char sign_last[16];
 
 
         struct {
                 int auth_type;
                 size_t object_name_len;
                 void* object_name;
                 int object_type;
         } auth;
 
         struct {
                 size_t len;
                 void* data;
         } priv;
 
 
         struct nls_table *nls_vol;
         struct nls_table *nls_io;
 
 
         int dentry_ttl;
 
 
         unsigned int flags;
 };
 # 92 "/data1/src/linux/include/linux/ncp_fs_sb.h"
 static inline int ncp_conn_valid(struct ncp_server *server)
 {
         return ((server->conn_status & 0x11) == 0);
 }
 
 static inline void ncp_invalidate_conn(struct ncp_server *server)
 {
         server->conn_status |= 0x01;
 }
 # 688 "/data1/src/linux/include/linux/fs.h" 2
 
 # 1 "/data1/src/linux/include/linux/jffs2_fs_sb.h" 1
 
 
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/completion.h" 1
 # 13 "/data1/src/linux/include/linux/completion.h"
 struct completion {
         unsigned int done;
         wait_queue_head_t wait;
 };
 
 
 
 
 
 
 
 static inline void init_completion(struct completion *x)
 {
         x->done = 0;
         init_waitqueue_head(&x->wait);
 }
 
 extern void wait_for_completion(struct completion *);
 extern void complete(struct completion *);
 # 9 "/data1/src/linux/include/linux/jffs2_fs_sb.h" 2
 # 20 "/data1/src/linux/include/linux/jffs2_fs_sb.h"
 struct jffs2_sb_info {
         struct mtd_info *mtd;
 
         __u32 highest_ino;
         unsigned int flags;
         spinlock_t nodelist_lock;
 
 
         struct task_struct *gc_task;
         struct semaphore gc_thread_start;
         struct completion gc_thread_exit;
 
 
 
         struct semaphore alloc_sem;
 
 
 
 
         __u32 flash_size;
         __u32 used_size;
         __u32 dirty_size;
         __u32 free_size;
         __u32 erasing_size;
         __u32 bad_size;
         __u32 sector_size;
 
 
 
         __u32 nr_free_blocks;
         __u32 nr_erasing_blocks;
 
         __u32 nr_blocks;
         struct jffs2_eraseblock *blocks;
 
         struct jffs2_eraseblock *nextblock;
 
         struct jffs2_eraseblock *gcblock;
 
         struct list_head clean_list;
         struct list_head dirty_list;
         struct list_head erasing_list;
         struct list_head erase_pending_list;
         struct list_head erase_complete_list;
         struct list_head free_list;
         struct list_head bad_list;
         struct list_head bad_used_list;
 
         spinlock_t erase_completion_lock;
 
         wait_queue_head_t erase_wait;
         struct jffs2_inode_cache *inocache_list[1];
         spinlock_t inocache_lock;
 };
 # 690 "/data1/src/linux/include/linux/fs.h" 2
 
 extern struct list_head super_blocks;
 extern spinlock_t sb_lock;
 
 
 
 struct super_block {
         struct list_head s_list;
         kdev_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;
         struct super_operations *s_op;
         struct dquot_operations *dq_op;
         unsigned long s_flags;
         unsigned long s_magic;
         struct dentry *s_root;
         struct rw_semaphore s_umount;
         struct semaphore s_lock;
         int s_count;
         atomic_t s_active;
 
         struct list_head s_dirty;
         struct list_head s_locked_inodes;
         struct list_head s_files;
 
         struct block_device *s_bdev;
         struct list_head s_instances;
         struct quota_mount_options s_dquot;
 
         char s_id[32];
 
         union {
                 struct minix_sb_info minix_sb;
                 struct ext2_sb_info ext2_sb;
                 struct ext3_sb_info ext3_sb;
                 struct hpfs_sb_info hpfs_sb;
                 struct ntfs_sb_info ntfs_sb;
                 struct msdos_sb_info msdos_sb;
                 struct isofs_sb_info isofs_sb;
                 struct nfs_sb_info nfs_sb;
                 struct sysv_sb_info sysv_sb;
                 struct affs_sb_info affs_sb;
                 struct ufs_sb_info ufs_sb;
                 struct efs_sb_info efs_sb;
                 struct shmem_sb_info shmem_sb;
                 struct romfs_sb_info romfs_sb;
                 struct smb_sb_info smbfs_sb;
                 struct hfs_sb_info hfs_sb;
                 struct adfs_sb_info adfs_sb;
                 struct qnx4_sb_info qnx4_sb;
                 struct reiserfs_sb_info reiserfs_sb;
                 struct bfs_sb_info bfs_sb;
                 struct udf_sb_info udf_sb;
                 struct ncp_server ncpfs_sb;
                 struct jffs2_sb_info jffs2_sb;
                 struct cramfs_sb_info cramfs_sb;
                 void *generic_sbp;
         } u;
 
 
 
 
         struct semaphore s_vfs_rename_sem;
 # 764 "/data1/src/linux/include/linux/fs.h"
         struct semaphore s_nfsd_free_path_sem;
 };
 
 
 
 
 extern int vfs_create(struct inode *, struct dentry *, int);
 extern int vfs_mkdir(struct inode *, struct dentry *, int);
 extern int vfs_mknod(struct inode *, struct dentry *, int, dev_t);
 extern int vfs_symlink(struct inode *, struct dentry *, const char *);
 extern int vfs_link(struct dentry *, struct inode *, struct dentry *);
 extern int vfs_rmdir(struct inode *, struct dentry *);
 extern int vfs_unlink(struct inode *, struct dentry *);
 extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
 # 798 "/data1/src/linux/include/linux/fs.h"
 typedef int (*filldir_t)(void *, const char *, int, loff_t, ino_t, 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);
         int (*check_media_change) (kdev_t);
         int (*revalidate) (kdev_t);
         struct module *owner;
 };
 
 
 
 
 
 
 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 *);
         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);
         int (*mmap) (struct file *, struct vm_area_struct *);
         int (*open) (struct inode *, struct file *);
         int (*flush) (struct file *);
         int (*release) (struct inode *, struct file *);
         int (*fsync) (struct file *, struct dentry *, int datasync);
         int (*fasync) (int, struct file *, int);
         int (*lock) (struct file *, int, struct file_lock *);
         ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);
         ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);
         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);
 };
 
 struct inode_operations {
         int (*create) (struct inode *,struct dentry *,int);
         struct dentry * (*lookup) (struct inode *,struct dentry *);
         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,int);
         int (*rename) (struct inode *, struct dentry *,
                         struct inode *, struct dentry *);
         int (*readlink) (struct dentry *, char *,int);
         int (*follow_link) (struct dentry *, struct nameidata *);
         void (*truncate) (struct inode *);
         int (*permission) (struct inode *, int);
         int (*revalidate) (struct dentry *);
         int (*setattr) (struct dentry *, struct iattr *);
         int (*getattr) (struct dentry *, struct iattr *);
 };
 
 struct seq_file;
 
 
 
 
 
 struct super_operations {
         void (*read_inode) (struct inode *);
 
 
 
 
 
 
 
         void (*read_inode2) (struct inode *, void *) ;
         void (*dirty_inode) (struct inode *);
         void (*write_inode) (struct inode *, int);
         void (*put_inode) (struct inode *);
         void (*delete_inode) (struct inode *);
         void (*put_super) (struct super_block *);
         void (*write_super) (struct super_block *);
         void (*write_super_lockfs) (struct super_block *);
         void (*unlockfs) (struct super_block *);
         int (*statfs) (struct super_block *, struct statfs *);
         int (*remount_fs) (struct super_block *, int *, char *);
         void (*clear_inode) (struct inode *);
         void (*umount_begin) (struct super_block *);
 # 906 "/data1/src/linux/include/linux/fs.h"
         struct dentry * (*fh_to_dentry)(struct super_block *sb, __u32 *fh, int len, int fhtype, int parent);
         int (*dentry_to_fh)(struct dentry *, __u32 *fh, int *lenp, int need_parent);
         int (*show_options)(struct seq_file *, struct vfsmount *);
 };
 # 921 "/data1/src/linux/include/linux/fs.h"
 extern void __mark_inode_dirty(struct inode *, int);
 static inline void mark_inode_dirty(struct inode *inode)
 {
         __mark_inode_dirty(inode, (1 | 2 | 4));
 }
 
 static inline void mark_inode_dirty_sync(struct inode *inode)
 {
         __mark_inode_dirty(inode, 1);
 }
 
 static inline void mark_inode_dirty_pages(struct inode *inode)
 {
         __mark_inode_dirty(inode, 4);
 }
 
 struct dquot_operations {
         void (*initialize) (struct inode *, short);
         void (*drop) (struct inode *);
         int (*alloc_block) (struct inode *, unsigned long, char);
         int (*alloc_inode) (const struct inode *, unsigned long);
         void (*free_block) (struct inode *, unsigned long);
         void (*free_inode) (const struct inode *, unsigned long);
         int (*transfer) (struct inode *, struct iattr *);
 };
 
 struct file_system_type {
         const char *name;
         int fs_flags;
         struct super_block *(*read_super) (struct super_block *, void *, int);
         struct module *owner;
         struct file_system_type * next;
         struct list_head fs_supers;
 };
 # 979 "/data1/src/linux/include/linux/fs.h"
 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(struct vfsmount *);
 extern long do_mount(char *, char *, char *, unsigned long, void *);
 extern void umount_tree(struct vfsmount *);
 
 
 
 extern int vfs_statfs(struct super_block *, struct statfs *);
 # 998 "/data1/src/linux/include/linux/fs.h"
 extern int locks_mandatory_locked(struct inode *);
 extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t);
 # 1008 "/data1/src/linux/include/linux/fs.h"
 static 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;
 }
 
 static inline int locks_verify_area(int read_write, struct inode *inode,
                                     struct file *filp, loff_t offset,
                                     size_t count)
 {
         if (inode->i_flock && (((inode)->i_sb->s_flags & (64)) && ((inode)->i_mode & (0002000 | 00010)) == 0002000))
                 return locks_mandatory_area(read_write, inode, filp, offset, count);
         return 0;
 }
 
 static 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 int get_lease(struct inode *inode, unsigned int mode)
 {
         if (inode->i_flock && (inode->i_flock->fl_flags & 32))
                 return __get_lease(inode, mode);
         return 0;
 }
 
 
 
  __attribute__((syscall_linkage)) long sys_open(const char *, int, int);
  __attribute__((syscall_linkage)) long sys_close(unsigned int);
 extern int do_truncate(struct dentry *, loff_t start);
 
 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 vfs_caches_init(unsigned long);
 
 
 
 
 enum {BDEV_FILE, BDEV_SWAP, BDEV_FS, BDEV_RAW};
 extern int register_blkdev(unsigned int, const char *, struct block_device_operations *);
 extern int unregister_blkdev(unsigned int, const char *);
 extern struct block_device *bdget(dev_t);
 extern int bd_acquire(struct inode *inode);
 extern void bd_forget(struct inode *inode);
 extern void bdput(struct block_device *);
 extern struct char_device *cdget(dev_t);
 extern void cdput(struct char_device *);
 extern int blkdev_open(struct inode *, struct file *);
 extern int blkdev_close(struct inode *, struct file *);
 extern struct file_operations def_blk_fops;
 extern struct address_space_operations def_blk_aops;
 extern struct file_operations def_fifo_fops;
 extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
 extern int blkdev_get(struct block_device *, mode_t, unsigned, int);
 extern int blkdev_put(struct block_device *, int);
 
 
 extern const struct block_device_operations *get_blkfops(unsigned int);
 extern int register_chrdev(unsigned int, const char *, struct file_operations *);
 extern int unregister_chrdev(unsigned int, const char *);
 extern int chrdev_open(struct inode *, struct file *);
 extern const char * bdevname(kdev_t);
 extern const char * cdevname(kdev_t);
 extern const char * kdevname(kdev_t);
 extern void init_special_inode(struct inode *, umode_t, int);
 
 
 extern void make_bad_inode(struct inode *);
 extern int is_bad_inode(struct inode *);
 
 extern struct file_operations read_fifo_fops;
 extern struct file_operations write_fifo_fops;
 extern struct file_operations rdwr_fifo_fops;
 extern struct file_operations read_pipe_fops;
 extern struct file_operations write_pipe_fops;
 extern struct file_operations rdwr_pipe_fops;
 
 extern int fs_may_remount_ro(struct super_block *);
 
 extern int try_to_free_buffers(struct page *, unsigned int);
 extern void refile_buffer(struct buffer_head * buf);
 extern void create_empty_buffers(struct page *, unsigned long);
 extern void end_buffer_io_sync(struct buffer_head *bh, int uptodate);
 
 
 extern void set_buffer_async_io(struct buffer_head *bh) ;
 
 
 
 
 
 
 static inline void get_bh(struct buffer_head * bh)
 {
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&(bh)->b_count)))->counter)) *_v = (&(((&(bh)->b_coun t)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0 =[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tm p) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switc!
 h (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memor y"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: _ _asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ (" fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add!
 (); } }); break; case 4: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_ tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8)  : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&(bh)->b_count)))->counter))) { ca se 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __!
 bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&(bh)->b_count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&(bh)->b_count))));
 }
 
 static inline void put_bh(struct buffer_head *bh)
 {
         __asm__ __volatile__("": : :"memory");
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&bh->b_count)))->counter)) *_v = (&(((&bh->b_count))) ->counter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[% 1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) :  "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (si!
 zeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); br eak; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __ volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.r el %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); b!
 reak; case 4: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v ), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); br eak; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&bh->b_count)))->counter))) { case 4: __asm__ __v olatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64!
 _fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&bh->b_count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&bh->b_count))));
 }
 
 
 
 
 static inline void mark_buffer_uptodate(struct buffer_head * bh, int on)
 {
         if (on)
                 set_bit(BH_Uptodate, &bh->b_state);
         else
                 clear_bit(BH_Uptodate, &bh->b_state);
 }
 
 
 
 static inline void __mark_buffer_clean(struct buffer_head *bh)
 {
         refile_buffer(bh);
 }
 
 static inline void mark_buffer_clean(struct buffer_head * bh)
 {
         if (test_and_clear_bit(BH_Dirty, &(bh)->b_state))
                 __mark_buffer_clean(bh);
 }
 
 extern void __mark_dirty(struct buffer_head *bh);
 extern void __mark_buffer_dirty(struct buffer_head *bh);
 extern void mark_buffer_dirty(struct buffer_head *bh);
 extern void buffer_insert_inode_data_queue(struct buffer_head *, struct inode *);
 
 
 
 static inline void mark_buffer_async(struct buffer_head * bh, int on)
 {
         if (on)
                 set_bit(BH_Async, &bh->b_state);
         else
                 clear_bit(BH_Async, &bh->b_state);
 }
 
 
 
 
 
 
 
 static inline void buffer_IO_error(struct buffer_head * bh)
 {
         mark_buffer_clean(bh);
 
 
 
 
 
 
         bh->b_end_io(bh, test_bit(BH_Uptodate, &bh->b_state));
 }
 # 1194 "/data1/src/linux/include/linux/fs.h"
 extern void buffer_insert_inode_queue(struct buffer_head *, struct inode *);
 static inline void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode)
 {
         mark_buffer_dirty(bh);
         buffer_insert_inode_queue(bh, inode);
 }
 
 extern void set_buffer_flushtime(struct buffer_head *);
 extern void balance_dirty(void);
 extern int check_disk_change(kdev_t);
 extern int invalidate_inodes(struct super_block *);
 extern int invalidate_device(kdev_t, int);
 extern void invalidate_inode_pages(struct inode *);
 extern void invalidate_inode_pages2(struct address_space *);
 extern void invalidate_inode_buffers(struct inode *);
 
 
 extern void invalidate_bdev(struct block_device *, int);
 extern void __invalidate_buffers(kdev_t dev, int);
 extern void sync_inodes(kdev_t);
 extern void sync_unlocked_inodes(void);
 extern void write_inode_now(struct inode *, int);
 extern int sync_buffers(kdev_t, int);
 extern void sync_dev(kdev_t);
 extern int fsync_dev(kdev_t);
 extern int fsync_super(struct super_block *);
 extern int fsync_no_super(struct block_device *);
 extern void sync_inodes_sb(struct super_block *);
 extern int osync_inode_buffers(struct inode *);
 extern int osync_inode_data_buffers(struct inode *);
 extern int fsync_inode_buffers(struct inode *);
 extern int fsync_inode_data_buffers(struct inode *);
 extern int inode_has_buffers(struct inode *);
 extern void filemap_fdatasync(struct address_space *);
 extern void filemap_fdatawait(struct address_space *);
 extern void sync_supers(kdev_t);
 extern int bmap(struct inode *, int);
 extern int notify_change(struct dentry *, struct iattr *);
 extern int permission(struct inode *, int);
 extern int vfs_permission(struct inode *, int);
 extern int get_write_access(struct inode *);
 extern int deny_write_access(struct file *);
 static inline void put_write_access(struct inode * inode)
 {
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&inode->i_writecount)))->counter)) *_v = (&(((&inode- >i_writecount)))->counter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile __ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4 .rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }!
 ); break; case -4: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"( _tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v) , "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&inode->i_writecount)))- >counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); brea!
 k; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm_ _ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ (" fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ( { switch (sizeof(*(&(((&inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" !
 : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&inode->i_writecount)))->counter)) (_tmp + (-((1)))); }) :  ia64_atomic_sub((1), ((&inode->i_writecount))));
 }
 static inline void allow_write_access(struct file *file)
 {
         if (file)
                 ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&file->f_dentry->d_inode->i_writecount)))->co unter)) *_v = (&(((&file->f_dentry->d_inode->i_writecount)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_ v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&file->f_dentry->d_ inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), !
 "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v ), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&file->f_dentry->d_ino de->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; de fault: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "!
 i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_w ritecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __ bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_writecount)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __ asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&file->f_dentry->d_inode->i_writecoun!
 t)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_si ze_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&file->f_dentry->d_inode->i_writecount)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&file->f_dentry->d_inode->i_wri tecount))));
 }
 extern int do_pipe(int *);
 
 extern int open_namei(const char *, int, int, struct nameidata *);
 
 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 *);
 # 1264 "/data1/src/linux/include/linux/fs.h"
 static inline void *ERR_PTR(long error)
 {
         return (void *) error;
 }
 
 static inline long PTR_ERR(const void *ptr)
 {
         return (long) ptr;
 }
 
 static inline long IS_ERR(const void *ptr)
 {
         return (unsigned long)ptr > (unsigned long)-1000L;
 }
 # 1295 "/data1/src/linux/include/linux/fs.h"
 enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
 # 1306 "/data1/src/linux/include/linux/fs.h"
 typedef struct {
         size_t written;
         size_t count;
         char * buf;
         int error;
 } read_descriptor_t;
 
 typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
 
 
 extern loff_t default_llseek(struct file *file, loff_t offset, int origin);
 
 extern int __user_walk(const char *, unsigned, struct nameidata *);
 extern int path_init(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 int follow_down(struct vfsmount **, struct dentry **);
 extern int follow_up(struct vfsmount **, struct dentry **);
 extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
 extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
 
 
 
 extern void iput(struct inode *);
 extern void force_delete(struct inode *);
 extern struct inode * igrab(struct inode *);
 extern ino_t iunique(struct super_block *, ino_t);
 
 typedef int (*find_inode_t)(struct inode *, unsigned long, void *);
 extern struct inode * iget4(struct super_block *, unsigned long, find_inode_t, void *);
 static inline struct inode *iget(struct super_block *sb, unsigned long ino)
 {
         return iget4(sb, ino, ((void *)0), ((void *)0));
 }
 
 extern void clear_inode(struct inode *);
 extern struct inode * get_empty_inode(void);
 
 static inline struct inode * new_inode(struct super_block *sb)
 {
         struct inode *inode = get_empty_inode();
         if (inode) {
                 inode->i_sb = sb;
                 inode->i_dev = sb->s_dev;
                 inode->i_blkbits = sb->s_blocksize_bits;
         }
         return inode;
 }
 extern void remove_suid(struct inode *inode);
 
 extern void insert_inode_hash(struct inode *);
 extern void remove_inode_hash(struct inode *);
 extern struct file * get_empty_filp(void);
 extern void file_move(struct file *f, struct list_head *list);
 extern struct buffer_head * __get_hash_table(struct block_device *, sector_t, int);
 static inline struct buffer_head * get_hash_table(kdev_t dev, sector_t block, int size)
 {
         struct block_device *bdev;
         struct buffer_head *bh;
         bdev = bdget(kdev_t_to_nr(dev));
         if (!bdev) {
                 printk("No block device for %s\n", bdevname(dev));
                 do { printk("kernel BUG at %s:%d!\n", "/data1/src/linux/include/linux/fs.h", 1369); *(int *)0=0; } while (0);
         }
         bh = __get_hash_table(bdev, block, size);
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&bdev->bd_count)))->counter)) *_v = (&(((&bdev->bd_co unt)))->counter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : " =r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: (!
 { switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4)  : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break;  case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __vol atile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fet!
 ch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],% 2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"( _v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->co unter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break!
 ; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&bdev->bd_count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&bdev->bd_count))));
         return bh;
 }
 extern struct buffer_head * __getblk(struct block_device *, sector_t, int);
 static inline struct buffer_head * getblk(kdev_t dev, sector_t block, int size)
 {
         struct block_device *bdev;
         struct buffer_head *bh;
         bdev = bdget(kdev_t_to_nr(dev));
         if (!bdev) {
                 printk("No block device for %s\n", bdevname(dev));
                 do { printk("kernel BUG at %s:%d!\n", "/data1/src/linux/include/linux/fs.h", 1383); *(int *)0=0; } while (0);
         }
         bh = __getblk(bdev, block, size);
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&bdev->bd_count)))->counter)) *_v = (&(((&bdev->bd_co unt)))->counter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : " =r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: (!
 { switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4)  : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break;  case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __vol atile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fet!
 ch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],% 2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"( _v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->co unter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break!
 ; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&bdev->bd_count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&bdev->bd_count))));
         return bh;
 }
 extern void ll_rw_block(int, int, struct buffer_head * bh[]);
 extern int submit_bh(int, struct buffer_head *);
 struct bio;
 extern int submit_bio(int, struct bio *);
 extern int is_read_only(kdev_t);
 extern void __brelse(struct buffer_head *);
 static inline void brelse(struct buffer_head *buf)
 {
         if (buf)
                 __brelse(buf);
 }
 extern void __bforget(struct buffer_head *);
 static inline void bforget(struct buffer_head *buf)
 {
         if (buf)
                 __bforget(buf);
 }
 extern int set_blocksize(kdev_t, int);
 extern int sb_set_blocksize(struct super_block *, int);
 extern int sb_min_blocksize(struct super_block *, int);
 extern struct buffer_head * __bread(struct block_device *, int, int);
 static inline struct buffer_head * bread(kdev_t dev, int block, int size)
 {
         struct block_device *bdev;
         struct buffer_head *bh;
         bdev = bdget(kdev_t_to_nr(dev));
         if (!bdev) {
                 printk("No block device for %s\n", bdevname(dev));
                 do { printk("kernel BUG at %s:%d!\n", "/data1/src/linux/include/linux/fs.h", 1417); *(int *)0=0; } while (0);
         }
         bh = __bread(bdev, block, size);
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&bdev->bd_count)))->counter)) *_v = (&(((&bdev->bd_co unt)))->counter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : " =r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: (!
 { switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4)  : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break;  case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __vol atile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fet!
 ch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],% 2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&bdev->bd_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"( _v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&bdev->bd_count)))->co unter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break!
 ; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&bdev->bd_count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&bdev->bd_count))));
         return bh;
 }
 static inline struct buffer_head * sb_bread(struct super_block *sb, int block)
 {
         return __bread(sb->s_bdev, block, sb->s_blocksize);
 }
 static inline struct buffer_head * sb_getblk(struct super_block *sb, int block)
 {
         return __getblk(sb->s_bdev, block, sb->s_blocksize);
 }
 static inline struct buffer_head * sb_get_hash_table(struct super_block *sb, int block)
 {
         return __get_hash_table(sb->s_bdev, block, sb->s_blocksize);
 }
 static inline void map_bh(struct buffer_head *bh, struct super_block *sb, int block)
 {
         bh->b_state |= 1 << BH_Mapped;
         bh->b_bdev = sb->s_bdev;
         bh->b_dev = sb->s_dev;
         bh->b_blocknr = block;
 }
 extern void wakeup_bdflush(void);
 extern void put_unused_buffer_head(struct buffer_head * bh);
 extern struct buffer_head * get_unused_buffer_head(int async);
 
 extern int brw_page(int, struct page *, struct block_device *, sector_t [], int);
 
 typedef int (get_block_t)(struct inode*,sector_t,struct buffer_head*,int);
 
 
 extern int try_to_release_page(struct page * page, int gfp_mask);
 extern int discard_bh_page(struct page *, unsigned long, int);
 
 
 extern int block_symlink(struct inode *, const char *, int);
 extern int block_write_full_page(struct page*, get_block_t*);
 extern int block_read_full_page(struct page*, get_block_t*);
 extern int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*);
 extern int cont_prepare_write(struct page*, unsigned, unsigned, get_block_t*,
                                 unsigned long *);
 extern int block_commit_write(struct page *page, unsigned from, unsigned to);
 extern int block_sync_page(struct page *);
 
 sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *);
 int generic_commit_write(struct file *, struct page *, unsigned, unsigned);
 int block_truncate_page(struct address_space *, loff_t, get_block_t *);
 extern int generic_direct_IO(int, struct inode *, struct kiobuf *, unsigned long, int, get_block_t *);
 
 extern int waitfor_one_page(struct page*);
 extern int generic_file_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 ssize_t generic_file_read(struct file *, char *, size_t, loff_t *);
 extern ssize_t generic_file_write(struct file *, const char *, size_t, loff_t *);
 extern void do_generic_file_read(struct file *, loff_t *, read_descriptor_t *, read_actor_t);
 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 ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);
 extern int generic_file_open(struct inode * inode, struct file * filp);
 
 extern 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 int page_follow_link(struct dentry *, struct nameidata *);
 extern struct inode_operations page_symlink_inode_operations;
 
 extern int vfs_readdir(struct file *, filldir_t, void *);
 extern int dcache_readdir(struct file *, void *, filldir_t);
 
 extern struct file_system_type *get_fs_type(const char *name);
 extern struct super_block *get_super(kdev_t);
 extern void drop_super(struct super_block *sb);
 static inline int is_mounted(kdev_t dev)
 {
         struct super_block *sb = get_super(dev);
         if (sb) {
                 drop_super(sb);
                 return 1;
         }
         return 0;
 }
 unsigned long generate_cluster(kdev_t, int b[], int);
 unsigned long generate_cluster_swab32(kdev_t, int b[], int);
 extern kdev_t ROOT_DEV;
 extern char root_device_name[];
 
 
 extern void show_buffers(void);
 
 
 
 
 
 extern ssize_t char_read(struct file *, char *, size_t, loff_t *);
 extern ssize_t block_read(struct file *, char *, size_t, loff_t *);
 extern int read_ahead[];
 
 extern ssize_t char_write(struct file *, const char *, size_t, loff_t *);
 extern ssize_t block_write(struct file *, const char *, size_t, loff_t *);
 
 extern int file_fsync(struct file *, struct dentry *, int);
 extern int generic_buffer_fdatasync(struct inode *inode, unsigned long start_idx, unsigned long end_idx);
 extern int generic_osync_inode(struct inode *, int);
 
 
 
 
 extern int inode_change_ok(struct inode *, struct iattr *);
 extern int inode_setattr(struct inode *, struct iattr *);
 # 1551 "/data1/src/linux/include/linux/fs.h"
 static inline struct dentry *lock_parent(struct dentry *dentry)
 {
         struct dentry *dir = dget(dentry->d_parent);
 
         down(&dir->d_inode->i_sem);
         return dir;
 }
 
 static inline struct dentry *get_parent(struct dentry *dentry)
 {
         return dget(dentry->d_parent);
 }
 
 static inline void unlock_dir(struct dentry *dir)
 {
         up(&dir->d_inode->i_sem);
         dput(dir);
 }
 
 
 
 
 
 static inline void double_down(struct semaphore *s1, struct semaphore *s2)
 {
         if (s1 != s2) {
                 if ((unsigned long) s1 < (unsigned long) s2) {
                         struct semaphore *tmp = s2;
                         s2 = s1; s1 = tmp;
                 }
                 down(s1);
         }
         down(s2);
 }
 # 1595 "/data1/src/linux/include/linux/fs.h"
 static inline void triple_down(struct semaphore *s1,
                                struct semaphore *s2,
                                struct semaphore *s3)
 {
         if (s1 != s2) {
                 if ((unsigned long) s1 < (unsigned long) s2) {
                         if ((unsigned long) s1 < (unsigned long) s3) {
                                 struct semaphore *tmp = s3;
                                 s3 = s1; s1 = tmp;
                         }
                         if ((unsigned long) s1 < (unsigned long) s2) {
                                 struct semaphore *tmp = s2;
                                 s2 = s1; s1 = tmp;
                         }
                 } else {
                         if ((unsigned long) s1 < (unsigned long) s3) {
                                 struct semaphore *tmp = s3;
                                 s3 = s1; s1 = tmp;
                         }
                         if ((unsigned long) s2 < (unsigned long) s3) {
                                 struct semaphore *tmp = s3;
                                 s3 = s2; s2 = tmp;
                         }
                 }
                 down(s1);
         } else if ((unsigned long) s2 < (unsigned long) s3) {
                 struct semaphore *tmp = s3;
                 s3 = s2; s2 = tmp;
         }
         down(s2);
         down(s3);
 }
 
 static inline void double_up(struct semaphore *s1, struct semaphore *s2)
 {
         up(s1);
         if (s1 != s2)
                 up(s2);
 }
 
 static inline void triple_up(struct semaphore *s1,
                              struct semaphore *s2,
                              struct semaphore *s3)
 {
         up(s1);
         if (s1 != s2)
                 up(s2);
         up(s3);
 }
 
 static inline void double_lock(struct dentry *d1, struct dentry *d2)
 {
         double_down(&d1->d_inode->i_sem, &d2->d_inode->i_sem);
 }
 
 static inline void double_unlock(struct dentry *d1, struct dentry *d2)
 {
         double_up(&d1->d_inode->i_sem,&d2->d_inode->i_sem);
         dput(d1);
         dput(d2);
 }
 # 18 "/data1/src/linux/include/linux/capability.h" 2
 # 32 "/data1/src/linux/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;
 # 55 "/data1/src/linux/include/linux/capability.h"
 typedef __u32 kernel_cap_t;
 # 286 "/data1/src/linux/include/linux/capability.h"
 extern kernel_cap_t cap_bset;
 # 314 "/data1/src/linux/include/linux/capability.h"
 static 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 kernel_cap_t cap_intersect(kernel_cap_t a, kernel_cap_t b)
 {
      kernel_cap_t dest;
      (dest) = (a) & (b);
      return dest;
 }
 
 static 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 kernel_cap_t cap_invert(kernel_cap_t c)
 {
      kernel_cap_t dest;
      (dest) = ~(c);
      return dest;
 }
 # 6 "/data1/src/linux/include/linux/binfmts.h" 2
 # 22 "/data1/src/linux/include/linux/binfmts.h"
 struct linux_binprm{
         char buf[128];
         struct page *page[32];
         unsigned long p;
         int sh_bang;
         struct file * file;
         int e_uid, e_gid;
         kernel_cap_t cap_inheritable, cap_permitted, cap_effective;
         int argc, envc;
         char * filename;
         unsigned long loader, exec;
 };
 
 
 
 
 
 struct linux_binfmt {
         struct linux_binfmt * next;
         struct module *module;
         int (*load_binary)(struct linux_binprm *, struct pt_regs * regs);
         int (*load_shlib)(struct file *);
         int (*core_dump)(long signr, struct pt_regs * regs, struct file * file);
         unsigned long min_coredump;
 };
 
 extern int register_binfmt(struct linux_binfmt *);
 extern int unregister_binfmt(struct linux_binfmt *);
 
 extern int prepare_binprm(struct linux_binprm *);
 extern void remove_arg_zero(struct linux_binprm *);
 extern int search_binary_handler(struct linux_binprm *,struct pt_regs *);
 extern int flush_old_exec(struct linux_binprm * bprm);
 extern int setup_arg_pages(struct linux_binprm * bprm);
 extern int copy_strings(int argc,char ** argv,struct linux_binprm *bprm);
 extern int copy_strings_kernel(int argc,char ** argv,struct linux_binprm *bprm);
 extern void compute_creds(struct linux_binprm *binprm);
 extern int do_coredump(long signr, struct pt_regs * regs);
 extern void set_binfmt(struct linux_binfmt *new);
 # 10 "/data1/src/linux/include/linux/sched.h" 2
 
 
 
 # 1 "/data1/src/linux/include/linux/times.h" 1
 
 
 
 struct tms {
         clock_t tms_utime;
         clock_t tms_stime;
         clock_t tms_cutime;
         clock_t tms_cstime;
 };
 # 14 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/timex.h" 1
 # 152 "/data1/src/linux/include/linux/timex.h"
 # 1 "/data1/src/linux/include/asm/timex.h" 1
 # 13 "/data1/src/linux/include/asm/timex.h"
 typedef unsigned long cycles_t;
 
 static inline cycles_t
 get_cycles (void)
 {
         cycles_t ret;
 
         __asm__ __volatile__ ("mov %0=ar.itc" : "=r"(ret));
         return ret;
 }
 # 153 "/data1/src/linux/include/linux/timex.h" 2
 # 161 "/data1/src/linux/include/linux/timex.h"
 struct timex {
         unsigned int modes;
         long offset;
         long freq;
         long maxerror;
         long esterror;
         int status;
         long constant;
         long precision;
         long tolerance;
 
 
         struct timeval time;
         long tick;
 
         long ppsfreq;
         long jitter;
         int shift;
         long stabil;
         long jitcnt;
         long calcnt;
         long errcnt;
         long stbcnt;
 
         int :32; int :32; int :32; int :32;
         int :32; int :32; int :32; int :32;
         int :32; int :32; int :32; int :32;
 };
 # 253 "/data1/src/linux/include/linux/timex.h"
 extern long tick;
 extern int tickadj;
 
 
 
 
 extern int time_state;
 extern int time_status;
 extern long time_offset;
 extern long time_constant;
 extern long time_tolerance;
 extern long time_precision;
 extern long time_maxerror;
 extern long time_esterror;
 
 extern long time_phase;
 extern long time_freq;
 extern long time_adj;
 extern long time_reftime;
 
 extern long time_adjust;
 
 
 extern long pps_offset;
 extern long pps_jitter;
 extern long pps_freq;
 extern long pps_stabil;
 extern long pps_valid;
 
 
 extern int pps_shift;
 extern long pps_jitcnt;
 extern long pps_calcnt;
 extern long pps_errcnt;
 extern long pps_stbcnt;
 # 15 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/rbtree.h" 1
 # 100 "/data1/src/linux/include/linux/rbtree.h"
 typedef struct rb_node_s
 {
         struct rb_node_s * rb_parent;
         int rb_color;
 
 
         struct rb_node_s * rb_right;
         struct rb_node_s * rb_left;
 }
 rb_node_t;
 
 typedef struct rb_root_s
 {
         struct rb_node_s * rb_node;
 }
 rb_root_t;
 
 
 
 
 
 extern void rb_insert_color(rb_node_t *, rb_root_t *);
 extern void rb_erase(rb_node_t *, rb_root_t *);
 
 static inline void rb_link_node(rb_node_t * node, rb_node_t * parent, rb_node_t ** rb_link)
 {
         node->rb_parent = parent;
         node->rb_color = 0;
         node->rb_left = node->rb_right = ((void *)0);
 
         *rb_link = node;
 }
 # 16 "/data1/src/linux/include/linux/sched.h" 2
 
 
 
 
 
 # 1 "/data1/src/linux/include/asm/mmu.h" 1
 
 
 
 
 typedef unsigned long mm_context_t;
 # 22 "/data1/src/linux/include/linux/sched.h" 2
 
 # 1 "/data1/src/linux/include/linux/smp.h" 1
 # 14 "/data1/src/linux/include/linux/smp.h"
 # 1 "/data1/src/linux/include/asm/smp.h" 1
 # 16 "/data1/src/linux/include/asm/smp.h"
 # 1 "/data1/src/linux/include/linux/init.h" 1
 # 48 "/data1/src/linux/include/linux/init.h"
 typedef int (*initcall_t)(void);
 typedef void (*exitcall_t)(void);
 
 extern initcall_t __initcall_start, __initcall_end;
 # 61 "/data1/src/linux/include/linux/init.h"
 struct kernel_param {
         const char *str;
         int (*setup_func)(char *);
 };
 
 extern struct kernel_param __setup_start, __setup_end;
 # 17 "/data1/src/linux/include/asm/smp.h" 2
 
 
 
 # 1 "/data1/src/linux/include/asm/io.h" 1
 # 37 "/data1/src/linux/include/asm/io.h"
 # 1 "/data1/src/linux/include/asm/machvec.h" 1
 # 17 "/data1/src/linux/include/asm/machvec.h"
 struct pci_dev;
 struct pt_regs;
 struct scatterlist;
 struct irq_desc;
 
 typedef void ia64_mv_setup_t (char **);
 typedef void ia64_mv_cpu_init_t(void);
 typedef void ia64_mv_irq_init_t (void);
 typedef void ia64_mv_pci_fixup_t (int);
 typedef unsigned long ia64_mv_map_nr_t (unsigned long);
 typedef void ia64_mv_mca_init_t (void);
 typedef void ia64_mv_mca_handler_t (void);
 typedef void ia64_mv_cmci_handler_t (int, void *, struct pt_regs *);
 typedef void ia64_mv_log_print_t (void);
 typedef void ia64_mv_send_ipi_t (int, int, int, int);
 typedef void ia64_mv_global_tlb_purge_t (unsigned long, unsigned long, unsigned long);
 typedef struct irq_desc *ia64_mv_irq_desc (unsigned int);
 typedef u8 ia64_mv_irq_to_vector (u8);
 typedef unsigned int ia64_mv_local_vector_to_irq (u8 vector);
 
 
 typedef void ia64_mv_pci_dma_init (void);
 typedef void *ia64_mv_pci_alloc_consistent (struct pci_dev *, size_t, dma_addr_t *);
 typedef void ia64_mv_pci_free_consistent (struct pci_dev *, size_t, void *, dma_addr_t);
 typedef dma_addr_t ia64_mv_pci_map_single (struct pci_dev *, void *, size_t, int);
 typedef void ia64_mv_pci_unmap_single (struct pci_dev *, dma_addr_t, size_t, int);
 typedef int ia64_mv_pci_map_sg (struct pci_dev *, struct scatterlist *, int, int);
 typedef void ia64_mv_pci_unmap_sg (struct pci_dev *, struct scatterlist *, int, int);
 typedef void ia64_mv_pci_dma_sync_single (struct pci_dev *, dma_addr_t, size_t, int);
 typedef void ia64_mv_pci_dma_sync_sg (struct pci_dev *, struct scatterlist *, int, int);
 typedef unsigned long ia64_mv_pci_dma_address (struct scatterlist *);
 # 57 "/data1/src/linux/include/asm/machvec.h"
 typedef unsigned int ia64_mv_inb_t (unsigned long);
 typedef unsigned int ia64_mv_inw_t (unsigned long);
 typedef unsigned int ia64_mv_inl_t (unsigned long);
 typedef void ia64_mv_outb_t (unsigned char, unsigned long);
 typedef void ia64_mv_outw_t (unsigned short, unsigned long);
 typedef void ia64_mv_outl_t (unsigned int, unsigned long);
 typedef void ia64_mv_mmiob_t (void);
 
 extern void machvec_noop (void);
 
 
 
 
 # 1 "/data1/src/linux/include/asm/machvec_dig.h" 1
 
 
 
 extern ia64_mv_setup_t dig_setup;
 extern ia64_mv_irq_init_t dig_irq_init;
 extern ia64_mv_pci_fixup_t iosapic_pci_fixup;
 extern ia64_mv_map_nr_t map_nr_dense;
 # 71 "/data1/src/linux/include/asm/machvec.h" 2
 # 193 "/data1/src/linux/include/asm/machvec.h"
 extern ia64_mv_pci_dma_init swiotlb_init;
 extern ia64_mv_pci_alloc_consistent swiotlb_alloc_consistent;
 extern ia64_mv_pci_free_consistent swiotlb_free_consistent;
 extern ia64_mv_pci_map_single swiotlb_map_single;
 extern ia64_mv_pci_unmap_single swiotlb_unmap_single;
 extern ia64_mv_pci_map_sg swiotlb_map_sg;
 extern ia64_mv_pci_unmap_sg swiotlb_unmap_sg;
 extern ia64_mv_pci_dma_sync_single swiotlb_sync_single;
 extern ia64_mv_pci_dma_sync_sg swiotlb_sync_sg;
 extern ia64_mv_pci_dma_address swiotlb_dma_address;
 # 38 "/data1/src/linux/include/asm/io.h" 2
 
 
 
 
 
 
 static inline unsigned long
 virt_to_phys (volatile void *address)
 {
         return (unsigned long) address - 0xe000000000000000;
 }
 
 static inline void*
 phys_to_virt (unsigned long address)
 {
         return (void *) (address + 0xe000000000000000);
 }
 # 82 "/data1/src/linux/include/asm/io.h"
 static inline void
 __ia64_mmiob (void)
 {
         __asm__ __volatile__ ("mf.a" ::: "memory");
 }
 
 static inline const unsigned long
 __ia64_get_io_port_base (void)
 {
         extern unsigned long ia64_iobase;
 
         return ia64_iobase;
 }
 
 static inline void*
 __ia64_mk_io_addr (unsigned long port)
 {
         const unsigned long io_base = __ia64_get_io_port_base();
         unsigned long addr;
 
         addr = io_base | ((port >> 2) << 12) | (port & 0xfff);
         return (void *) addr;
 }
 # 114 "/data1/src/linux/include/asm/io.h"
 static inline unsigned int
 __ia64_inb (unsigned long port)
 {
         volatile unsigned char *addr = __ia64_mk_io_addr(port);
         unsigned char ret;
 
         ret = *addr;
         __asm__ __volatile__ ("mf.a" ::: "memory");
         return ret;
 }
 
 static inline unsigned int
 __ia64_inw (unsigned long port)
 {
         volatile unsigned short *addr = __ia64_mk_io_addr(port);
         unsigned short ret;
 
         ret = *addr;
         __asm__ __volatile__ ("mf.a" ::: "memory");
         return ret;
 }
 
 static inline unsigned int
 __ia64_inl (unsigned long port)
 {
         volatile unsigned int *addr = __ia64_mk_io_addr(port);
         unsigned int ret;
 
         ret = *addr;
         __asm__ __volatile__ ("mf.a" ::: "memory");
         return ret;
 }
 
 static inline void
 __ia64_outb (unsigned char val, unsigned long port)
 {
         volatile unsigned char *addr = __ia64_mk_io_addr(port);
 
         *addr = val;
         __asm__ __volatile__ ("mf.a" ::: "memory");
 }
 
 static inline void
 __ia64_outw (unsigned short val, unsigned long port)
 {
         volatile unsigned short *addr = __ia64_mk_io_addr(port);
 
         *addr = val;
         __asm__ __volatile__ ("mf.a" ::: "memory");
 }
 
 static inline void
 __ia64_outl (unsigned int val, unsigned long port)
 {
         volatile unsigned int *addr = __ia64_mk_io_addr(port);
 
         *addr = val;
         __asm__ __volatile__ ("mf.a" ::: "memory");
 }
 
 static inline void
 __insb (unsigned long port, void *dst, unsigned long count)
 {
         unsigned char *dp = dst;
 
         if (__ia64_inb == __ia64_inb) {
                 volatile unsigned char *addr = __ia64_mk_io_addr(port);
 
                 __asm__ __volatile__ ("mf.a" ::: "memory");
                 while (count--)
                         *dp++ = *addr;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         *dp++ = __ia64_inb(port);
         return;
 }
 
 static inline void
 __insw (unsigned long port, void *dst, unsigned long count)
 {
         unsigned short *dp = dst;
 
         if (__ia64_inw == __ia64_inw) {
                 volatile unsigned short *addr = __ia64_mk_io_addr(port);
 
                 __asm__ __volatile__ ("mf.a" ::: "memory");
                 while (count--)
                         *dp++ = *addr;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         *dp++ = __ia64_inw(port);
         return;
 }
 
 static inline void
 __insl (unsigned long port, void *dst, unsigned long count)
 {
         unsigned int *dp = dst;
 
         if (__ia64_inl == __ia64_inl) {
                 volatile unsigned int *addr = __ia64_mk_io_addr(port);
 
                 __asm__ __volatile__ ("mf.a" ::: "memory");
                 while (count--)
                         *dp++ = *addr;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         *dp++ = __ia64_inl(port);
         return;
 }
 
 static inline void
 __outsb (unsigned long port, const void *src, unsigned long count)
 {
         const unsigned char *sp = src;
 
         if (__ia64_outb == __ia64_outb) {
                 volatile unsigned char *addr = __ia64_mk_io_addr(port);
 
                 while (count--)
                         *addr = *sp++;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         __ia64_outb(*sp++, port);
         return;
 }
 
 static inline void
 __outsw (unsigned long port, const void *src, unsigned long count)
 {
         const unsigned short *sp = src;
 
         if (__ia64_outw == __ia64_outw) {
                 volatile unsigned short *addr = __ia64_mk_io_addr(port);
 
                 while (count--)
                         *addr = *sp++;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         __ia64_outw(*sp++, port);
         return;
 }
 
 static inline void
 __outsl (unsigned long port, void *src, unsigned long count)
 {
         const unsigned int *sp = src;
 
         if (__ia64_outl == __ia64_outl) {
                 volatile unsigned int *addr = __ia64_mk_io_addr(port);
 
                 while (count--)
                         *addr = *sp++;
                 __asm__ __volatile__ ("mf.a" ::: "memory");
         } else
                 while (count--)
                         __ia64_outl(*sp++, port);
         return;
 }
 # 309 "/data1/src/linux/include/asm/io.h"
 static inline unsigned char
 __readb (void *addr)
 {
         return *(volatile unsigned char *)addr;
 }
 
 static inline unsigned short
 __readw (void *addr)
 {
         return *(volatile unsigned short *)addr;
 }
 
 static inline unsigned int
 __readl (void *addr)
 {
         return *(volatile unsigned int *) addr;
 }
 
 static inline unsigned long
 __readq (void *addr)
 {
         return *(volatile unsigned long *) addr;
 }
 
 static inline void
 __writeb (unsigned char val, void *addr)
 {
         *(volatile unsigned char *) addr = val;
 }
 
 static inline void
 __writew (unsigned short val, void *addr)
 {
         *(volatile unsigned short *) addr = val;
 }
 
 static inline void
 __writel (unsigned int val, void *addr)
 {
         *(volatile unsigned int *) addr = val;
 }
 
 static inline void
 __writeq (unsigned long val, void *addr)
 {
         *(volatile unsigned long *) addr = val;
 }
 # 400 "/data1/src/linux/include/asm/io.h"
 static inline void *
 ioremap (unsigned long offset, unsigned long size)
 {
         return (void *) (0xc000000000000000 | (offset));
 }
 
 static inline void
 iounmap (void *addr)
 {
 }
 # 418 "/data1/src/linux/include/asm/io.h"
 extern void __ia64_memcpy_fromio (void *, unsigned long, long);
 extern void __ia64_memcpy_toio (unsigned long, void *, long);
 extern void __ia64_memset_c_io (unsigned long, unsigned long, long);
 # 21 "/data1/src/linux/include/asm/smp.h" 2
 # 32 "/data1/src/linux/include/asm/smp.h"
 extern struct smp_boot_data {
         int cpu_count;
         int cpu_phys_id[32];
 } smp_boot_data __attribute__ ((__section__ (".data.init")));
 
 extern char no_int_routing __attribute__ ((__section__ (".data.init")));
 
 extern volatile unsigned long cpu_online_map;
 extern unsigned long ipi_base_addr;
 extern unsigned char smp_int_redirect;
 extern int smp_num_cpus;
 
 extern volatile int ia64_cpu_to_sapicid[];
 
 
 
 
 extern unsigned long ap_wakeup_vector;
 
 
 
 
 
 static inline int
 cpu_logical_id (int cpuid)
 {
         int i;
 
         for (i = 0; i < smp_num_cpus; ++i)
                 if (ia64_cpu_to_sapicid[i] == (__u32) cpuid)
                         break;
         return i;
 }
 # 73 "/data1/src/linux/include/asm/smp.h"
 static inline void
 min_xtp (void)
 {
         if (smp_int_redirect & (1 << 0))
                 __writeb((0x00), (void *) (ipi_base_addr | 0x1e0008));
 }
 
 static inline void
 normal_xtp (void)
 {
         if (smp_int_redirect & (1 << 0))
                 __writeb((0x08), (void *) (ipi_base_addr | 0x1e0008));
 }
 
 static inline void
 max_xtp (void)
 {
         if (smp_int_redirect & (1 << 0))
                 __writeb((0x0f), (void *) (ipi_base_addr | 0x1e0008));
 }
 
 static inline unsigned int
 hard_smp_processor_id (void)
 {
         union {
                 struct {
                         unsigned long reserved : 16;
                         unsigned long eid : 8;
                         unsigned long id : 8;
                         unsigned long ignored : 32;
                 } f;
                 unsigned long bits;
         } lid;
 
         lid.bits = ia64_get_lid();
         return lid.f.id << 8 | lid.f.eid;
 }
 
 
 
 extern void __attribute__ ((__section__ (".text.init"))) init_smp_config (void);
 extern void smp_do_timer (struct pt_regs *regs);
 
 extern int smp_call_function_single (int cpuid, void (*func) (void *info), void *info,
                                      int retry, int wait);
 extern void smp_send_reschedule (int cpu);
 extern void smp_send_reschedule_all (void);
 # 15 "/data1/src/linux/include/linux/smp.h" 2
 # 24 "/data1/src/linux/include/linux/smp.h"
 extern void smp_send_stop(void);
 
 
 
 
 extern void smp_send_reschedule(int cpu);
 
 
 
 
 
 extern void smp_boot_cpus(void);
 
 
 
 
 extern void smp_commence(void);
 
 
 
 
 extern int smp_call_function (void (*func) (void *info), void *info,
                               int retry, int wait);
 
 
 
 
 extern volatile int smp_threads_ready;
 
 extern int smp_num_cpus;
 # 24 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/sem.h" 1
 
 
 
 # 1 "/data1/src/linux/include/linux/ipc.h" 1
 # 9 "/data1/src/linux/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 "/data1/src/linux/include/asm/ipcbuf.h" 1
 # 14 "/data1/src/linux/include/asm/ipcbuf.h"
 struct ipc64_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;
         unsigned short __pad1;
         unsigned long __unused1;
         unsigned long __unused2;
 };
 # 22 "/data1/src/linux/include/linux/ipc.h" 2
 # 57 "/data1/src/linux/include/linux/ipc.h"
 struct kern_ipc_perm
 {
         key_t key;
         uid_t uid;
         gid_t gid;
         uid_t cuid;
         gid_t cgid;
         mode_t mode;
         unsigned long seq;
 };
 # 5 "/data1/src/linux/include/linux/sem.h" 2
 # 23 "/data1/src/linux/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 "/data1/src/linux/include/asm/sembuf.h" 1
 # 13 "/data1/src/linux/include/asm/sembuf.h"
 struct semid64_ds {
         struct ipc64_perm sem_perm;
         __kernel_time_t sem_otime;
         __kernel_time_t sem_ctime;
         unsigned long sem_nsems;
         unsigned long __unused1;
         unsigned long __unused2;
 };
 # 36 "/data1/src/linux/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 "/data1/src/linux/include/linux/sem.h"
 struct sem {
         int semval;
         int sempid;
 };
 
 
 struct sem_array {
         struct kern_ipc_perm sem_perm;
         time_t sem_otime;
         time_t sem_ctime;
         struct sem *sem_base;
         struct sem_queue *sem_pending;
         struct sem_queue **sem_pending_last;
         struct sem_undo *undo;
         unsigned long sem_nsems;
 };
 
 
 struct sem_queue {
         struct sem_queue * next;
         struct sem_queue ** prev;
         struct task_struct* sleeper;
         struct sem_undo * undo;
         int pid;
         int status;
         struct sem_array * sma;
         int id;
         struct sembuf * sops;
         int nsops;
         int alter;
 };
 
 
 
 
 struct sem_undo {
         struct sem_undo * proc_next;
         struct sem_undo * id_next;
         int semid;
         short * semadj;
 };
 
  __attribute__((syscall_linkage)) long sys_semget (key_t key, int nsems, int semflg);
  __attribute__((syscall_linkage)) long sys_semop (int semid, struct sembuf *sops, unsigned nsops);
  __attribute__((syscall_linkage)) long sys_semctl (int semid, int semnum, int cmd, union semun arg);
 # 25 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/signal.h" 1
 
 
 
 # 1 "/data1/src/linux/include/asm/signal.h" 1
 # 136 "/data1/src/linux/include/asm/signal.h"
 struct siginfo;
 
 
 typedef void (*__sighandler_t)(int);
 
 typedef struct sigaltstack {
         void *ss_sp;
         int ss_flags;
         size_t ss_size;
 } stack_t;
 
 
 
 
 
 
 typedef unsigned long old_sigset_t;
 
 typedef struct {
         unsigned long sig[(64 / 64)];
 } sigset_t;
 
 struct sigaction {
         __sighandler_t sa_handler;
         unsigned long sa_flags;
         sigset_t sa_mask;
 };
 
 struct k_sigaction {
         struct sigaction sa;
 };
 
 # 1 "/data1/src/linux/include/asm/sigcontext.h" 1
 # 34 "/data1/src/linux/include/asm/sigcontext.h"
 struct sigcontext {
         unsigned long sc_flags;
         unsigned long sc_nat;
         stack_t sc_stack;
 
         unsigned long sc_ip;
         unsigned long sc_cfm;
         unsigned long sc_um;
         unsigned long sc_ar_rsc;
         unsigned long sc_ar_bsp;
         unsigned long sc_ar_rnat;
         unsigned long sc_ar_ccv;
         unsigned long sc_ar_unat;
         unsigned long sc_ar_fpsr;
         unsigned long sc_ar_pfs;
         unsigned long sc_ar_lc;
         unsigned long sc_pr;
         unsigned long sc_br[8];
 
         unsigned long sc_gr[32];
         struct ia64_fpreg sc_fr[128];
 
         unsigned long sc_rbs_base;
         unsigned long sc_loadrs;
 
         unsigned long sc_ar25;
         unsigned long sc_ar26;
         unsigned long sc_rsvd[12];
 
 
 
 
         sigset_t sc_mask;
 };
 # 169 "/data1/src/linux/include/asm/signal.h" 2
 # 5 "/data1/src/linux/include/linux/signal.h" 2
 # 1 "/data1/src/linux/include/asm/siginfo.h" 1
 # 11 "/data1/src/linux/include/asm/siginfo.h"
 typedef union sigval {
         int sival_int;
         void *sival_ptr;
 } sigval_t;
 
 
 
 
 typedef struct siginfo {
         int si_signo;
         int si_errno;
         int si_code;
         int __pad0;
 
         union {
                 int _pad[((128/sizeof(int)) - 4)];
 
 
                 struct {
                         pid_t _pid;
                         uid_t _uid;
                 } _kill;
 
 
                 struct {
                         unsigned int _timer1;
                         unsigned int _timer2;
                 } _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;
                         int _imm;
                         int _pad0;
                         unsigned long _isr;
                 } _sigfault;
 
 
                 struct {
                         long _band;
                         int _fd;
                 } _sigpoll;
 
                 struct {
                         pid_t _pid;
                         uid_t _uid;
                         unsigned long _pfm_ovfl_counters;
                 } _sigprof;
         } _sifields;
 } siginfo_t;
 # 230 "/data1/src/linux/include/asm/siginfo.h"
 typedef struct sigevent {
         sigval_t sigev_value;
         int sigev_signo;
         int sigev_notify;
         union {
                 int _pad[((64/sizeof(int)) - 4)];
 
                 struct {
                         void (*_function)(sigval_t);
                         void *_attribute;
                 } _sigev_thread;
         } _sigev_un;
 } sigevent_t;
 
 
 
 
 
 
 
 static inline void
 copy_siginfo (siginfo_t *to, siginfo_t *from)
 {
         if (from->si_code < 0)
                 memcpy(to, from, sizeof(siginfo_t));
         else
 
                 memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld));
 }
 
 extern int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from);
 extern int copy_siginfo_from_user(siginfo_t *to, siginfo_t *from);
 # 6 "/data1/src/linux/include/linux/signal.h" 2
 
 
 
 
 
 
 struct sigqueue {
         struct sigqueue *next;
         siginfo_t info;
 };
 
 struct sigpending {
         struct sigqueue *head, **tail;
         sigset_t signal;
 };
 # 31 "/data1/src/linux/include/linux/signal.h"
 static inline void sigaddset(sigset_t *set, int _sig)
 {
         unsigned long sig = _sig - 1;
         if ((64 / 64) == 1)
                 set->sig[0] |= 1UL << sig;
         else
                 set->sig[sig / 64] |= 1UL << (sig % 64);
 }
 
 static inline void sigdelset(sigset_t *set, int _sig)
 {
         unsigned long sig = _sig - 1;
         if ((64 / 64) == 1)
                 set->sig[0] &= ~(1UL << sig);
         else
                 set->sig[sig / 64] &= ~(1UL << (sig % 64));
 }
 
 static inline int sigismember(sigset_t *set, int _sig)
 {
         unsigned long sig = _sig - 1;
         if ((64 / 64) == 1)
                 return 1 & (set->sig[0] >> sig);
         else
                 return 1 & (set->sig[sig / 64] >> (sig % 64));
 }
 
 static inline int sigfindinword(unsigned long word)
 {
         return ffz(~word);
 }
 # 108 "/data1/src/linux/include/linux/signal.h"
 static inline void sigorsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; unsigned long i; for (i = 0; i < (64 / 64)/4; ++i) { a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; a3 = a->sig[4 *i+3]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; b3 = b->sig[4*i+3]; r->sig[4*i+0] = ((a0) | (b0)); r->sig[4*i+1] = ((a1) | (b1)); r->sig[4*i+2] = ((a2) | (b2)); r->sig[4*i+3] = ((a3) | (b3)); } switch ((64 / 64) % 4) { case 3: a0 = a-> sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; r->sig[4*i+0] = ((a0) | (b0)); r->sig[4*i+1] = ((a1) | (b1)); r->sig[4*i+2] = ((a2) | (b2)); break; case 2: a0 = a->sig[4*i+0]; a1 = a->sig[4* i+1]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; r->sig[4*i+0] = ((a0) | (b0)); r->sig[4*i+1] = ((a1) | (b1)); break; case 1: a0 = a->sig[4*i+0]; b0 = b->sig[4*i+0]; r->sig[4*i+0] = ((a0) | (b0)); break; } }
 
 
 static inline void sigandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; unsigned long i; for (i = 0; i < (64 / 64)/4; ++i) { a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; a3 = a->sig[ 4*i+3]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; b3 = b->sig[4*i+3]; r->sig[4*i+0] = ((a0) & (b0)); r->sig[4*i+1] = ((a1) & (b1)); r->sig[4*i+2] = ((a2) & (b2)); r->sig[4*i+3] = ((a3) & (b3)); } switch ((64 / 64) % 4) { case 3: a0 = a- >sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; r->sig[4*i+0] = ((a0) & (b0)); r->sig[4*i+1] = ((a1) & (b1)); r->sig[4*i+2] = ((a2) & (b2)); break; case 2: a0 = a->sig[4*i+0]; a1 = a->sig[4 *i+1]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; r->sig[4*i+0] = ((a0) & (b0)); r->sig[4*i+1] = ((a1) & (b1)); break; case 1: a0 = a->sig[4*i+0]; b0 = b->sig[4*i+0]; r->sig[4*i+0] = ((a0) & (b0)); break; } }
 
 
 static inline void signandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; unsigned long i; for (i = 0; i < (64 / 64)/4; ++i) { a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; a3 = a->sig [4*i+3]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; b3 = b->sig[4*i+3]; r->sig[4*i+0] = ((a0) & ~(b0)); r->sig[4*i+1] = ((a1) & ~(b1)); r->sig[4*i+2] = ((a2) & ~(b2)); r->sig[4*i+3] = ((a3) & ~(b3)); } switch ((64 / 64) % 4) { case 3: a0  = a->sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; r->sig[4*i+0] = ((a0) & ~(b0)); r->sig[4*i+1] = ((a1) & ~(b1)); r->sig[4*i+2] = ((a2) & ~(b2)); break; case 2: a0 = a->sig[4*i+0]; a1 =  a->sig[4*i+1]; b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; r->sig[4*i+0] = ((a0) & ~(b0)); r->sig[4*i+1] = ((a1) & ~(b1)); break; case 1: a0 = a->sig[4*i+0]; b0 = b->sig[4*i+0]; r->sig[4*i+0] = ((a0) & ~(b0)); break; } }
 # 140 "/data1/src/linux/include/linux/signal.h"
 static inline void signotset(sigset_t *set) { unsigned long i; for (i = 0; i < (64 / 64)/4; ++i) { set->sig[4*i+0] = (~(set->sig[4*i+0])); set->sig[4*i+1] = (~(set->sig[4*i+1])); set->sig[4*i+2] = (~(set->sig[4*i+2])); set->sig[4*i+3] = (~(set->sig[4*i+3 ])); } switch ((64 / 64) % 4) { case 3: set->sig[4*i+2] = (~(set->sig[4*i+2])); case 2: set->sig[4*i+1] = (~(set->sig[4*i+1])); case 1: set->sig[4*i+0] = (~(set->sig[4*i+0])); } }
 
 
 
 
 static inline void sigemptyset(sigset_t *set)
 {
         switch ((64 / 64)) {
         default:
                 memset(set, 0, sizeof(sigset_t));
                 break;
         case 2: set->sig[1] = 0;
         case 1: set->sig[0] = 0;
                 break;
         }
 }
 
 static inline void sigfillset(sigset_t *set)
 {
         switch ((64 / 64)) {
         default:
                 memset(set, -1, sizeof(sigset_t));
                 break;
         case 2: set->sig[1] = -1;
         case 1: set->sig[0] = -1;
                 break;
         }
 }
 
 extern char * render_sigset_t(sigset_t *set, char *buffer);
 
 
 
 static inline void sigaddsetmask(sigset_t *set, unsigned long mask)
 {
         set->sig[0] |= mask;
 }
 
 static inline void sigdelsetmask(sigset_t *set, unsigned long mask)
 {
         set->sig[0] &= ~mask;
 }
 
 static inline int sigtestsetmask(sigset_t *set, unsigned long mask)
 {
         return (set->sig[0] & mask) != 0;
 }
 
 static inline void siginitset(sigset_t *set, unsigned long mask)
 {
         set->sig[0] = mask;
         switch ((64 / 64)) {
         default:
                 memset(&set->sig[1], 0, sizeof(long)*((64 / 64)-1));
                 break;
         case 2: set->sig[1] = 0;
         case 1: ;
         }
 }
 
 static inline void siginitsetinv(sigset_t *set, unsigned long mask)
 {
         set->sig[0] = ~mask;
         switch ((64 / 64)) {
         default:
                 memset(&set->sig[1], -1, sizeof(long)*((64 / 64)-1));
                 break;
         case 2: set->sig[1] = -1;
         case 1: ;
         }
 }
 
 
 
 static inline void init_sigpending(struct sigpending *sig)
 {
         sigemptyset(&sig->signal);
         sig->head = ((void *)0);
         sig->tail = &sig->head;
 }
 
 extern long do_sigpending(void *, unsigned long);
 # 26 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/securebits.h" 1
 
 
 
 
 
 extern unsigned securebits;
 # 27 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/fs_struct.h" 1
 
 
 
 
 struct fs_struct {
         atomic_t count;
         rwlock_t lock;
         int umask;
         struct dentry * root, * pwd, * altroot;
         struct vfsmount * rootmnt, * pwdmnt, * altrootmnt;
 };
 # 20 "/data1/src/linux/include/linux/fs_struct.h"
 extern void exit_fs(struct task_struct *);
 extern void set_fs_altroot(void);
 
 
 
 
 
 
 static inline void set_fs_root(struct fs_struct *fs,
         struct vfsmount *mnt,
         struct dentry *dentry)
 {
         struct dentry *old_root;
         struct vfsmount *old_rootmnt;
         do { __asm__ __volatile__ ( "mov ar.ccv = r0\n" "dep r29 = -1, r0, 31, 1\n" ";;\n" "1:\n" "ld4 r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" " (p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&fs->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while(0);
         old_root = fs->root;
         old_rootmnt = fs->rootmnt;
         fs->rootmnt = mntget(mnt);
         fs->root = dget(dentry);
         ({ __asm__ __volatile__ ("mf" ::: "memory"); clear_bit(31, (&fs->lock)); });
         if (old_root) {
                 dput(old_root);
                 mntput(old_rootmnt);
         }
 }
 
 
 
 
 
 
 static inline void set_fs_pwd(struct fs_struct *fs,
         struct vfsmount *mnt,
         struct dentry *dentry)
 {
         struct dentry *old_pwd;
         struct vfsmount *old_pwdmnt;
         do { __asm__ __volatile__ ( "mov ar.ccv = r0\n" "dep r29 = -1, r0, 31, 1\n" ";;\n" "1:\n" "ld4 r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" " (p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&fs->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while(0);
         old_pwd = fs->pwd;
         old_pwdmnt = fs->pwdmnt;
         fs->pwdmnt = mntget(mnt);
         fs->pwd = dget(dentry);
         ({ __asm__ __volatile__ ("mf" ::: "memory"); clear_bit(31, (&fs->lock)); });
         if (old_pwd) {
                 dput(old_pwd);
                 mntput(old_pwdmnt);
         }
 }
 
 struct fs_struct *copy_fs_struct(struct fs_struct *old);
 void put_fs_struct(struct fs_struct *fs);
 # 28 "/data1/src/linux/include/linux/sched.h" 2
 
 struct exec_domain;
 # 58 "/data1/src/linux/include/linux/sched.h"
 extern unsigned long avenrun[];
 # 75 "/data1/src/linux/include/linux/sched.h"
 extern int nr_threads;
 extern int last_pid;
 extern unsigned long nr_running(void);
 
 
 
 # 1 "/data1/src/linux/include/linux/param.h" 1
 # 82 "/data1/src/linux/include/linux/sched.h" 2
 # 1 "/data1/src/linux/include/linux/resource.h" 1
 # 21 "/data1/src/linux/include/linux/resource.h"
 struct rusage {
         struct timeval ru_utime;
         struct timeval ru_stime;
         long ru_maxrss;
         long ru_ixrss;
         long ru_idrss;
         long ru_isrss;
         long ru_minflt;
         long ru_majflt;
         long ru_nswap;
         long ru_inblock;
         long ru_oublock;
         long ru_msgsnd;
         long ru_msgrcv;
         long ru_nsignals;
         long ru_nvcsw;
         long ru_nivcsw;
 };
 
 struct rlimit {
         unsigned long rlim_cur;
         unsigned long rlim_max;
 };
 # 56 "/data1/src/linux/include/linux/resource.h"
 # 1 "/data1/src/linux/include/asm/resource.h" 1
 # 57 "/data1/src/linux/include/linux/resource.h" 2
 # 83 "/data1/src/linux/include/linux/sched.h" 2
 # 120 "/data1/src/linux/include/linux/sched.h"
 struct sched_param {
         int sched_priority;
 };
 
 struct completion;
 # 136 "/data1/src/linux/include/linux/sched.h"
 extern rwlock_t tasklist_lock;
 extern spinlock_t mmlist_lock;
 
 extern void sched_init(void);
 extern void init_idle(void);
 extern void show_state(void);
 extern void cpu_init (void);
 extern void trap_init(void);
 extern void update_process_times(int user);
 extern void update_one_process(struct task_struct *p, unsigned long user,
                                unsigned long system, int cpu);
 extern void expire_task(struct task_struct *p);
 extern void idle_tick(void);
 
 
 extern signed long schedule_timeout(signed long timeout);
  __attribute__((syscall_linkage)) void schedule(void);
 
 extern int schedule_task(struct tq_struct *task);
 extern void flush_scheduled_tasks(void);
 extern int start_context_thread(void);
 extern int current_is_keventd(void);
 
 
 
 
 
 
 
 struct namespace;
 
 
 
 struct files_struct {
         atomic_t count;
         rwlock_t file_lock;
         int max_fds;
         int max_fdset;
         int next_fd;
         struct file ** fd;
         fd_set *close_on_exec;
         fd_set *open_fds;
         fd_set close_on_exec_init;
         fd_set open_fds_init;
         struct file * fd_array[64];
 };
 # 201 "/data1/src/linux/include/linux/sched.h"
 struct mm_struct {
         struct vm_area_struct * mmap;
         rb_root_t mm_rb;
         struct vm_area_struct * mmap_cache;
         pgd_t * pgd;
         atomic_t mm_users;
         atomic_t mm_count;
         int map_count;
         struct rw_semaphore mmap_sem;
         spinlock_t page_table_lock;
 
         struct list_head mmlist;
 
 
 
 
         unsigned long start_code, end_code, start_data, end_data;
         unsigned long start_brk, brk, start_stack;
         unsigned long arg_start, arg_end, env_start, env_end;
         unsigned long rss, total_vm, locked_vm;
         unsigned long def_flags;
         unsigned long cpu_vm_mask;
         unsigned long swap_address;
 
         unsigned dumpable:1;
 
 
         mm_context_t context;
 };
 
 extern int mmlist_nr;
 # 244 "/data1/src/linux/include/linux/sched.h"
 struct signal_struct {
         atomic_t count;
         struct k_sigaction action[64];
         spinlock_t siglock;
 };
 # 260 "/data1/src/linux/include/linux/sched.h"
 struct user_struct {
         atomic_t __count;
         atomic_t processes;
         atomic_t files;
 
 
         struct user_struct *next, **pprev;
         uid_t uid;
 };
 
 
 
 
 
 
 extern struct user_struct root_user;
 
 
 typedef struct task_struct task_t;
 typedef struct prio_array prio_array_t;
 
 struct task_struct {
 
 
 
         volatile long state;
         unsigned long flags;
         int sigpending;
         mm_segment_t addr_limit;
 
 
 
         struct exec_domain *exec_domain;
         volatile long need_resched;
         unsigned long ptrace;
 
         int lock_depth;
 
 
 
 
         unsigned int cpu;
         int prio;
         long __nice;
         list_t run_list;
         prio_array_t *array;
 
         unsigned int time_slice;
         unsigned long sleep_jtime;
 
         unsigned long policy;
         unsigned long cpus_allowed;
 
         struct task_struct *next_task, *prev_task;
 
         struct mm_struct *mm, *active_mm;
         struct list_head local_pages;
 
         unsigned int allocation_order, nr_local_pages;
 
 
         struct linux_binfmt *binfmt;
         int exit_code, exit_signal;
         int pdeath_signal;
 
         unsigned long personality;
         int did_exec:1;
         pid_t pid;
         pid_t pgrp;
         pid_t tty_old_pgrp;
         pid_t session;
         pid_t tgid;
 
         int leader;
 
 
 
 
 
         struct task_struct *p_opptr, *p_pptr, *p_cptr, *p_ysptr, *p_osptr;
         struct list_head thread_group;
 
 
         struct task_struct *pidhash_next;
         struct task_struct **pidhash_pprev;
 
         wait_queue_head_t wait_chldexit;
         struct completion *vfork_done;
         unsigned long rt_priority;
         unsigned long it_real_value, it_prof_value, it_virt_value;
         unsigned long it_real_incr, it_prof_incr, it_virt_incr;
         struct timer_list real_timer;
         struct tms times;
         unsigned long start_time;
         long per_cpu_utime[32], per_cpu_stime[32];
 
         unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;
         int swappable:1;
 
         uid_t uid,euid,suid,fsuid;
         gid_t gid,egid,sgid,fsgid;
         int ngroups;
         gid_t groups[32];
         kernel_cap_t cap_effective, cap_inheritable, cap_permitted;
         int keep_capabilities:1;
         struct user_struct *user;
 
         struct rlimit rlim[11];
         unsigned short used_math;
         char comm[16];
 
         int link_count, total_link_count;
         struct tty_struct *tty;
         unsigned int locks;
 
         struct sem_undo *semundo;
         struct sem_queue *semsleeping;
 
         struct thread_struct thread;
 
         struct fs_struct *fs;
 
         struct files_struct *files;
 
         struct namespace *namespace;
 
         spinlock_t sigmask_lock;
         struct signal_struct *sig;
 
         sigset_t blocked;
         struct sigpending pending;
 
         unsigned long sas_ss_sp;
         size_t sas_ss_size;
         int (*notifier)(void *priv);
         void *notifier_data;
         sigset_t *notifier_mask;
 
 
         u32 parent_exec_id;
         u32 self_exec_id;
 
         spinlock_t alloc_lock;
 
 
         void *journal_info;
 };
 # 485 "/data1/src/linux/include/linux/sched.h"
 extern void set_cpus_allowed(task_t *p, unsigned long new_mask);
 extern void set_user_nice(task_t *p, long nice);
  __attribute__((syscall_linkage)) long sys_sched_yield(void);
 
 
 
 
 
 extern struct exec_domain default_exec_domain;
 # 546 "/data1/src/linux/include/linux/sched.h"
 union task_union {
         struct task_struct task;
         unsigned long stack[((1 << 1)*(1UL << 14))/sizeof(long)];
 };
 
 extern union task_union init_task_union;
 
 extern struct mm_struct init_mm;
 extern struct task_struct *init_tasks[32];
 
 
 
 extern struct task_struct *pidhash[(4096 >> 2)];
 
 
 
 static inline void hash_pid(struct task_struct *p)
 {
         struct task_struct **htable = &pidhash[((((p->pid) >> 8) ^ (p->pid)) & ((4096 >> 2) - 1))];
 
         if((p->pidhash_next = *htable) != ((void *)0))
                 (*htable)->pidhash_pprev = &p->pidhash_next;
         *htable = p;
         p->pidhash_pprev = htable;
 }
 
 static inline void unhash_pid(struct task_struct *p)
 {
         if(p->pidhash_next)
                 p->pidhash_next->pidhash_pprev = p->pidhash_pprev;
         *p->pidhash_pprev = p->pidhash_next;
 }
 
 static inline struct task_struct *find_task_by_pid(int pid)
 {
         struct task_struct *p, **htable = &pidhash[((((pid) >> 8) ^ (pid)) & ((4096 >> 2) - 1))];
 
         for(p = *htable; p && p->pid != pid; p = p->pidhash_next)
                 ;
 
         return p;
 }
 
 
 extern struct user_struct * alloc_uid(uid_t);
 extern void free_uid(struct user_struct *);
 
 
 
 extern unsigned long volatile jiffies;
 extern unsigned long itimer_ticks;
 extern unsigned long itimer_next;
 extern struct timeval xtime;
 extern void do_timer(struct pt_regs *);
 
 extern unsigned int * prof_buffer;
 extern unsigned long prof_len;
 extern unsigned long prof_shift;
 
 
 
 extern void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr);
 extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
 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);
 
 extern int wake_up_process(struct task_struct * tsk);
 extern void wake_up_forked_process(struct task_struct * tsk);
 # 628 "/data1/src/linux/include/linux/sched.h"
  __attribute__((syscall_linkage)) long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru);
 
 extern int in_group_p(gid_t);
 extern int in_egroup_p(gid_t);
 
 extern void proc_caches_init(void);
 extern void flush_signals(struct task_struct *);
 extern void flush_signal_handlers(struct task_struct *);
 extern int dequeue_signal(sigset_t *, siginfo_t *);
 extern void block_all_signals(int (*notifier)(void *priv), void *priv,
                               sigset_t *mask);
 extern void unblock_all_signals(void);
 extern int send_sig_info(int, struct siginfo *, struct task_struct *);
 extern int force_sig_info(int, struct siginfo *, struct task_struct *);
 extern int kill_pg_info(int, struct siginfo *, pid_t);
 extern int kill_sl_info(int, struct siginfo *, pid_t);
 extern int kill_proc_info(int, struct siginfo *, pid_t);
 extern void notify_parent(struct task_struct *, int);
 extern void do_notify_parent(struct task_struct *, int);
 extern void force_sig(int, struct task_struct *);
 extern int send_sig(int, struct task_struct *, int);
 extern int kill_pg(pid_t, int, int);
 extern int kill_sl(pid_t, int, int);
 extern int kill_proc(pid_t, int, int);
 extern int do_sigaction(int, const struct k_sigaction *, struct k_sigaction *);
 extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long);
 
 static inline int signal_pending(struct task_struct *p)
 {
         return (p->sigpending != 0);
 }
 
 
 
 
 
 static inline int has_pending_signals(sigset_t *signal, sigset_t *blocked)
 {
         unsigned long ready;
         long i;
 
         switch ((64 / 64)) {
         default:
                 for (i = (64 / 64), ready = 0; --i >= 0 ;)
                         ready |= signal->sig[i] &~ blocked->sig[i];
                 break;
 
         case 4: ready = signal->sig[3] &~ blocked->sig[3];
                 ready |= signal->sig[2] &~ blocked->sig[2];
                 ready |= signal->sig[1] &~ blocked->sig[1];
                 ready |= signal->sig[0] &~ blocked->sig[0];
                 break;
 
         case 2: ready = signal->sig[1] &~ blocked->sig[1];
                 ready |= signal->sig[0] &~ blocked->sig[0];
                 break;
 
         case 1: ready = signal->sig[0] &~ blocked->sig[0];
         }
         return ready != 0;
 }
 
 
 
 
 
 static inline void recalc_sigpending(struct task_struct *t)
 {
         t->sigpending = has_pending_signals(&t->pending.signal, &t->blocked);
 }
 
 
 
 static inline int on_sig_stack(unsigned long sp)
 {
         return (sp - current->sas_ss_sp < current->sas_ss_size);
 }
 
 static inline int sas_ss_flags(unsigned long sp)
 {
         return (current->sas_ss_size == 0 ? 2
                 : on_sig_stack(sp) ? 1 : 0);
 }
 
 extern int request_irq(unsigned int,
                        void (*handler)(int, void *, struct pt_regs *),
                        unsigned long, const char *, void *);
 extern void free_irq(unsigned int, void *);
 # 731 "/data1/src/linux/include/linux/sched.h"
 static inline int suser(void)
 {
         if (!( (1 << (0 +1)) & 0x00000000 ? (1 << (0)) & 0x00000000 : (1 << (0)) & securebits ) && current->euid == 0) {
                 current->flags |= 0x00000100;
                 return 1;
         }
         return 0;
 }
 
 static inline int fsuser(void)
 {
         if (!( (1 << (0 +1)) & 0x00000000 ? (1 << (0)) & 0x00000000 : (1 << (0)) & securebits ) && current->fsuid == 0) {
                 current->flags |= 0x00000100;
                 return 1;
         }
         return 0;
 }
 
 
 
 
 
 
 
 static inline int capable(int cap)
 {
 
         if (((current->cap_effective) & (1 << (cap))))
 
 
 
         {
                 current->flags |= 0x00000100;
                 return 1;
         }
         return 0;
 }
 
 
 
 
 extern struct mm_struct * mm_alloc(void);
 
 extern struct mm_struct * start_lazy_tlb(void);
 extern void end_lazy_tlb(struct mm_struct *mm);
 
 
 extern inline void __mmdrop(struct mm_struct *);
 static inline void mmdrop(struct mm_struct * mm)
 {
         if ((((__builtin_constant_p(1) && ( (1 == 1) || (1 == 4) || (1 == 8) || (1 == 16) || (1 == -1) || (1 == -4) || (1 == -8) || (1 == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&((&mm->mm_count))->counter)) *_v = (&((&mm->mm_count))->counter); swi tch (-(1)) { case -16: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp ) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) :  "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&((&mm->mm_c!
 ount))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __bad_ size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd 8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"( _tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switc!
 h (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory");  break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __v olatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&((&mm->mm_count))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel  %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); b!
 reak; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&((&mm->mm_count))->counter)) (_tmp + (-(1))); }) : ia64_atomic_sub(1, (&mm->mm_count))) == 0))
                 __mmdrop(mm);
 }
 
 
 extern void mmput(struct mm_struct *);
 
 extern void mm_release(void);
 
 
 
 
 extern struct file ** alloc_fd_array(int);
 extern int expand_fd_array(struct files_struct *, int nr);
 extern void free_fd_array(struct file **, int);
 
 extern fd_set *alloc_fdset(int);
 extern int expand_fdset(struct files_struct *, int nr);
 extern void free_fdset(fd_set *, int);
 
 extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
 extern void flush_thread(void);
 extern void exit_thread(void);
 
 extern void exit_mm(struct task_struct *);
 extern void exit_files(struct task_struct *);
 extern void exit_sighand(struct task_struct *);
 
 extern void reparent_to_init(void);
 extern void daemonize(void);
 extern task_t *child_reaper;
 
 extern int do_execve(char *, char **, char **, struct pt_regs *);
 extern int do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long);
 
 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);
 
 extern void wait_task_inactive(task_t * p);
 extern void kick_if_running(task_t * p);
 # 903 "/data1/src/linux/include/linux/sched.h"
 static inline void unhash_process(struct task_struct *p)
 {
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); do { __asm__ __volatile__ ( "mov ar.ccv = r0\n" "dep r29 = -1, r0, 31, 1\n" ";;\n" "1:\n" "ld4 r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2  = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&tasklist_lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while(0); } while (0);
         nr_threads--;
         unhash_pid(p);
         do { (p)->next_task->prev_task = (p)->prev_task; (p)->prev_task->next_task = (p)->next_task; if ((p)->p_osptr) (p)->p_osptr->p_ysptr = (p)->p_ysptr; if ((p)->p_ysptr) (p)->p_ysptr->p_osptr = (p)->p_osptr; else (p)->p_pptr->p_cptr = (p)->p_osptr;  } while (0);
         list_del(&p->thread_group);
         do { ({ __asm__ __volatile__ ("mf" ::: "memory"); clear_bit(31, (&tasklist_lock)); }); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 }
 
 
 static inline void task_lock(struct task_struct *p)
 {
         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond .spnt.few 1b\n" ";;\n" :: "r"(&(&p->alloc_lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
 }
 
 static inline void task_unlock(struct task_struct *p)
 {
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &p->alloc_lock)->lock = 0; } while (0);
 }
 
 
 static inline char * d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
                                 char *buf, int buflen)
 {
         char *res;
         struct vfsmount *rootmnt;
         struct dentry *root;
         do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" " tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&current->fs->lock) : "p6", "memory"); } while(0);
         rootmnt = mntget(current->fs->rootmnt);
         root = dget(current->fs->root);
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&current->fs->lock) : "memory"); } while(0);
         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond .spnt.few 1b\n" ";;\n" :: "r"(&(&dcache_lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         res = __d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &dcache_lock)->lock = 0; } while (0);
         dput(root);
         mntput(rootmnt);
         return res;
 }
 # 5 "/data1/src/linux/include/linux/mm.h" 2
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/gfp.h" 1
 
 
 
 # 1 "/data1/src/linux/include/linux/mmzone.h" 1
 # 21 "/data1/src/linux/include/linux/mmzone.h"
 typedef struct free_area_struct {
         struct list_head free_list;
         unsigned long *map;
 } free_area_t;
 
 struct pglist_data;
 # 36 "/data1/src/linux/include/linux/mmzone.h"
 typedef struct zone_struct {
 
 
 
         spinlock_t lock;
         unsigned long free_pages;
         unsigned long pages_min, pages_low, pages_high;
         int need_balance;
 
 
 
 
         free_area_t free_area[10];
 
 
 
 
         struct pglist_data *zone_pgdat;
         struct page *zone_mem_map;
         unsigned long zone_start_paddr;
         unsigned long zone_start_mapnr;
 
 
 
 
         char *name;
         unsigned long size;
 } zone_t;
 # 81 "/data1/src/linux/include/linux/mmzone.h"
 typedef struct zonelist_struct {
         zone_t * zones [3 +1];
 } zonelist_t;
 # 98 "/data1/src/linux/include/linux/mmzone.h"
 struct bootmem_data;
 typedef struct pglist_data {
         zone_t node_zones[3];
         zonelist_t node_zonelists[0x0f +1];
         int nr_zones;
         struct page *node_mem_map;
         unsigned long *valid_addr_bitmap;
         struct bootmem_data *bdata;
         unsigned long node_start_paddr;
         unsigned long node_start_mapnr;
         unsigned long node_size;
         int node_id;
         struct pglist_data *node_next;
 } pg_data_t;
 
 extern int numnodes;
 extern pg_data_t *pgdat_list;
 # 123 "/data1/src/linux/include/linux/mmzone.h"
 struct page;
 extern void show_free_areas_core(pg_data_t *pgdat);
 extern void free_area_init_core(int nid, pg_data_t *pgdat, struct page **gmap,
   unsigned long *zones_size, unsigned long paddr, unsigned long *zholes_size,
   struct page *pmap);
 
 extern pg_data_t contig_page_data;
 # 5 "/data1/src/linux/include/linux/gfp.h" 2
 # 42 "/data1/src/linux/include/linux/gfp.h"
 extern struct page * _alloc_pages(unsigned int gfp_mask, unsigned int order);
 extern struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist);
 extern struct page * alloc_pages_node(int nid, unsigned int gfp_mask, unsigned int order);
 
 static inline struct page * alloc_pages(unsigned int gfp_mask, unsigned int order)
 {
 
 
 
         if (order >= 10)
                 return ((void *)0);
         return _alloc_pages(gfp_mask, order);
 }
 
 
 
 extern unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order);
 extern unsigned long get_zeroed_page(unsigned int gfp_mask);
 # 75 "/data1/src/linux/include/linux/gfp.h"
 extern void __free_pages(struct page *page, unsigned int order);
 extern void free_pages(unsigned long addr, unsigned int order);
 # 11 "/data1/src/linux/include/linux/mm.h" 2
 
 
 
 # 1 "/data1/src/linux/include/linux/swap.h" 1
 # 25 "/data1/src/linux/include/linux/swap.h"
 union swap_header {
         struct
         {
                 char reserved[(1UL << 14) - 10];
                 char magic[10];
         } magic;
         struct
         {
                 char bootbits[1024];
                 unsigned int version;
                 unsigned int last_page;
                 unsigned int nr_badpages;
                 unsigned int padding[125];
                 unsigned int badpages[1];
         } info;
 };
 # 64 "/data1/src/linux/include/linux/swap.h"
 struct swap_info_struct {
         unsigned int flags;
         kdev_t swap_device;
         spinlock_t sdev_lock;
         struct file *swap_file;
         unsigned short * swap_map;
         unsigned int lowest_bit;
         unsigned int highest_bit;
         unsigned int cluster_next;
         unsigned int cluster_nr;
         int prio;
         int pages;
         unsigned long max;
         int next;
 };
 
 extern int nr_swap_pages;
 
 
 
 
 extern unsigned int nr_free_pages(void);
 extern unsigned int nr_free_buffer_pages(void);
 extern int nr_active_pages;
 extern int nr_inactive_pages;
 extern atomic_t nr_async_pages;
 extern atomic_t page_cache_size;
 extern atomic_t buffermem_pages;
 extern spinlock_t pagecache_lock;
 extern void __remove_inode_page(struct page *);
 
 
 struct task_struct;
 struct vm_area_struct;
 struct sysinfo;
 
 struct zone_t;
 
 
 extern void lru_cache_add(struct page *);
 extern void __lru_cache_del(struct page *);
 extern void lru_cache_del(struct page *);
 
 extern void activate_page(struct page *);
 
 extern void swap_setup(void);
 
 
 extern wait_queue_head_t kswapd_wait;
 extern int try_to_free_pages(zone_t *, unsigned int, unsigned int);
 
 
 extern void rw_swap_page(int, struct page *);
 extern void rw_swap_page_nolock(int, swp_entry_t, char *);
 
 
 
 
 
 
 extern void show_swap_cache_info(void);
 
 extern int add_to_swap_cache(struct page *, swp_entry_t);
 extern void __delete_from_swap_cache(struct page *page);
 extern void delete_from_swap_cache(struct page *page);
 extern void free_page_and_swap_cache(struct page *page);
 extern struct page * lookup_swap_cache(swp_entry_t);
 extern struct page * read_swap_cache_async(swp_entry_t);
 
 
 extern void out_of_memory(void);
 
 
 extern int total_swap_pages;
 extern unsigned int nr_swapfiles;
 extern struct swap_info_struct swap_info[];
 extern int is_swap_partition(kdev_t);
 extern void si_swapinfo(struct sysinfo *);
 extern swp_entry_t get_swap_page(void);
 extern void get_swaphandle_info(swp_entry_t, unsigned long *, struct inode **);
 extern int swap_duplicate(swp_entry_t);
 extern int swap_count(struct page *);
 extern int valid_swaphandles(swp_entry_t, unsigned long *);
 extern void swap_free(swp_entry_t);
 extern void free_swap_and_cache(swp_entry_t);
 struct swap_list_t {
         int head;
         int next;
 };
 extern struct swap_list_t swap_list;
  __attribute__((syscall_linkage)) long sys_swapoff(const char *);
  __attribute__((syscall_linkage)) long sys_swapon(const char *, int);
 
 extern spinlock_t pagemap_lru_lock;
 
 extern void mark_page_accessed(struct page *);
 # 201 "/data1/src/linux/include/linux/swap.h"
 extern spinlock_t swaplock;
 
 
 
 
 
 
 extern void shmem_unuse(swp_entry_t entry, struct page *page);
 # 15 "/data1/src/linux/include/linux/mm.h" 2
 
 
 extern unsigned long max_mapnr;
 extern unsigned long num_physpages;
 extern void * high_memory;
 extern int page_cluster;
 
 extern struct list_head active_list;
 extern struct list_head inactive_list;
 
 
 # 1 "/data1/src/linux/include/asm/pgtable.h" 1
 # 17 "/data1/src/linux/include/asm/pgtable.h"
 # 1 "/data1/src/linux/include/asm/mman.h" 1
 # 18 "/data1/src/linux/include/asm/pgtable.h" 2
 # 129 "/data1/src/linux/include/asm/pgtable.h"
 # 1 "/data1/src/linux/include/asm/mmu_context.h" 1
 # 31 "/data1/src/linux/include/asm/mmu_context.h"
 struct ia64_ctx {
         spinlock_t lock;
         unsigned int next;
         unsigned int limit;
         unsigned int max_ctx;
 };
 
 extern struct ia64_ctx ia64_ctx;
 
 extern void wrap_mmu_context (struct mm_struct *mm);
 
 static inline void
 enter_lazy_tlb (struct mm_struct *mm, struct task_struct *tsk, unsigned cpu)
 {
 }
 
 static inline void
 get_new_mmu_context (struct mm_struct *mm)
 {
         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond .spnt.few 1b\n" ";;\n" :: "r"(&(&ia64_ctx.lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         {
                 if (ia64_ctx.next >= ia64_ctx.limit)
                         wrap_mmu_context(mm);
                 mm->context = ia64_ctx.next++;
         }
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &ia64_ctx.lock)->lock = 0; } while (0);
 
 }
 
 static inline void
 get_mmu_context (struct mm_struct *mm)
 {
         if (mm->context == 0)
                 get_new_mmu_context(mm);
 }
 
 static inline int
 init_new_context (struct task_struct *p, struct mm_struct *mm)
 {
         mm->context = 0;
         return 0;
 }
 
 static inline void
 destroy_context (struct mm_struct *mm)
 {
 
 }
 
 static inline void
 reload_context (struct mm_struct *mm)
 {
         unsigned long rid;
         unsigned long rid_incr = 0;
         unsigned long rr0, rr1, rr2, rr3, rr4;
 
         rid = mm->context << 3;
         rid_incr = 1 << 8;
 
 
         rr0 = (rid << 8) | (14 << 2) | 1;
         rr1 = rr0 + 1*rid_incr;
         rr2 = rr0 + 2*rid_incr;
         rr3 = rr0 + 3*rid_incr;
         rr4 = rr0 + 4*rid_incr;
         ia64_set_rr(0x0000000000000000, rr0);
         ia64_set_rr(0x2000000000000000, rr1);
         ia64_set_rr(0x4000000000000000, rr2);
         ia64_set_rr(0x6000000000000000, rr3);
         ia64_set_rr(0x8000000000000000, rr4);
         ia64_insn_group_barrier();
         ia64_srlz_i();
         ia64_insn_group_barrier();
 }
 
 
 
 
 static inline void
 activate_mm (struct mm_struct *prev, struct mm_struct *next)
 {
 
 
 
 
         ia64_set_kr(7, ({ia64_va _v; _v.l = (long) (next->pgd); _v.f.reg = 0; _v.l;}));
         get_mmu_context(next);
         reload_context(next);
 }
 # 130 "/data1/src/linux/include/asm/pgtable.h" 2
 # 176 "/data1/src/linux/include/asm/pgtable.h"
 static inline long
 ia64_phys_addr_valid (unsigned long addr)
 {
         return (addr & (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->unimpl_pa_mask)) == 0;
 }
 # 306 "/data1/src/linux/include/asm/pgtable.h"
 static inline unsigned long
 rgn_index (unsigned long address)
 {
         ia64_va a;
 
         a.l = address;
         return a.f.reg;
 }
 
 
 
 
 static inline unsigned long
 rgn_offset (unsigned long address)
 {
         ia64_va a;
 
         a.l = address;
         return a.f.off;
 }
 
 static inline unsigned long
 pgd_index (unsigned long address)
 {
         unsigned long region = address >> 61;
         unsigned long l1index = (address >> (14 + 2*(14 -3))) & (((((unsigned long)(1)) << (14 -3)) >> 3) - 1);
 
         return (region << (14 - 6)) | l1index;
 }
 
 
 
 static inline pgd_t*
 pgd_offset (struct mm_struct *mm, unsigned long address)
 {
         return mm->pgd + pgd_index(address);
 }
 # 359 "/data1/src/linux/include/asm/pgtable.h"
 static inline int
 ptep_test_and_clear_young (pte_t *ptep)
 {
 
         return test_and_clear_bit(5, ptep);
 
 
 
 
 
 
 
 }
 
 static inline int
 ptep_test_and_clear_dirty (pte_t *ptep)
 {
 
         return test_and_clear_bit(6, ptep);
 
 
 
 
 
 
 
 }
 
 static inline pte_t
 ptep_get_and_clear (pte_t *ptep)
 {
 
         return ((pte_t) { (((__typeof__(*((long *) ptep))) __xchg ((unsigned long) (0), ((long *) ptep), sizeof(*((long *) ptep))))) } );
 
 
 
 
 
 }
 
 static inline void
 ptep_set_wrprotect (pte_t *ptep)
 {
 
         unsigned long new, old;
 
         do {
                 old = ((*ptep).pte);
                 new = (((((pte_t) { (((((pte_t) { (old) } )).pte) & ~(2 << 9)) } ))).pte);
         } while (({ __typeof__(((unsigned long *) ptep)) _p_ = (((unsigned long *) ptep)); __typeof__((new)) _n_ = ((new)); __u64 _o_, _r_; switch (sizeof(*((unsigned long *) ptep))) { case 1: _o_ = (__u8 ) (long) ((old)); break; case 2: _o_ = (__u16) (l ong) ((old)); break; case 4: _o_ = (__u32) (long) ((old)); break; case 8: _o_ = (__u64) (long) ((old)); break; default: break; } __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(_o_)); switch (sizeof(*((unsigned long *) ptep))) { case 1: __asm__ __volatil e__ ("cmpxchg1.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 2: __asm__ __volatile__ ("cmpxchg2.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 4: __asm__ __volatile__ ("cmpxchg4 .""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; case 8: __asm__ __volatile__ ("cmpxchg8.""acq"" %0=[%1],%2,ar.ccv" : "=r"(_r_) : "r"(_p_), "r"(_n_) : "memory"); break; default: _r_ = __cmpxchg_c!
 alled_with_bad_pointer(); break; } (__typeof__((old))) _r_; }) != old);
 
 
 
 
 }
 
 static inline void
 ptep_mkdirty (pte_t *ptep)
 {
 
         set_bit(6, ptep);
 
 
 
 
 }
 
 static inline int
 pte_same (pte_t a, pte_t b)
 {
         return ((a).pte) == ((b).pte);
 }
 
 
 
 
 
 static inline int
 is_write_access (int access_type)
 {
         return (access_type & 0x2);
 }
 
 static inline int
 is_exec_access (int access_type)
 {
         return (access_type & 0x4);
 }
 
 extern pgd_t swapper_pg_dir[(((unsigned long)(1)) << (14 -3))];
 extern void paging_init (void);
 # 466 "/data1/src/linux/include/asm/pgtable.h"
 extern unsigned long empty_zero_page[(1UL << 14)/sizeof(unsigned long)];
 # 27 "/data1/src/linux/include/linux/mm.h" 2
 # 44 "/data1/src/linux/include/linux/mm.h"
 struct vm_area_struct {
         struct mm_struct * vm_mm;
         unsigned long vm_start;
         unsigned long vm_end;
 
 
 
         struct vm_area_struct *vm_next;
 
         pgprot_t vm_page_prot;
         unsigned long vm_flags;
 
         rb_node_t vm_rb;
 
 
 
 
 
 
         struct vm_area_struct *vm_next_share;
         struct vm_area_struct **vm_pprev_share;
 
 
         struct vm_operations_struct * vm_ops;
 
 
         unsigned long vm_pgoff;
 
         struct file * vm_file;
         unsigned long vm_raend;
         void * vm_private_data;
 };
 # 128 "/data1/src/linux/include/linux/mm.h"
 extern pgprot_t protection_map[16];
 
 
 
 
 
 
 
 struct vm_operations_struct {
         void (*open)(struct vm_area_struct * area);
         void (*close)(struct vm_area_struct * area);
         struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int unused);
 };
 # 157 "/data1/src/linux/include/linux/mm.h"
 typedef struct page {
         struct list_head list;
         struct address_space *mapping;
         unsigned long index;
         struct page *next_hash;
 
         atomic_t count;
         unsigned long flags;
 
         struct list_head lru;
 
         wait_queue_head_t wait;
         struct page **pprev_hash;
         struct buffer_head * buffers;
         void *virtual;
 
         struct zone_struct *zone;
 } mem_map_t;
 # 311 "/data1/src/linux/include/linux/mm.h"
 extern void set_page_dirty(struct page *);
 # 355 "/data1/src/linux/include/linux/mm.h"
 extern mem_map_t * mem_map;
 
 extern void show_free_areas(void);
 extern void show_free_areas_node(pg_data_t *pgdat);
 
 extern void clear_page_tables(struct mm_struct *, unsigned long, int);
 
 extern int fail_writepage(struct page *);
 struct page * shmem_nopage(struct vm_area_struct * vma, unsigned long address, int unused);
 struct file *shmem_file_setup(char * name, loff_t size);
 extern void shmem_lock(struct file * file, int lock);
 extern int shmem_zero_setup(struct vm_area_struct *);
 
 extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size);
 extern int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma);
 extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, pgprot_t prot);
 extern int zeromap_page_range(unsigned long from, unsigned long size, pgprot_t prot);
 
 extern int vmtruncate(struct inode * inode, loff_t offset);
 extern pmd_t *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address);
 extern pte_t *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address);
 extern int handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, unsigned long address, int write_access);
 extern int make_pages_present(unsigned long addr, unsigned long end);
 extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
 extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char *dst, int len);
 extern int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long dst, int len);
 extern int ptrace_attach(struct task_struct *tsk);
 extern int ptrace_detach(struct task_struct *, unsigned int);
 extern void ptrace_disable(struct task_struct *);
 extern int ptrace_check_attach(struct task_struct *task, int kill);
 
 int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start,
                 int len, int write, int force, struct page **pages, struct vm_area_struct **vmas);
 
 
 
 
 
 
 static inline pmd_t *pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
 {
         if ((!((*pgd).pgd)))
                 return __pmd_alloc(mm, pgd, address);
         return ((pmd_t *) ((unsigned long) ({ia64_va _v; _v.l = (long) (((*(pgd)).pgd) & (((((unsigned long)(1)) << 50) - 1) & ~0xfffUL)); _v.f.reg = -1; _v.p;})) + (((address) >> (14 + (14 -3))) & ((((unsigned long)(1)) << (14 -3)) - 1)));
 }
 
 extern int pgt_cache_water[2];
 extern int check_pgt_cache(void);
 
 extern void free_area_init(unsigned long * zones_size);
 extern void free_area_init_node(int nid, pg_data_t *pgdat, struct page *pmap,
         unsigned long * zones_size, unsigned long zone_start_paddr,
         unsigned long *zholes_size);
 extern void mem_init(void);
 extern void show_mem(void);
 extern void si_meminfo(struct sysinfo * val);
 extern void swapin_readahead(swp_entry_t);
 
 extern struct address_space swapper_space;
 
 
 static inline int is_page_cache_freeable(struct page * page)
 {
         return ((&(page)->count)->counter) - !!page->buffers == 1;
 }
 
 extern int can_share_swap_page(struct page *);
 extern int remove_exclusive_swap_page(struct page *);
 
 extern void __free_pte(pte_t);
 
 
 extern void lock_vma_mappings(struct vm_area_struct *);
 extern void unlock_vma_mappings(struct vm_area_struct *);
 extern void insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
 extern void __insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
 extern void build_mmap_rb(struct mm_struct *);
 extern void exit_mmap(struct mm_struct *);
 
 extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
 
 extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
         unsigned long len, unsigned long prot,
         unsigned long flag, unsigned long pgoff);
 
 static inline unsigned long do_mmap(struct file *file, unsigned long addr,
         unsigned long len, unsigned long prot,
         unsigned long flag, unsigned long offset)
 {
         unsigned long ret = -22;
         if ((offset + (((len) + (1UL << 14) - 1) & (~((1UL << 14) - 1)))) < offset)
                 goto out;
         if (!(offset & ~(~((1UL << 14) - 1))))
                 ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> 14);
 out:
         return ret;
 }
 
 extern int do_munmap(struct mm_struct *, unsigned long, size_t);
 
 extern unsigned long do_brk(unsigned long, unsigned long);
 
 static inline void __vma_unlink(struct mm_struct * mm, struct vm_area_struct * vma, struct vm_area_struct * prev)
 {
         prev->vm_next = vma->vm_next;
         rb_erase(&vma->vm_rb, &mm->mm_rb);
         if (mm->mmap_cache == vma)
                 mm->mmap_cache = prev;
 }
 
 static inline int can_vma_merge(struct vm_area_struct * vma, unsigned long vm_flags)
 {
         if (!vma->vm_file && vma->vm_flags == vm_flags)
                 return 1;
         else
                 return 0;
 }
 
 struct zone_t;
 
 extern void remove_inode_page(struct page *);
 extern unsigned long page_unuse(struct page *);
 extern void truncate_inode_pages(struct address_space *, loff_t);
 
 
 extern int filemap_sync(struct vm_area_struct *, unsigned long, size_t, unsigned int);
 extern struct page *filemap_nopage(struct vm_area_struct *, unsigned long, int);
 
 
 
 static inline int expand_stack(struct vm_area_struct * vma, unsigned long address)
 {
         unsigned long grow;
 
 
 
 
 
 
         address &= (~((1UL << 14) - 1));
         grow = (vma->vm_start - address) >> 14;
         if (vma->vm_end - address > current->rlim[3].rlim_cur ||
             ((vma->vm_mm->total_vm + grow) << 14) > current->rlim[9].rlim_cur)
                 return -12;
         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond .spnt.few 1b\n" ";;\n" :: "r"(&(&vma->vm_mm->page_table_lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         vma->vm_start = address;
         vma->vm_pgoff -= grow;
         vma->vm_mm->total_vm += grow;
         if (vma->vm_flags & 0x00002000)
                 vma->vm_mm->locked_vm += grow;
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &vma->vm_mm->page_table_lock)->lock = 0; } while (0);
         return 0;
 }
 
 
 extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr);
 extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
                                              struct vm_area_struct **pprev);
 
 
 
 static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
 {
         struct vm_area_struct * vma = find_vma(mm,start_addr);
 
         if (vma && end_addr <= vma->vm_start)
                 vma = ((void *)0);
         return vma;
 }
 
 extern struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr);
 # 16 "kernel/sched.c" 2
 # 1 "/data1/src/linux/include/linux/nmi.h" 1
 
 
 
 
 
 
 # 1 "/data1/src/linux/include/asm/irq.h" 1
 # 16 "/data1/src/linux/include/asm/irq.h"
 static __inline__ int
 irq_cannonicalize (int irq)
 {
 
 
 
 
 
         return ((irq == 2) ? 9 : irq);
 }
 
 extern void disable_irq (unsigned int);
 extern void disable_irq_nosync (unsigned int);
 extern void enable_irq (unsigned int);
 # 8 "/data1/src/linux/include/linux/nmi.h" 2
 # 17 "kernel/sched.c" 2
 
 # 1 "/data1/src/linux/include/asm/uaccess.h" 1
 # 63 "/data1/src/linux/include/asm/uaccess.h"
 static inline int
 verify_area (int type, const void *addr, unsigned long size)
 {
         return (((unsigned long) ((addr))) <= ((current->addr_limit)).seg && (((current->addr_limit)).seg == ((mm_segment_t) { ~0UL }).seg || rgn_offset((unsigned long) ((addr))) < ((1UL << (4*14 - 12)) - (1UL << 14)))) ? 0 : -14;
 }
 # 88 "/data1/src/linux/include/asm/uaccess.h"
 extern void __get_user_unknown (void);
 # 124 "/data1/src/linux/include/asm/uaccess.h"
 struct __large_struct { unsigned long buf[100]; };
 
 
 
 asm (".section \"__ex_table\", \"a\"\n\t.previous");
 # 164 "/data1/src/linux/include/asm/uaccess.h"
 extern void __put_user_unknown (void);
 # 232 "/data1/src/linux/include/asm/uaccess.h"
 extern unsigned long __copy_user (void *to, const void *from, unsigned long count);
 # 252 "/data1/src/linux/include/asm/uaccess.h"
 extern unsigned long __do_clear_user (void *, unsigned long);
 # 272 "/data1/src/linux/include/asm/uaccess.h"
 extern long __strncpy_from_user (char *to, const char *from, long to_len);
 # 284 "/data1/src/linux/include/asm/uaccess.h"
 extern unsigned long __strlen_user (const char *);
 # 300 "/data1/src/linux/include/asm/uaccess.h"
 extern unsigned long __strnlen_user (const char *, long);
 # 311 "/data1/src/linux/include/asm/uaccess.h"
 struct exception_table_entry {
         int addr;
         int cont;
 };
 
 struct exception_fixup {
         unsigned long cont;
 };
 
 extern struct exception_fixup search_exception_table (unsigned long addr);
 extern void handle_exception (struct pt_regs *regs, struct exception_fixup fixup);
 # 19 "kernel/sched.c" 2
 # 1 "/data1/src/linux/include/linux/smp_lock.h" 1
 # 16 "/data1/src/linux/include/linux/smp_lock.h"
 # 1 "/data1/src/linux/include/asm/smplock.h" 1
 
 
 
 
 
 # 1 "/data1/src/linux/include/linux/interrupt.h" 1
 # 16 "/data1/src/linux/include/linux/interrupt.h"
 struct irqaction {
         void (*handler)(int, void *, struct pt_regs *);
         unsigned long flags;
         unsigned long mask;
         const char *name;
         void *dev_id;
         struct irqaction *next;
 };
 
 
 
 
 
 enum {
         TIMER_BH = 0,
         TQUEUE_BH,
         DIGI_BH,
         SERIAL_BH,
         RISCOM8_BH,
         SPECIALIX_BH,
         AURORA_BH,
         ESP_BH,
         SCSI_BH,
         IMMEDIATE_BH,
         CYCLADES_BH,
         CM206_BH,
         JS_BH,
         MACSERIAL_BH,
         ISICOM_BH
 };
 
 # 1 "/data1/src/linux/include/asm/hardirq.h" 1
 # 12 "/data1/src/linux/include/asm/hardirq.h"
 # 1 "/data1/src/linux/include/linux/irq.h" 1
 # 39 "/data1/src/linux/include/linux/irq.h"
 struct hw_interrupt_type {
         const char * typename;
         unsigned int (*startup)(unsigned int irq);
         void (*shutdown)(unsigned int irq);
         void (*enable)(unsigned int irq);
         void (*disable)(unsigned int irq);
         void (*ack)(unsigned int irq);
         void (*end)(unsigned int irq);
         void (*set_affinity)(unsigned int irq, unsigned long mask);
 };
 
 typedef struct hw_interrupt_type hw_irq_controller;
 # 59 "/data1/src/linux/include/linux/irq.h"
 typedef struct irq_desc {
         unsigned int status;
         hw_irq_controller *handler;
         struct irqaction *action;
         unsigned int depth;
         spinlock_t lock;
 } __attribute__((__aligned__((1 << (6))))) irq_desc_t;
 
 # 1 "/data1/src/linux/include/asm/hw_irq.h" 1
 # 16 "/data1/src/linux/include/asm/hw_irq.h"
 typedef u8 ia64_vector;
 # 60 "/data1/src/linux/include/asm/hw_irq.h"
 enum {
         IA64_IPI_DM_INT = 0x0,
         IA64_IPI_DM_PMI = 0x2,
         IA64_IPI_DM_NMI = 0x4,
         IA64_IPI_DM_INIT = 0x5,
         IA64_IPI_DM_EXTINT = 0x7,
 };
 
 extern __u8 isa_irq_to_vector_map[16];
 
 
 extern unsigned long ipi_base_addr;
 
 extern struct hw_interrupt_type irq_type_ia64_lsapic;
 
 extern int ia64_alloc_irq (void);
 extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
 extern void register_percpu_irq (ia64_vector vec, struct irqaction *action);
 
 static inline void
 hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector)
 {
         ia64_send_ipi((current->cpu), vector, IA64_IPI_DM_INT, 0);
 }
 
 
 
 
 
 extern struct irq_desc _irq_desc[256];
 
 static inline struct irq_desc *
 __ia64_irq_desc (unsigned int irq)
 {
         return _irq_desc + irq;
 }
 
 static inline ia64_vector
 __ia64_irq_to_vector (unsigned int irq)
 {
         return (ia64_vector) irq;
 }
 
 static inline unsigned int
 __ia64_local_vector_to_irq (ia64_vector vec)
 {
         return (unsigned int) vec;
 }
 # 120 "/data1/src/linux/include/asm/hw_irq.h"
 static inline struct irq_desc *
 irq_desc (int irq)
 {
         return __ia64_irq_desc(irq);
 }
 
 
 static inline ia64_vector
 irq_to_vector (int irq)
 {
         return __ia64_irq_to_vector(irq);
 }
 
 
 
 
 
 
 static inline unsigned int
 local_vector_to_irq (ia64_vector vec)
 {
         return __ia64_local_vector_to_irq(vec);
 }
 # 68 "/data1/src/linux/include/linux/irq.h" 2
 
 extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);
 extern int setup_irq(unsigned int , struct irqaction * );
 
 extern hw_irq_controller no_irq_type;
 extern void no_action(int cpl, void *dev_id, struct pt_regs *regs);
 # 13 "/data1/src/linux/include/asm/hardirq.h" 2
 # 53 "/data1/src/linux/include/asm/hardirq.h"
 extern unsigned int global_irq_holder;
 extern volatile unsigned long global_irq_lock;
 
 static inline int
 irqs_running (void)
 {
         int i;
 
         for (i = 0; i < smp_num_cpus; i++)
                 if (((&_cpu_data[i])->irq_stat.f.irq_count))
                         return 1;
         return 0;
 }
 
 static inline void
 release_irqlock (int cpu)
 {
 
         if (global_irq_holder == cpu) {
                 global_irq_holder = 0xffffffff;
                 __asm__ __volatile__ ("mf" ::: "memory");
                 clear_bit(0,&global_irq_lock);
         }
 }
 
 static inline void
 local_irq_enter (int irq)
 {
         (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.irq_count)++;
 
         while (test_bit(0,&global_irq_lock)) {
                              ;
         }
 }
 
 static inline void
 local_irq_exit (int irq)
 {
         (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.irq_count)--;
 }
 
 static inline int
 local_hardirq_trylock (void)
 {
         return !(((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.irq_count) && !test_bit(0,&global_irq_lock);
 }
 
 
 
 extern void synchronize_irq (void);
 # 48 "/data1/src/linux/include/linux/interrupt.h" 2
 # 1 "/data1/src/linux/include/asm/softirq.h" 1
 # 49 "/data1/src/linux/include/linux/interrupt.h" 2
 # 58 "/data1/src/linux/include/linux/interrupt.h"
 enum
 {
         HI_SOFTIRQ=0,
         NET_TX_SOFTIRQ,
         NET_RX_SOFTIRQ,
         TASKLET_SOFTIRQ
 };
 
 
 
 
 
 struct softirq_action
 {
         void (*action)(struct softirq_action *);
         void *data;
 };
 
  __attribute__((syscall_linkage)) void do_softirq(void);
 extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data);
 extern void softirq_init(void);
 
 extern void cpu_raise_softirq(unsigned int cpu, unsigned int nr);
 extern void raise_softirq(unsigned int nr);
 # 105 "/data1/src/linux/include/linux/interrupt.h"
 struct tasklet_struct
 {
         struct tasklet_struct *next;
         unsigned long state;
         atomic_t count;
         void (*func)(unsigned long);
         unsigned long data;
 };
 # 121 "/data1/src/linux/include/linux/interrupt.h"
 enum
 {
         TASKLET_STATE_SCHED,
         TASKLET_STATE_RUN
 };
 
 struct tasklet_head
 {
         struct tasklet_struct *list;
 } __attribute__ ((__aligned__((1 << (6)))));
 
 extern struct tasklet_head tasklet_vec[32];
 extern struct tasklet_head tasklet_hi_vec[32];
 
 
 static inline int tasklet_trylock(struct tasklet_struct *t)
 {
         return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
 }
 
 static inline void tasklet_unlock(struct tasklet_struct *t)
 {
         __asm__ __volatile__ ("mf" ::: "memory");
         clear_bit(TASKLET_STATE_RUN, &(t)->state);
 }
 
 static inline void tasklet_unlock_wait(struct tasklet_struct *t)
 {
         while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { __asm__ __volatile__("": : :"memory"); }
 }
 
 
 
 
 
 
 extern void __tasklet_schedule(struct tasklet_struct *t);
 
 static inline void tasklet_schedule(struct tasklet_struct *t)
 {
         if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
                 __tasklet_schedule(t);
 }
 
 extern void __tasklet_hi_schedule(struct tasklet_struct *t);
 
 static inline void tasklet_hi_schedule(struct tasklet_struct *t)
 {
         if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
                 __tasklet_hi_schedule(t);
 }
 
 
 static inline void tasklet_disable_nosync(struct tasklet_struct *t)
 {
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&t->count)))->counter)) *_v = (&(((&t->count)))->coun ter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r "(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8 ) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&(((&t->!
 count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: __ba d_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd 8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_t mp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ switch !
 (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); brea k; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatil e__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1] ,%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; de!
 fault: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&t->count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&t->count))));
         __asm__ __volatile__("": : :"memory");
 }
 
 static inline void tasklet_disable(struct tasklet_struct *t)
 {
         tasklet_disable_nosync(t);
         tasklet_unlock_wait(t);
         __asm__ __volatile__ ("mf" ::: "memory");
 }
 
 static inline void tasklet_enable(struct tasklet_struct *t)
 {
         __asm__ __volatile__("": : :"memory");
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&t->count)))->counter)) *_v = (&(((&t->count)))->coun ter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" :  "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i" (-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&(((&!
 t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: _ _bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetch add8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r" (_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ swit!
 ch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); b reak; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __vola tile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[ %1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break;!
  default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&t->count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&t->count))));
 }
 
 static inline void tasklet_hi_enable(struct tasklet_struct *t)
 {
         __asm__ __volatile__("": : :"memory");
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&t->count)))->counter)) *_v = (&(((&t->count)))->coun ter); switch (-((1))) { case -16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" :  "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i" (-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -4: ({ switch (sizeof(*(&(((&!
 t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; default: _ _bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; case 8: __asm__ __volatile__ ("fetch add8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r" (_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 4: ({ swit!
 ch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); b reak; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __vola tile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&t->count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[ %1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break;!
  default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&t->count)))->counter)) (_tmp + (-((1)))); }) : ia64_atomic_sub((1), ((&t->count))));
 }
 
 extern void tasklet_kill(struct tasklet_struct *t);
 extern void tasklet_init(struct tasklet_struct *t,
                          void (*func)(unsigned long), unsigned long data);
 # 224 "/data1/src/linux/include/linux/interrupt.h"
 extern struct tasklet_struct bh_task_vec[];
 
 
 extern spinlock_t global_bh_lock;
 
 static inline void mark_bh(int nr)
 {
         tasklet_hi_schedule(bh_task_vec+nr);
 }
 
 extern void init_bh(int nr, void (*routine)(void));
 extern void remove_bh(int nr);
 # 265 "/data1/src/linux/include/linux/interrupt.h"
 extern unsigned long probe_irq_on(void);
 extern int probe_irq_off(unsigned long);
 extern unsigned int probe_irq_mask(unsigned long);
 # 7 "/data1/src/linux/include/asm/smplock.h" 2
 
 
 
 
 
 
 extern spinlock_t kernel_flag;
 
 
 
 
 
 
 static __inline__ void
 release_kernel_lock(struct task_struct *task, int cpu)
 {
         if (__builtin_expect((task->lock_depth >= 0),0)) {
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &kernel_flag)->lock = 0; } while (0);
                 release_irqlock(cpu);
                 __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory");
         }
 }
 
 
 
 
 static __inline__ void
 reacquire_kernel_lock(struct task_struct *task)
 {
         if (__builtin_expect((task->lock_depth >= 0),0))
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&kernel_flag)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
 }
 # 47 "/data1/src/linux/include/asm/smplock.h"
 static __inline__ void
 lock_kernel(void)
 {
         if (!++current->lock_depth)
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&kernel_flag)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
 }
 
 static __inline__ void
 unlock_kernel(void)
 {
         if (--current->lock_depth < 0)
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &kernel_flag)->lock = 0; } while (0);
 }
 # 17 "/data1/src/linux/include/linux/smp_lock.h" 2
 # 20 "kernel/sched.c" 2
 # 28 "kernel/sched.c"
 typedef struct runqueue runqueue_t;
 
 struct prio_array {
         int nr_active;
         spinlock_t *lock;
         runqueue_t *rq;
         char bitmap[(((128 +40)+7)/8)];
         list_t queue[(128 +40)];
 };
 # 49 "kernel/sched.c"
 static struct runqueue {
         int cpu;
         spinlock_t lock;
         unsigned long nr_running, nr_switches;
         task_t *curr, *idle;
         prio_array_t *active, *expired, arrays[2];
         char __pad [(1 << (6))];
 } runqueues [32] __attribute__((__aligned__((1 << (6))), __section__(".data.cacheline_aligned")));
 # 81 "kernel/sched.c"
 static inline void dequeue_task(struct task_struct *p, prio_array_t *array)
 {
         array->nr_active--;
         list_del_init(&p->run_list);
         if (list_empty(array->queue + p->prio))
                 __set_bit(p->prio, array->bitmap);
 }
 
 static inline void enqueue_task(struct task_struct *p, prio_array_t *array)
 {
         list_add_tail(&p->run_list, array->queue + p->prio);
         __clear_bit(p->prio, array->bitmap);
         array->nr_active++;
         p->array = array;
 }
 
 static inline void activate_task(task_t *p, runqueue_t *rq)
 {
         prio_array_t *array = rq->active;
 
         if (!((p)->policy != 0)) {
                 unsigned long prio_bonus = (((jiffies - p->sleep_jtime) * 20) / 1024);
 
                 if (prio_bonus > (128 +40))
                         prio_bonus = (128 +40);
                 p->prio -= prio_bonus;
                 if (p->prio < 128)
                         p->prio = 128;
         }
         enqueue_task(p, array);
         rq->nr_running++;
 }
 
 static inline void deactivate_task(struct task_struct *p, runqueue_t *rq)
 {
         rq->nr_running--;
         dequeue_task(p, p->array);
         p->array = ((void *)0);
         p->sleep_jtime = jiffies;
 }
 
 static inline void resched_task(task_t *p)
 {
         int need_resched;
 
         need_resched = p->need_resched;
         __asm__ __volatile__ ("mf" ::: "memory");
         p->need_resched = 1;
         if (!need_resched)
                 smp_send_reschedule(p->cpu);
 }
 
 
 
 
 
 
 
 void wait_task_inactive(task_t * p)
 {
         unsigned long flags;
         runqueue_t *rq;
 
 repeat:
         rq = (runqueues + (p)->cpu);
         while (__builtin_expect((rq->curr == p),0)) {
                 do { } while (0);
                 __asm__ __volatile__("": : :"memory");
         }
         do { repeat_lock_task: rq = (runqueues + (p)->cpu); do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq  p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); if (__builtin_ expect(((rq)->cpu != (p)->cpu),0)) { do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0); goto repeat_lock_task; } }  while (0);
         if (__builtin_expect((rq->curr == p),0)) {
                 do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
                 goto repeat;
         }
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 # 167 "kernel/sched.c"
 void kick_if_running(task_t * p)
 {
         if (p == (runqueues + (p)->cpu)->curr)
                 resched_task(p);
 }
 # 182 "kernel/sched.c"
 static int try_to_wake_up(task_t * p, int synchronous)
 {
         unsigned long flags;
         int success = 0;
         runqueue_t *rq;
 
         do { repeat_lock_task: rq = (runqueues + (p)->cpu); do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq  p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); if (__builtin_ expect(((rq)->cpu != (p)->cpu),0)) { do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0); goto repeat_lock_task; } }  while (0);
         p->state = 0;
         if (!p->array) {
                 if (!((p)->policy != 0) && synchronous && ((current->cpu) < p->cpu)) {
                         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\ n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&(runqueues + (current->cpu))->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                         p->cpu = (current->cpu);
                         activate_task(p, (runqueues + (current->cpu)));
                         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &(runqueues + (current->cpu))->lock)->lock = 0; } while (0);
                 } else {
                         activate_task(p, rq);
                         if ((rq->curr == rq->idle) ||
                                         (p->prio < rq->curr->prio))
                                 resched_task(rq->curr);
                 }
                 success = 1;
         }
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
         return success;
 }
 
 inline int wake_up_process(task_t * p)
 {
         return try_to_wake_up(p, 0);
 }
 
 void wake_up_forked_process(task_t * p)
 {
         runqueue_t *rq = (runqueues + (current->cpu));
 
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
         p->state = 0;
         if (!((p)->policy != 0)) {
                 p->prio += ((((128 +40))-128))/10;
                 if (p->prio > (128 +40)-1)
                         p->prio = (128 +40)-1;
         }
         activate_task(p, rq);
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 }
 
  __attribute__((syscall_linkage)) void schedule_tail(task_t *prev)
 {
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &(runqueues + (current->cpu))->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 }
 
 static inline void context_switch(task_t *prev, task_t *next, int dont_clear)
 {
         struct mm_struct *mm = next->mm;
         struct mm_struct *oldmm = prev->active_mm;
 
         do { } while(0);
 
         if (!mm) {
                 next->active_mm = oldmm;
                 ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&oldmm->mm_count)))->counter)) *_v = (&(((&ol dmm->mm_count)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fe tchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1 ],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; c!
 ase -4: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v) , "i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory "); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: _ _asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_!
 for_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&oldmm->mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r "(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&oldmm-> mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "!
 memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&oldmm->mm_count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&oldmm->mm_count))) );
                 enter_lazy_tlb(oldmm, next, (current->cpu));
         } else
                 activate_mm(oldmm, mm);
 
         if (!prev->mm) {
                 if (!dont_clear)
                         prev->active_mm = ((void *)0);
                 mmdrop(oldmm);
         }
 # 263 "kernel/sched.c"
         do { if (((struct ia64_psr *) &((((struct pt_regs *) ((char *) (prev) + ((1 << 1)*(1UL << 14)))) - 1))->cr_ipsr)->mfh) { ((struct ia64_psr *) &((((struct pt_regs *) ((char *) (prev) + ((1 << 1)*(1UL << 14)))) - 1))->cr_ipsr)->mfh = 0; (prev)->thr ead.flags |= (((unsigned long)(1)) << 0); __ia64_save_fpu((prev)->thread.fph); } ((struct ia64_psr *) &((((struct pt_regs *) ((char *) (prev) + ((1 << 1)*(1UL << 14)))) - 1))->cr_ipsr)->dfh = 1; do { if (((prev)->thread.flags & ((((unsigned long)(1)) <<  1)|(((unsigned long)(1)) << 2))) || (((struct ia64_psr *) &((((struct pt_regs *) ((char *) (prev) + ((1 << 1)*(1UL << 14)))) - 1))->cr_ipsr)->is != 0)) ia64_save_extra(prev); if (((next)->thread.flags & ((((unsigned long)(1)) << 1)|(((unsigned long)(1))  << 2))) || (((struct ia64_psr *) &((((struct pt_regs *) ((char *) (next) + ((1 << 1)*(1UL << 14)))) - 1))->cr_ipsr)->is != 0)) ia64_load_extra(next); (prev) = ia64_switch_to((next)); } while (0); } while (0);
 }
 
 unsigned long nr_running(void)
 {
         unsigned long i, sum = 0;
 
         for (i = 0; i < smp_num_cpus; i++)
                 sum += (runqueues + (i))->nr_running;
 
         return sum;
 }
 
 unsigned long nr_context_switches(void)
 {
         unsigned long i, sum = 0;
 
         for (i = 0; i < smp_num_cpus; i++)
                 sum += (runqueues + (i))->nr_switches;
 
         return sum;
 }
 
 static inline unsigned long max_rq_len(void)
 {
         unsigned long i, curr, max = 0;
 
         for (i = 0; i < smp_num_cpus; i++) {
                 curr = (runqueues + (i))->nr_running;
                 if (curr > max)
                         max = curr;
         }
         return max;
 }
 # 305 "kernel/sched.c"
 static void load_balance(runqueue_t *this_rq)
 {
         int nr_tasks, load, prev_max_load, max_load, idx, i;
         task_t *next = this_rq->idle, *tmp;
         runqueue_t *busiest, *rq_tmp;
         prio_array_t *array;
         list_t *head, *curr;
 
         prev_max_load = max_rq_len();
         nr_tasks = prev_max_load - this_rq->nr_running;
 
 
 
         if (nr_tasks <= 1 + prev_max_load/8)
                 return;
         prev_max_load++;
 
 repeat_search:
 
 
 
 
 
         busiest = ((void *)0);
         max_load = 0;
         for (i = 0; i < smp_num_cpus; i++) {
                 rq_tmp = (runqueues + (i));
                 load = rq_tmp->nr_running;
                 if ((load > max_load) && (load < prev_max_load) &&
                                                 (rq_tmp != this_rq)) {
                         busiest = rq_tmp;
                         max_load = load;
                 }
         }
 
         if (__builtin_expect((!busiest),1))
                 return;
         if (max_load <= this_rq->nr_running)
                 return;
         prev_max_load = max_load;
         if (busiest->cpu < this_rq->cpu) {
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &this_rq->lock)->lock = 0; } while (0);
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&busiest->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&this_rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         } else
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&busiest->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         if (busiest->nr_running <= this_rq->nr_running + 1)
                 goto out_unlock;
 
 
 
 
 
 
         if (busiest->expired->nr_active)
                 array = busiest->expired;
         else
                 array = busiest->active;
 
 new_array:
 
 
 
 
         idx = 128;
 skip_bitmap:
         idx = find_next_zero_bit(array->bitmap, (128 +40), idx);
         if (idx == (128 +40)) {
                 if (array == busiest->expired) {
                         array = busiest->active;
                         goto new_array;
                 }
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &busiest->lock)->lock = 0; } while (0);
                 goto repeat_search;
         }
 
         head = array->queue + idx;
         curr = head->next;
 skip_queue:
         tmp = ((task_t *)((char *)(curr)-(unsigned long)(&((task_t *)0)->run_list)));
         if ((tmp == busiest->curr) || !(tmp->cpus_allowed & (1 << (current->cpu)))) {
                 curr = curr->next;
                 if (curr != head)
                         goto skip_queue;
                 idx++;
                 goto skip_bitmap;
         }
         next = tmp;
 
 
 
 
         dequeue_task(next, array);
         busiest->nr_running--;
         next->cpu = (current->cpu);
         this_rq->nr_running++;
         enqueue_task(next, this_rq->active);
         if (next->prio < current->prio)
                 current->need_resched = 1;
         if (--nr_tasks) {
                 if (array == busiest->expired) {
                         array = busiest->active;
                         goto new_array;
                 }
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &busiest->lock)->lock = 0; } while (0);
                 goto repeat_search;
         }
 out_unlock:
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &busiest->lock)->lock = 0; } while (0);
 }
 
 
 
 
 void idle_tick(void)
 {
         unsigned long flags;
 
         if (!(jiffies % (1024/4)) && __builtin_expect(((runqueues + (current->cpu))->curr != ((void *)0)),1)) {
                 do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b  \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&(runqueues + (current->cpu))->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 load_balance((runqueues + (current->cpu)));
                 do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &(runqueues + (current->cpu))->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
         }
 }
 
 void expire_task(task_t *p)
 {
         runqueue_t *rq = (runqueues + (current->cpu));
         unsigned long flags;
 
         if (p->array != rq->active) {
                 p->need_resched = 1;
                 return;
         }
 
 
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
         if ((p->policy != 1) && !--p->time_slice) {
                 unsigned int time_slice;
                 p->need_resched = 1;
                 dequeue_task(p, rq->active);
                 time_slice = ((( (128 -(p->prio)-1)*((150 * 1024 / 1000)-( 20 * 1024 / 1000)) + 128 -1) / 128) + ( 20 * 1024 / 1000));
                 if (!((p)->policy != 0)) {
                         time_slice = ((( (((((128 +40))-128))-1-((p->prio)-128))*((150 * 1024 / 1000)-( 20 * 1024 / 1000)) + ((((128 +40))-128))-1) / ((((128 +40))-128))) + ( 20 * 1024 / 1000));
                         if (++p->prio >= (128 +40))
                                 p->prio = (128 +40) - 1;
                 }
                 p->time_slice = time_slice;
                 if (((p)->prio >= 128 && (p)->prio <= (128 + ((128 +40) - 128) / 4)))
                         enqueue_task(p, rq->active);
                 else
                         enqueue_task(p, rq->expired);
         }
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 
 void scheduling_functions_start_here(void) { }
 
 
 
 
  __attribute__((syscall_linkage)) void schedule(void)
 {
         task_t *prev, *next;
         prio_array_t *array;
         runqueue_t *rq;
         list_t *queue;
         int idx;
 
         if (__builtin_expect(((((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.irq_and_bh_counts != 0)),0))
                 do { printk("kernel BUG at %s:%d!\n", "kernel/sched.c", 476); *(int *)0=0; } while (0);
 need_resched_back:
         prev = current;
         release_kernel_lock(prev, (current->cpu));
         rq = (runqueues + (current->cpu));
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
 
         switch (prev->state) {
         case 1:
                 if (__builtin_expect((signal_pending(prev)),0)) {
                         prev->state = 0;
                         break;
                 }
         default:
                 deactivate_task(prev, rq);
         case 0:
         }
 pick_next_task:
         if (__builtin_expect((!rq->nr_running),0)) {
                 load_balance(rq);
                 if (rq->nr_running)
                         goto pick_next_task;
                 next = rq->idle;
                 goto switch_tasks;
         }
 
         array = rq->active;
         if (__builtin_expect((!array->nr_active),0)) {
 
 
 
                 rq->active = rq->expired;
                 rq->expired = array;
                 array = rq->active;
         }
 
         idx = sched_find_first_zero_bit(array->bitmap);
         queue = array->queue + idx;
         next = ((task_t *)((char *)(queue->next)-(unsigned long)(&((task_t *)0)->run_list)));
 
 switch_tasks:
         prev->need_resched = 0;
 
         if (__builtin_expect((prev != next),1)) {
                 rq->nr_switches++;
                 rq->curr = next;
                 next->cpu = prev->cpu;
                 context_switch(prev, next, 0);
 
 
 
 
 
                 __asm__ __volatile__("": : :"memory");
                 rq = (runqueues + (current->cpu));
         }
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 
         reacquire_kernel_lock(current);
         if (__builtin_expect((current->need_resched),0))
                 goto need_resched_back;
         return;
 }
 # 549 "kernel/sched.c"
 static inline void __wake_up_common (wait_queue_head_t *q, unsigned int mode,
                                      int nr_exclusive, const int sync)
 {
         struct list_head *tmp;
         task_t *p;
 
         for (tmp = (&q->task_list)->next, prefetch(tmp->next); tmp != (&q->task_list); tmp = tmp->next, prefetch(tmp->next)) {
                 unsigned int state;
                 wait_queue_t *curr = ((wait_queue_t *)((char *)(tmp)-(unsigned long)(&((wait_queue_t *)0)->task_list)));
 
                 p = curr->task;
                 state = p->state;
                 if ((state & mode) &&
                                 try_to_wake_up(p, sync) &&
                                 ((curr->flags & 0x01) &&
                                         !--nr_exclusive))
                         break;
         }
 }
 
 void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr)
 {
         if (q) {
                 unsigned long flags;
                 do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b  \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 __wake_up_common(q, mode, nr, 0);
                 do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
         }
 }
 
 void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr)
 {
         if (q) {
                 unsigned long flags;
                 do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b  \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 __wake_up_common(q, mode, nr, 1);
                 do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
         }
 }
 
 void complete(struct completion *x)
 {
         unsigned long flags;
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&x->wait.lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
         x->done++;
         __wake_up_common(&x->wait, 2 | 1, 1, 0);
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &x->wait.lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 
 void wait_for_completion(struct completion *x)
 {
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&x->wait.lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
         if (!x->done) {
                 wait_queue_t wait = { task: current, task_list: { ((void *)0), ((void *)0) } };
 
                 wait.flags |= 0x01;
                 __add_wait_queue_tail(&x->wait, &wait);
                 do {
                         do { current->state = (2); } while (0);
                         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &x->wait.lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
                         schedule();
                         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.ac q r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&x->wait.lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 } while (!x->done);
                 __remove_wait_queue(&x->wait, &wait);
         }
         x->done--;
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &x->wait.lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 }
 # 634 "kernel/sched.c"
 void interruptible_sleep_on(wait_queue_head_t *q)
 {
         unsigned long flags; wait_queue_t wait; init_waitqueue_entry(&wait, current);
 
         current->state = 1;
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __add_wait_queue(q, &wait); do { __asm__ __volatile__("": : :"memor y"); ((spinlock_t *) &q->lock)->lock = 0; } while (0);
         schedule();
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __remove_wait_queue(q, &wait); do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_ t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 
 long interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
 {
         unsigned long flags; wait_queue_t wait; init_waitqueue_entry(&wait, current);
 
         current->state = 1;
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __add_wait_queue(q, &wait); do { __asm__ __volatile__("": : :"memor y"); ((spinlock_t *) &q->lock)->lock = 0; } while (0);
         timeout = schedule_timeout(timeout);
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __remove_wait_queue(q, &wait); do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_ t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 
         return timeout;
 }
 
 void sleep_on(wait_queue_head_t *q)
 {
         unsigned long flags; wait_queue_t wait; init_waitqueue_entry(&wait, current);
 
         current->state = 2;
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __add_wait_queue(q, &wait); do { __asm__ __volatile__("": : :"memor y"); ((spinlock_t *) &q->lock)->lock = 0; } while (0);
         schedule();
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __remove_wait_queue(q, &wait); do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_ t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 
 long sleep_on_timeout(wait_queue_head_t *q, long timeout)
 {
         unsigned long flags; wait_queue_t wait; init_waitqueue_entry(&wait, current);
 
         current->state = 2;
 
         do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmp xchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __add_wait_queue(q, &wait); do { __asm__ __volatile__("": : :"memor y"); ((spinlock_t *) &q->lock)->lock = 0; } while (0);
         timeout = schedule_timeout(timeout);
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&q->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); __remove_wait_queue(q, &wait); do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_ t *) &q->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 
         return timeout;
 }
 
 
 
 
 
 
 void set_cpus_allowed(task_t *p, unsigned long new_mask)
 {
         runqueue_t *this_rq = (runqueues + (current->cpu)), *target_rq;
         unsigned long this_mask = 1UL << (current->cpu);
         int target_cpu;
 
         new_mask &= cpu_online_map;
         p->cpus_allowed = new_mask;
 
 
 
 
         if (new_mask & this_mask)
                 return;
         target_cpu = ffz(~new_mask);
         target_rq = (runqueues + (target_cpu));
         if (target_cpu < (current->cpu)) {
                 do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [ %0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&target_rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&this_rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         } else {
                 do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [ %0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&target_rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&this_rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         }
         dequeue_task(p, p->array);
         this_rq->nr_running--;
         target_rq->nr_running++;
         enqueue_task(p, target_rq->active);
         target_rq->curr->need_resched = 1;
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &target_rq->lock)->lock = 0; } while (0);
 
 
 
 
 
 
         this_rq->nr_switches++;
         this_rq->curr = this_rq->idle;
         this_rq->idle->need_resched = 1;
         context_switch(current, this_rq->idle, 1);
         __asm__ __volatile__("": : :"memory");
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &(runqueues + (current->cpu))->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 }
 
 void scheduling_functions_end_here(void) { }
 
 void set_user_nice(task_t *p, long nice)
 {
         unsigned long flags;
         prio_array_t *array;
         runqueue_t *rq;
 
         if (p->__nice == nice)
                 return;
 
 
 
 
         do { repeat_lock_task: rq = (runqueues + (p)->cpu); do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq  p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); if (__builtin_ expect(((rq)->cpu != (p)->cpu),0)) { do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0); goto repeat_lock_task; } }  while (0);
         if (((p)->policy != 0)) {
                 p->__nice = nice;
                 goto out_unlock;
         }
         array = p->array;
         if (array) {
                 dequeue_task(p, array);
         }
         p->__nice = nice;
         p->prio = ((128 +40)-1 + (nice) - 19);
         if (array) {
                 enqueue_task(p, array);
 
 
 
 
                 if ((nice < p->__nice) ||
                                 ((p->__nice < nice) && (p == rq->curr)))
                         resched_task(rq->curr);
         }
 out_unlock:
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 }
 # 777 "kernel/sched.c"
  __attribute__((syscall_linkage)) long sys_nice(int increment)
 {
         long nice;
 
 
 
 
 
 
         if (increment < 0) {
                 if (!capable(23))
                         return -1;
                 if (increment < -40)
                         increment = -40;
         }
         if (increment > 40)
                 increment = 40;
 
         nice = current->__nice + increment;
         if (nice < -20)
                 nice = -20;
         if (nice > 19)
                 nice = 19;
         set_user_nice(current, nice);
         return 0;
 }
 
 
 
 static inline task_t *find_process_by_pid(pid_t pid)
 {
         return pid ? find_task_by_pid(pid) : current;
 }
 
 static int setscheduler(pid_t pid, int policy, struct sched_param *param)
 {
         struct sched_param lp;
         prio_array_t *array;
         unsigned long flags;
         runqueue_t *rq;
         int retval;
         task_t *p;
 
         retval = -22;
         if (!param || pid < 0)
                 goto out_nounlock;
 
         retval = -14;
         if (({ void *__cu_to = ((&lp)); const void *__cu_from = ((param)); long __cu_len = ((sizeof(struct sched_param))); if ((((unsigned long) ((long) ((0) ? __cu_to : __cu_from))) <= ((current->addr_limit)).seg && (((current->addr_limit)).seg == ((mm_ segment_t) { ~0UL }).seg || rgn_offset((unsigned long) ((long) ((0) ? __cu_to : __cu_from))) < ((1UL << (4*14 - 12)) - (1UL << 14))))) { __cu_len = __copy_user(__cu_to, __cu_from, __cu_len); } __cu_len; }))
                 goto out_nounlock;
 
 
 
 
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel  %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&tasklist_lock) : "p6", "memory"); } while(0); } while (0);
 
         p = find_process_by_pid(pid);
 
         retval = -3;
         if (!p)
                 goto out_unlock_tasklist;
 
 
 
 
 
         do { repeat_lock_task: rq = (runqueues + (p)->cpu); do { __asm__ __volatile__ ("mov %0=psr;; rsm psr.i;;" : "=r" (flags) :: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq  p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0); if (__builtin_ expect(((rq)->cpu != (p)->cpu),0)) { do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0); goto repeat_lock_task; } }  while (0);
 
         if (policy < 0)
                 policy = p->policy;
         else {
                 retval = -22;
                 if (policy != 1 && policy != 2 &&
                                 policy != 0)
                         goto out_unlock;
         }
 
 
 
 
 
         retval = -22;
         if (lp.sched_priority < 0 || lp.sched_priority > 99)
                 goto out_unlock;
         if ((policy == 0) != (lp.sched_priority == 0))
                 goto out_unlock;
 
         retval = -1;
         if ((policy == 1 || policy == 2) &&
             !capable(23))
                 goto out_unlock;
         if ((current->euid != p->euid) && (current->euid != p->uid) &&
             !capable(23))
                 goto out_unlock;
 
         array = p->array;
         if (array)
                 deactivate_task(p, (runqueues + (p)->cpu));
         retval = 0;
         p->policy = policy;
         p->rt_priority = lp.sched_priority;
         if (((p)->policy != 0))
                 p->prio = 99-p->rt_priority;
         else
                 p->prio = ((128 +40)-1 + (p->__nice) - 19);
         if (array)
                 activate_task(p, (runqueues + (p)->cpu));
 
 out_unlock:
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; mov psr.l=%0;; srlz.d" :: "r" (flags) : "memory"); } while (0);
 out_unlock_tasklist:
         do { do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 
 out_nounlock:
         return retval;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_setscheduler(pid_t pid, int policy,
                                       struct sched_param *param)
 {
         return setscheduler(pid, policy, param);
 }
 
  __attribute__((syscall_linkage)) long sys_sched_setparam(pid_t pid, struct sched_param *param)
 {
         return setscheduler(pid, -1, param);
 }
 
  __attribute__((syscall_linkage)) long sys_sched_getscheduler(pid_t pid)
 {
         task_t *p;
         int retval;
 
         retval = -22;
         if (pid < 0)
                 goto out_nounlock;
 
         retval = -3;
         do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" " tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&tasklist_lock) : "p6", "memory"); } while(0);
         p = find_process_by_pid(pid);
         if (p)
                 retval = p->policy;
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0);
 
 out_nounlock:
         return retval;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_getparam(pid_t pid, struct sched_param *param)
 {
         task_t *p;
         struct sched_param lp;
         int retval;
 
         retval = -22;
         if (!param || pid < 0)
                 goto out_nounlock;
 
         do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" " tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&tasklist_lock) : "p6", "memory"); } while(0);
         p = find_process_by_pid(pid);
         retval = -3;
         if (!p)
                 goto out_unlock;
         lp.sched_priority = p->rt_priority;
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0);
 
 
 
 
         retval = ({ void *__cu_to = ((param)); const void *__cu_from = ((&lp)); long __cu_len = ((sizeof(*param))); if ((((unsigned long) ((long) ((1) ? __cu_to : __cu_from))) <= ((current->addr_limit)).seg && (((current->addr_limit)).seg == ((mm_segment _t) { ~0UL }).seg || rgn_offset((unsigned long) ((long) ((1) ? __cu_to : __cu_from))) < ((1UL << (4*14 - 12)) - (1UL << 14))))) { __cu_len = __copy_user(__cu_to, __cu_from, __cu_len); } __cu_len; }) ? -14 : 0;
 
 out_nounlock:
         return retval;
 
 out_unlock:
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0);
         return retval;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_yield(void)
 {
         runqueue_t *rq = (runqueues + (current->cpu));
         prio_array_t *array;
 # 969 "kernel/sched.c"
         do { __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory"); __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29 , ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory"); } while (0);
         array = current->array;
         dequeue_task(current, array);
         if (__builtin_expect((!((current)->policy != 0)),1))
                 if (current->prio < (128 +40)-1)
                         current->prio++;
         enqueue_task(current, array);
         do { do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq->lock)->lock = 0; } while (0); __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory"); } while (0);
 
         schedule();
 
         return 0;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_get_priority_max(int policy)
 {
         int ret = -22;
 
         switch (policy) {
         case 1:
         case 2:
                 ret = 99;
                 break;
         case 0:
                 ret = 0;
                 break;
         }
         return ret;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_get_priority_min(int policy)
 {
         int ret = -22;
 
         switch (policy) {
         case 1:
         case 2:
                 ret = 1;
                 break;
         case 0:
                 ret = 0;
         }
         return ret;
 }
 
  __attribute__((syscall_linkage)) long sys_sched_rr_get_interval(pid_t pid, struct timespec *interval)
 {
         struct timespec t;
         task_t *p;
         int retval = -22;
 
         if (pid < 0)
                 goto out_nounlock;
 
         retval = -3;
         do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" " tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&tasklist_lock) : "p6", "memory"); } while(0);
         p = find_process_by_pid(pid);
         if (p)
                 jiffies_to_timespec(p->policy & 1 ?
                                          0 : ((( (128 -(p->prio)-1)*((150 * 1024 / 1000)-( 20 * 1024 / 1000)) + 128 -1) / 128) + ( 20 * 1024 / 1000)), &t);
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0);
         if (p)
                 retval = ({ void *__cu_to = ((interval)); const void *__cu_from = ((&t)); long __cu_len = ((sizeof(t))); if ((((unsigned long) ((long) ((1) ? __cu_to : __cu_from))) <= ((current->addr_limit)).seg && (((current->addr_limit)).seg == ((mm_se gment_t) { ~0UL }).seg || rgn_offset((unsigned long) ((long) ((1) ? __cu_to : __cu_from))) < ((1UL << (4*14 - 12)) - (1UL << 14))))) { __cu_len = __copy_user(__cu_to, __cu_from, __cu_len); } __cu_len; }) ? -14 : 0;
 out_nounlock:
         return retval;
 }
 
 static void show_task(task_t * p)
 {
         unsigned long free = 0;
         int state;
         static const char * stat_nam[] = { "R", "S", "D", "Z", "T", "W" };
 
         printk("%-13.13s ", p->comm);
         state = p->state ? ffz(~p->state) + 1 : 0;
         if (((unsigned) state) < sizeof(stat_nam)/sizeof(char *))
                 printk(stat_nam[state]);
         else
                 printk(" ");
 
 
 
 
 
 
         if (p == current)
                 printk("   current task   ");
         else
                 printk(" %016lx ", thread_saved_pc(&p->thread));
 
         {
                 unsigned long * n = (unsigned long *) (p+1);
                 while (!*n)
                         n++;
                 free = (unsigned long) n - (unsigned long)(p+1);
         }
         printk("%5lu %5d %6d ", free, p->pid, p->p_pptr->pid);
         if (p->p_cptr)
                 printk("%5d ", p->p_cptr->pid);
         else
                 printk("      ");
         if (p->p_ysptr)
                 printk("%7d", p->p_ysptr->pid);
         else
                 printk("       ");
         if (p->p_osptr)
                 printk(" %5d", p->p_osptr->pid);
         else
                 printk("      ");
         if (!p->mm)
                 printk(" (L-TLB)\n");
         else
                 printk(" (NOTLB)\n");
 
         {
                 extern void show_trace_task(task_t *tsk);
                 show_trace_task(p);
         }
 }
 
 char * render_sigset_t(sigset_t *set, char *buffer)
 {
         int i = 64, x;
         do {
                 i -= 4, x = 0;
                 if (sigismember(set, i+1)) x |= 1;
                 if (sigismember(set, i+2)) x |= 2;
                 if (sigismember(set, i+3)) x |= 4;
                 if (sigismember(set, i+4)) x |= 8;
                 *buffer++ = (x < 10 ? '0' : 'a' - 10) + x;
         } while (i >= 4);
         *buffer = 0;
         return buffer;
 }
 
 void show_state(void)
 {
         task_t *p;
 
 
 
 
 
 
         printk("\n"
                "                                 free                        sibling\n");
         printk("  task                 PC        stack   pid father child younger older\n");
 
         do { int tmp = 0; __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" ";;\n" "tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 2f\n" ".section .text.lock,\"ax\"\n" "2:\tfetchadd4.rel %0 = [%1], -1\n" ";;\n" "3:\tld4.acq %0 = [%1]\n" ";;\n" " tbit.nz p6,p0 = %0, 31\n" "(p6) br.cond.sptk.few 3b\n" "br.cond.sptk.few 1b\n" ";;\n" ".previous\n" : "=&r" (tmp) : "r" (&tasklist_lock) : "p6", "memory"); } while(0);
         for (p = &(init_task_union.task) ; (p = p->next_task) != &(init_task_union.task) ; ) {
 
 
 
 
                 do { } while(0);
                 show_task(p);
         }
         do { int tmp = 0; __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" : "=r" (tmp) : "r" (&tasklist_lock) : "memory"); } while(0);
 }
 
 extern unsigned long wait_init_idle;
 
 static inline void double_rq_lock(runqueue_t *rq1, runqueue_t *rq2)
 {
         if (rq1 == rq2)
                 __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\n" "(p7)  br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq1->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
         else {
                 if (rq1->cpu < rq2->cpu) {
                         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\ n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq1->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\ n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq2->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                 } else {
                         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\ n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq2->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                         __asm__ __volatile__ ( "mov ar.ccv = r0\n" "mov r29 = 1\n" ";;\n" "1:\n" "ld4.bias r2 = [%0]\n" ";;\n" "cmp4.eq p0,p7 = r0,r2\n" "(p7) br.cond.spnt.few 1b \n" "cmpxchg4.acq r2 = [%0], r29, ar.ccv\n" ";;\n" "cmp4.eq p0,p7 = r0, r2\ n" "(p7) br.cond.spnt.few 1b\n" ";;\n" :: "r"(&(&rq1->lock)->lock) : "ar.ccv", "p7", "r2", "r29", "memory");
                 }
         }
 }
 
 static inline void double_rq_unlock(runqueue_t *rq1, runqueue_t *rq2)
 {
         do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq1->lock)->lock = 0; } while (0);
         if (rq1 != rq2)
                 do { __asm__ __volatile__("": : :"memory"); ((spinlock_t *) &rq2->lock)->lock = 0; } while (0);
 }
 
 void __attribute__ ((__section__ (".text.init"))) init_idle(void)
 {
         runqueue_t *this_rq = (runqueues + (current->cpu)), *rq = current->array->rq;
         unsigned long flags;
 
         __asm__ __volatile__ ("mov %0=psr" : "=r" (flags) :: "memory");
         __asm__ __volatile__ (";; rsm psr.i;;" ::: "memory");
         double_rq_lock(this_rq, rq);
 
         this_rq->curr = this_rq->idle = current;
         deactivate_task(current, rq);
         current->array = ((void *)0);
         current->prio = (128 +40);
         current->state = 0;
         clear_bit((current->cpu), &wait_init_idle);
         double_rq_unlock(this_rq, rq);
         while (wait_init_idle) {
                 do { } while (0);
                 __asm__ __volatile__("": : :"memory");
         }
         current->need_resched = 1;
         __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory");
 }
 
 extern void init_timervecs(void);
 extern void timer_bh(void);
 extern void tqueue_bh(void);
 extern void immediate_bh(void);
 
 void __attribute__ ((__section__ (".text.init"))) sched_init(void)
 {
         runqueue_t *rq;
         int i, j, k;
 
         for (i = 0; i < 32; i++) {
                 runqueue_t *rq = (runqueues + (i));
                 prio_array_t *array;
 
                 rq->active = rq->arrays + 0;
                 rq->expired = rq->arrays + 1;
                 ((&rq->lock)->lock = 0);
                 rq->cpu = i;
 
                 for (j = 0; j < 2; j++) {
                         array = rq->arrays + j;
                         array->rq = rq;
                         array->lock = &rq->lock;
                         for (k = 0; k < (128 +40); k++)
                                 do { (array->queue + k)->next = (array->queue + k); (array->queue + k)->prev = (array->queue + k); } while (0);
                         memset(array->bitmap, 0xff, (((128 +40)+7)/8));
 
                         clear_bit((128 +40), array->bitmap);
                 }
         }
 
 
 
 
         rq = (runqueues + (current->cpu));
         rq->curr = current;
         rq->idle = ((void *)0);
         wake_up_process(current);
 
         for (i = 0; i < (4096 >> 2); i++)
                 pidhash[i] = ((void *)0);
 
         init_timervecs();
         init_bh(TIMER_BH, timer_bh);
         init_bh(TQUEUE_BH, tqueue_bh);
         init_bh(IMMEDIATE_BH, immediate_bh);
 
 
 
 
         ((__builtin_constant_p((1)) && ( ((1) == 1) || ((1) == 4) || ((1) == 8) || ((1) == 16) || ((1) == -1) || ((1) == -4) || ((1) == -8) || ((1) == -16))) ? ({ __u64 _tmp; volatile __typeof__(*(&(((&init_mm.mm_count)))->counter)) *_v = (&(((&init_mm.m m_count)))->counter); switch ((1)) { case -16: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchad d8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-16) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -8: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2 " : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case !
 -4: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), " i"(-4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case -1: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory") ; break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(-1) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 1: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __ asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(1) : "memory"); break; default: __bad_size_f!
 or_ia64_fetch_and_add(); } }); break; case 4: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8. rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(4) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 8: ({ switch (sizeof(*(&(((&init_mm.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "= r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(8) : "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; case 16: ({ switch (sizeof(*(&(((&init_m m.mm_count)))->counter))) { case 4: __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) : "memory"); break; case 8: __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2" : "=r"(_tmp) : "r"(_v), "i"(16) :!
  "memory"); break; default: __bad_size_for_ia64_fetch_and_add(); } }); break; default: _tmp = __bad_increment_for_ia64_fetch_and_add(); break; } (__typeof__(*&(((&init_mm.mm_count)))->counter)) (_tmp + ((1))); }) : ia64_atomic_add((1), ((&init_mm.mm_coun t))));
         enter_lazy_tlb(&init_mm, current, (current->cpu));
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]