public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4736: gcc internal error in reload_cse_simplify_operands compiling linux 2.4.13
@ 2001-10-31 20:41 rodrigc
0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-10-31 20:41 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, mst, nobody
Synopsis: gcc internal error in reload_cse_simplify_operands compiling linux 2.4.13
State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Wed Oct 31 20:41:12 2001
State-Changed-Why:
Duplicate of PR 4529
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4529&database=gc
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4736&database=gcc
^ permalink raw reply [flat|nested] 2+ messages in thread
* c/4736: gcc internal error in reload_cse_simplify_operands compiling linux 2.4.13
@ 2001-10-30 1:06 MST
0 siblings, 0 replies; 2+ messages in thread
From: MST @ 2001-10-30 1:06 UTC (permalink / raw)
To: gcc-gnats
>Number: 4736
>Category: c
>Synopsis: gcc internal error in reload_cse_simplify_operands compiling linux 2.4.13
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Tue Oct 30 01:06:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: root
>Release: 3.0.2
>Organization:
Mellanox technologies
>Environment:
System: Linux mtls23.yok.mtl.com 2.4.13 #1 Wed Oct 24 17:00:25 IST 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.0.2/configure --prefix=/mswg/opt/gcc-3.0.2/x86
>Description:
gcc 3.0.2 reports internal error when compiling driver Realtek 8139 in linux kernel 2.4.13.
The relevant file resized under /usr/src/linux-2.4.13-gcc-3.0.2/drivers/net
Here is the output of the compiler:
[/usr/src/linux-2.4.13-gcc-3.0.2/drivers/net]# /mswg/opt/gcc-3.0.2/x86/bin/gcc -D__KERNEL__ -I/usr/src/linux-2.4.13-gc
c-3.0.2/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-str
ict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon -c -o 8139to
o.o 8139too.c
8139too.c: In function `netdev_ethtool_ioctl':
8139too.c:2432: Unrecognizable insn:
(insn/i 618 1061 1058 (parallel[
(set (reg:SI 6 ebp)
(asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=&r") 0[
(reg/v:SI 1 edx [165])
(mem:SI (plus:SI (reg/f:SI 6 ebp)
(const_int -352 [0xfffffea0])) 0)
(mem/s:SI (plus:SI (reg:SI 0 eax [173])
(const_int 12 [0xc])) 0)
]
[
(asm_input:SI ("1"))
(asm_input:SI ("g"))
(asm_input:SI ("g"))
] ("/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h") 558))
(set (reg/v:SI 1 edx [165])
(asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=r") 1[
(reg/v:SI 1 edx [165])
(mem:SI (plus:SI (reg/f:SI 6 ebp)
(const_int -352 [0xfffffea0])) 0)
(mem/s:SI (plus:SI (reg:SI 0 eax [173])
(const_int 12 [0xc])) 0)
]
[
(asm_input:SI ("1"))
(asm_input:SI ("g"))
(asm_input:SI ("g"))
] ("/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h") 558))
(clobber (reg:QI 19 dirflag))
(clobber (reg:QI 18 fpsr))
(clobber (reg:QI 17 flags))
] ) -1 (insn_list 604 (insn_list 611 (nil)))
(nil))
8139too.c:2432: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8364
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>How-To-Repeat:
To repeat, enable Realtek 8139 network driver in linux kernel 2.4.13
and try to build the kernel.
Here is a preprocessor output
# 145 "8139too.c"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/autoconf.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 2
# 146 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 2
# 57 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h"
typedef struct { } spinlock_t;
# 120 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h"
typedef struct { } rwlock_t;
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/prefetch.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/prefetch.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/vm86.h" 1
# 68 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/vm86.h"
struct vm86_regs {
long ebx;
long ecx;
long edx;
long esi;
long edi;
long ebp;
long eax;
long __null_ds;
long __null_es;
long __null_fs;
long __null_gs;
long orig_eax;
long eip;
unsigned short cs, __csh;
long eflags;
long esp;
unsigned short ss, __ssh;
unsigned short es, __esh;
unsigned short ds, __dsh;
unsigned short fs, __fsh;
unsigned short gs, __gsh;
};
struct revectored_struct {
unsigned long __map[8];
};
struct vm86_struct {
struct vm86_regs regs;
unsigned long flags;
unsigned long screen_bitmap;
unsigned long cpu_type;
struct revectored_struct int_revectored;
struct revectored_struct int21_revectored;
};
struct vm86plus_info_struct {
unsigned long force_return_for_pic:1;
unsigned long vm86dbg_active:1;
unsigned long vm86dbg_TFpendig:1;
unsigned long unused:28;
unsigned long is_vm86pus:1;
unsigned char vm86dbg_intxxtab[32];
};
struct vm86plus_struct {
struct vm86_regs regs;
unsigned long flags;
unsigned long screen_bitmap;
unsigned long cpu_type;
struct revectored_struct int_revectored;
struct revectored_struct int21_revectored;
struct vm86plus_info_struct vm86plus;
};
# 145 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/vm86.h"
struct kernel_vm86_regs {
long ebx;
long ecx;
long edx;
long esi;
long edi;
long ebp;
long eax;
long __null_ds;
long __null_es;
long orig_eax;
long eip;
unsigned short cs, __csh;
long eflags;
long esp;
unsigned short ss, __ssh;
unsigned short es, __esh;
unsigned short ds, __dsh;
unsigned short fs, __fsh;
unsigned short gs, __gsh;
};
struct kernel_vm86_struct {
struct kernel_vm86_regs regs;
# 184 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/vm86.h"
unsigned long flags;
unsigned long screen_bitmap;
unsigned long cpu_type;
struct revectored_struct int_revectored;
struct revectored_struct int21_revectored;
struct vm86plus_info_struct vm86plus;
struct pt_regs *regs32;
# 201 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/vm86.h"
};
void handle_vm86_fault(struct kernel_vm86_regs *, long);
int handle_vm86_trap(struct kernel_vm86_regs *, long, int);
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/math_emu.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sigcontext.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sigcontext.h"
struct _fpreg {
unsigned short significand[4];
unsigned short exponent;
};
struct _fpxreg {
unsigned short significand[4];
unsigned short exponent;
unsigned short padding[3];
};
struct _xmmreg {
unsigned long element[4];
};
struct _fpstate {
unsigned long cw;
unsigned long sw;
unsigned long tag;
unsigned long ipoff;
unsigned long cssel;
unsigned long dataoff;
unsigned long datasel;
struct _fpreg _st[8];
unsigned short status;
unsigned short magic;
unsigned long _fxsr_env[6];
unsigned long mxcsr;
unsigned long reserved;
struct _fpxreg _fxsr_st[8];
struct _xmmreg _xmm[8];
unsigned long padding[56];
};
struct sigcontext {
unsigned short gs, __gsh;
unsigned short fs, __fsh;
unsigned short es, __esh;
unsigned short ds, __dsh;
unsigned long edi;
unsigned long esi;
unsigned long ebp;
unsigned long esp;
unsigned long ebx;
unsigned long edx;
unsigned long ecx;
unsigned long eax;
unsigned long trapno;
unsigned long err;
unsigned long eip;
unsigned short cs, __csh;
unsigned long eflags;
unsigned long esp_at_signal;
unsigned short ss, __ssh;
struct _fpstate * fpstate;
unsigned long oldmask;
unsigned long cr2;
};
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/math_emu.h" 2
int restore_i387_soft(void *s387, struct _fpstate *buf);
int save_i387_soft(void *s387, struct _fpstate * buf);
struct info {
long ___orig_eip;
long ___ebx;
long ___ecx;
long ___edx;
long ___esi;
long ___edi;
long ___ebp;
long ___eax;
long ___ds;
long ___es;
long ___orig_eax;
long ___eip;
long ___cs;
long ___eflags;
long ___esp;
long ___ss;
long ___vm86_es;
long ___vm86_ds;
long ___vm86_fs;
long ___vm86_gs;
};
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/segment.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/mmx.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/posix_types.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/posix_types.h" 2
# 36 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/posix_types.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/posix_types.h"
typedef unsigned short __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
typedef unsigned short __kernel_nlink_t;
typedef long __kernel_off_t;
typedef int __kernel_pid_t;
typedef unsigned short __kernel_ipc_pid_t;
typedef unsigned short __kernel_uid_t;
typedef unsigned short __kernel_gid_t;
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
typedef int __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_suseconds_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;
typedef unsigned int __kernel_uid32_t;
typedef unsigned int __kernel_gid32_t;
typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;
typedef long long __kernel_loff_t;
typedef struct {
int val[2];
} __kernel_fsid_t;
# 47 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/posix_types.h" 2
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 1
typedef unsigned short umode_t;
typedef __signed__ char __s8;
typedef unsigned char __u8;
typedef __signed__ short __s16;
typedef unsigned short __u16;
typedef __signed__ int __s32;
typedef unsigned int __u32;
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 2
typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
# 51 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h"
typedef u32 dma_addr_t;
typedef u64 dma64_addr_t;
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
typedef __kernel_old_uid_t old_uid_t;
typedef __kernel_old_gid_t old_gid_t;
# 45 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h"
typedef __kernel_loff_t loff_t;
# 54 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 123 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h"
struct ustat {
__kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode;
char f_fname[6];
char f_fpack[6];
};
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/mmx.h" 2
extern void *_mmx_memcpy(void *to, const void *from, size_t size);
extern void mmx_clear_page(void *page);
extern void mmx_copy_page(void *to, void *from);
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 2
# 45 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h"
typedef struct { unsigned long pte_low; } pte_t;
typedef struct { unsigned long pmd; } pmd_t;
typedef struct { unsigned long pgd; } pgd_t;
typedef struct { unsigned long pgprot; } pgprot_t;
# 105 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h"
static __inline__ int get_order(unsigned long size)
{
int order;
size = (size-1) >> (12 -1);
order = -1;
do {
size >>= 1;
order++;
} while (size);
return order;
}
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sigcontext.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/cpufeature.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/cache.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/cache.h" 2
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 2
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 2
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 2
# 33 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
struct cpuinfo_x86 {
__u8 x86;
__u8 x86_vendor;
__u8 x86_model;
__u8 x86_mask;
char wp_works_ok;
char hlt_works_ok;
char hard_math;
char rfu;
int cpuid_level;
__u32 x86_capability[4];
char x86_vendor_id[16];
char x86_model_id[64];
int x86_cache_size;
int fdiv_bug;
int f00f_bug;
int coma_bug;
unsigned long loops_per_jiffy;
unsigned long *pgd_quick;
unsigned long *pmd_quick;
unsigned long *pte_quick;
unsigned long pgtable_cache_sz;
} __attribute__((__aligned__((1 << ((6))))));
# 72 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
extern struct cpuinfo_x86 boot_cpu_data;
extern struct tss_struct init_tss[1];
# 94 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
extern char ignore_irq13;
extern void identify_cpu(struct cpuinfo_x86 *);
extern void print_cpu_info(struct cpuinfo_x86 *);
extern void dodgy_tsc(void);
# 124 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx)
{
__asm__("cpuid"
: "=a" (*eax),
"=b" (*ebx),
"=c" (*ecx),
"=d" (*edx)
: "0" (op));
}
static inline unsigned int cpuid_eax(unsigned int op)
{
unsigned int eax;
__asm__("cpuid"
: "=a" (eax)
: "0" (op)
: "bx", "cx", "dx");
return eax;
}
static inline unsigned int cpuid_ebx(unsigned int op)
{
unsigned int eax, ebx;
__asm__("cpuid"
: "=a" (eax), "=b" (ebx)
: "0" (op)
: "cx", "dx" );
return ebx;
}
static inline unsigned int cpuid_ecx(unsigned int op)
{
unsigned int eax, ecx;
__asm__("cpuid"
: "=a" (eax), "=c" (ecx)
: "0" (op)
: "bx", "dx" );
return ecx;
}
static inline unsigned int cpuid_edx(unsigned int op)
{
unsigned int eax, edx;
__asm__("cpuid"
: "=a" (eax), "=d" (edx)
: "0" (op)
: "bx", "cx");
return edx;
}
# 199 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
extern unsigned long mmu_cr4_features;
static inline void set_in_cr4 (unsigned long mask)
{
mmu_cr4_features |= mask;
__asm__("movl %%cr4,%%eax\n\t"
"orl %0,%%eax\n\t"
"movl %%eax,%%cr4\n"
: : "irg" (mask)
:"ax");
}
static inline void clear_in_cr4 (unsigned long mask)
{
mmu_cr4_features &= ~mask;
__asm__("movl %%cr4,%%eax\n\t"
"andl %0,%%eax\n\t"
"movl %%eax,%%cr4\n"
: : "irg" (~mask)
:"ax");
}
# 256 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
extern int MCA_bus;
extern unsigned int machine_id;
extern unsigned int machine_submodel_id;
extern unsigned int BIOS_revision;
extern unsigned int mca_pentium_flag;
# 282 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
struct i387_fsave_struct {
long cwd;
long swd;
long twd;
long fip;
long fcs;
long foo;
long fos;
long st_space[20];
long status;
};
struct i387_fxsave_struct {
unsigned short cwd;
unsigned short swd;
unsigned short twd;
unsigned short fop;
long fip;
long fcs;
long foo;
long fos;
long mxcsr;
long reserved;
long st_space[32];
long xmm_space[32];
long padding[56];
} __attribute__ ((aligned (16)));
struct i387_soft_struct {
long cwd;
long swd;
long twd;
long fip;
long fcs;
long foo;
long fos;
long st_space[20];
unsigned char ftop, changed, lookahead, no_update, rm, alimit;
struct info *info;
unsigned long entry_eip;
};
union i387_union {
struct i387_fsave_struct fsave;
struct i387_fxsave_struct fxsave;
struct i387_soft_struct soft;
};
typedef struct {
unsigned long seg;
} mm_segment_t;
struct tss_struct {
unsigned short back_link,__blh;
unsigned long esp0;
unsigned short ss0,__ss0h;
unsigned long esp1;
unsigned short ss1,__ss1h;
unsigned long esp2;
unsigned short ss2,__ss2h;
unsigned long __cr3;
unsigned long eip;
unsigned long eflags;
unsigned long eax,ecx,edx,ebx;
unsigned long esp;
unsigned long ebp;
unsigned long esi;
unsigned long edi;
unsigned short es, __esh;
unsigned short cs, __csh;
unsigned short ss, __ssh;
unsigned short ds, __dsh;
unsigned short fs, __fsh;
unsigned short gs, __gsh;
unsigned short ldt, __ldth;
unsigned short trace, bitmap;
unsigned long io_bitmap[32 +1];
unsigned long __cacheline_filler[5];
};
struct thread_struct {
unsigned long esp0;
unsigned long eip;
unsigned long esp;
unsigned long fs;
unsigned long gs;
unsigned long debugreg[8];
unsigned long cr2, trap_no, error_code;
union i387_union i387;
struct vm86_struct * vm86_info;
unsigned long screen_bitmap;
unsigned long v86flags, v86mask, v86mode, saved_esp0;
int ioperm;
unsigned long io_bitmap[32 +1];
};
# 424 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
struct task_struct;
struct mm_struct;
extern void release_thread(struct task_struct *);
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
extern void copy_segments(struct task_struct *p, struct mm_struct * mm);
extern void release_segments(struct mm_struct * mm);
static inline unsigned long thread_saved_pc(struct thread_struct *t)
{
return ((unsigned long *)t->esp)[3];
}
unsigned long get_wchan(struct task_struct *p);
# 458 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
struct microcode {
unsigned int hdrver;
unsigned int rev;
unsigned int date;
unsigned int sig;
unsigned int cksum;
unsigned int ldrver;
unsigned int pf;
unsigned int reserved[5];
unsigned int bits[500];
};
static inline void rep_nop(void)
{
__asm__ __volatile__("rep;nop");
}
# 496 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h"
extern inline void prefetch(const void *x)
{
__asm__ __volatile__ ("prefetch (%0)" : : "r"(x));
}
extern inline void prefetchw(const void *x)
{
__asm__ __volatile__ ("prefetchw (%0)" : : "r"(x));
}
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/prefetch.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/cache.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/prefetch.h" 2
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 2
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h"
struct list_head {
struct list_head *next, *prev;
};
# 37 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
}
# 55 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h"
static __inline__ void list_add(struct list_head *new, struct list_head *head)
{
__list_add(new, head, head->next);
}
# 68 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h"
static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
{
__list_add(new, head->prev, head);
}
# 80 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
}
}
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h" 2
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 2
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
typedef struct { volatile int counter; } atomic_t;
# 53 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ void atomic_add(int i, atomic_t *v)
{
__asm__ __volatile__(
"" "addl %1,%0"
:"=m" (v->counter)
:"ir" (i), "m" (v->counter));
}
# 69 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ void atomic_sub(int i, atomic_t *v)
{
__asm__ __volatile__(
"" "subl %1,%0"
:"=m" (v->counter)
:"ir" (i), "m" (v->counter));
}
# 87 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ int atomic_sub_and_test(int i, atomic_t *v)
{
unsigned char c;
__asm__ __volatile__(
"" "subl %2,%0; sete %1"
:"=m" (v->counter), "=qm" (c)
:"ir" (i), "m" (v->counter) : "memory");
return c;
}
# 105 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ void atomic_inc(atomic_t *v)
{
__asm__ __volatile__(
"" "incl %0"
:"=m" (v->counter)
:"m" (v->counter));
}
# 120 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ void atomic_dec(atomic_t *v)
{
__asm__ __volatile__(
"" "decl %0"
:"=m" (v->counter)
:"m" (v->counter));
}
# 137 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ int atomic_dec_and_test(atomic_t *v)
{
unsigned char c;
__asm__ __volatile__(
"" "decl %0; sete %1"
:"=m" (v->counter), "=qm" (c)
:"m" (v->counter) : "memory");
return c != 0;
}
# 157 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ int atomic_inc_and_test(atomic_t *v)
{
unsigned char c;
__asm__ __volatile__(
"" "incl %0; sete %1"
:"=m" (v->counter), "=qm" (c)
:"m" (v->counter) : "memory");
return c != 0;
}
# 178 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h"
static __inline__ int atomic_add_negative(int i, atomic_t *v)
{
unsigned char c;
__asm__ __volatile__(
"" "addl %2,%0; sets %1"
:"=m" (v->counter), "=qm" (c)
:"ir" (i), "m" (v->counter) : "memory");
return c;
}
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h" 2
struct exception_table_entry;
struct kernel_sym
{
unsigned long value;
char name[60];
};
struct module_symbol
{
unsigned long value;
const char *name;
};
struct module_ref
{
struct module *dep;
struct module *ref;
struct module_ref *next_ref;
};
struct module_persist;
struct module
{
unsigned long size_of_struct;
struct module *next;
const char *name;
unsigned long size;
union
{
atomic_t usecount;
long pad;
} uc;
unsigned long flags;
unsigned nsyms;
unsigned ndeps;
struct module_symbol *syms;
struct module_ref *deps;
struct module_ref *refs;
int (*init)(void);
void (*cleanup)(void);
const struct exception_table_entry *ex_table_start;
const struct exception_table_entry *ex_table_end;
const struct module_persist *persist_start;
const struct module_persist *persist_end;
int (*can_unload)(void);
int runsize;
const char *kallsyms_start;
const char *kallsyms_end;
const char *archdata_start;
const char *archdata_end;
const char *kernel_data;
};
struct module_info
{
unsigned long addr;
unsigned long size;
unsigned long flags;
long usecount;
};
# 183 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h"
extern void inter_module_register(const char *, struct module *, const void *);
extern void inter_module_unregister(const char *);
extern const void *inter_module_get(const char *);
extern const void *inter_module_get_request(const char *, const char *);
extern void inter_module_put(const char *);
struct inter_module_entry {
struct list_head list;
const char *im_name;
struct module *owner;
const void *userdata;
};
extern int try_inc_mod_count(struct module *mod);
# 325 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/module.h"
extern struct module *module_list;
# 147 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h"
# 1 "/mswg/opt/gcc-3.0.2/x86/lib/gcc-lib/i686-pc-linux-gnu/3.0.2/include/stdarg.h" 1 3
# 43 "/mswg/opt/gcc-3.0.2/x86/lib/gcc-lib/i686-pc-linux-gnu/3.0.2/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "/mswg/opt/gcc-3.0.2/x86/lib/gcc-lib/i686-pc-linux-gnu/3.0.2/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/linkage.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/linkage.h" 2
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 2
# 49 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h"
struct completion;
extern struct notifier_block *panic_notifier_list;
void panic(const char * fmt, ...)
__attribute__ ((noreturn, format (printf, 1, 2)));
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, ...);
extern int vsprintf(char *buf, const char *, va_list);
extern int snprintf(char * buf, size_t size, const char *fmt, ...);
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__((regparm(0))) int printk(const char * fmt, ...)
__attribute__ ((format (printf, 1, 2)));
extern int console_loglevel;
static inline void console_silent(void)
{
console_loglevel = 0;
}
static inline void console_verbose(void)
{
if (console_loglevel)
console_loglevel = 15;
}
extern void bust_spinlocks(int yes);
extern int oops_in_progress;
extern int tainted;
extern const char *print_tainted(void);
# 160 "/usr/src/linux-2.4.13-gcc-3.0.2/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)];
};
# 148 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 1
# 276 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci_ids.h" 1
# 277 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 299 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 300 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 301 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioport.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioport.h"
struct resource {
const char *name;
unsigned long start, end;
unsigned long flags;
struct resource *parent, *sibling, *child;
};
struct resource_list {
struct resource_list *next;
struct resource *res;
struct pci_dev *dev;
};
# 83 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioport.h"
extern struct resource ioport_resource;
extern struct resource iomem_resource;
extern int get_resource_list(struct resource *, char *buf, int size);
extern int check_resource(struct resource *root, unsigned long, unsigned long);
extern int request_resource(struct resource *root, struct resource *new);
extern int release_resource(struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new,
unsigned long size,
unsigned long min, unsigned long max,
unsigned long align,
void (*alignf)(void *, struct resource *, unsigned long),
void *alignf_data);
extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
extern int __check_region(struct resource *, unsigned long, unsigned long);
extern void __release_region(struct resource *, unsigned long, unsigned long);
extern void autoirq_setup(int waittime);
extern int autoirq_report(int waittime);
# 302 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 303 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/errno.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/errno.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/errno.h" 2
# 304 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
enum pci_mmap_state {
pci_mmap_io,
pci_mmap_mem
};
# 336 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
struct pci_dev {
struct list_head global_list;
struct list_head bus_list;
struct pci_bus *bus;
struct pci_bus *subordinate;
void *sysdata;
struct proc_dir_entry *procent;
unsigned int devfn;
unsigned short vendor;
unsigned short device;
unsigned short subsystem_vendor;
unsigned short subsystem_device;
unsigned int class;
u8 hdr_type;
u8 rom_base_reg;
struct pci_driver *driver;
void *driver_data;
u64 dma_mask;
u32 current_state;
unsigned short vendor_compatible[4];
unsigned short device_compatible[4];
unsigned int irq;
struct resource resource[12];
struct resource dma_resource[2];
struct resource irq_resource[2];
char name[80];
char slot_name[8];
int active;
int ro;
unsigned short regs;
int (*prepare)(struct pci_dev *dev);
int (*activate)(struct pci_dev *dev);
int (*deactivate)(struct pci_dev *dev);
};
# 407 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
struct pci_bus {
struct list_head node;
struct pci_bus *parent;
struct list_head children;
struct list_head devices;
struct pci_dev *self;
struct resource *resource[4];
struct pci_ops *ops;
void *sysdata;
struct proc_dir_entry *procdir;
unsigned char number;
unsigned char primary;
unsigned char secondary;
unsigned char subordinate;
char name[48];
unsigned short vendor;
unsigned short device;
unsigned int serial;
unsigned char pnpver;
unsigned char productver;
unsigned char checksum;
unsigned char pad1;
};
extern struct list_head pci_root_buses;
extern struct list_head pci_devices;
# 452 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
struct pci_ops {
int (*read_byte)(struct pci_dev *, int where, u8 *val);
int (*read_word)(struct pci_dev *, int where, u16 *val);
int (*read_dword)(struct pci_dev *, int where, u32 *val);
int (*write_byte)(struct pci_dev *, int where, u8 val);
int (*write_word)(struct pci_dev *, int where, u16 val);
int (*write_dword)(struct pci_dev *, int where, u32 val);
};
struct pbus_set_ranges_data
{
int found_vga;
unsigned long io_start, io_end;
unsigned long mem_start, mem_end;
};
struct pci_device_id {
unsigned int vendor, device;
unsigned int subvendor, subdevice;
unsigned int class, class_mask;
unsigned long driver_data;
};
struct pci_driver {
struct list_head node;
char *name;
const struct pci_device_id *id_table;
int (*probe) (struct pci_dev *dev, const struct pci_device_id *id);
void (*remove) (struct pci_dev *dev);
int (*save_state) (struct pci_dev *dev, u32 state);
int (*suspend)(struct pci_dev *dev, u32 state);
int (*resume) (struct pci_dev *dev);
int (*enable_wake) (struct pci_dev *dev, u32 state, int enable);
};
# 494 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
void pcibios_init(void);
void pcibios_fixup_bus(struct pci_bus *);
int pcibios_enable_device(struct pci_dev *);
char *pcibios_setup (char *str);
void pcibios_align_resource(void *, struct resource *, unsigned long);
void pcibios_update_resource(struct pci_dev *, struct resource *,
struct resource *, int);
void pcibios_update_irq(struct pci_dev *, int irq);
void pcibios_fixup_pbus_ranges(struct pci_bus *, struct pbus_set_ranges_data *);
int pcibios_present(void);
int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned char *val);
int pcibios_read_config_word (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned short *val);
int pcibios_read_config_dword (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned int *val);
int pcibios_write_config_byte (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned char val);
int pcibios_write_config_word (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned short val);
int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,
unsigned char where, unsigned int val);
int pcibios_find_class (unsigned int class_code, unsigned short index, unsigned char *bus, unsigned char *dev_fn);
int pcibios_find_device (unsigned short vendor, unsigned short dev_id,
unsigned short index, unsigned char *bus,
unsigned char *dev_fn);
void pci_init(void);
int pci_bus_exists(const struct list_head *list, int nr);
struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
struct pci_bus *pci_alloc_primary_bus(int bus);
struct pci_dev *pci_scan_slot(struct pci_dev *temp);
int pci_proc_attach_device(struct pci_dev *dev);
int pci_proc_detach_device(struct pci_dev *dev);
void pci_name_device(struct pci_dev *dev);
char *pci_class_name(u32 class);
void pci_read_bridge_bases(struct pci_bus *child);
struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res);
int pci_setup_device(struct pci_dev *dev);
int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
struct pci_dev *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from);
struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device,
unsigned int ss_vendor, unsigned int ss_device,
const struct pci_dev *from);
struct pci_dev *pci_find_class (unsigned int class, const struct pci_dev *from);
struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);
int pci_find_capability (struct pci_dev *dev, int cap);
int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val);
int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);
int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);
int pci_write_config_word(struct pci_dev *dev, int where, u16 val);
int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);
int pci_enable_device(struct pci_dev *dev);
void pci_disable_device(struct pci_dev *dev);
void pci_set_master(struct pci_dev *dev);
int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);
int pci_assign_resource(struct pci_dev *dev, int i);
int pci_save_state(struct pci_dev *dev, u32 *buffer);
int pci_restore_state(struct pci_dev *dev, u32 *buffer);
int pci_set_power_state(struct pci_dev *dev, int state);
int pci_enable_wake(struct pci_dev *dev, u32 state, int enable);
int pci_claim_resource(struct pci_dev *, int);
void pci_assign_unassigned_resources(void);
void pdev_enable_device(struct pci_dev *);
void pdev_sort_resources(struct pci_dev *, struct resource_list *, u32);
unsigned long pci_bridge_check_io(struct pci_dev *);
void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
int (*)(struct pci_dev *, u8, u8));
int pci_request_regions(struct pci_dev *, char *);
void pci_release_regions(struct pci_dev *);
int pci_register_driver(struct pci_driver *);
void pci_unregister_driver(struct pci_driver *);
void pci_insert_device(struct pci_dev *, struct pci_bus *);
void pci_remove_device(struct pci_dev *);
struct pci_driver *pci_dev_driver(const struct pci_dev *);
const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev);
struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev,
size_t size, size_t align, size_t allocation, int flags);
void pci_pool_destroy (struct pci_pool *pool);
void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle);
void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr);
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
extern unsigned int pcibios_assign_all_busses(void);
extern unsigned long pci_mem_start;
void pcibios_set_master(struct pci_dev *dev);
void pcibios_penalize_isa_irq(int irq);
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 30 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h"
typedef struct kmem_cache_s kmem_cache_t;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/param.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
extern unsigned long event;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/binfmts.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ptrace.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ptrace.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h" 1
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h"
struct pt_regs {
long ebx;
long ecx;
long edx;
long esi;
long edi;
long ebp;
long eax;
int xds;
int xes;
long orig_eax;
long eip;
int xcs;
long eflags;
long esp;
int xss;
};
# 60 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h"
extern void show_regs(struct pt_regs *);
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ptrace.h" 2
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/binfmts.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/linkage.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/limits.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 2
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h"
struct __wait_queue {
unsigned int flags;
struct task_struct * task;
struct list_head task_list;
};
typedef struct __wait_queue wait_queue_t;
# 77 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 155 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h"
static inline void init_waitqueue_head(wait_queue_head_t *q)
{
q->lock = (spinlock_t) { };
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)
{
# 203 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h"
list_add(&new->task_list, &head->task_list);
}
static inline void __add_wait_queue_tail(wait_queue_head_t *head,
wait_queue_t *new)
{
# 220 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h"
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vfs.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/statfs.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/statfs.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vfs.h" 2
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/socket.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/socket.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sockios.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/socket.h" 2
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/socket.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sockios.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sockios.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sockios.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sockios.h" 2
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/socket.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/uio.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/uio.h" 2
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/uio.h"
struct iovec
{
void *iov_base;
__kernel_size_t iov_len;
};
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/socket.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 245 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h" 2
struct poll_table_struct;
# 49 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/net.h"
typedef enum {
SS_FREE = 0,
SS_UNCONNECTED,
SS_CONNECTING,
SS_CONNECTED,
SS_DISCONNECTING
} socket_state;
# 65 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kdev_t.h" 1
# 67 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kdev_t.h"
typedef unsigned short kdev_t;
# 76 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kdev_t.h"
extern const char * kdevname(kdev_t);
static inline unsigned int kdev_t_to_nr(kdev_t dev) {
return (((unsigned int) ((dev) >> 8))<<8) | ((unsigned int) ((dev) & ((1U << 8) - 1)));
}
static inline kdev_t to_kdev_t(int dev)
{
int major, minor;
# 98 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kdev_t.h"
major = (dev >> 8);
minor = (dev & 0xff);
return (((major) << 8) | (minor));
}
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioctl.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ioctl.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioctl.h" 2
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mount.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/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)
atomic_inc(&mnt->mnt_count);
return mnt;
}
extern void __mntput(struct vfsmount *mnt);
static inline void mntput(struct vfsmount *mnt)
{
if (mnt) {
if (atomic_dec_and_test(&mnt->mnt_count))
__mntput(mnt);
}
}
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h" 2
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h"
extern spinlock_t dcache_lock;
# 146 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h"
static __inline__ void d_drop(struct dentry * dentry)
{
(void)(&dcache_lock);
list_del(&dentry->d_hash);
do { (&dentry->d_hash)->next = (&dentry->d_hash); (&dentry->d_hash)->prev = (&dentry->d_hash); } while (0);
do { } 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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/dcache.h"
static __inline__ struct dentry * dget(struct dentry *dentry)
{
if (dentry) {
if (!((&dentry->d_count)->counter))
__asm__ __volatile__(".byte 0x0f,0x0b");
atomic_inc(&dentry->d_count);
}
return dentry;
}
extern struct dentry * dget_locked(struct dentry *);
# 262 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stat.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/stat.h" 1
struct __old_kernel_stat {
unsigned short st_dev;
unsigned short st_ino;
unsigned short st_mode;
unsigned short st_nlink;
unsigned short st_uid;
unsigned short st_gid;
unsigned short st_rdev;
unsigned long st_size;
unsigned long st_atime;
unsigned long st_mtime;
unsigned long st_ctime;
};
struct stat {
unsigned short st_dev;
unsigned short __pad1;
unsigned long st_ino;
unsigned short st_mode;
unsigned short st_nlink;
unsigned short st_uid;
unsigned short st_gid;
unsigned short st_rdev;
unsigned short __pad2;
unsigned long st_size;
unsigned long st_blksize;
unsigned long st_blocks;
unsigned long st_atime;
unsigned long __unused1;
unsigned long st_mtime;
unsigned long __unused2;
unsigned long st_ctime;
unsigned long __unused3;
unsigned long __unused4;
unsigned long __unused5;
};
struct stat64 {
unsigned short st_dev;
unsigned char __pad0[10];
unsigned long __st_ino;
unsigned int st_mode;
unsigned int st_nlink;
unsigned long st_uid;
unsigned long st_gid;
unsigned short st_rdev;
unsigned char __pad3[10];
long long st_size;
unsigned long st_blksize;
unsigned long st_blocks;
unsigned long __pad4;
unsigned long st_atime;
unsigned long __pad5;
unsigned long st_mtime;
unsigned long __pad6;
unsigned long st_ctime;
unsigned long __pad7;
unsigned long long st_ino;
};
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stat.h" 2
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 23 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h" 2
# 33 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h"
static inline char * strcpy(char * dest,const char *src)
{
int d0, d1, d2;
__asm__ __volatile__(
"1:\tlodsb\n\t"
"stosb\n\t"
"testb %%al,%%al\n\t"
"jne 1b"
: "=&S" (d0), "=&D" (d1), "=&a" (d2)
:"0" (src),"1" (dest) : "memory");
return dest;
}
static inline char * strncpy(char * dest,const char *src,size_t count)
{
int d0, d1, d2, d3;
__asm__ __volatile__(
"1:\tdecl %2\n\t"
"js 2f\n\t"
"lodsb\n\t"
"stosb\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n\t"
"rep\n\t"
"stosb\n"
"2:"
: "=&S" (d0), "=&D" (d1), "=&c" (d2), "=&a" (d3)
:"0" (src),"1" (dest),"2" (count) : "memory");
return dest;
}
static inline char * strcat(char * dest,const char * src)
{
int d0, d1, d2, d3;
__asm__ __volatile__(
"repne\n\t"
"scasb\n\t"
"decl %1\n"
"1:\tlodsb\n\t"
"stosb\n\t"
"testb %%al,%%al\n\t"
"jne 1b"
: "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
: "0" (src), "1" (dest), "2" (0), "3" (0xffffffff):"memory");
return dest;
}
static inline char * strncat(char * dest,const char * src,size_t count)
{
int d0, d1, d2, d3;
__asm__ __volatile__(
"repne\n\t"
"scasb\n\t"
"decl %1\n\t"
"movl %8,%3\n"
"1:\tdecl %3\n\t"
"js 2f\n\t"
"lodsb\n\t"
"stosb\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n"
"2:\txorl %2,%2\n\t"
"stosb"
: "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
: "0" (src),"1" (dest),"2" (0),"3" (0xffffffff), "g" (count)
: "memory");
return dest;
}
static inline int strcmp(const char * cs,const char * ct)
{
int d0, d1;
register int __res;
__asm__ __volatile__(
"1:\tlodsb\n\t"
"scasb\n\t"
"jne 2f\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n\t"
"xorl %%eax,%%eax\n\t"
"jmp 3f\n"
"2:\tsbbl %%eax,%%eax\n\t"
"orb $1,%%al\n"
"3:"
:"=a" (__res), "=&S" (d0), "=&D" (d1)
:"1" (cs),"2" (ct));
return __res;
}
static inline int strncmp(const char * cs,const char * ct,size_t count)
{
register int __res;
int d0, d1, d2;
__asm__ __volatile__(
"1:\tdecl %3\n\t"
"js 2f\n\t"
"lodsb\n\t"
"scasb\n\t"
"jne 3f\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n"
"2:\txorl %%eax,%%eax\n\t"
"jmp 4f\n"
"3:\tsbbl %%eax,%%eax\n\t"
"orb $1,%%al\n"
"4:"
:"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
:"1" (cs),"2" (ct),"3" (count));
return __res;
}
static inline char * strchr(const char * s, int c)
{
int d0;
register char * __res;
__asm__ __volatile__(
"movb %%al,%%ah\n"
"1:\tlodsb\n\t"
"cmpb %%ah,%%al\n\t"
"je 2f\n\t"
"testb %%al,%%al\n\t"
"jne 1b\n\t"
"movl $1,%1\n"
"2:\tmovl %1,%0\n\t"
"decl %0"
:"=a" (__res), "=&S" (d0) : "1" (s),"0" (c));
return __res;
}
static inline char * strrchr(const char * s, int c)
{
int d0, d1;
register char * __res;
__asm__ __volatile__(
"movb %%al,%%ah\n"
"1:\tlodsb\n\t"
"cmpb %%ah,%%al\n\t"
"jne 2f\n\t"
"leal -1(%%esi),%0\n"
"2:\ttestb %%al,%%al\n\t"
"jne 1b"
:"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c));
return __res;
}
static inline size_t strlen(const char * s)
{
int d0;
register int __res;
__asm__ __volatile__(
"repne\n\t"
"scasb\n\t"
"notl %0\n\t"
"decl %0"
:"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffff));
return __res;
}
static inline void * __memcpy(void * to, const void * from, size_t n)
{
int d0, d1, d2;
__asm__ __volatile__(
"rep ; movsl\n\t"
"testb $2,%b4\n\t"
"je 1f\n\t"
"movsw\n"
"1:\ttestb $1,%b4\n\t"
"je 2f\n\t"
"movsb\n"
"2:"
: "=&c" (d0), "=&D" (d1), "=&S" (d2)
:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
: "memory");
return (to);
}
static inline void * __constant_memcpy(void * to, const void * from, size_t n)
{
switch (n) {
case 0:
return to;
case 1:
*(unsigned char *)to = *(const unsigned char *)from;
return to;
case 2:
*(unsigned short *)to = *(const unsigned short *)from;
return to;
case 3:
*(unsigned short *)to = *(const unsigned short *)from;
*(2+(unsigned char *)to) = *(2+(const unsigned char *)from);
return to;
case 4:
*(unsigned long *)to = *(const unsigned long *)from;
return to;
case 6:
*(unsigned long *)to = *(const unsigned long *)from;
*(2+(unsigned short *)to) = *(2+(const unsigned short *)from);
return to;
case 8:
*(unsigned long *)to = *(const unsigned long *)from;
*(1+(unsigned long *)to) = *(1+(const unsigned long *)from);
return to;
case 12:
*(unsigned long *)to = *(const unsigned long *)from;
*(1+(unsigned long *)to) = *(1+(const unsigned long *)from);
*(2+(unsigned long *)to) = *(2+(const unsigned long *)from);
return to;
case 16:
*(unsigned long *)to = *(const unsigned long *)from;
*(1+(unsigned long *)to) = *(1+(const unsigned long *)from);
*(2+(unsigned long *)to) = *(2+(const unsigned long *)from);
*(3+(unsigned long *)to) = *(3+(const unsigned long *)from);
return to;
case 20:
*(unsigned long *)to = *(const unsigned long *)from;
*(1+(unsigned long *)to) = *(1+(const unsigned long *)from);
*(2+(unsigned long *)to) = *(2+(const unsigned long *)from);
*(3+(unsigned long *)to) = *(3+(const unsigned long *)from);
*(4+(unsigned long *)to) = *(4+(const unsigned long *)from);
return to;
}
{
int d0, d1, d2;
switch (n % 4) {
case 0: __asm__ __volatile__( "rep ; movsl" "" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (n/4),"1" ((long) to),"2" ((long) from) : "memory");; return to;
case 1: __asm__ __volatile__( "rep ; movsl" "\n\tmovsb" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (n/4),"1" ((long) to),"2" ((long) from) : "memory");; return to;
case 2: __asm__ __volatile__( "rep ; movsl" "\n\tmovsw" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (n/4),"1" ((long) to),"2" ((long) from) : "memory");; return to;
default: __asm__ __volatile__( "rep ; movsl" "\n\tmovsw\n\tmovsb" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (n/4),"1" ((long) to),"2" ((long) from) : "memory");; return to;
}
}
}
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/mmx.h" 1
# 291 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h" 2
static inline void * __constant_memcpy3d(void * to, const void * from, size_t len)
{
if (len < 512)
return __constant_memcpy(to, from, len);
return _mmx_memcpy(to, from, len);
}
static __inline__ void *__memcpy3d(void *to, const void *from, size_t len)
{
if (len < 512)
return __memcpy(to, from, len);
return _mmx_memcpy(to, from, len);
}
# 335 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h"
extern void __struct_cpy_bug (void);
# 345 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h"
static inline void * memmove(void * dest,const void * src, size_t n)
{
int d0, d1, d2;
if (dest<src)
__asm__ __volatile__(
"rep\n\t"
"movsb"
: "=&c" (d0), "=&S" (d1), "=&D" (d2)
:"0" (n),"1" (src),"2" (dest)
: "memory");
else
__asm__ __volatile__(
"std\n\t"
"rep\n\t"
"movsb\n\t"
"cld"
: "=&c" (d0), "=&S" (d1), "=&D" (d2)
:"0" (n),
"1" (n-1+(const char *)src),
"2" (n-1+(char *)dest)
:"memory");
return dest;
}
static inline void * memchr(const void * cs,int c,size_t count)
{
int d0;
register void * __res;
if (!count)
return ((void *)0);
__asm__ __volatile__(
"repne\n\t"
"scasb\n\t"
"je 1f\n\t"
"movl $1,%0\n"
"1:\tdecl %0"
:"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count));
return __res;
}
static inline void * __memset_generic(void * s, char c,size_t count)
{
int d0, d1;
__asm__ __volatile__(
"rep\n\t"
"stosb"
: "=&c" (d0), "=&D" (d1)
:"a" (c),"1" (s),"0" (count)
:"memory");
return s;
}
# 408 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h"
static inline void * __constant_c_memset(void * s, unsigned long c, size_t count)
{
int d0, d1;
__asm__ __volatile__(
"rep ; stosl\n\t"
"testb $2,%b3\n\t"
"je 1f\n\t"
"stosw\n"
"1:\ttestb $1,%b3\n\t"
"je 2f\n\t"
"stosb\n"
"2:"
: "=&c" (d0), "=&D" (d1)
:"a" (c), "q" (count), "0" (count/4), "1" ((long) s)
:"memory");
return (s);
}
static inline size_t strnlen(const char * s, size_t count)
{
int d0;
register int __res;
__asm__ __volatile__(
"movl %2,%0\n\t"
"jmp 2f\n"
"1:\tcmpb $0,(%0)\n\t"
"je 3f\n\t"
"incl %0\n"
"2:\tdecl %1\n\t"
"cmpl $-1,%1\n\t"
"jne 1b\n"
"3:\tsubl %2,%0"
:"=a" (__res), "=&d" (d0)
:"c" (s),"1" (count));
return __res;
}
extern char *strstr(const char *cs, const char *ct);
static inline void * __constant_c_and_count_memset(void * s, unsigned long pattern, size_t count)
{
switch (count) {
case 0:
return s;
case 1:
*(unsigned char *)s = pattern;
return s;
case 2:
*(unsigned short *)s = pattern;
return s;
case 3:
*(unsigned short *)s = pattern;
*(2+(unsigned char *)s) = pattern;
return s;
case 4:
*(unsigned long *)s = pattern;
return s;
}
{
int d0, d1;
switch (count % 4) {
case 0: __asm__ __volatile__( "rep ; stosl" "" : "=&c" (d0), "=&D" (d1) : "a" (pattern),"0" (count/4),"1" ((long) s) : "memory"); return s;
case 1: __asm__ __volatile__( "rep ; stosl" "\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (pattern),"0" (count/4),"1" ((long) s) : "memory"); return s;
case 2: __asm__ __volatile__( "rep ; stosl" "\n\tstosw" : "=&c" (d0), "=&D" (d1) : "a" (pattern),"0" (count/4),"1" ((long) s) : "memory"); return s;
default: __asm__ __volatile__( "rep ; stosl" "\n\tstosw\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (pattern),"0" (count/4),"1" ((long) s) : "memory"); return s;
}
}
}
# 515 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/string.h"
static inline void * memscan(void * addr, int c, size_t size)
{
if (!size)
return addr;
__asm__("repnz; scasb\n\t"
"jnz 1f\n\t"
"dec %%edi\n"
"1:"
: "=D" (addr), "=c" (size)
: "0" (addr), "1" (size), "a" (c));
return addr;
}
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 2
# 46 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h"
extern int strnicmp(const char *, const char *, __kernel_size_t);
# 77 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h"
extern int __builtin_memcmp(const void *,const void *,__kernel_size_t);
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h" 2
# 36 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ void set_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( ""
"btsl %1,%0"
:"=m" ((*(volatile long *) addr))
:"Ir" (nr));
}
# 53 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ void __set_bit(int nr, volatile void * addr)
{
__asm__(
"btsl %1,%0"
:"=m" ((*(volatile long *) addr))
:"Ir" (nr));
}
# 71 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ void clear_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( ""
"btrl %1,%0"
:"=m" ((*(volatile long *) addr))
:"Ir" (nr));
}
# 90 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ void __change_bit(int nr, volatile void * addr)
{
__asm__ __volatile__(
"btcl %1,%0"
:"=m" ((*(volatile long *) addr))
:"Ir" (nr));
}
# 107 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ void change_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( ""
"btcl %1,%0"
:"=m" ((*(volatile long *) addr))
:"Ir" (nr));
}
# 123 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int test_and_set_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__( ""
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr) : "memory");
return oldbit;
}
# 143 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__(
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr));
return oldbit;
}
# 162 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__( ""
"btrl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr) : "memory");
return oldbit;
}
# 182 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int __test_and_clear_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__(
"btrl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr));
return oldbit;
}
static __inline__ int __test_and_change_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__(
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr) : "memory");
return oldbit;
}
# 213 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int test_and_change_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__( ""
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(volatile long *) addr))
:"Ir" (nr) : "memory");
return oldbit;
}
# 233 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int constant_test_bit(int nr, const volatile void * addr)
{
return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
}
static __inline__ int variable_test_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__(
"btl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit)
:"m" ((*(volatile long *) addr)),"Ir" (nr));
return oldbit;
}
# 262 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int find_first_zero_bit(void * addr, unsigned size)
{
int d0, d1, d2;
int res;
if (!size)
return 0;
__asm__ __volatile__(
"movl $-1,%%eax\n\t"
"xorl %%edx,%%edx\n\t"
"repe; scasl\n\t"
"je 1f\n\t"
"xorl -4(%%edi),%%eax\n\t"
"subl $4,%%edi\n\t"
"bsfl %%eax,%%edx\n"
"1:\tsubl %%ebx,%%edi\n\t"
"shll $3,%%edi\n\t"
"addl %%edi,%%edx"
:"=d" (res), "=&c" (d0), "=&D" (d1), "=&a" (d2)
:"1" ((size + 31) >> 5), "2" (addr), "b" (addr));
return res;
}
static __inline__ int find_next_zero_bit (void * addr, int size, int offset)
{
unsigned long * p = ((unsigned long *) addr) + (offset >> 5);
int set = 0, bit = offset & 31, res;
if (bit) {
__asm__("bsfl %1,%0\n\t"
"jne 1f\n\t"
"movl $32, %0\n"
"1:"
: "=r" (set)
: "r" (~(*p >> bit)));
if (set < (32 - bit))
return set + offset;
set = 32 - bit;
p++;
}
res = find_first_zero_bit (p, size - 32 * (p - (unsigned long *) addr));
return (offset + set + res);
}
static __inline__ unsigned long ffz(unsigned long word)
{
__asm__("bsfl %1,%0"
:"=r" (word)
:"r" (~word));
return word;
}
# 343 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h"
static __inline__ int ffs(int x)
{
int r;
__asm__("bsfl %1,%0\n\t"
"jnz 1f\n\t"
"movl $-1,%0\n"
"1:" : "=r" (r) : "g" (x));
return r+1;
}
# 27 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
struct poll_table_struct;
# 50 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 198 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/linkage.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 2
# 39 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/segment.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bitops.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bitops.h"
static inline int generic_ffs(int x)
{
int r = 1;
if (!x)
return 0;
if (!(x & 0xffff)) {
x >>= 16;
r += 16;
}
if (!(x & 0xff)) {
x >>= 8;
r += 8;
}
if (!(x & 0xf)) {
x >>= 4;
r += 4;
}
if (!(x & 3)) {
x >>= 2;
r += 2;
}
if (!(x & 1)) {
x >>= 1;
r += 1;
}
return r;
}
static inline unsigned int generic_hweight32(unsigned int w)
{
unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555);
res = (res & 0x33333333) + ((res >> 2) & 0x33333333);
res = (res & 0x0F0F0F0F) + ((res >> 4) & 0x0F0F0F0F);
res = (res & 0x00FF00FF) + ((res >> 8) & 0x00FF00FF);
return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF);
}
static inline unsigned int generic_hweight16(unsigned int w)
{
unsigned int res = (w & 0x5555) + ((w >> 1) & 0x5555);
res = (res & 0x3333) + ((res >> 2) & 0x3333);
res = (res & 0x0F0F) + ((res >> 4) & 0x0F0F);
return (res & 0x00FF) + ((res >> 8) & 0x00FF);
}
static inline unsigned int generic_hweight8(unsigned int w)
{
unsigned int res = (w & 0x55) + ((w >> 1) & 0x55);
res = (res & 0x33) + ((res >> 2) & 0x33);
return (res & 0x0F) + ((res >> 4) & 0x0F);
}
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h" 1
# 70 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bitops.h" 2
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 2
struct task_struct;
extern void __switch_to(struct task_struct *prev, struct task_struct *next) __attribute__((regparm(3)));
# 63 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
static inline unsigned long _get_base(char * addr)
{
unsigned long __base;
__asm__("movb %3,%%dh\n\t"
"movb %2,%%dl\n\t"
"shll $16,%%edx\n\t"
"movw %1,%%dx"
:"=&d" (__base)
:"m" (*((addr)+2)),
"m" (*((addr)+4)),
"m" (*((addr)+7)));
return __base;
}
# 130 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
static inline unsigned long get_limit(unsigned long segment)
{
unsigned long __limit;
__asm__("lsll %1,%0"
:"=r" (__limit):"r" (segment));
return __limit+1;
}
struct __xchg_dummy { unsigned long a[100]; };
# 157 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
static inline void __set_64bit (unsigned long long * ptr,
unsigned int low, unsigned int high)
{
__asm__ __volatile__ (
"\n1:\t"
"movl (%0), %%eax\n\t"
"movl 4(%0), %%edx\n\t"
"cmpxchg8b (%0)\n\t"
"jnz 1b"
:
: "D"(ptr),
"b"(low),
"c"(high)
: "ax","dx","memory");
}
static inline void __set_64bit_constant (unsigned long long *ptr,
unsigned long long value)
{
__set_64bit(ptr,(unsigned int)(value), (unsigned int)((value)>>32ULL));
}
static inline void __set_64bit_var (unsigned long long *ptr,
unsigned long long value)
{
__set_64bit(ptr,*(((unsigned int*)&(value))+0), *(((unsigned int*)&(value))+1));
}
# 202 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
{
switch (size) {
case 1:
__asm__ __volatile__("xchgb %b0,%1"
:"=q" (x)
:"m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
:"memory");
break;
case 2:
__asm__ __volatile__("xchgw %w0,%1"
:"=r" (x)
:"m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
:"memory");
break;
case 4:
__asm__ __volatile__("xchgl %0,%1"
:"=r" (x)
:"m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
:"memory");
break;
}
return x;
}
# 236 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
unsigned long new, int size)
{
unsigned long prev;
switch (size) {
case 1:
__asm__ __volatile__("" "cmpxchgb %b1,%2"
: "=a"(prev)
: "q"(new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
: "memory");
return prev;
case 2:
__asm__ __volatile__("" "cmpxchgw %w1,%2"
: "=a"(prev)
: "q"(new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
: "memory");
return prev;
case 4:
__asm__ __volatile__("" "cmpxchgl %1,%2"
: "=a"(prev)
: "q"(new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
: "memory");
return prev;
}
return old;
}
# 349 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h"
void disable_hlt(void);
void enable_hlt(void);
extern int is_sony_vaio_laptop;
# 40 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 41 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 1
# 42 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/linkage.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
struct rw_semaphore;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/rwsem.h" 1
# 41 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/rwsem.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 42 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/rwsem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 43 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/rwsem.h" 2
struct rwsem_waiter;
extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem) __attribute__((regparm(3)));
extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem) __attribute__((regparm(3)));
extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *) __attribute__((regparm(3)));
struct rw_semaphore {
signed long count;
spinlock_t wait_lock;
struct list_head wait_list;
};
# 84 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/rwsem.h"
static inline void init_rwsem(struct rw_semaphore *sem)
{
sem->count = 0x00000000;
do { } while(0);
do { (&sem->wait_list)->next = (&sem->wait_list); (&sem->wait_list)->prev = (&sem->wait_list); } while (0);
}
static inline void __down_read(struct rw_semaphore *sem)
{
__asm__ __volatile__(
"# beginning down_read\n\t"
"" " incl (%%eax)\n\t"
" js 2f\n\t"
"1:\n\t"
".section .text.lock,\"ax\"\n"
"2:\n\t"
" pushl %%ecx\n\t"
" pushl %%edx\n\t"
" call rwsem_down_read_failed\n\t"
" popl %%edx\n\t"
" popl %%ecx\n\t"
" jmp 1b\n"
".previous"
"# ending down_read\n\t"
: "+m"(sem->count)
: "a"(sem)
: "memory", "cc");
}
static inline void __down_write(struct rw_semaphore *sem)
{
int tmp;
tmp = ((-0x00010000) + 0x00000001);
__asm__ __volatile__(
"# beginning down_write\n\t"
"" " xadd %0,(%%eax)\n\t"
" testl %0,%0\n\t"
" jnz 2f\n\t"
"1:\n\t"
".section .text.lock,\"ax\"\n"
"2:\n\t"
" pushl %%ecx\n\t"
" call rwsem_down_write_failed\n\t"
" popl %%ecx\n\t"
" jmp 1b\n"
".previous\n"
"# ending down_write"
: "+d"(tmp), "+m"(sem->count)
: "a"(sem)
: "memory", "cc");
}
static inline void __up_read(struct rw_semaphore *sem)
{
__s32 tmp = -0x00000001;
__asm__ __volatile__(
"# beginning __up_read\n\t"
"" " xadd %%edx,(%%eax)\n\t"
" js 2f\n\t"
"1:\n\t"
".section .text.lock,\"ax\"\n"
"2:\n\t"
" decw %%dx\n\t"
" jnz 1b\n\t"
" pushl %%ecx\n\t"
" call rwsem_wake\n\t"
" popl %%ecx\n\t"
" jmp 1b\n"
".previous\n"
"# ending __up_read\n"
: "+m"(sem->count), "+d"(tmp)
: "a"(sem)
: "memory", "cc");
}
static inline void __up_write(struct rw_semaphore *sem)
{
__asm__ __volatile__(
"# beginning __up_write\n\t"
" movl %2,%%edx\n\t"
"" " xaddl %%edx,(%%eax)\n\t"
" jnz 2f\n\t"
"1:\n\t"
".section .text.lock,\"ax\"\n"
"2:\n\t"
" decw %%dx\n\t"
" jnz 1b\n\t"
" pushl %%ecx\n\t"
" call rwsem_wake\n\t"
" popl %%ecx\n\t"
" jmp 1b\n"
".previous\n"
"# ending __up_write\n"
: "+m"(sem->count)
: "a"(sem), "i"(-((-0x00010000) + 0x00000001))
: "memory", "cc", "edx");
}
static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem)
{
__asm__ __volatile__(
"" "addl %1,%0"
:"=m"(sem->count)
:"ir"(delta), "m"(sem->count));
}
static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
{
int tmp = delta;
__asm__ __volatile__(
"" "xadd %0,(%2)"
: "+r"(tmp), "=m"(sem->count)
: "r"(sem), "m"(sem->count)
: "memory");
return tmp+delta;
}
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rwsem.h" 2
# 41 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
;
}
# 43 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 2
struct semaphore {
atomic_t count;
int sleepers;
wait_queue_head_t wait;
};
# 73 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h"
static inline void sema_init (struct semaphore *sem, int val)
{
(((&sem->count)->counter) = (val));
sem->sleepers = 0;
init_waitqueue_head(&sem->wait);
}
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);
}
__attribute__((regparm(0))) void __down_failed(void );
__attribute__((regparm(0))) int __down_failed_interruptible(void );
__attribute__((regparm(0))) int __down_failed_trylock(void );
__attribute__((regparm(0))) void __up_wakeup(void );
__attribute__((regparm(0))) void __down(struct semaphore * sem);
__attribute__((regparm(0))) int __down_interruptible(struct semaphore * sem);
__attribute__((regparm(0))) int __down_trylock(struct semaphore * sem);
__attribute__((regparm(0))) void __up(struct semaphore * sem);
static inline void down(struct semaphore * sem)
{
__asm__ __volatile__(
"# atomic down operation\n\t"
"" "decl %0\n\t"
"js 2f\n"
"1:\n"
".section .text.lock,\"ax\"\n"
"2:\tcall __down_failed\n\t"
"jmp 1b\n"
".previous"
:"=m" (sem->count)
:"c" (sem)
:"memory");
}
static inline int down_interruptible(struct semaphore * sem)
{
int result;
__asm__ __volatile__(
"# atomic interruptible down operation\n\t"
"" "decl %1\n\t"
"js 2f\n\t"
"xorl %0,%0\n"
"1:\n"
".section .text.lock,\"ax\"\n"
"2:\tcall __down_failed_interruptible\n\t"
"jmp 1b\n"
".previous"
:"=a" (result), "=m" (sem->count)
:"c" (sem)
:"memory");
return result;
}
static inline int down_trylock(struct semaphore * sem)
{
int result;
__asm__ __volatile__(
"# atomic interruptible down operation\n\t"
"" "decl %1\n\t"
"js 2f\n\t"
"xorl %0,%0\n"
"1:\n"
".section .text.lock,\"ax\"\n"
"2:\tcall __down_failed_trylock\n\t"
"jmp 1b\n"
".previous"
:"=a" (result), "=m" (sem->count)
:"c" (sem)
:"memory");
return result;
}
static inline void up(struct semaphore * sem)
{
__asm__ __volatile__(
"# atomic up operation\n\t"
"" "incl %0\n\t"
"jle 2f\n"
"1:\n"
".section .text.lock,\"ax\"\n"
"2:\tcall __up_wakeup\n\t"
"jmp 1b\n"
".previous"
:"=m" (sem->count)
:"c" (sem)
:"memory");
}
# 199 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h" 2
static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
{
__asm__("bswap %0" : "=r" (x) : "0" (x));
return x;
}
static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
{
__asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); return x;
}
# 45 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/little_endian.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/little_endian.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/swab.h" 1
# 131 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/swab.h"
static __inline__ __const__ __u16 __fswab16(__u16 x)
{
return ___arch__swab16(x);
}
static __inline__ __u16 __swab16p(__u16 *x)
{
return ___arch__swab16(*(x));
}
static __inline__ void __swab16s(__u16 *addr)
{
do { *(addr) = ___arch__swab16(*((addr))); } while (0);
}
static __inline__ __const__ __u32 __fswab32(__u32 x)
{
return ___arch__swab32(x);
}
static __inline__ __u32 __swab32p(__u32 *x)
{
return ___arch__swab32(*(x));
}
static __inline__ void __swab32s(__u32 *addr)
{
do { *(addr) = ___arch__swab32(*((addr))); } while (0);
}
static __inline__ __const__ __u64 __fswab64(__u64 x)
{
__u32 h = x >> 32;
__u32 l = x & ((1ULL<<32)-1);
return (((__u64)(__builtin_constant_p((__u32)(l)) ? ({ __u32 __x = ((l)); ((__u32)( (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); }) : __fswab32((l)))) << 32) | ((__u64)((__builtin_constant_p((__u32)(h)) ? ({ __u32 __x = ((h)); ((__u32)( (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); }) : __fswab32((h)))));
}
static __inline__ __u64 __swab64p(__u64 *x)
{
return ({ __u64 __tmp = (*(x)) ; ({ __u64 __x = (__tmp); ((__u64)( (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); }); });
}
static __inline__ void __swab64s(__u64 *addr)
{
do { *(addr) = ({ __u64 __tmp = (*((addr))) ; ({ __u64 __x = (__tmp); ((__u64)( (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); }); }); } while (0);
}
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/little_endian.h" 2
# 66 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/little_endian.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/generic.h" 1
# 150 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/byteorder/little_endian.h" 2
# 46 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h" 2
# 200 "/usr/src/linux-2.4.13-gcc-3.0.2/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_PrivateStart,
};
# 236 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
struct buffer_head {
struct buffer_head *b_next;
unsigned long b_blocknr;
unsigned short b_size;
unsigned short b_list;
kdev_t b_dev;
atomic_t b_count;
kdev_t b_rdev;
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_reqnext;
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;
unsigned long b_rsector;
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 *);
# 282 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
extern void set_bh_page(struct buffer_head *bh, struct page *page, unsigned long offset);
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pipe_fs_i.h"
void pipe_wait(struct inode * inode);
struct inode* pipe_new(struct inode* inode);
# 288 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/minix_fs_i.h" 1
struct minix_inode_info {
union {
__u16 i1_data[16];
__u32 i2_data[16];
} u;
};
# 289 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ext2_fs_i.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 290 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 291 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ntfs_fs_i.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ntfs_fs_i.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 292 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 293 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/umsdos_fs_i.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/msdos_fs_i.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/umsdos_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pipe_fs_i.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/umsdos_fs_i.h" 2
# 39 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 294 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/iso_fs_i.h" 1
struct iso_inode_info {
unsigned int i_first_extent;
unsigned char i_file_format;
unsigned long i_next_section_ino;
off_t i_section_size;
};
# 295 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_i.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sunrpc/msg_prot.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs.h" 2
# 41 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs.h"
enum nfs3_stable_how {
NFS_UNSTABLE = 0,
NFS_DATA_SYNC = 1,
NFS_FILE_SYNC = 2
};
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_i.h" 2
struct nfs_inode_info {
__u64 fsid;
__u64 fileid;
struct nfs_fh fh;
unsigned short flags;
# 45 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_i.h"
struct nfs_lock_info {
u32 state;
u32 flags;
struct nlm_host *host;
};
# 296 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sysv_fs_i.h" 1
struct sysv_inode_info {
u32 i_data[10+1+1+1];
};
# 297 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/affs_fs_i.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/a.out.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/a.out.h" 1
struct exec
{
unsigned long a_info;
unsigned a_text;
unsigned a_data;
unsigned a_bss;
unsigned a_syms;
unsigned a_entry;
unsigned a_trsize;
unsigned a_drsize;
};
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/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
};
# 131 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/a.out.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 132 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/a.out.h" 2
# 157 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/affs_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/param.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 2
struct timespec {
time_t tv_sec;
long tv_nsec;
};
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/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) / 100))
return ((~0UL >> 1)-1);
nsec += 1000000000L / 100 - 1;
nsec /= 1000000000L / 100;
return 100 * sec + nsec;
}
static __inline__ void
jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
{
value->tv_nsec = (jiffies % 100) * (1000000000L / 100);
value->tv_sec = jiffies / 100;
}
# 67 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
extern void (*do_get_fast_time)(struct timeval *);
# 121 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/affs_fs_i.h" 2
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/affs_fs_i.h"
};
# 298 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs_i.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs_i.h"
struct ufs_inode_info {
union {
__u32 i_data[15];
__u8 i_symlink[4*15];
} i_u1;
__u64 i_size;
__u32 i_flags;
__u32 i_gen;
__u32 i_shadow;
__u32 i_unused1;
__u32 i_unused2;
__u32 i_oeftflag;
__u16 i_osync;
__u32 i_lastfrag;
};
# 299 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/efs_fs_i.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/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];
};
# 300 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda_fs_i.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda_fs_i.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda_fs_i.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda.h" 1
# 109 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda.h"
typedef unsigned long long u_quad_t;
# 164 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/coda.h"
struct coda_mount_data {
int version;
int fd;
};
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/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 *);
# 301 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/romfs_fs_i.h" 1
struct romfs_inode_info {
unsigned long i_metasize;
unsigned long i_dataoffset;
};
# 302 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/shmem_fs.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 303 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_i.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_i.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_i.h" 2
struct smb_inode_info {
unsigned int open;
__u16 fileid;
__u16 attr;
__u16 access;
__u16 flags;
unsigned long oldmtime;
unsigned long closed;
unsigned openers;
};
# 304 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/hfs_fs_i.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
};
# 305 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/adfs_fs_i.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 306 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs_i.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs_i.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnxtypes.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 307 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/reiserfs_fs_i.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/reiserfs_fs_i.h" 2
struct reiserfs_inode_info {
__u32 i_key [4];
int i_version;
int i_pack_on_close ;
__u32 i_first_direct_byte;
# 35 "/usr/src/linux-2.4.13-gcc-3.0.2/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 ;
};
# 308 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bfs_fs_i.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bfs_fs_i.h"
struct bfs_inode_info {
unsigned long i_dsk_ino;
unsigned long i_sblock;
unsigned long i_eblock;
};
# 309 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/udf_fs_i.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 310 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_fs_i.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/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));
};
# 311 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 312 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/usbdev_fs_i.h" 1
struct usb_device;
struct usb_bus;
struct usbdev_inode_info {
struct list_head dlist;
struct list_head slist;
union {
struct usb_device *dev;
struct usb_bus *bus;
} p;
};
# 313 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_i.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_i.h"
struct jffs2_inode_info {
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 314 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 315 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 341 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 365 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/quota.h" 1
# 42 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/quota.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/errno.h" 1
# 43 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/quota.h" 2
# 109 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 158 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
kdev_t dq_dev;
short dq_type;
short dq_flags;
unsigned long dq_referenced;
struct dqblk dq_dqb;
};
# 366 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mount.h" 1
# 367 "/usr/src/linux-2.4.13-gcc-3.0.2/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 (*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 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 usbdev_inode_info usbdev_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);
# 556 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 589 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
extern struct list_head file_lock_list;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fcntl.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fcntl.h" 1
# 69 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fcntl.h"
struct flock {
short l_type;
short l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
struct flock64 {
short l_type;
short l_whence;
loff_t l_start;
loff_t l_len;
pid_t l_pid;
};
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fcntl.h" 2
# 592 "/usr/src/linux-2.4.13-gcc-3.0.2/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 flock64 *);
extern int fcntl_setlk64(unsigned int, unsigned int, struct flock64 *);
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];
};
# 659 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 660 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ext2_fs_sb.h" 1
# 30 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 661 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 662 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ntfs_fs_sb.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ntfs_fs_i.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ntfs_fs_sb.h" 2
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;
};
# 663 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/msdos_fs_sb.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 664 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
mode_t s_mode;
gid_t s_gid;
uid_t s_uid;
struct nls_table *s_nls_iocharset;
};
# 665 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/nfs_fs_sb.h" 1
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 nfs_sb_info {
struct nfs_server s_server;
};
# 666 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sysv_fs_sb.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sysv_fs_sb.h"
struct sysv_sb_info {
int s_type;
char s_bytesex;
char s_kludge_symlinks;
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;
};
# 667 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/affs_fs_sb.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/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];
};
# 668 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs_sb.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs_sb.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h" 1
# 30 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 32 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 1
# 33 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stat.h" 1
# 34 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ufs_fs.h" 2
# 248 "/usr/src/linux-2.4.13-gcc-3.0.2/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];
};
# 425 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 524 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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_swab;
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];
};
# 669 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/efs_fs_sb.h" 1
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 670 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/romfs_fs_sb.h" 1
struct romfs_sb_info {
unsigned long s_maxsize;
};
# 671 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_sb.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_sb.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smb.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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));
}
# 672 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/hfs_fs_sb.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 673 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/adfs_fs_sb.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 674 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs_sb.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs_sb.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnxtypes.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/qnx4_fs.h" 2
# 45 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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, long iblock, struct buffer_head *bh, int create);
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 675 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/reiserfs_fs_sb.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 2
# 38 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h"
struct tq_struct {
struct list_head list;
unsigned long sync;
void (*routine)(void *);
void *data;
};
# 64 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h"
typedef struct list_head task_queue;
extern task_queue tq_timer, tq_immediate, tq_disk;
# 94 "/usr/src/linux-2.4.13-gcc-3.0.2/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__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tqueue_lock); } while (0);
list_add_tail(&bh_pointer->list, bh_list);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } 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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/reiserfs_fs_sb.h" 2
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/reiserfs_fs_sb.h"
struct reiserfs_journal_cnode {
struct buffer_head *bh ;
kdev_t dev ;
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 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;
};
# 410 "/usr/src/linux-2.4.13-gcc-3.0.2/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) ;
# 676 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/bfs_fs_sb.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 677 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/udf_fs_sb.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/udf_fs_sb.h"
#pragma pack(1)
# 30 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 678 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_fs_sb.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_fs_sb.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_mount.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_mount.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_mount.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp.h" 2
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ncp_mount.h" 2
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
}
# 679 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/usbdev_fs_sb.h" 1
struct usbdev_sb_info {
struct list_head slist;
struct list_head ilist;
uid_t devuid;
gid_t devgid;
umode_t devmode;
uid_t busuid;
gid_t busgid;
umode_t busmode;
uid_t listuid;
gid_t listgid;
umode_t listmode;
};
# 680 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cramfs_fs_sb.h" 1
# 681 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/completion.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/completion.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/completion.h" 2
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 *) __attribute__((regparm(3)));
extern void complete(struct completion *) __attribute__((regparm(3)));
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/jffs2_fs_sb.h" 2
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 682 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
union {
struct minix_sb_info minix_sb;
struct ext2_sb_info ext2_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 usbdev_sb_info usbdevfs_sb;
struct jffs2_sb_info jffs2_sb;
struct cramfs_sb_info cramfs_sb;
void *generic_sbp;
} u;
struct semaphore s_vfs_rename_sem;
# 754 "/usr/src/linux-2.4.13-gcc-3.0.2/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 *);
# 788 "/usr/src/linux-2.4.13-gcc-3.0.2/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 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 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 *);
# 893 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
};
# 907 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 965 "/usr/src/linux-2.4.13-gcc-3.0.2/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 int vfs_statfs(struct super_block *, struct statfs *);
# 983 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 993 "/usr/src/linux-2.4.13-gcc-3.0.2/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__((regparm(0))) long sys_open(const char *, int, int);
__attribute__((regparm(0))) 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 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)
{
atomic_inc(&(bh)->b_count);
}
static inline void put_bh(struct buffer_head *bh)
{
__asm__ __volatile__("": : :"memory");
atomic_dec(&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) __attribute__((regparm(3)));
extern void __mark_buffer_dirty(struct buffer_head *bh) __attribute__((regparm(3)));
extern void mark_buffer_dirty(struct buffer_head *bh) __attribute__((regparm(3)));
extern void buffer_insert_inode_data_queue(struct buffer_head *, struct inode *) __attribute__((regparm(3)));
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, 0);
}
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 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(kdev_t);
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)
{
atomic_dec(&inode->i_writecount);
}
static inline void allow_write_access(struct file *file)
{
if (file)
atomic_inc(&file->f_dentry->d_inode->i_writecount);
}
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 *);
# 1234 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
}
# 1265 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h"
enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
# 1276 "/usr/src/linux-2.4.13-gcc-3.0.2/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 *) __attribute__((regparm(3)));
extern int path_init(const char *, unsigned, struct nameidata *) __attribute__((regparm(3)));
extern int path_walk(const char *, struct nameidata *) __attribute__((regparm(3)));
extern int link_path_walk(const char *, struct nameidata *) __attribute__((regparm(3)));
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(kdev_t, int, int);
extern struct buffer_head * getblk(kdev_t, int, int);
extern void ll_rw_block(int, int, struct buffer_head * bh[]);
extern void submit_bh(int, struct buffer_head *);
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 struct buffer_head * bread(kdev_t, int, int);
extern void wakeup_bdflush(void);
extern int brw_page(int, struct page *, kdev_t, int [], int);
typedef int (get_block_t)(struct inode*,long,struct buffer_head*,int);
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 *);
int generic_block_bmap(struct address_space *, long, 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 void create_empty_buffers(struct page *, kdev_t, unsigned long);
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 void mount_root(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 *);
# 1458 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
}
# 1502 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h" 2
# 32 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h"
typedef __u32 kernel_cap_t;
# 284 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/capability.h"
extern kernel_cap_t cap_bset;
# 312 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/binfmts.h" 2
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/times.h" 1
struct tms {
clock_t tms_utime;
clock_t tms_stime;
clock_t tms_cutime;
clock_t tms_cstime;
};
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timex.h" 1
# 54 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timex.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/param.h" 1
# 55 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timex.h" 2
# 152 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timex.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/timex.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/timex.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/timex.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/msr.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/timex.h" 2
# 32 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/timex.h"
typedef unsigned long long cycles_t;
extern cycles_t cacheflush_time;
static inline cycles_t get_cycles (void)
{
unsigned long long ret;
__asm__ __volatile__("rdtsc" : "=A" (ret));
return ret;
}
extern unsigned long cpu_khz;
# 153 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timex.h" 2
# 161 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rbtree.h" 1
# 97 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rbtree.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 98 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rbtree.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/stddef.h" 1
# 99 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rbtree.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/semaphore.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/mmu.h" 1
typedef struct {
void *segments;
unsigned long cpuvalid;
} mm_context_t;
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smp.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smp.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smp.h" 2
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/major.h" 1
# 177 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/major.h"
static __inline__ int scsi_blk_major(int m) {
return (((m) == 8 || ((m) >= 65 && (m) <= 71)) || (m) == 11);
}
# 190 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/major.h"
static __inline__ int ide_blk_major(int m)
{
return ((m) == 3 || (m) == 22 || (m) == 33 || (m) == 34 || (m) == 56 || (m) == 57 || (m) == 88 || (m) == 89 || (m) == 90 || (m) == 91);
}
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/termios.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/termios.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/termios.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/termbits.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/posix_types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/termbits.h" 2
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_line;
cc_t c_cc[19];
};
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/termios.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ioctls.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ioctl.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ioctls.h" 2
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/termios.h" 2
struct winsize {
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
struct termio {
unsigned short c_iflag;
unsigned short c_oflag;
unsigned short c_cflag;
unsigned short c_lflag;
unsigned char c_line;
unsigned char c_cc[8];
};
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/termios.h" 2
# 23 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tqueue.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_driver.h" 1
# 118 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_driver.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 1
# 119 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_driver.h" 2
struct tty_driver {
int magic;
const char *driver_name;
const char *name;
int name_base;
short major;
short minor_start;
short num;
short type;
short subtype;
struct termios init_termios;
int flags;
int *refcount;
struct proc_dir_entry *proc_entry;
struct tty_driver *other;
struct tty_struct **table;
struct termios **termios;
struct termios **termios_locked;
void *driver_state;
int (*open)(struct tty_struct * tty, struct file * filp);
void (*close)(struct tty_struct * tty, struct file * filp);
int (*write)(struct tty_struct * tty, int from_user,
const unsigned char *buf, int count);
void (*put_char)(struct tty_struct *tty, unsigned char ch);
void (*flush_chars)(struct tty_struct *tty);
int (*write_room)(struct tty_struct *tty);
int (*chars_in_buffer)(struct tty_struct *tty);
int (*ioctl)(struct tty_struct *tty, struct file * file,
unsigned int cmd, unsigned long arg);
void (*set_termios)(struct tty_struct *tty, struct termios * old);
void (*throttle)(struct tty_struct * tty);
void (*unthrottle)(struct tty_struct * tty);
void (*stop)(struct tty_struct *tty);
void (*start)(struct tty_struct *tty);
void (*hangup)(struct tty_struct *tty);
void (*break_ctl)(struct tty_struct *tty, int state);
void (*flush_buffer)(struct tty_struct *tty);
void (*set_ldisc)(struct tty_struct *tty);
void (*wait_until_sent)(struct tty_struct *tty, int timeout);
void (*send_xchar)(struct tty_struct *tty, char ch);
int (*read_proc)(char *page, char **start, off_t off,
int count, int *eof, void *data);
int (*write_proc)(struct file *file, const char *buffer,
unsigned long count, void *data);
struct tty_driver *next;
struct tty_driver *prev;
};
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_ldisc.h" 1
# 100 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_ldisc.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 1
# 101 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_ldisc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/wait.h" 1
# 102 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty_ldisc.h" 2
struct tty_ldisc {
int magic;
char *name;
int num;
int flags;
int (*open)(struct tty_struct *);
void (*close)(struct tty_struct *);
void (*flush_buffer)(struct tty_struct *tty);
ssize_t (*chars_in_buffer)(struct tty_struct *tty);
ssize_t (*read)(struct tty_struct * tty, struct file * file,
unsigned char * buf, size_t nr);
ssize_t (*write)(struct tty_struct * tty, struct file * file,
const unsigned char * buf, size_t nr);
int (*ioctl)(struct tty_struct * tty, struct file * file,
unsigned int cmd, unsigned long arg);
void (*set_termios)(struct tty_struct *tty, struct termios * old);
unsigned int (*poll)(struct tty_struct *, struct file *,
struct poll_table_struct *);
void (*receive_buf)(struct tty_struct *, const unsigned char *cp,
char *fp, int count);
int (*receive_room)(struct tty_struct *);
void (*write_wakeup)(struct tty_struct *);
};
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h" 2
# 59 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h"
struct screen_info {
unsigned char orig_x;
unsigned char orig_y;
unsigned short dontuse1;
unsigned short orig_video_page;
unsigned char orig_video_mode;
unsigned char orig_video_cols;
unsigned short unused2;
unsigned short orig_video_ega_bx;
unsigned short unused3;
unsigned char orig_video_lines;
unsigned char orig_video_isVGA;
unsigned short orig_video_points;
unsigned short lfb_width;
unsigned short lfb_height;
unsigned short lfb_depth;
unsigned long lfb_base;
unsigned long lfb_size;
unsigned short dontuse2, dontuse3;
unsigned short lfb_linelength;
unsigned char red_size;
unsigned char red_pos;
unsigned char green_size;
unsigned char green_pos;
unsigned char blue_size;
unsigned char blue_pos;
unsigned char rsvd_size;
unsigned char rsvd_pos;
unsigned short vesapm_seg;
unsigned short vesapm_off;
unsigned short pages;
};
extern struct screen_info screen_info;
# 139 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h"
struct tty_flip_buffer {
struct tq_struct tqueue;
struct semaphore pty_sem;
char *char_buf_ptr;
unsigned char *flag_buf_ptr;
int count;
int buf_num;
unsigned char char_buf[2*512];
char flag_buf[2*512];
unsigned char slop[4];
};
# 259 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h"
struct tty_struct {
int magic;
struct tty_driver driver;
struct tty_ldisc ldisc;
struct termios *termios, *termios_locked;
int pgrp;
int session;
kdev_t device;
unsigned long flags;
int count;
struct winsize winsize;
unsigned char stopped:1, hw_stopped:1, flow_stopped:1, packet:1;
unsigned char low_latency:1, warned:1;
unsigned char ctrl_status;
struct tty_struct *link;
struct fasync_struct *fasync;
struct tty_flip_buffer flip;
int max_flip_cnt;
int alt_speed;
wait_queue_head_t write_wait;
wait_queue_head_t read_wait;
struct tq_struct tq_hangup;
void *disc_data;
void *driver_data;
struct list_head tty_files;
unsigned int column;
unsigned char lnext:1, erasing:1, raw:1, real_raw:1, icanon:1;
unsigned char closing:1;
unsigned short minimum_to_wake;
unsigned overrun_time;
int num_overrun;
unsigned long process_char_map[256/(8*sizeof(unsigned long))];
char *read_buf;
int read_head;
int read_tail;
int read_cnt;
unsigned long read_flags[4096/(8*sizeof(unsigned long))];
int canon_data;
unsigned long canon_head;
unsigned int canon_column;
struct semaphore atomic_read;
struct semaphore atomic_write;
spinlock_t read_lock;
struct tq_struct SAK_tq;
};
# 341 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/tty.h"
extern void tty_write_flush(struct tty_struct *);
extern struct termios tty_std_termios;
extern struct tty_struct * redirect;
extern struct tty_ldisc ldiscs[];
extern int fg_console, last_console, want_console;
extern int kmsg_redirect;
extern void con_init(void);
extern void console_init(void);
extern int lp_init(void);
extern int pty_init(void);
extern void tty_init(void);
extern int mxser_init(void);
extern int moxa_init(void);
extern int ip2_init(void);
extern int pcxe_init(void);
extern int pc_init(void);
extern int vcs_init(void);
extern int rp_init(void);
extern int cy_init(void);
extern int stl_init(void);
extern int stli_init(void);
extern int specialix_init(void);
extern int espserial_init(void);
extern int macserial_init(void);
extern int a2232board_init(void);
extern int tty_paranoia_check(struct tty_struct *tty, kdev_t device,
const char *routine);
extern char *tty_name(struct tty_struct *tty, char *buf);
extern void tty_wait_until_sent(struct tty_struct * tty, long timeout);
extern int tty_check_change(struct tty_struct * tty);
extern void stop_tty(struct tty_struct * tty);
extern void start_tty(struct tty_struct * tty);
extern int tty_register_ldisc(int disc, struct tty_ldisc *new_ldisc);
extern int tty_register_driver(struct tty_driver *driver);
extern int tty_unregister_driver(struct tty_driver *driver);
extern void tty_register_devfs (struct tty_driver *driver, unsigned int flags,
unsigned minor);
extern void tty_unregister_devfs (struct tty_driver *driver, unsigned minor);
extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
int buflen);
extern void tty_write_message(struct tty_struct *tty, char *msg);
extern int is_orphaned_pgrp(int pgrp);
extern int is_ignored(int sig);
extern int tty_signal(int sig, struct tty_struct *tty);
extern void tty_hangup(struct tty_struct * tty);
extern void tty_vhangup(struct tty_struct * tty);
extern void tty_unhangup(struct file *filp);
extern int tty_hung_up_p(struct file * filp);
extern void do_SAK(struct tty_struct *tty);
extern void disassociate_ctty(int priv);
extern void tty_flip_buffer_push(struct tty_struct *tty);
extern int tty_get_baud_rate(struct tty_struct *tty);
extern struct tty_ldisc tty_ldisc_N_TTY;
extern int n_tty_ioctl(struct tty_struct * tty, struct file * file,
unsigned int cmd, unsigned long arg);
extern void serial_console_init(void);
extern int pcxe_open(struct tty_struct *tty, struct file *filp);
extern void console_print(const char *);
extern int vt_ioctl(struct tty_struct *tty, struct file * file,
unsigned int cmd, unsigned long arg);
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sem.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ipc.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ipc.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ipcbuf.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ipcbuf.h"
struct ipc64_perm
{
__kernel_key_t key;
__kernel_uid32_t uid;
__kernel_gid32_t gid;
__kernel_uid32_t cuid;
__kernel_gid32_t cgid;
__kernel_mode_t mode;
unsigned short __pad1;
unsigned short seq;
unsigned short __pad2;
unsigned long __unused1;
unsigned long __unused2;
};
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ipc.h" 2
# 57 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sem.h" 2
# 23 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sembuf.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sembuf.h"
struct semid64_ds {
struct ipc64_perm sem_perm;
__kernel_time_t sem_otime;
unsigned long __unused1;
__kernel_time_t sem_ctime;
unsigned long __unused2;
unsigned long sem_nsems;
unsigned long __unused3;
unsigned long __unused4;
};
# 36 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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__((regparm(0))) long sys_semget (key_t key, int nsems, int semflg);
__attribute__((regparm(0))) long sys_semop (int semid, struct sembuf *sops, unsigned nsops);
__attribute__((regparm(0))) long sys_semctl (int semid, int semnum, int cmd, union semun arg);
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h" 2
struct siginfo;
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h"
typedef unsigned long old_sigset_t;
typedef struct {
unsigned long sig[(64 / 32)];
} sigset_t;
# 129 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h"
typedef void (*__sighandler_t)(int);
struct old_sigaction {
__sighandler_t sa_handler;
old_sigset_t sa_mask;
unsigned long sa_flags;
void (*sa_restorer)(void);
};
struct sigaction {
__sighandler_t sa_handler;
unsigned long sa_flags;
void (*sa_restorer)(void);
sigset_t sa_mask;
};
struct k_sigaction {
struct sigaction sa;
};
# 171 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h"
typedef struct sigaltstack {
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/sigcontext.h" 1
# 179 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h" 2
static __inline__ void sigaddset(sigset_t *set, int _sig)
{
__asm__("btsl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
}
static __inline__ void sigdelset(sigset_t *set, int _sig)
{
__asm__("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
}
static __inline__ int __const_sigismember(sigset_t *set, int _sig)
{
unsigned long sig = _sig - 1;
return 1 & (set->sig[sig / 32] >> (sig % 32));
}
static __inline__ int __gen_sigismember(sigset_t *set, int _sig)
{
int ret;
__asm__("btl %2,%1\n\tsbbl %0,%0"
: "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
return ret;
}
# 213 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/signal.h"
static __inline__ int sigfindinword(unsigned long word)
{
__asm__("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");
return word;
}
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/siginfo.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/siginfo.h" 2
typedef union sigval {
int sival_int;
void *sival_ptr;
} sigval_t;
typedef struct siginfo {
int si_signo;
int si_errno;
int si_code;
union {
int _pad[((128/sizeof(int)) - 3)];
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;
} _sigfault;
struct {
int _band;
int _fd;
} _sigpoll;
} _sifields;
} siginfo_t;
# 199 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/siginfo.h"
typedef struct sigevent {
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union {
int _pad[((64/sizeof(int)) - 3)];
struct {
void (*_function)(sigval_t);
void *_attribute;
} _sigev_thread;
} _sigev_un;
} sigevent_t;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 1
# 218 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/siginfo.h" 2
static inline void copy_siginfo(siginfo_t *to, siginfo_t *from)
{
if (from->si_code < 0)
(__builtin_constant_p(sizeof(siginfo_t)) ? __constant_memcpy3d((to),(from),(sizeof(siginfo_t))) : __memcpy3d((to),(from),(sizeof(siginfo_t))));
else
(__builtin_constant_p(3*sizeof(int) + sizeof(from->_sifields._sigchld)) ? __constant_memcpy3d((to),(from),(3*sizeof(int) + sizeof(from->_sifields._sigchld))) : __memcpy3d((to),(from),(3*sizeof(int) + sizeof(from->_sifields._sigchld))));
}
extern int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from);
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h" 2
struct sigqueue {
struct sigqueue *next;
siginfo_t info;
};
struct sigpending {
struct sigqueue *head, **tail;
sigset_t signal;
};
# 68 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 1
# 69 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h" 2
# 108 "/usr/src/linux-2.4.13-gcc-3.0.2/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 / 32)/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 / 32) % 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 / 32)/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 / 32) % 4) { case 3: a0 = a-
>Fix:
I don't know how to correct or work around the problem.
>Release-Note:
>Audit-Trail:
>Unformatted:
>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 / 32)/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 / 32) % 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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/signal.h"
static inline void signotset(sigset_t *set) { unsigned long i; for (i = 0; i < (64 / 32)/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 / 32) % 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 / 32)) {
default:
(__builtin_constant_p(0) ? (__builtin_constant_p((sizeof(sigset_t))) ? __constant_c_and_count_memset(((set)),((0x01010101UL*(unsigned char)(0))),((sizeof(sigset_t)))) : __constant_c_memset(((set)),((0x01010101UL*(unsigned char)(0))),((siz eof(sigset_t))))) : (__builtin_constant_p((sizeof(sigset_t))) ? __memset_generic((((set))),(((0))),(((sizeof(sigset_t))))) : __memset_generic(((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 / 32)) {
default:
(__builtin_constant_p(-1) ? (__builtin_constant_p((sizeof(sigset_t))) ? __constant_c_and_count_memset(((set)),((0x01010101UL*(unsigned char)(-1))),((sizeof(sigset_t)))) : __constant_c_memset(((set)),((0x01010101UL*(unsigned char)(-1))),(( sizeof(sigset_t))))) : (__builtin_constant_p((sizeof(sigset_t))) ? __memset_generic((((set))),(((-1))),(((sizeof(sigset_t))))) : __memset_generic(((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 / 32)) {
default:
(__builtin_constant_p(0) ? (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __constant_c_and_count_memset(((&set->sig[1])),((0x01010101UL*(unsigned char)(0))),((sizeof(long)*((64 / 32)-1)))) : __constant_c_memset(((&set->sig[1])),((0 x01010101UL*(unsigned char)(0))),((sizeof(long)*((64 / 32)-1))))) : (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __memset_generic((((&set->sig[1]))),(((0))),(((sizeof(long)*((64 / 32)-1))))) : __memset_generic(((&set->sig[1])),((0)),((sizeof(lon g)*((64 / 32)-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 / 32)) {
default:
(__builtin_constant_p(-1) ? (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __constant_c_and_count_memset(((&set->sig[1])),((0x01010101UL*(unsigned char)(-1))),((sizeof(long)*((64 / 32)-1)))) : __constant_c_memset(((&set->sig[1])),( (0x01010101UL*(unsigned char)(-1))),((sizeof(long)*((64 / 32)-1))))) : (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __memset_generic((((&set->sig[1]))),(((-1))),(((sizeof(long)*((64 / 32)-1))))) : __memset_generic(((&set->sig[1])),((-1)),((sizeo f(long)*((64 / 32)-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);
# 27 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/securebits.h" 1
extern unsigned securebits;
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
(void)(&fs->lock);
old_root = fs->root;
old_rootmnt = fs->rootmnt;
fs->rootmnt = mntget(mnt);
fs->root = dget(dentry);
do { } while(0);
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;
(void)(&fs->lock);
old_pwd = fs->pwd;
old_pwdmnt = fs->pwdmnt;
fs->pwdmnt = mntget(mnt);
fs->pwd = dget(dentry);
do { } while(0);
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);
# 29 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
struct exec_domain;
# 58 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
extern unsigned long avenrun[];
# 75 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
extern int nr_running, nr_threads;
extern int last_pid;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/fs.h" 1
# 79 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 1
# 80 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/param.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/param.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/param.h" 2
# 81 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/resource.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/resource.h" 2
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/resource.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/resource.h" 1
# 57 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/resource.h" 2
# 82 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timer.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timer.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/timer.h" 2
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 41 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
}
# 83 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 1
# 85 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
# 125 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
struct sched_param {
int sched_priority;
};
struct completion;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 134 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
extern rwlock_t tasklist_lock;
extern spinlock_t runqueue_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 signed long schedule_timeout(signed long timeout) __attribute__((regparm(3)));
__attribute__((regparm(0))) 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);
# 172 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
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[32];
};
# 204 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 247 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
struct signal_struct {
atomic_t count;
struct k_sigaction action[64];
spinlock_t siglock;
};
# 263 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
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;
long counter;
long nice;
unsigned long policy;
struct mm_struct *mm;
int has_cpu, processor;
unsigned long cpus_allowed;
struct list_head run_list;
unsigned long sleep_time;
struct task_struct *next_task, *prev_task;
struct mm_struct *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[1], per_cpu_stime[1];
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;
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;
};
# 444 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
extern struct exec_domain default_exec_domain;
# 496 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
union task_union {
struct task_struct task;
unsigned long stack[2048*sizeof(long)/sizeof(long)];
};
extern union task_union init_task_union;
extern struct mm_struct init_mm;
extern struct task_struct *init_tasks[1];
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 *);
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/current.h" 1
struct task_struct;
static inline struct task_struct * get_current(void)
{
struct task_struct *current;
__asm__("andl %%esp,%0; ":"=r" (current) : "0" (~8191UL));
return current;
}
# 544 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 2
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) __attribute__((regparm(3)));
extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr) __attribute__((regparm(3)));
extern void sleep_on(wait_queue_head_t *q) __attribute__((regparm(3)));
extern long sleep_on_timeout(wait_queue_head_t *q, signed long timeout) __attribute__((regparm(3)));
extern void interruptible_sleep_on(wait_queue_head_t *q) __attribute__((regparm(3)));
extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, signed long timeout) __attribute__((regparm(3)));
extern int wake_up_process(struct task_struct * tsk) __attribute__((regparm(3)));
# 577 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
__attribute__((regparm(0))) 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 / 32)) {
default:
for (i = (64 / 32), 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 - get_current()->sas_ss_sp < get_current()->sas_ss_size);
}
static inline int sas_ss_flags(unsigned long sp)
{
return (get_current()->sas_ss_size == 0 ? 2
: on_sig_stack(sp) ? 1 : 0);
}
extern int request_irq(unsigned int,
void (*handler)(int, void *, struct pt_regs *),
unsigned long, const char *, void *);
extern void free_irq(unsigned int, void *);
# 680 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
static inline int suser(void)
{
if (!( (1 << (0 +1)) & 0x00000000 ? (1 << (0)) & 0x00000000 : (1 << (0)) & securebits ) && get_current()->euid == 0) {
get_current()->flags |= 0x00000100;
return 1;
}
return 0;
}
static inline int fsuser(void)
{
if (!( (1 << (0 +1)) & 0x00000000 ? (1 << (0)) & 0x00000000 : (1 << (0)) & securebits ) && get_current()->fsuid == 0) {
get_current()->flags |= 0x00000100;
return 1;
}
return 0;
}
static inline int capable(int cap)
{
if (((get_current()->cap_effective) & (1 << (cap))))
{
get_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 *) __attribute__((regparm(3)));
static inline void mmdrop(struct mm_struct * mm)
{
if (atomic_dec_and_test(&mm->mm_count))
__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 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) __attribute__((regparm(3)));
extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait) __attribute__((regparm(3)));
extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) __attribute__((regparm(3)));
# 848 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h"
static inline void del_from_runqueue(struct task_struct * p)
{
nr_running--;
p->sleep_time = jiffies;
list_del(&p->run_list);
p->run_list.next = ((void *)0);
}
static inline int task_on_runqueue(struct task_struct *p)
{
return (p->run_list.next != ((void *)0));
}
static inline void unhash_process(struct task_struct *p)
{
if (task_on_runqueue(p)) __asm__ __volatile__(".byte 0x0f,0x0b");
do { __asm__ __volatile__("cli": : :"memory"); (void)(&tasklist_lock); } 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 { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
}
static inline void task_lock(struct task_struct *p)
{
(void)(&p->alloc_lock);
}
static inline void task_unlock(struct task_struct *p)
{
do { } 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;
(void)(&get_current()->fs->lock);
rootmnt = mntget(get_current()->fs->rootmnt);
root = dget(get_current()->fs->root);
do { } while(0);
(void)(&dcache_lock);
res = __d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
do { } while(0);
dput(root);
mntput(rootmnt);
return res;
}
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/errno.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/list.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h" 2
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h"
typedef struct free_area_struct {
struct list_head free_list;
unsigned long *map;
} free_area_t;
struct pglist_data;
# 36 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mmzone.h"
typedef struct zonelist_struct {
zone_t * zones [3 +1];
} zonelist_t;
# 98 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h" 2
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h"
union swap_header {
struct
{
char reserved[(1UL << 12) - 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;
};
# 51 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 52 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h" 2
# 64 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h"
struct swap_info_struct {
unsigned int flags;
kdev_t swap_device;
spinlock_t sdev_lock;
struct dentry * swap_file;
struct vfsmount *swap_vfsmnt;
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 *) __attribute__((regparm(3)));
extern void __lru_cache_del(struct page *) __attribute__((regparm(3)));
extern void lru_cache_del(struct page *) __attribute__((regparm(3)));
extern void deactivate_page(struct page *) __attribute__((regparm(3)));
extern void activate_page(struct page *) __attribute__((regparm(3)));
extern void swap_setup(void);
extern wait_queue_head_t kswapd_wait;
extern int try_to_free_pages(zone_t *, unsigned int, unsigned int) __attribute__((regparm(3)));
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 int out_of_memory(void);
extern void oom_kill(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 *, kdev_t *,
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);
struct swap_list_t {
int head;
int next;
};
extern struct swap_list_t swap_list;
__attribute__((regparm(0))) long sys_swapoff(const char *);
__attribute__((regparm(0))) long sys_swapon(const char *, int);
extern spinlock_t pagemap_lru_lock;
extern void mark_page_accessed(struct page *) __attribute__((regparm(3)));
# 220 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/swap.h"
extern spinlock_t swaplock;
extern void shmem_unuse(swp_entry_t entry, struct page *page);
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rbtree.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 2
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/apicdef.h" 1
# 122 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/apicdef.h"
struct local_apic {
struct { unsigned int __reserved[4]; } __reserved_01;
struct { unsigned int __reserved[4]; } __reserved_02;
struct {
unsigned int __reserved_1 : 24,
phys_apic_id : 4,
__reserved_2 : 4;
unsigned int __reserved[3];
} id;
const
struct {
unsigned int version : 8,
__reserved_1 : 8,
max_lvt : 8,
__reserved_2 : 8;
unsigned int __reserved[3];
} version;
struct { unsigned int __reserved[4]; } __reserved_03;
struct { unsigned int __reserved[4]; } __reserved_04;
struct { unsigned int __reserved[4]; } __reserved_05;
struct { unsigned int __reserved[4]; } __reserved_06;
struct {
unsigned int priority : 8,
__reserved_1 : 24;
unsigned int __reserved_2[3];
} tpr;
const
struct {
unsigned int priority : 8,
__reserved_1 : 24;
unsigned int __reserved_2[3];
} apr;
const
struct {
unsigned int priority : 8,
__reserved_1 : 24;
unsigned int __reserved_2[3];
} ppr;
struct {
unsigned int eoi;
unsigned int __reserved[3];
} eoi;
struct { unsigned int __reserved[4]; } __reserved_07;
struct {
unsigned int __reserved_1 : 24,
logical_dest : 8;
unsigned int __reserved_2[3];
} ldr;
struct {
unsigned int __reserved_1 : 28,
model : 4;
unsigned int __reserved_2[3];
} dfr;
struct {
unsigned int spurious_vector : 8,
apic_enabled : 1,
focus_cpu : 1,
__reserved_2 : 22;
unsigned int __reserved_3[3];
} svr;
struct {
unsigned int bitfield;
unsigned int __reserved[3];
} isr [8];
struct {
unsigned int bitfield;
unsigned int __reserved[3];
} tmr [8];
struct {
unsigned int bitfield;
unsigned int __reserved[3];
} irr [8];
union {
struct {
unsigned int send_cs_error : 1,
receive_cs_error : 1,
send_accept_error : 1,
receive_accept_error : 1,
__reserved_1 : 1,
send_illegal_vector : 1,
receive_illegal_vector : 1,
illegal_register_address : 1,
__reserved_2 : 24;
unsigned int __reserved_3[3];
} error_bits;
struct {
unsigned int errors;
unsigned int __reserved_3[3];
} all_errors;
} esr;
struct { unsigned int __reserved[4]; } __reserved_08;
struct { unsigned int __reserved[4]; } __reserved_09;
struct { unsigned int __reserved[4]; } __reserved_10;
struct { unsigned int __reserved[4]; } __reserved_11;
struct { unsigned int __reserved[4]; } __reserved_12;
struct { unsigned int __reserved[4]; } __reserved_13;
struct { unsigned int __reserved[4]; } __reserved_14;
struct {
unsigned int vector : 8,
delivery_mode : 3,
destination_mode : 1,
delivery_status : 1,
__reserved_1 : 1,
level : 1,
trigger : 1,
__reserved_2 : 2,
shorthand : 2,
__reserved_3 : 12;
unsigned int __reserved_4[3];
} icr1;
struct {
union {
unsigned int __reserved_1 : 24,
phys_dest : 4,
__reserved_2 : 4;
unsigned int __reserved_3 : 24,
logical_dest : 8;
} dest;
unsigned int __reserved_4[3];
} icr2;
struct {
unsigned int vector : 8,
__reserved_1 : 4,
delivery_status : 1,
__reserved_2 : 3,
mask : 1,
timer_mode : 1,
__reserved_3 : 14;
unsigned int __reserved_4[3];
} lvt_timer;
struct { unsigned int __reserved[4]; } __reserved_15;
struct {
unsigned int vector : 8,
delivery_mode : 3,
__reserved_1 : 1,
delivery_status : 1,
__reserved_2 : 3,
mask : 1,
__reserved_3 : 15;
unsigned int __reserved_4[3];
} lvt_pc;
struct {
unsigned int vector : 8,
delivery_mode : 3,
__reserved_1 : 1,
delivery_status : 1,
polarity : 1,
remote_irr : 1,
trigger : 1,
mask : 1,
__reserved_2 : 15;
unsigned int __reserved_3[3];
} lvt_lint0;
struct {
unsigned int vector : 8,
delivery_mode : 3,
__reserved_1 : 1,
delivery_status : 1,
polarity : 1,
remote_irr : 1,
trigger : 1,
mask : 1,
__reserved_2 : 15;
unsigned int __reserved_3[3];
} lvt_lint1;
struct {
unsigned int vector : 8,
__reserved_1 : 4,
delivery_status : 1,
__reserved_2 : 3,
mask : 1,
__reserved_3 : 15;
unsigned int __reserved_4[3];
} lvt_error;
struct {
unsigned int initial_count;
unsigned int __reserved_2[3];
} timer_icr;
const
struct {
unsigned int curr_count;
unsigned int __reserved_2[3];
} timer_ccr;
struct { unsigned int __reserved[4]; } __reserved_16;
struct { unsigned int __reserved[4]; } __reserved_17;
struct { unsigned int __reserved[4]; } __reserved_18;
struct { unsigned int __reserved[4]; } __reserved_19;
struct {
unsigned int divisor : 4,
__reserved_1 : 28;
unsigned int __reserved_2[3];
} timer_dcr;
struct { unsigned int __reserved[4]; } __reserved_20;
} __attribute__ ((packed));
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 2
# 50 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h"
enum fixed_addresses {
# 68 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h"
__end_of_fixed_addresses
};
extern void __set_fixmap (enum fixed_addresses idx,
unsigned long phys, pgprot_t flags);
# 94 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h"
extern void __this_fixmap_does_not_exist(void);
static inline unsigned long fix_to_virt(const unsigned int idx)
{
# 112 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h"
if (idx >= __end_of_fixed_addresses)
__this_fixmap_does_not_exist();
return ((0xffffe000UL) - ((idx) << 12));
}
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 2
extern pgd_t swapper_pg_dir[1024];
extern void paging_init(void);
# 67 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
extern unsigned long pgkern_mask;
# 95 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
extern unsigned long empty_zero_page[1024];
# 109 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable-2level.h" 1
# 32 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable-2level.h"
static inline int pgd_none(pgd_t pgd) { return 0; }
static inline int pgd_bad(pgd_t pgd) { return 0; }
static inline int pgd_present(pgd_t pgd) { return 1; }
# 53 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable-2level.h"
static inline pmd_t * pmd_offset(pgd_t * dir, unsigned long address)
{
return (pmd_t *) dir;
}
# 110 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 2
# 244 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
extern unsigned long pg0[1024];
# 265 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
static inline int pte_read(pte_t pte) { return (pte).pte_low & 0x004; }
static inline int pte_exec(pte_t pte) { return (pte).pte_low & 0x004; }
static inline int pte_dirty(pte_t pte) { return (pte).pte_low & 0x040; }
static inline int pte_young(pte_t pte) { return (pte).pte_low & 0x020; }
static inline int pte_write(pte_t pte) { return (pte).pte_low & 0x002; }
static inline pte_t pte_rdprotect(pte_t pte) { (pte).pte_low &= ~0x004; return pte; }
static inline pte_t pte_exprotect(pte_t pte) { (pte).pte_low &= ~0x004; return pte; }
static inline pte_t pte_mkclean(pte_t pte) { (pte).pte_low &= ~0x040; return pte; }
static inline pte_t pte_mkold(pte_t pte) { (pte).pte_low &= ~0x020; return pte; }
static inline pte_t pte_wrprotect(pte_t pte) { (pte).pte_low &= ~0x002; return pte; }
static inline pte_t pte_mkread(pte_t pte) { (pte).pte_low |= 0x004; return pte; }
static inline pte_t pte_mkexec(pte_t pte) { (pte).pte_low |= 0x004; return pte; }
static inline pte_t pte_mkdirty(pte_t pte) { (pte).pte_low |= 0x040; return pte; }
static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte_low |= 0x020; return pte; }
static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte_low |= 0x002; return pte; }
static inline int ptep_test_and_clear_dirty(pte_t *ptep) { return test_and_clear_bit(6, ptep); }
static inline int ptep_test_and_clear_young(pte_t *ptep) { return test_and_clear_bit(5, ptep); }
static inline void ptep_set_wrprotect(pte_t *ptep) { clear_bit(1, ptep); }
static inline void ptep_mkdirty(pte_t *ptep) { set_bit(6, ptep); }
# 297 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h"
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
{
pte.pte_low &= ((~((1UL << 12)-1)) | 0x020 | 0x040);
pte.pte_low |= ((newprot).pgprot);
return pte;
}
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 27 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 2
# 43 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
};
# 117 "/usr/src/linux-2.4.13-gcc-3.0.2/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 write_access);
};
# 146 "/usr/src/linux-2.4.13-gcc-3.0.2/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;
# 299 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h"
extern void __set_page_dirty(struct page *);
static inline void set_page_dirty(struct page * page)
{
if (!test_and_set_bit(4, &page->flags))
__set_page_dirty(page);
}
# 364 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h"
extern mem_map_t * mem_map;
extern struct page * _alloc_pages(unsigned int gfp_mask, unsigned int order) __attribute__((regparm(3)));
extern struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist) __attribute__((regparm(3)));
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) __attribute__((regparm(3)));
extern unsigned long get_zeroed_page(unsigned int gfp_mask) __attribute__((regparm(3)));
# 405 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h"
extern void __free_pages(struct page *page, unsigned int order) __attribute__((regparm(3)));
extern void free_pages(unsigned long addr, unsigned int order) __attribute__((regparm(3)));
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);
struct page * shmem_nopage(struct vm_area_struct * vma, unsigned long address, int no_share);
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) __attribute__((regparm(3)));
extern pte_t *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address) __attribute__((regparm(3)));
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 *);
static inline pmd_t *pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
{
if (pgd_none(*pgd))
return __pmd_alloc(mm, pgd, address);
return pmd_offset(pgd, address);
}
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;
}
static inline int exclusive_swap_page(struct page *page)
{
if (!(__builtin_constant_p(0) ? constant_test_bit((0),(&(page)->flags)) : variable_test_bit((0),(&(page)->flags))))
__asm__ __volatile__(".byte 0x0f,0x0b");
if (!((page)->mapping == &swapper_space))
return 0;
if (((&(page)->count)->counter) - !!page->buffers != 2)
return 0;
return swap_count(page) == 1;
}
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 << 12)-1)&(~((1UL << 12)-1)))) < offset)
goto out;
if (!(offset & ~(~((1UL << 12)-1))))
ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> 12);
out:
return ret;
}
extern int do_munmap(struct mm_struct *, unsigned long, size_t);
extern unsigned long do_brk(unsigned long, unsigned long);
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);
# 575 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h"
static inline int expand_stack(struct vm_area_struct * vma, unsigned long address)
{
unsigned long grow;
address &= (~((1UL << 12)-1));
grow = (vma->vm_start - address) >> 12;
if (vma->vm_end - address > get_current()->rlim[3].rlim_cur ||
((vma->vm_mm->total_vm + grow) << 12) > get_current()->rlim[9].rlim_cur)
return -12;
(void)(&vma->vm_mm->page_table_lock);
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 { } 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);
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h" 2
# 48 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h"
extern void kmem_cache_init(void);
extern void kmem_cache_sizes_init(void);
extern kmem_cache_t *kmem_find_general_cachep(size_t, int gfpflags);
extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
void (*)(void *, kmem_cache_t *, unsigned long),
void (*)(void *, kmem_cache_t *, unsigned long));
extern int kmem_cache_destroy(kmem_cache_t *);
extern int kmem_cache_shrink(kmem_cache_t *);
extern void *kmem_cache_alloc(kmem_cache_t *, int);
extern void kmem_cache_free(kmem_cache_t *, void *);
extern void *kmalloc(size_t, int);
extern void kfree(const void *);
extern int kmem_cache_reap(int) __attribute__((regparm(3)));
extern int slabinfo_read_proc(char *page, char **start, off_t off,
int count, int *eof, void *data);
extern int slabinfo_write_proc(struct file *file, const char *buffer,
unsigned long count, void *data);
extern kmem_cache_t *vm_area_cachep;
extern kmem_cache_t *mm_cachep;
extern kmem_cache_t *names_cachep;
extern kmem_cache_t *files_cachep;
extern kmem_cache_t *filp_cachep;
extern kmem_cache_t *dquot_cachep;
extern kmem_cache_t *bh_cachep;
extern kmem_cache_t *fs_cachep;
extern kmem_cache_t *sigact_cachep;
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/scatterlist.h" 1
struct scatterlist {
char * address;
struct page * page;
unsigned int offset;
dma_addr_t dma_address;
unsigned int length;
};
# 32 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/string.h" 1
# 33 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h" 2
# 46 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vmalloc.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vmalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vmalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vmalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgtable.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/vmalloc.h" 2
struct vm_struct {
unsigned long flags;
void * addr;
unsigned long size;
struct vm_struct * next;
};
extern struct vm_struct * get_vm_area (unsigned long size, unsigned long flags);
extern void vfree(void * addr);
extern void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot);
extern long vread(char *buf, char *addr, unsigned long count);
extern void vmfree_area_pages(unsigned long address, unsigned long size);
extern int vmalloc_area_pages(unsigned long address, unsigned long size,
int gfp_mask, pgprot_t prot);
static inline void * vmalloc (unsigned long size)
{
return __vmalloc(size, (0x20 | 0x10 | 0x40 | 0x80 | 0x100) | 0x02, ((pgprot_t) { (((0x001 | 0x002 | 0x040 | 0x020)) | 0x100) } ));
}
static inline void * vmalloc_dma (unsigned long size)
{
return __vmalloc(size, (0x20 | 0x10 | 0x40 | 0x80 | 0x100)|0x01, ((pgprot_t) { (((0x001 | 0x002 | 0x040 | 0x020)) | 0x100) } ));
}
static inline void * vmalloc_32(unsigned long size)
{
return __vmalloc(size, (0x20 | 0x10 | 0x40 | 0x80 | 0x100), ((pgprot_t) { (((0x001 | 0x002 | 0x040 | 0x020)) | 0x100) } ));
}
extern rwlock_t vmlist_lock;
extern struct vm_struct * vmlist;
# 47 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h" 2
# 66 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h"
static inline unsigned long virt_to_phys(volatile void * address)
{
return ((unsigned long)(address)-((unsigned long)(0xC0000000)));
}
static inline void * phys_to_virt(unsigned long address)
{
return ((void *)((unsigned long)(address)+((unsigned long)(0xC0000000))));
}
extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
static inline void * ioremap (unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0);
}
static inline void * ioremap_nocache (unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0x010);
}
extern void iounmap(void *addr);
# 160 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h"
static inline int check_signature(unsigned long io_addr,
const unsigned char *signature, int length)
{
int retval = 0;
do {
if ((*(volatile unsigned char *) ((void *)(io_addr))) != *signature)
goto out;
io_addr++;
signature++;
length--;
} while (length);
retval = 1;
out:
return retval;
}
static inline int isa_check_signature(unsigned long io_addr,
const unsigned char *signature, int length)
{
int retval = 0;
do {
if ((*(volatile unsigned char *) ((void *)(((char *)(((unsigned long)(0xC0000000)))) + (io_addr)))) != *signature)
goto out;
io_addr++;
signature++;
length--;
} while (length);
retval = 1;
out:
return retval;
}
# 285 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h"
static inline unsigned char inb(unsigned short port) { unsigned char _v; __asm__ __volatile__ ("in" "b" " %" "w" "1,%" "" "0" : "=a" (_v) : "Nd" (port) ); return _v; } static inline unsigned char inb_p(unsigned short port) { unsigned char _v; __asm__ __v olatile__ ("in" "b" " %" "w" "1,%" "" "0" "\noutb %%al,$0x80" : "=a" (_v) : "Nd" (port) ); return _v; }
static inline unsigned short inw(unsigned short port) { unsigned short _v; __asm__ __volatile__ ("in" "w" " %" "w" "1,%" "" "0" : "=a" (_v) : "Nd" (port) ); return _v; } static inline unsigned short inw_p(unsigned short port) { unsigned short _v; __asm__ __volatile__ ("in" "w" " %" "w" "1,%" "" "0" "\noutb %%al,$0x80" : "=a" (_v) : "Nd" (port) ); return _v; }
static inline unsigned int inl(unsigned short port) { unsigned int _v; __asm__ __volatile__ ("in" "l" " %" "w" "1,%" "" "0" : "=a" (_v) : "Nd" (port) ); return _v; } static inline unsigned int inl_p(unsigned short port) { unsigned int _v; __asm__ __volat ile__ ("in" "l" " %" "w" "1,%" "" "0" "\noutb %%al,$0x80" : "=a" (_v) : "Nd" (port) ); return _v; }
static inline void outb(unsigned char value, unsigned short port) { __asm__ __volatile__ ("out" "b" " %" "b" "0,%" "w" "1" : : "a" (value), "Nd" (port)); } static inline void outb_p(unsigned char value, unsigned short port) { __asm__ __volatile__ ("out" "b" " %" "b" "0,%" "w" "1" "\noutb %%al,$0x80" : : "a" (value), "Nd" (port));}
static inline void outw(unsigned short value, unsigned short port) { __asm__ __volatile__ ("out" "w" " %" "w" "0,%" "w" "1" : : "a" (value), "Nd" (port)); } static inline void outw_p(unsigned short value, unsigned short port) { __asm__ __volatile__ ("out " "w" " %" "w" "0,%" "w" "1" "\noutb %%al,$0x80" : : "a" (value), "Nd" (port));}
static inline void outl(unsigned int value, unsigned short port) { __asm__ __volatile__ ("out" "l" " %" "0,%" "w" "1" : : "a" (value), "Nd" (port)); } static inline void outl_p(unsigned int value, unsigned short port) { __asm__ __volatile__ ("out" "l" " %" "0,%" "w" "1" "\noutb %%al,$0x80" : : "a" (value), "Nd" (port));}
static inline void insb(unsigned short port, void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; ins" "b" : "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
static inline void insw(unsigned short port, void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; ins" "w" : "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
static inline void insl(unsigned short port, void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; ins" "l" : "=D" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
static inline void outsb(unsigned short port, const void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; outs" "b" : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
static inline void outsw(unsigned short port, const void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; outs" "w" : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
static inline void outsl(unsigned short port, const void * addr, unsigned long count) { __asm__ __volatile__ ("rep ; outs" "l" : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }
# 34 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h" 2
struct pci_dev;
# 50 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
dma_addr_t *dma_handle);
# 61 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,
void *vaddr, dma_addr_t dma_handle);
static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
size_t size, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
return virt_to_phys(ptr);
}
# 85 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
static inline void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
size_t size, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
}
static inline dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page,
unsigned long offset, size_t size, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
return (page - mem_map) * (1UL << 12) + offset;
}
static inline void pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address,
size_t size, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
}
# 129 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
int nents, int direction)
{
int i;
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
for (i = 0; i < nents; i++ ) {
if (sg[i].address && sg[i].page)
__asm__ __volatile__(".byte 0x0f,0x0b");
else if (!sg[i].address && !sg[i].page)
__asm__ __volatile__(".byte 0x0f,0x0b");
if (sg[i].address)
sg[i].dma_address = virt_to_phys(sg[i].address);
else
sg[i].dma_address = ((sg[i].page - mem_map) << 12) + sg[i].offset;
}
return nents;
}
static inline void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
int nents, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
}
# 176 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
static inline void pci_dma_sync_single(struct pci_dev *hwdev,
dma_addr_t dma_handle,
size_t size, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
}
static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
struct scatterlist *sg,
int nelems, int direction)
{
if (direction == 3)
__asm__ __volatile__(".byte 0x0f,0x0b");
}
static inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask)
{
if(mask < 0x00ffffff)
return 0;
return 1;
}
static __inline__ dma64_addr_t
pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page, unsigned long offset, int direction)
{
return ((dma64_addr_t) ((page - mem_map) << 12) +
(dma64_addr_t) offset);
}
static __inline__ struct page *
pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr)
{
unsigned long poff = (dma_addr >> 12);
return mem_map + poff;
}
static __inline__ unsigned long
pci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr)
{
return (dma_addr & ~(~((1UL << 12)-1)));
}
static __inline__ void
pci_dac_dma_sync_single(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction)
{
}
# 257 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pci.h"
static inline int pci_controller_num(struct pci_dev *dev)
{
return 0;
}
extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
enum pci_mmap_state mmap_state, int write_combine);
# 606 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h" 2
# 671 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
static inline int pci_module_init(struct pci_driver *drv)
{
int rc = pci_register_driver (drv);
if (rc > 0)
return 0;
if (rc == 0)
return 0;
pci_unregister_driver (drv);
return rc;
}
# 716 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
static inline void *pci_get_drvdata (struct pci_dev *pdev)
{
return pdev->driver_data;
}
static inline void pci_set_drvdata (struct pci_dev *pdev, void *data)
{
pdev->driver_data = data;
}
# 733 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/pci.h"
struct pci_fixup {
int pass;
u16 vendor, device;
void (*hook)(struct pci_dev *dev);
};
extern struct pci_fixup pcibios_fixups[];
void pci_fixup_device(int pass, struct pci_dev *dev);
extern int pci_pci_problems;
# 149 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/init.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/init.h" 2
# 48 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/init.h"
typedef int (*initcall_t)(void);
typedef void (*exitcall_t)(void);
extern initcall_t __initcall_start, __initcall_end;
# 61 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/init.h"
struct kernel_param {
const char *str;
int (*setup_func)(char *);
};
extern struct kernel_param __setup_start, __setup_end;
# 150 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ioport.h" 1
# 151 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 1
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 23 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/socket.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h" 2
# 58 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h"
struct ifmap
{
unsigned long mem_start;
unsigned long mem_end;
unsigned short base_addr;
unsigned char irq;
unsigned char dma;
unsigned char port;
};
# 76 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h"
struct ifreq
{
union
{
char ifrn_name[16];
} ifr_ifrn;
union {
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
struct sockaddr ifru_netmask;
struct sockaddr ifru_hwaddr;
short ifru_flags;
int ifru_ivalue;
int ifru_mtu;
struct ifmap ifru_map;
char ifru_slave[16];
char ifru_newname[16];
char * ifru_data;
} ifr_ifru;
};
# 125 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if.h"
struct ifconf
{
int ifc_len;
union
{
char * ifcu_buf;
struct ifreq *ifcu_req;
} ifc_ifcu;
};
# 29 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_ether.h" 1
# 92 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_ether.h"
struct ethhdr
{
unsigned char h_dest[6];
unsigned char h_source[6];
unsigned short h_proto;
};
# 30 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_packet.h" 1
struct sockaddr_pkt
{
unsigned short spkt_family;
unsigned char spkt_device[14];
unsigned short spkt_protocol;
};
struct sockaddr_ll
{
unsigned short sll_family;
unsigned short sll_protocol;
int sll_ifindex;
unsigned short sll_hatype;
unsigned char sll_pkttype;
unsigned char sll_halen;
unsigned char sll_addr[8];
};
# 43 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_packet.h"
struct tpacket_stats
{
unsigned int tp_packets;
unsigned int tp_drops;
};
struct tpacket_hdr
{
unsigned long tp_status;
unsigned int tp_len;
unsigned int tp_snaplen;
unsigned short tp_mac;
unsigned short tp_net;
unsigned int tp_sec;
unsigned int tp_usec;
};
# 82 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_packet.h"
struct tpacket_req
{
unsigned int tp_block_size;
unsigned int tp_block_nr;
unsigned int tp_frame_size;
unsigned int tp_frame_nr;
};
struct packet_mreq
{
int mr_ifindex;
unsigned short mr_type;
unsigned short mr_alen;
unsigned char mr_address[8];
};
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 33 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/cache.h" 1
# 34 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/byteorder.h" 1
# 35 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 38 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
struct divert_blk;
# 96 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
struct net_device_stats
{
unsigned long rx_packets;
unsigned long tx_packets;
unsigned long rx_bytes;
unsigned long tx_bytes;
unsigned long rx_errors;
unsigned long tx_errors;
unsigned long rx_dropped;
unsigned long tx_dropped;
unsigned long multicast;
unsigned long collisions;
unsigned long rx_length_errors;
unsigned long rx_over_errors;
unsigned long rx_crc_errors;
unsigned long rx_frame_errors;
unsigned long rx_fifo_errors;
unsigned long rx_missed_errors;
unsigned long tx_aborted_errors;
unsigned long tx_carrier_errors;
unsigned long tx_fifo_errors;
unsigned long tx_heartbeat_errors;
unsigned long tx_window_errors;
unsigned long rx_compressed;
unsigned long tx_compressed;
};
enum {
IF_PORT_UNKNOWN = 0,
IF_PORT_10BASE2,
IF_PORT_10BASET,
IF_PORT_AUI,
IF_PORT_100BASET,
IF_PORT_100BASETX,
IF_PORT_100BASEFX
};
extern const char *if_port_text[];
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 146 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 1
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/time.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 22 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 24 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/types.h" 1
# 25 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 26 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mm.h" 1
# 27 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/highmem.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/highmem.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/processor.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/fixmap.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h" 2
# 51 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h"
static __inline__ pgd_t *get_pgd_slow(void)
{
pgd_t *pgd = (pgd_t *)__get_free_pages(((0x20 | 0x10 | 0x40 | 0x80 | 0x100)),0);
if (pgd) {
(__builtin_constant_p(0) ? (__builtin_constant_p((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t))) ? __constant_c_and_count_memset(((pgd)),((0x01010101UL*(unsigned char)(0))),((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t)))) : __constant_c_memset(((pgd)),((0x01010101UL*(unsigned char)(0))),((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t))))) : (__builtin_constant_p((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t))) ? __memset_g eneric((((pgd))),(((0))),(((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t))))) : __memset_generic(((pgd)),((0)),((((((unsigned long)(0xC0000000)))/(1UL << 22)) * sizeof(pgd_t))))));
(__builtin_constant_p((1024 - ((((unsigned long)(0xC0000000)))/(1UL << 22))) * sizeof(pgd_t)) ? __constant_memcpy3d((pgd + ((((unsigned long)(0xC0000000)))/(1UL << 22))),(swapper_pg_dir + ((((unsigned long)(0xC0000000)))/(1UL << 22))),((1 024 - ((((unsigned long)(0xC0000000)))/(1UL << 22))) * sizeof(pgd_t))) : __memcpy3d((pgd + ((((unsigned long)(0xC0000000)))/(1UL << 22))),(swapper_pg_dir + ((((unsigned long)(0xC0000000)))/(1UL << 22))),((1024 - ((((unsigned long)(0xC0000000)))/(1UL << 2 2))) * sizeof(pgd_t))));
}
return pgd;
}
static __inline__ pgd_t *get_pgd_fast(void)
{
unsigned long *ret;
if ((ret = (boot_cpu_data.pgd_quick)) != ((void *)0)) {
(boot_cpu_data.pgd_quick) = (unsigned long *)(*ret);
ret[0] = 0;
(boot_cpu_data.pgtable_cache_sz)--;
} else
ret = (unsigned long *)get_pgd_slow();
return (pgd_t *)ret;
}
static __inline__ void free_pgd_fast(pgd_t *pgd)
{
*(unsigned long *)pgd = (unsigned long) (boot_cpu_data.pgd_quick);
(boot_cpu_data.pgd_quick) = (unsigned long *) pgd;
(boot_cpu_data.pgtable_cache_sz)++;
}
static __inline__ void free_pgd_slow(pgd_t *pgd)
{
free_pages(((unsigned long)pgd),0);
}
static inline pte_t *pte_alloc_one(struct mm_struct *mm, unsigned long address)
{
pte_t *pte;
pte = (pte_t *) __get_free_pages(((0x20 | 0x10 | 0x40 | 0x80 | 0x100)),0);
if (pte)
mmx_clear_page((void *)(pte));
return pte;
}
static inline pte_t *pte_alloc_one_fast(struct mm_struct *mm, unsigned long address)
{
unsigned long *ret;
if ((ret = (unsigned long *)(boot_cpu_data.pte_quick)) != ((void *)0)) {
(boot_cpu_data.pte_quick) = (unsigned long *)(*ret);
ret[0] = ret[1];
(boot_cpu_data.pgtable_cache_sz)--;
}
return (pte_t *)ret;
}
static __inline__ void pte_free_fast(pte_t *pte)
{
*(unsigned long *)pte = (unsigned long) (boot_cpu_data.pte_quick);
(boot_cpu_data.pte_quick) = (unsigned long *) pte;
(boot_cpu_data.pgtable_cache_sz)++;
}
static __inline__ void pte_free_slow(pte_t *pte)
{
free_pages(((unsigned long)pte),0);
}
# 153 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h"
extern int do_check_pgt_cache(int, int);
# 175 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h"
static inline void flush_tlb_mm(struct mm_struct *mm)
{
if (mm == get_current()->active_mm)
do { unsigned int tmpreg; __asm__ __volatile__( "movl %%cr3, %0; # flush TLB \n" "movl %0, %%cr3; \n" : "=r" (tmpreg) :: "memory"); } while (0);
}
static inline void flush_tlb_page(struct vm_area_struct *vma,
unsigned long addr)
{
if (vma->vm_mm == get_current()->active_mm)
__asm__ __volatile__("invlpg %0": :"m" (*(char *) addr));
}
static inline void flush_tlb_range(struct mm_struct *mm,
unsigned long start, unsigned long end)
{
if (mm == get_current()->active_mm)
do { unsigned int tmpreg; __asm__ __volatile__( "movl %%cr3, %0; # flush TLB \n" "movl %0, %%cr3; \n" : "=r" (tmpreg) :: "memory"); } while (0);
}
# 227 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/pgalloc.h"
static inline void flush_tlb_pgtables(struct mm_struct *mm,
unsigned long start, unsigned long end)
{
}
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/highmem.h" 2
# 31 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/highmem.h"
static inline unsigned int nr_free_highpages(void) { return 0; }
static inline void *kmap(struct page *page) { return ((page)->virtual); }
# 46 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/highmem.h"
static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
{
void *addr = kmap(page);
mmx_clear_page((void *)(addr));
do { } while (0);
}
static inline void clear_highpage(struct page *page)
{
mmx_clear_page((void *)(kmap(page)));
do { } while (0);
}
static inline void memclear_highpage(struct page *page, unsigned int offset, unsigned int size)
{
char *kaddr;
if (offset + size > (1UL << 12))
__asm__ __volatile__(".byte 0x0f,0x0b");
kaddr = kmap(page);
(__builtin_constant_p(0) ? (__builtin_constant_p((size)) ? __constant_c_and_count_memset(((kaddr + offset)),((0x01010101UL*(unsigned char)(0))),((size))) : __constant_c_memset(((kaddr + offset)),((0x01010101UL*(unsigned char)(0))),((size)))) : (_ _builtin_constant_p((size)) ? __memset_generic((((kaddr + offset))),(((0))),(((size)))) : __memset_generic(((kaddr + offset)),((0)),((size)))));
do { } while (0);
}
static inline void memclear_highpage_flush(struct page *page, unsigned int offset, unsigned int size)
{
char *kaddr;
if (offset + size > (1UL << 12))
__asm__ __volatile__(".byte 0x0f,0x0b");
kaddr = kmap(page);
(__builtin_constant_p(0) ? (__builtin_constant_p((size)) ? __constant_c_and_count_memset(((kaddr + offset)),((0x01010101UL*(unsigned char)(0))),((size))) : __constant_c_memset(((kaddr + offset)),((0x01010101UL*(unsigned char)(0))),((size)))) : (_ _builtin_constant_p((size)) ? __memset_generic((((kaddr + offset))),(((0))),(((size)))) : __memset_generic(((kaddr + offset)),((0)),((size)))));
do { } while (0);
do { } while (0);
}
static inline void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr)
{
char *vfrom, *vto;
vfrom = kmap(from);
vto = kmap(to);
mmx_copy_page(vto,vfrom);
do { } while (0);
do { } while (0);
}
static inline void copy_highpage(struct page *to, struct page *from)
{
char *vfrom, *vto;
vfrom = kmap(from);
vto = kmap(to);
mmx_copy_page(vto,vfrom);
do { } while (0);
do { } while (0);
}
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 95 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
struct sk_buff_head {
struct sk_buff * next;
struct sk_buff * prev;
__u32 qlen;
spinlock_t lock;
};
struct sk_buff;
typedef struct skb_frag_struct skb_frag_t;
struct skb_frag_struct
{
struct page *page;
__u16 page_offset;
__u16 size;
};
struct skb_shared_info {
atomic_t dataref;
unsigned int nr_frags;
struct sk_buff *frag_list;
skb_frag_t frags[6];
};
struct sk_buff {
struct sk_buff * next;
struct sk_buff * prev;
struct sk_buff_head * list;
struct sock *sk;
struct timeval stamp;
struct net_device *dev;
union
{
struct tcphdr *th;
struct udphdr *uh;
struct icmphdr *icmph;
struct igmphdr *igmph;
struct iphdr *ipiph;
struct spxhdr *spxh;
unsigned char *raw;
} h;
union
{
struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
struct ipxhdr *ipxh;
unsigned char *raw;
} nh;
union
{
struct ethhdr *ethernet;
unsigned char *raw;
} mac;
struct dst_entry *dst;
char cb[48];
unsigned int len;
unsigned int data_len;
unsigned int csum;
unsigned char __unused,
cloned,
pkt_type,
ip_summed;
__u32 priority;
atomic_t users;
unsigned short protocol;
unsigned short security;
unsigned int truesize;
unsigned char *head;
unsigned char *data;
unsigned char *tail;
unsigned char *end;
void (*destructor)(struct sk_buff *);
# 216 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
};
# 225 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/slab.h" 1
# 226 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/system.h" 1
# 228 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h" 2
extern void __kfree_skb(struct sk_buff *skb);
extern struct sk_buff * alloc_skb(unsigned int size, int priority);
extern void kfree_skbmem(struct sk_buff *skb);
extern struct sk_buff * skb_clone(struct sk_buff *skb, int priority);
extern struct sk_buff * skb_copy(const struct sk_buff *skb, int priority);
extern struct sk_buff * pskb_copy(struct sk_buff *skb, int gfp_mask);
extern int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, int gfp_mask);
extern struct sk_buff * skb_realloc_headroom(struct sk_buff *skb, unsigned int headroom);
extern struct sk_buff * skb_copy_expand(const struct sk_buff *skb,
int newheadroom,
int newtailroom,
int priority);
extern void skb_over_panic(struct sk_buff *skb, int len, void *here);
extern void skb_under_panic(struct sk_buff *skb, int len, void *here);
# 255 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int skb_queue_empty(struct sk_buff_head *list)
{
return (list->next == (struct sk_buff *) list);
}
# 268 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_get(struct sk_buff *skb)
{
atomic_inc(&skb->users);
return skb;
}
# 287 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void kfree_skb(struct sk_buff *skb)
{
if (((&skb->users)->counter) == 1 || atomic_dec_and_test(&skb->users))
__kfree_skb(skb);
}
static inline void kfree_skb_fast(struct sk_buff *skb)
{
if (((&skb->users)->counter) == 1 || atomic_dec_and_test(&skb->users))
kfree_skbmem(skb);
}
# 309 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int skb_cloned(struct sk_buff *skb)
{
return skb->cloned && ((&((struct skb_shared_info *)((skb)->end))->dataref)->counter) != 1;
}
# 322 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int skb_shared(struct sk_buff *skb)
{
return (((&skb->users)->counter) != 1);
}
# 341 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_share_check(struct sk_buff *skb, int pri)
{
if (skb_shared(skb)) {
struct sk_buff *nskb;
nskb = skb_clone(skb, pri);
kfree_skb(skb);
return nskb;
}
return skb;
}
# 374 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_unshare(struct sk_buff *skb, int pri)
{
struct sk_buff *nskb;
if(!skb_cloned(skb))
return skb;
nskb=skb_copy(skb, pri);
kfree_skb(skb);
return nskb;
}
# 398 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_peek(struct sk_buff_head *list_)
{
struct sk_buff *list = ((struct sk_buff *)list_)->next;
if (list == (struct sk_buff *)list_)
list = ((void *)0);
return list;
}
# 420 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_peek_tail(struct sk_buff_head *list_)
{
struct sk_buff *list = ((struct sk_buff *)list_)->prev;
if (list == (struct sk_buff *)list_)
list = ((void *)0);
return list;
}
# 435 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline __u32 skb_queue_len(struct sk_buff_head *list_)
{
return(list_->qlen);
}
static inline void skb_queue_head_init(struct sk_buff_head *list)
{
do { } while(0);
list->prev = (struct sk_buff *)list;
list->next = (struct sk_buff *)list;
list->qlen = 0;
}
# 466 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)
{
struct sk_buff *prev, *next;
newsk->list = list;
list->qlen++;
prev = (struct sk_buff *)list;
next = prev->next;
newsk->next = next;
newsk->prev = prev;
next->prev = newsk;
prev->next = newsk;
}
# 493 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk)
{
unsigned long flags;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&list->lock); } while (0);
__skb_queue_head(list, newsk);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
# 514 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)
{
struct sk_buff *prev, *next;
newsk->list = list;
list->qlen++;
next = (struct sk_buff *)list;
prev = next->prev;
newsk->next = next;
newsk->prev = prev;
next->prev = newsk;
prev->next = newsk;
}
# 540 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)
{
unsigned long flags;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&list->lock); } while (0);
__skb_queue_tail(list, newsk);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
# 558 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
{
struct sk_buff *next, *prev, *result;
prev = (struct sk_buff *) list;
next = prev->next;
result = ((void *)0);
if (next != prev) {
result = next;
next = next->next;
list->qlen--;
next->prev = prev;
prev->next = next;
result->next = ((void *)0);
result->prev = ((void *)0);
result->list = ((void *)0);
}
return result;
}
# 587 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_dequeue(struct sk_buff_head *list)
{
long flags;
struct sk_buff *result;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&list->lock); } while (0);
result = __skb_dequeue(list);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
return result;
}
static inline void __skb_insert(struct sk_buff *newsk,
struct sk_buff * prev, struct sk_buff *next,
struct sk_buff_head * list)
{
newsk->next = next;
newsk->prev = prev;
next->prev = newsk;
prev->next = newsk;
newsk->list = list;
list->qlen++;
}
# 624 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_insert(struct sk_buff *old, struct sk_buff *newsk)
{
unsigned long flags;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&old->list->lock); } while (0);
__skb_insert(newsk, old->prev, old, old->list);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
static inline void __skb_append(struct sk_buff *old, struct sk_buff *newsk)
{
__skb_insert(newsk, old, old->next, old->list);
}
# 653 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_append(struct sk_buff *old, struct sk_buff *newsk)
{
unsigned long flags;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&old->list->lock); } while (0);
__skb_append(old, newsk);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
{
struct sk_buff * next, * prev;
list->qlen--;
next = skb->next;
prev = skb->prev;
skb->next = ((void *)0);
skb->prev = ((void *)0);
skb->list = ((void *)0);
next->prev = prev;
prev->next = next;
}
# 694 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_unlink(struct sk_buff *skb)
{
struct sk_buff_head *list = skb->list;
if(list) {
unsigned long flags;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&list->lock); } while (0);
if(skb->list == list)
__skb_unlink(skb, skb->list);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
}
# 719 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list)
{
struct sk_buff *skb = skb_peek_tail(list);
if (skb)
__skb_unlink(skb, list);
return skb;
}
# 736 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list)
{
long flags;
struct sk_buff *result;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&list->lock); } while (0);
result = __skb_dequeue_tail(list);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
return result;
}
static inline int skb_is_nonlinear(const struct sk_buff *skb)
{
return skb->data_len;
}
static inline int skb_headlen(const struct sk_buff *skb)
{
return skb->len - skb->data_len;
}
# 765 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
{
unsigned char *tmp=skb->tail;
do { if (skb_is_nonlinear(skb)) __asm__ __volatile__(".byte 0x0f,0x0b"); } while (0);
skb->tail+=len;
skb->len+=len;
return tmp;
}
# 784 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
{
unsigned char *tmp=skb->tail;
do { if (skb_is_nonlinear(skb)) __asm__ __volatile__(".byte 0x0f,0x0b"); } while (0);
skb->tail+=len;
skb->len+=len;
if(skb->tail>skb->end) {
skb_over_panic(skb, len, ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; }));
}
return tmp;
}
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
{
skb->data-=len;
skb->len+=len;
return skb->data;
}
# 813 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
{
skb->data-=len;
skb->len+=len;
if(skb->data<skb->head) {
skb_under_panic(skb, len, ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; }));
}
return skb->data;
}
static inline char *__skb_pull(struct sk_buff *skb, unsigned int len)
{
skb->len-=len;
if (skb->len < skb->data_len)
__asm__ __volatile__(".byte 0x0f,0x0b");
return skb->data+=len;
}
# 842 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline unsigned char * skb_pull(struct sk_buff *skb, unsigned int len)
{
if (len > skb->len)
return ((void *)0);
return __skb_pull(skb,len);
}
extern unsigned char * __pskb_pull_tail(struct sk_buff *skb, int delta);
static inline char *__pskb_pull(struct sk_buff *skb, unsigned int len)
{
if (len > skb_headlen(skb) &&
__pskb_pull_tail(skb, len-skb_headlen(skb)) == ((void *)0))
return ((void *)0);
skb->len -= len;
return skb->data += len;
}
static inline unsigned char * pskb_pull(struct sk_buff *skb, unsigned int len)
{
if (len > skb->len)
return ((void *)0);
return __pskb_pull(skb,len);
}
static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len)
{
if (len <= skb_headlen(skb))
return 1;
if (len > skb->len)
return 0;
return (__pskb_pull_tail(skb, len-skb_headlen(skb)) != ((void *)0));
}
# 883 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int skb_headroom(const struct sk_buff *skb)
{
return skb->data-skb->head;
}
# 895 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int skb_tailroom(const struct sk_buff *skb)
{
return skb_is_nonlinear(skb) ? 0 : skb->end-skb->tail;
}
# 909 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_reserve(struct sk_buff *skb, unsigned int len)
{
skb->data+=len;
skb->tail+=len;
}
extern int ___pskb_trim(struct sk_buff *skb, unsigned int len, int realloc);
static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
{
if (!skb->data_len) {
skb->len = len;
skb->tail = skb->data+len;
} else {
___pskb_trim(skb, len, 0);
}
}
# 936 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_trim(struct sk_buff *skb, unsigned int len)
{
if (skb->len > len) {
__skb_trim(skb, len);
}
}
static inline int __pskb_trim(struct sk_buff *skb, unsigned int len)
{
if (!skb->data_len) {
skb->len = len;
skb->tail = skb->data+len;
return 0;
} else {
return ___pskb_trim(skb, len, 1);
}
}
static inline int pskb_trim(struct sk_buff *skb, unsigned int len)
{
if (len < skb->len)
return __pskb_trim(skb, len);
return 0;
}
# 972 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_orphan(struct sk_buff *skb)
{
if (skb->destructor)
skb->destructor(skb);
skb->destructor = ((void *)0);
skb->sk = ((void *)0);
}
# 990 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void skb_queue_purge(struct sk_buff_head *list)
{
struct sk_buff *skb;
while ((skb=skb_dequeue(list))!=((void *)0))
kfree_skb(skb);
}
# 1007 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline void __skb_queue_purge(struct sk_buff_head *list)
{
struct sk_buff *skb;
while ((skb=__skb_dequeue(list))!=((void *)0))
kfree_skb(skb);
}
# 1027 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *__dev_alloc_skb(unsigned int length,
int gfp_mask)
{
struct sk_buff *skb;
skb = alloc_skb(length+16, gfp_mask);
if (skb)
skb_reserve(skb,16);
return skb;
}
# 1051 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline struct sk_buff *dev_alloc_skb(unsigned int length)
{
return __dev_alloc_skb(length, (0x20));
}
# 1069 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
static inline int
skb_cow(struct sk_buff *skb, unsigned int headroom)
{
int delta = (headroom > 16 ? headroom : 16) - skb_headroom(skb);
if (delta < 0)
delta = 0;
if (delta || skb_cloned(skb))
return pskb_expand_head(skb, (delta+15)&~15, 0, (0x20));
return 0;
}
# 1089 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/skbuff.h"
int skb_linearize(struct sk_buff *skb, int gfp);
static inline void *kmap_skb_frag(const skb_frag_t *frag)
{
return kmap(frag->page);
}
static inline void kunmap_skb_frag(void *vaddr)
{
do { } while (0);
}
extern struct sk_buff * skb_recv_datagram(struct sock *sk,unsigned flags,int noblock, int *err);
extern unsigned int datagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait);
extern int skb_copy_datagram(const struct sk_buff *from, int offset, char *to,int size);
extern int skb_copy_datagram_iovec(const struct sk_buff *from, int offset, struct iovec *to,int size);
extern int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, u8 *to, int len, unsigned int *csump);
extern int skb_copy_and_csum_datagram_iovec(const struct sk_buff *skb, int hlen, struct iovec *iov);
extern void skb_free_datagram(struct sock * sk, struct sk_buff *skb);
extern unsigned int skb_checksum(const struct sk_buff *skb, int offset, int len, unsigned int csum);
extern int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
extern unsigned int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, unsigned int csum);
extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
extern void skb_init(void);
extern void skb_add_mtu(int mtu);
# 147 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
struct neighbour;
struct neigh_parms;
struct sk_buff;
struct netif_rx_stats
{
unsigned total;
unsigned dropped;
unsigned time_squeeze;
unsigned throttled;
unsigned fastroute_hit;
unsigned fastroute_success;
unsigned fastroute_defer;
unsigned fastroute_deferred_out;
unsigned fastroute_latency_reduction;
unsigned cpu_collision;
} __attribute__ ((__aligned__((1 << ((6))))));
extern struct netif_rx_stats netdev_rx_stat[];
struct dev_mc_list
{
struct dev_mc_list *next;
__u8 dmi_addr[8];
unsigned char dmi_addrlen;
int dmi_users;
int dmi_gusers;
};
struct hh_cache
{
struct hh_cache *hh_next;
atomic_t hh_refcnt;
unsigned short hh_type;
int hh_len;
int (*hh_output)(struct sk_buff *skb);
rwlock_t hh_lock;
unsigned long hh_data[16/sizeof(unsigned long)];
};
enum netdev_state_t
{
__LINK_STATE_XOFF=0,
__LINK_STATE_START,
__LINK_STATE_PRESENT,
__LINK_STATE_SCHED,
__LINK_STATE_NOCARRIER
};
struct netdev_boot_setup {
char name[16];
struct ifmap map;
};
# 230 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
struct net_device
{
char name[16];
unsigned long rmem_end;
unsigned long rmem_start;
unsigned long mem_end;
unsigned long mem_start;
unsigned long base_addr;
unsigned int irq;
unsigned char if_port;
unsigned char dma;
unsigned long state;
struct net_device *next;
int (*init)(struct net_device *dev);
struct net_device *next_sched;
int ifindex;
int iflink;
struct net_device_stats* (*get_stats)(struct net_device *dev);
struct iw_statistics* (*get_wireless_stats)(struct net_device *dev);
# 285 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
unsigned long trans_start;
unsigned long last_rx;
unsigned short flags;
unsigned short gflags;
unsigned mtu;
unsigned short type;
unsigned short hard_header_len;
void *priv;
struct net_device *master;
unsigned char broadcast[8];
unsigned char dev_addr[8];
unsigned char addr_len;
struct dev_mc_list *mc_list;
int mc_count;
int promiscuity;
int allmulti;
int watchdog_timeo;
struct timer_list watchdog_timer;
void *atalk_ptr;
void *ip_ptr;
void *dn_ptr;
void *ip6_ptr;
void *ec_ptr;
struct Qdisc *qdisc;
struct Qdisc *qdisc_sleeping;
struct Qdisc *qdisc_list;
struct Qdisc *qdisc_ingress;
unsigned long tx_queue_len;
spinlock_t xmit_lock;
int xmit_lock_owner;
spinlock_t queue_lock;
atomic_t refcnt;
int deadbeaf;
int features;
# 350 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
void (*uninit)(struct net_device *dev);
void (*destructor)(struct net_device *dev);
int (*open)(struct net_device *dev);
int (*stop)(struct net_device *dev);
int (*hard_start_xmit) (struct sk_buff *skb,
struct net_device *dev);
int (*hard_header) (struct sk_buff *skb,
struct net_device *dev,
unsigned short type,
void *daddr,
void *saddr,
unsigned len);
int (*rebuild_header)(struct sk_buff *skb);
void (*set_multicast_list)(struct net_device *dev);
int (*set_mac_address)(struct net_device *dev,
void *addr);
int (*do_ioctl)(struct net_device *dev,
struct ifreq *ifr, int cmd);
int (*set_config)(struct net_device *dev,
struct ifmap *map);
int (*hard_header_cache)(struct neighbour *neigh,
struct hh_cache *hh);
void (*header_cache_update)(struct hh_cache *hh,
struct net_device *dev,
unsigned char * haddr);
int (*change_mtu)(struct net_device *dev, int new_mtu);
void (*tx_timeout) (struct net_device *dev);
int (*hard_header_parse)(struct sk_buff *skb,
unsigned char *haddr);
int (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
int (*accept_fastpath)(struct net_device *, struct dst_entry*);
struct module *owner;
struct net_bridge_port *br_port;
# 410 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
};
struct packet_type
{
unsigned short type;
struct net_device *dev;
int (*func) (struct sk_buff *, struct net_device *,
struct packet_type *);
void *data;
struct packet_type *next;
};
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/kernel.h" 1
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/smp.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/bitops.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/threads.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/cache.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/spinlock.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/irq.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/irq.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 14 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/irq.h" 2
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 20 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/ptrace.h" 1
# 21 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h" 2
# 39 "/usr/src/linux-2.4.13-gcc-3.0.2/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 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq.h"
typedef struct {
unsigned int status;
hw_irq_controller *handler;
struct irqaction *action;
unsigned int depth;
spinlock_t lock;
} __attribute__((__aligned__((1 << ((6)))))) irq_desc_t;
extern irq_desc_t irq_desc [224];
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h" 1
# 15 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 17 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/irq.h" 1
# 18 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h" 2
# 61 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h"
extern int irq_vector[224];
# 71 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h"
extern void mask_irq(unsigned int irq);
extern void unmask_irq(unsigned int irq);
extern void disable_8259A_irq(unsigned int irq);
extern void enable_8259A_irq(unsigned int irq);
extern int i8259A_irq_pending(unsigned int irq);
extern void make_8259A_irq(unsigned int irq);
extern void init_8259A(int aeoi);
extern void send_IPI_self(int vector) __attribute__((regparm(3)));
extern void init_VISWS_APIC_irqs(void);
extern void setup_IO_APIC(void);
extern void disable_IO_APIC(void);
extern void print_IO_APIC(void);
extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn);
extern void send_IPI(int dest, int vector);
extern unsigned long io_apic_irqs;
extern atomic_t irq_err_count;
extern atomic_t irq_mis_count;
extern char _stext, _etext;
# 183 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hw_irq.h"
extern unsigned long prof_cpu_mask;
extern unsigned int * prof_buffer;
extern unsigned long prof_len;
extern unsigned long prof_shift;
static inline void x86_do_profile (unsigned long eip)
{
if (!prof_buffer)
return;
if (!((1<<0) & prof_cpu_mask))
return;
eip -= (unsigned long) &_stext;
eip >>= prof_shift;
if (eip > prof_len-1)
eip = prof_len-1;
atomic_inc((atomic_t *)&prof_buffer[eip]);
}
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
# 70 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 7 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 2
typedef struct {
unsigned int __softirq_pending;
unsigned int __local_irq_count;
unsigned int __local_bh_count;
unsigned int __syscall_count;
struct task_struct * __ksoftirqd_task;
unsigned int __nmi_count;
} __attribute__((__aligned__((1 << ((6)))))) irq_cpustat_t;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq_cpustat.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq_cpustat.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/irq_cpustat.h" 2
extern irq_cpustat_t irq_stat[];
# 19 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 2
# 46 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/softirq.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/atomic.h" 1
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/softirq.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/hardirq.h" 1
# 6 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/softirq.h" 2
# 47 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h" 2
# 56 "/usr/src/linux-2.4.13-gcc-3.0.2/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__((regparm(0))) 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) __attribute__((regparm(3)));
extern void raise_softirq(unsigned int nr) __attribute__((regparm(3)));
# 103 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h"
struct tasklet_struct
{
struct tasklet_struct *next;
unsigned long state;
atomic_t count;
void (*func)(unsigned long);
unsigned long data;
};
# 119 "/usr/src/linux-2.4.13-gcc-3.0.2/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[1];
extern struct tasklet_head tasklet_hi_vec[1];
# 155 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/interrupt.h"
extern void __tasklet_schedule(struct tasklet_struct *t) __attribute__((regparm(3)));
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) __attribute__((regparm(3)));
static inline void tasklet_hi_schedule(struct tasklet_struct *t)
{
if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
__tasklet_hi_schedule(t);
}
static inline void tasklet_disable_nosync(struct tasklet_struct *t)
{
atomic_inc(&t->count);
__asm__ __volatile__("": : :"memory");
}
static inline void tasklet_disable(struct tasklet_struct *t)
{
tasklet_disable_nosync(t);
do { } while (0);
__asm__ __volatile__("": : :"memory");
}
static inline void tasklet_enable(struct tasklet_struct *t)
{
__asm__ __volatile__("": : :"memory");
atomic_dec(&t->count);
}
static inline void tasklet_hi_enable(struct tasklet_struct *t)
{
__asm__ __volatile__("": : :"memory");
atomic_dec(&t->count);
}
extern void tasklet_kill(struct tasklet_struct *t);
extern void tasklet_init(struct tasklet_struct *t,
void (*func)(unsigned long), unsigned long data);
# 222 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 263 "/usr/src/linux-2.4.13-gcc-3.0.2/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);
# 425 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/notifier.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/notifier.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/errno.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/notifier.h" 2
struct notifier_block
{
int (*notifier_call)(struct notifier_block *self, unsigned long, void *);
struct notifier_block *next;
int priority;
};
extern int notifier_chain_register(struct notifier_block **list, struct notifier_block *n);
extern int notifier_chain_unregister(struct notifier_block **nl, struct notifier_block *n);
extern int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v);
# 426 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h" 2
extern struct net_device loopback_dev;
extern struct net_device *dev_base;
extern rwlock_t dev_base_lock;
extern int netdev_boot_setup_add(char *name, struct ifmap *map);
extern int netdev_boot_setup_check(struct net_device *dev);
extern struct net_device *dev_getbyhwaddr(unsigned short type, char *hwaddr);
extern void dev_add_pack(struct packet_type *pt);
extern void dev_remove_pack(struct packet_type *pt);
extern int dev_get(const char *name);
extern struct net_device *dev_get_by_name(const char *name);
extern struct net_device *__dev_get_by_name(const char *name);
extern struct net_device *dev_alloc(const char *name, int *err);
extern int dev_alloc_name(struct net_device *dev, const char *name);
extern int dev_open(struct net_device *dev);
extern int dev_close(struct net_device *dev);
extern int dev_queue_xmit(struct sk_buff *skb);
extern int register_netdevice(struct net_device *dev);
extern int unregister_netdevice(struct net_device *dev);
extern int register_netdevice_notifier(struct notifier_block *nb);
extern int unregister_netdevice_notifier(struct notifier_block *nb);
extern int dev_new_index(void);
extern struct net_device *dev_get_by_index(int ifindex);
extern struct net_device *__dev_get_by_index(int ifindex);
extern int dev_restart(struct net_device *dev);
typedef int gifconf_func_t(struct net_device * dev, char * bufptr, int len);
extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
static inline int unregister_gifconf(unsigned int family)
{
return register_gifconf(family, 0);
}
struct softnet_data
{
int throttle;
int cng_level;
int avg_blog;
struct sk_buff_head input_pkt_queue;
struct net_device *output_queue;
struct sk_buff *completion_queue;
} __attribute__((__aligned__((1 << ((6))))));
extern struct softnet_data softnet_data[1];
static inline void __netif_schedule(struct net_device *dev)
{
if (!test_and_set_bit(__LINK_STATE_SCHED, &dev->state)) {
unsigned long flags;
int cpu = 0;
__asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory");
dev->next_sched = softnet_data[cpu].output_queue;
softnet_data[cpu].output_queue = dev;
cpu_raise_softirq(cpu, NET_TX_SOFTIRQ);
__asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc");
}
}
static inline void netif_schedule(struct net_device *dev)
{
if (!(__builtin_constant_p(__LINK_STATE_XOFF) ? constant_test_bit((__LINK_STATE_XOFF),(&dev->state)) : variable_test_bit((__LINK_STATE_XOFF),(&dev->state))))
__netif_schedule(dev);
}
static inline void netif_start_queue(struct net_device *dev)
{
clear_bit(__LINK_STATE_XOFF, &dev->state);
}
static inline void netif_wake_queue(struct net_device *dev)
{
if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
__netif_schedule(dev);
}
static inline void netif_stop_queue(struct net_device *dev)
{
set_bit(__LINK_STATE_XOFF, &dev->state);
}
static inline int netif_queue_stopped(struct net_device *dev)
{
return (__builtin_constant_p(__LINK_STATE_XOFF) ? constant_test_bit((__LINK_STATE_XOFF),(&dev->state)) : variable_test_bit((__LINK_STATE_XOFF),(&dev->state)));
}
static inline int netif_running(struct net_device *dev)
{
return (__builtin_constant_p(__LINK_STATE_START) ? constant_test_bit((__LINK_STATE_START),(&dev->state)) : variable_test_bit((__LINK_STATE_START),(&dev->state)));
}
static inline void dev_kfree_skb_irq(struct sk_buff *skb)
{
if (atomic_dec_and_test(&skb->users)) {
int cpu =0;
unsigned long flags;
__asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory");
skb->next = softnet_data[cpu].completion_queue;
softnet_data[cpu].completion_queue = skb;
cpu_raise_softirq(cpu, NET_TX_SOFTIRQ);
__asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc");
}
}
static inline void dev_kfree_skb_any(struct sk_buff *skb)
{
if ((((void)((0)), irq_stat[0].__local_irq_count) != 0))
dev_kfree_skb_irq(skb);
else
kfree_skb(skb);
}
extern void net_call_rx_atomic(void (*fn)(void));
extern int netif_rx(struct sk_buff *skb);
extern int dev_ioctl(unsigned int cmd, void *);
extern int dev_change_flags(struct net_device *, unsigned);
extern void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
extern void dev_init(void);
extern int netdev_nit;
static inline int netif_rx_ni(struct sk_buff *skb)
{
int err = netif_rx(skb);
if (((void)((0)), irq_stat[0].__softirq_pending))
do_softirq();
return err;
}
static inline void dev_init_buffers(struct net_device *dev)
{
}
extern int netdev_finish_unregister(struct net_device *dev);
static inline void dev_put(struct net_device *dev)
{
if (atomic_dec_and_test(&dev->refcnt))
netdev_finish_unregister(dev);
}
# 597 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
static inline int netif_carrier_ok(struct net_device *dev)
{
return !(__builtin_constant_p(__LINK_STATE_NOCARRIER) ? constant_test_bit((__LINK_STATE_NOCARRIER),(&dev->state)) : variable_test_bit((__LINK_STATE_NOCARRIER),(&dev->state)));
}
extern void __netdev_watchdog_up(struct net_device *dev);
static inline void netif_carrier_on(struct net_device *dev)
{
clear_bit(__LINK_STATE_NOCARRIER, &dev->state);
if (netif_running(dev))
__netdev_watchdog_up(dev);
}
static inline void netif_carrier_off(struct net_device *dev)
{
set_bit(__LINK_STATE_NOCARRIER, &dev->state);
}
static inline int netif_device_present(struct net_device *dev)
{
return (__builtin_constant_p(__LINK_STATE_PRESENT) ? constant_test_bit((__LINK_STATE_PRESENT),(&dev->state)) : variable_test_bit((__LINK_STATE_PRESENT),(&dev->state)));
}
static inline void netif_device_detach(struct net_device *dev)
{
if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
netif_running(dev)) {
netif_stop_queue(dev);
}
}
static inline void netif_device_attach(struct net_device *dev)
{
if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
netif_running(dev)) {
netif_wake_queue(dev);
__netdev_watchdog_up(dev);
}
}
enum {
NETIF_MSG_DRV = 0x0001,
NETIF_MSG_PROBE = 0x0002,
NETIF_MSG_LINK = 0x0004,
NETIF_MSG_TIMER = 0x0008,
NETIF_MSG_IFDOWN = 0x0010,
NETIF_MSG_IFUP = 0x0020,
NETIF_MSG_RX_ERR = 0x0040,
NETIF_MSG_TX_ERR = 0x0080,
NETIF_MSG_TX_QUEUED = 0x0100,
NETIF_MSG_INTR = 0x0200,
NETIF_MSG_TX_DONE = 0x0400,
NETIF_MSG_RX_STATUS = 0x0800,
NETIF_MSG_PKTDATA = 0x1000,
};
# 676 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netdevice.h"
extern void ether_setup(struct net_device *dev);
extern void fddi_setup(struct net_device *dev);
extern void tr_setup(struct net_device *dev);
extern void fc_setup(struct net_device *dev);
extern void fc_freedev(struct net_device *dev);
extern int register_netdev(struct net_device *dev);
extern void unregister_netdev(struct net_device *dev);
extern void dev_mc_upload(struct net_device *dev);
extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
extern void dev_mc_discard(struct net_device *dev);
extern void dev_set_promiscuity(struct net_device *dev, int inc);
extern void dev_set_allmulti(struct net_device *dev, int inc);
extern void netdev_state_change(struct net_device *dev);
extern void dev_load(const char *name);
extern void dev_mcast_init(void);
extern int netdev_register_fc(struct net_device *dev, void (*stimul)(struct net_device *dev));
extern void netdev_unregister_fc(int bit);
extern int netdev_max_backlog;
extern unsigned long netdev_fc_xoff;
extern atomic_t netdev_dropping;
extern int netdev_set_master(struct net_device *dev, struct net_device *master);
extern struct sk_buff * skb_checksum_help(struct sk_buff *skb);
# 152 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/etherdevice.h" 1
# 27 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/etherdevice.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/if_ether.h" 1
# 28 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/etherdevice.h" 2
extern int eth_header(struct sk_buff *skb, struct net_device *dev,
unsigned short type, void *daddr,
void *saddr, unsigned len);
extern int eth_rebuild_header(struct sk_buff *skb);
extern unsigned short eth_type_trans(struct sk_buff *skb, struct net_device *dev);
extern void eth_header_cache_update(struct hh_cache *hh, struct net_device *dev,
unsigned char * haddr);
extern int eth_header_cache(struct neighbour *neigh,
struct hh_cache *hh);
extern int eth_header_parse(struct sk_buff *skb,
unsigned char *haddr);
extern struct net_device *init_etherdev(struct net_device *dev, int sizeof_priv);
extern struct net_device *alloc_etherdev(int sizeof_priv);
static inline void eth_copy_and_sum (struct sk_buff *dest, unsigned char *src, int len, int base)
{
(__builtin_constant_p(len) ? __constant_memcpy3d((dest->data),(src),(len)) : __memcpy3d((dest->data),(src),(len)));
}
# 59 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/etherdevice.h"
static inline int is_valid_ether_addr( u8 *addr )
{
const char zaddr[6] = {0,};
return !(addr[0]&1) && __builtin_memcmp( addr, zaddr, 6);
}
# 153 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netlink.h" 1
# 16 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netlink.h"
struct sockaddr_nl
{
sa_family_t nl_family;
unsigned short nl_pad;
__u32 nl_pid;
__u32 nl_groups;
};
struct nlmsghdr
{
__u32 nlmsg_len;
__u16 nlmsg_type;
__u16 nlmsg_flags;
__u32 nlmsg_seq;
__u32 nlmsg_pid;
};
# 77 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netlink.h"
struct nlmsgerr
{
int error;
struct nlmsghdr msg;
};
struct netlink_skb_parms
{
struct ucred creds;
__u32 pid;
__u32 groups;
__u32 dst_pid;
__u32 dst_groups;
kernel_cap_t eff_cap;
};
extern int netlink_attach(int unit, int (*function)(int,struct sk_buff *skb));
extern void netlink_detach(int unit);
extern int netlink_post(int unit, struct sk_buff *skb);
extern int init_netlink(void);
extern struct sock *netlink_kernel_create(int unit, void (*input)(struct sock *sk, int len));
extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err);
extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock);
extern void netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid,
__u32 group, int allocation);
extern void netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code);
# 120 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/netlink.h"
struct netlink_callback
{
struct sk_buff *skb;
struct nlmsghdr *nlh;
int (*dump)(struct sk_buff * skb, struct netlink_callback *cb);
int (*done)(struct netlink_callback *cb);
int family;
long args[4];
};
static __inline__ struct nlmsghdr *
__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len)
{
struct nlmsghdr *nlh;
int size = ((len)+( ((sizeof(struct nlmsghdr))+4 -1) & ~(4 -1) ));
nlh = (struct nlmsghdr*)skb_put(skb, ( ((size)+4 -1) & ~(4 -1) ));
nlh->nlmsg_type = type;
nlh->nlmsg_len = size;
nlh->nlmsg_flags = 0;
nlh->nlmsg_pid = pid;
nlh->nlmsg_seq = seq;
return nlh;
}
extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
struct nlmsghdr *nlh,
int (*dump)(struct sk_buff *skb, struct netlink_callback*),
int (*done)(struct netlink_callback*));
# 5 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h" 2
# 57 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct rtattr
{
unsigned short rta_len;
unsigned short rta_type;
};
# 83 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct rtmsg
{
unsigned char rtm_family;
unsigned char rtm_dst_len;
unsigned char rtm_src_len;
unsigned char rtm_tos;
unsigned char rtm_table;
unsigned char rtm_protocol;
unsigned char rtm_scope;
unsigned char rtm_type;
unsigned rtm_flags;
};
enum
{
RTN_UNSPEC,
RTN_UNICAST,
RTN_LOCAL,
RTN_BROADCAST,
RTN_ANYCAST,
RTN_MULTICAST,
RTN_BLACKHOLE,
RTN_UNREACHABLE,
RTN_PROHIBIT,
RTN_THROW,
RTN_NAT,
RTN_XRESOLVE,
};
# 155 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
enum rt_scope_t
{
RT_SCOPE_UNIVERSE=0,
RT_SCOPE_SITE=200,
RT_SCOPE_LINK=253,
RT_SCOPE_HOST=254,
RT_SCOPE_NOWHERE=255
};
# 173 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
enum rt_class_t
{
RT_TABLE_UNSPEC=0,
RT_TABLE_DEFAULT=253,
RT_TABLE_MAIN=254,
RT_TABLE_LOCAL=255
};
enum rtattr_type_t
{
RTA_UNSPEC,
RTA_DST,
RTA_SRC,
RTA_IIF,
RTA_OIF,
RTA_GATEWAY,
RTA_PRIORITY,
RTA_PREFSRC,
RTA_METRICS,
RTA_MULTIPATH,
RTA_PROTOINFO,
RTA_FLOW,
RTA_CACHEINFO
};
# 218 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct rtnexthop
{
unsigned short rtnh_len;
unsigned char rtnh_flags;
unsigned char rtnh_hops;
int rtnh_ifindex;
};
# 245 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct rta_cacheinfo
{
__u32 rta_clntref;
__u32 rta_lastuse;
__s32 rta_expires;
__u32 rta_error;
__u32 rta_used;
__u32 rta_id;
__u32 rta_ts;
__u32 rta_tsage;
};
enum
{
RTAX_UNSPEC,
RTAX_LOCK,
RTAX_MTU,
RTAX_WINDOW,
RTAX_RTT,
RTAX_RTTVAR,
RTAX_SSTHRESH,
RTAX_CWND,
RTAX_ADVMSS,
RTAX_REORDERING,
};
# 293 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct ifaddrmsg
{
unsigned char ifa_family;
unsigned char ifa_prefixlen;
unsigned char ifa_flags;
unsigned char ifa_scope;
int ifa_index;
};
enum
{
IFA_UNSPEC,
IFA_ADDRESS,
IFA_LOCAL,
IFA_LABEL,
IFA_BROADCAST,
IFA_ANYCAST,
IFA_CACHEINFO
};
# 323 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct ifa_cacheinfo
{
__s32 ifa_prefered;
__s32 ifa_valid;
};
# 345 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct ndmsg
{
unsigned char ndm_family;
unsigned char ndm_pad1;
unsigned short ndm_pad2;
int ndm_ifindex;
__u16 ndm_state;
__u8 ndm_flags;
__u8 ndm_type;
};
enum
{
NDA_UNSPEC,
NDA_DST,
NDA_LLADDR,
NDA_CACHEINFO
};
# 393 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct nda_cacheinfo
{
__u32 ndm_confirmed;
__u32 ndm_used;
__u32 ndm_updated;
__u32 ndm_refcnt;
};
struct rtgenmsg
{
unsigned char rtgen_family;
};
# 419 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct ifinfomsg
{
unsigned char ifi_family;
unsigned char __ifi_pad;
unsigned short ifi_type;
int ifi_index;
unsigned ifi_flags;
unsigned ifi_change;
};
enum
{
IFLA_UNSPEC,
IFLA_ADDRESS,
IFLA_BROADCAST,
IFLA_IFNAME,
IFLA_MTU,
IFLA_LINK,
IFLA_QDISC,
IFLA_STATS,
IFLA_COST,
IFLA_PRIORITY,
IFLA_MASTER
};
# 486 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
struct tcmsg
{
unsigned char tcm_family;
unsigned char tcm__pad1;
unsigned short tcm__pad2;
int tcm_ifindex;
__u32 tcm_handle;
__u32 tcm_parent;
__u32 tcm_info;
};
enum
{
TCA_UNSPEC,
TCA_KIND,
TCA_OPTIONS,
TCA_STATS,
TCA_XSTATS,
TCA_RATE,
};
# 539 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 540 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h" 2
static __inline__ int rtattr_strcmp(struct rtattr *rta, char *str)
{
int len = strlen(str) + 1;
return len > rta->rta_len || __builtin_memcmp(((void*)(((char*)(rta)) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), str, len);
}
extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len);
# 577 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
extern struct semaphore rtnl_sem;
# 595 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/rtnetlink.h"
extern void rtnl_lock(void);
extern void rtnl_unlock(void);
extern void rtnetlink_init(void);
# 154 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/delay.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/delay.h"
extern unsigned long loops_per_jiffy;
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/delay.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/delay.h"
extern void __bad_udelay(void);
extern void __udelay(unsigned long usecs);
extern void __const_udelay(unsigned long usecs);
extern void __delay(unsigned long loops);
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/delay.h" 2
# 155 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ethtool.h" 1
# 13 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/ethtool.h"
struct ethtool_cmd {
u32 cmd;
u32 supported;
u32 advertising;
u16 speed;
u8 duplex;
u8 port;
u8 phy_address;
u8 transceiver;
u8 autoneg;
u32 maxtxpkt;
u32 maxrxpkt;
u32 reserved[4];
};
struct ethtool_drvinfo {
u32 cmd;
char driver[32];
char version[32];
char fw_version[32];
char bus_info[32];
char reserved1[32];
char reserved2[28];
u32 regdump_len;
};
struct ethtool_wolinfo {
u32 cmd;
u32 supported;
u32 wolopts;
u8 sopass[6];
};
# 156 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h"
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/types.h" 1
# 12 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h" 2
# 105 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h"
struct mii_ioctl_data {
u16 phy_id;
u16 reg_num;
u16 val_in;
u16 val_out;
};
# 127 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h"
static inline unsigned int mii_nway_result (unsigned int negotiated)
{
unsigned int ret;
if (negotiated & 0x0100)
ret = 0x0100;
else if (negotiated & 0x0200)
ret = 0x0200;
else if (negotiated & 0x0080)
ret = 0x0080;
else if (negotiated & 0x0040)
ret = 0x0040;
else
ret = 0x0020;
return ret;
}
# 154 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/mii.h"
static inline unsigned int mii_duplex (unsigned int duplex_lock,
unsigned int negotiated)
{
if (duplex_lock)
return 1;
if (mii_nway_result(negotiated) & (0x0040 | 0x0100))
return 1;
return 0;
}
# 157 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/completion.h" 1
# 158 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/io.h" 1
# 159 "8139too.c" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h" 1
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/config.h" 1
# 8 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/sched.h" 1
# 9 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/linux/prefetch.h" 1
# 10 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h" 2
# 1 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/page.h" 1
# 11 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h" 2
# 35 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
extern int __verify_write(const void *, unsigned long);
# 62 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
static inline int verify_area(int type, const void * addr, unsigned long size)
{
return (({ unsigned long flag,sum; asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0" :"=&r" (flag), "=r" (sum) :"1" (addr),"g" ((int)(size)),"g" (get_current()->addr_limit.seg)); flag; }) == 0) ? 0 : -14;
}
# 81 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
struct exception_table_entry
{
unsigned long insn, fixup;
};
extern unsigned long search_exception_table(unsigned long);
# 105 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
extern void __get_user_1(void);
extern void __get_user_2(void);
extern void __get_user_4(void);
# 127 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
extern void __put_user_1(void);
extern void __put_user_2(void);
extern void __put_user_4(void);
extern void __put_user_8(void);
extern void __put_user_bad(void);
# 188 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
struct __large_struct { unsigned long buf[100]; };
# 220 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
extern long __get_user_bad(void);
# 308 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
static inline unsigned long
__generic_copy_from_user_nocheck(void *to, const void *from, unsigned long n)
{
do { int __d0, __d1; __asm__ __volatile__( "0: rep; movsl\n" " movl %3,%0\n" "1: rep; movsb\n" "2:\n" ".section .fixup,\"ax\"\n" "3: lea 0(%3,%0,4),%0\n" "4: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosb\n" " popl %%eax\n" " pop l %0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=&c"(n), "=&D" (__d0), "=&S" (__d1) : "r"(n & 3), "0"(n / 4), "1"(to), "2"(from) : "memory"); } while (0);
return n;
}
static inline unsigned long
__generic_copy_to_user_nocheck(void *to, const void *from, unsigned long n)
{
do { int __d0, __d1; __asm__ __volatile__( "0: rep; movsl\n" " movl %3,%0\n" "1: rep; movsb\n" "2:\n" ".section .fixup,\"ax\"\n" "3: lea 0(%3,%0,4),%0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .lo ng 1b,2b\n" ".previous" : "=&c"(n), "=&D" (__d0), "=&S" (__d1) : "r"(n & 3), "0"(n / 4), "1"(to), "2"(from) : "memory"); } while (0);
return n;
}
# 543 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
unsigned long __generic_copy_to_user(void *, const void *, unsigned long);
unsigned long __generic_copy_from_user(void *, const void *, unsigned long);
static inline unsigned long
__constant_copy_to_user(void *to, const void *from, unsigned long n)
{
prefetch(from);
if ((({ unsigned long flag,sum; asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0" :"=&r" (flag), "=r" (sum) :"1" (to),"g" ((int)(n)),"g" (get_current()->addr_limit.seg)); flag; }) == 0))
do { int __d0, __d1; switch (n & 3) { default: __asm__ __volatile__( "0: rep; movsl\n" "1:\n" ".section .fixup,\"ax\"\n" "2: shl $2,%0\n" " jmp 1b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,2b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 1: __asm__ __volatile__( "0: rep; movsl\n" "1: movsb\n" "2:\n" ".section .fixup,\"ax\"\n" "3: shl $2,%0\n" "4: incl %0\n" " jmp 2b\n" ".previous\n" ".section __e x_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 2: __asm__ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2:\n" ".section .fixup,\"a x\"\n" "3: shl $2,%0\n" "4: addl $2,%0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 3: __asm__ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2: movsb\n" "3:\n" ".section .fixup,\"ax\"\n" "4: shl $2,%0\n" "5: addl $2,%0\n" "6: incl %0\n" " jmp 3b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,4b\n" " .long 1b,5b\n" " .long 2b,6b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; } } while (0);
return n;
}
static inline unsigned long
__constant_copy_from_user(void *to, const void *from, unsigned long n)
{
if ((({ unsigned long flag,sum; asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0" :"=&r" (flag), "=r" (sum) :"1" (from),"g" ((int)(n)),"g" (get_current()->addr_limit.seg)); flag; }) == 0))
do { int __d0, __d1; switch (n & 3) { default: __asm__ __volatile__( "0: rep; movsl\n" "1:\n" ".section .fixup,\"ax\"\n" "2: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " jmp 1b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,2b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 1: __asm__ __volatile__( "0: rep; movsl\n" "1: movsb\n" "2:\n" ".section .fixup,\"ax\"\n" "3: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosb\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " incl %0\n" " jmp 2b\n" "4: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosb\n" " popl %%eax\n" " incl % 0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 2: __asm__ __volatile__( "0: rep; movsl \n" "1: movsw\n" "2:\n" ".section .fixup,\"ax\"\n" "3: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosw\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " addl $2,%0\n" " jmp 2b\n" "4: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosw\ n" " popl %%eax\n" " addl $2,%0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 3: __asm_ _ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2: movsb\n" "3:\n" ".section .fixup,\"ax\"\n" "4: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosw\n" " stosb\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " addl $3,%0\n" " jmp 2 b\n" "5: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosw\n" " stosb\n" " popl %%eax\n" " addl $3,%0\n" " jmp 2b\n" "6: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosb\n" " popl %%eax\n" " incl %0\n" " jmp 3b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .al ign 4\n" " .
g 0b,4b\n" " .long 1b,5b\n" " .long 2b,6b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; } } while (0);
else
(__builtin_constant_p(0) ? (__builtin_constant_p((n)) ? __constant_c_and_count_memset(((to)),((0x01010101UL*(unsigned char)(0))),((n))) : __constant_c_memset(((to)),((0x01010101UL*(unsigned char)(0))),((n)))) : (__builtin_constant_p((n)) ? __memset_generic((((to))),(((0))),(((n)))) : __memset_generic(((to)),((0)),((n)))));
return n;
}
static inline unsigned long
__constant_copy_to_user_nocheck(void *to, const void *from, unsigned long n)
{
do { int __d0, __d1; switch (n & 3) { default: __asm__ __volatile__( "0: rep; movsl\n" "1:\n" ".section .fixup,\"ax\"\n" "2: shl $2,%0\n" " jmp 1b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,2b\n" ".previous" : "=c"(n) , "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 1: __asm__ __volatile__( "0: rep; movsl\n" "1: movsb\n" "2:\n" ".section .fixup,\"ax\"\n" "3: shl $2,%0\n" "4: incl %0\n" " jmp 2b\n" ".previous\n" ".section __ex_table, \"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 2: __asm__ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2:\n" ".section .fixup,\"ax\"\n" " 3: shl $2,%0\n" "4: addl $2,%0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 3: __asm__ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2: movsb\n" "3:\n" ".section .fixup,\"ax\"\n" "4: shl $2,%0\n" "5: addl $2,%0\n" "6: incl %0\n" " jmp 3b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,4b\n" " .long 1b,5b\n" " .long 2b,6b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; } } while (0);
return n;
}
static inline unsigned long
__constant_copy_from_user_nocheck(void *to, const void *from, unsigned long n)
{
do { int __d0, __d1; switch (n & 3) { default: __asm__ __volatile__( "0: rep; movsl\n" "1:\n" ".section .fixup,\"ax\"\n" "2: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " jmp 1b\n " ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,2b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 1: __asm__ __volatile__( "0: rep; movsl\n" "1: movsb\n" "2:\n" ".sectio n .fixup,\"ax\"\n" "3: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosb\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " incl %0\n" " jmp 2b\n" "4: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosb\n" " popl %%eax\n" " incl %0\n" " j mp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 2: __asm__ __volatile__( "0: rep; movsl\n" "1: movsw\n" "2:\n" ".section .fixup,\"ax\"\n" "3: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosw\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " addl $2,%0\n" " jmp 2b\n" "4: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosw\n" " pop l %%eax\n" " addl $2,%0\n" " jmp 2b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,3b\n" " .long 1b,4b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; case 3: __asm__ __vola tile__( "0: rep; movsl\n" "1: movsw\n" "2: movsb\n" "3:\n" ".section .fixup,\"ax\"\n" "4: pushl %0\n" " pushl %%eax\n" " xorl %%eax,%%eax\n" " rep; stosl\n" " stosw\n" " stosb\n" " popl %%eax\n" " popl %0\n" " shl $2,%0\n" " addl $3,%0\n" " jmp 2b\n" "5: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosw\n" " stosb\n" " popl %%eax\n" " addl $3,%0\n" " jmp 2b\n" "6: pushl %%eax\n" " xorl %%eax,%%eax\n" " stosb\n" " popl %%eax\n" " incl %0\n" " jmp 3b\n" ".previous\n" ".section __ex_table,\"a\"\n" " .align 4\n" " .long 0b,
n" " .long 1b,5b\n" " .long 2b,6b\n" ".previous" : "=c"(n), "=&S" (__d0), "=&D" (__d1) : "1"(from), "2"(to), "0"(n/4) : "memory"); break; } } while (0);
return n;
}
# 599 "/usr/src/linux-2.4.13-gcc-3.0.2/include/asm/uaccess.h"
long strncpy_from_user(char *dst, const char *src, long count);
long __strncpy_from_user(char *dst, const char *src, long count);
long strnlen_user(const char *str, long n);
unsigned long clear_user(void *mem, unsigned long len);
unsigned long __clear_user(void *mem, unsigned long len);
# 160 "8139too.c" 2
# 198 "8139too.c"
static int media[8] = {-1, -1, -1, -1, -1, -1, -1, -1};
static int full_duplex[8] = {-1, -1, -1, -1, -1, -1, -1, -1};
static int max_interrupt_work = 20;
static int multicast_filter_limit = 32;
# 241 "8139too.c"
enum {
HAS_MII_XCVR = 0x010000,
HAS_CHIP_XCVR = 0x020000,
HAS_LNK_CHNG = 0x040000,
};
typedef enum {
RTL8139 = 0,
RTL8139_CB,
SMC1211TX,
DELTA8139,
ADDTRON8139,
DFE538TX,
DFE690TXD,
RTL8129,
} board_t;
static struct {
const char *name;
u32 hw_flags;
} board_info[] = {
{ "RealTek RTL8139 Fast Ethernet", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "RealTek RTL8139B PCI/CardBus", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "SMC1211TX EZCard 10/100 (RealTek RTL8139)", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "Delta Electronics 8139 10/100BaseTX", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "Addtron Technolgy 8139 10/100BaseTX", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "D-Link DFE-538TX (RealTek RTL8139)", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "D-Link DFE-690TXD (RealTek RTL8139)", HAS_CHIP_XCVR|HAS_LNK_CHNG },
{ "RealTek RTL8129", HAS_MII_XCVR },
};
static struct pci_device_id rtl8139_pci_tbl[] = {
{0x10ec, 0x8139, (~0), (~0), 0, 0, RTL8139 },
{0x10ec, 0x8138, (~0), (~0), 0, 0, RTL8139_CB },
{0x1113, 0x1211, (~0), (~0), 0, 0, SMC1211TX },
{0x1500, 0x1360, (~0), (~0), 0, 0, DELTA8139 },
{0x4033, 0x1360, (~0), (~0), 0, 0, ADDTRON8139 },
{0x1186, 0x1300, (~0), (~0), 0, 0, DFE538TX },
{0x1186, 0x1340, (~0), (~0), 0, 0, DFE690TXD },
# 301 "8139too.c"
{(~0), 0x8139, 0x10ec, 0x8139, 0, 0, RTL8139 },
{(~0), 0x8139, 0x1186, 0x1300, 0, 0, DFE538TX },
{0,}
};
;
enum RTL8139_registers {
MAC0 = 0,
MAR0 = 8,
TxStatus0 = 0x10,
TxAddr0 = 0x20,
RxBuf = 0x30,
RxEarlyCnt = 0x34,
RxEarlyStatus = 0x36,
ChipCmd = 0x37,
RxBufPtr = 0x38,
RxBufAddr = 0x3A,
IntrMask = 0x3C,
IntrStatus = 0x3E,
TxConfig = 0x40,
ChipVersion = 0x43,
RxConfig = 0x44,
Timer = 0x48,
RxMissed = 0x4C,
Cfg9346 = 0x50,
Config0 = 0x51,
Config1 = 0x52,
FlashReg = 0x54,
MediaStatus = 0x58,
Config3 = 0x59,
Config4 = 0x5A,
HltClk = 0x5B,
MultiIntr = 0x5C,
TxSummary = 0x60,
BasicModeCtrl = 0x62,
BasicModeStatus = 0x64,
NWayAdvert = 0x66,
NWayLPAR = 0x68,
NWayExpansion = 0x6A,
FIFOTMS = 0x70,
CSCR = 0x74,
PARA78 = 0x78,
PARA7c = 0x7c,
Config5 = 0xD8,
};
enum ClearBitMasks {
MultiIntrClear = 0xF000,
ChipCmdClear = 0xE2,
Config1Clear = (1<<7)|(1<<6)|(1<<3)|(1<<2)|(1<<1),
};
enum ChipCmdBits {
CmdReset = 0x10,
CmdRxEnb = 0x08,
CmdTxEnb = 0x04,
RxBufEmpty = 0x01,
};
enum IntrStatusBits {
PCIErr = 0x8000,
PCSTimeout = 0x4000,
RxFIFOOver = 0x40,
RxUnderrun = 0x20,
RxOverflow = 0x10,
TxErr = 0x08,
TxOK = 0x04,
RxErr = 0x02,
RxOK = 0x01,
RxAckBits = RxFIFOOver | RxOverflow | RxOK,
};
enum TxStatusBits {
TxHostOwns = 0x2000,
TxUnderrun = 0x4000,
TxStatOK = 0x8000,
TxOutOfWindow = 0x20000000,
TxAborted = 0x40000000,
TxCarrierLost = 0x80000000,
};
enum RxStatusBits {
RxMulticast = 0x8000,
RxPhysical = 0x4000,
RxBroadcast = 0x2000,
RxBadSymbol = 0x0020,
RxRunt = 0x0010,
RxTooLong = 0x0008,
RxCRCErr = 0x0004,
RxBadAlign = 0x0002,
RxStatusOK = 0x0001,
};
enum rx_mode_bits {
AcceptErr = 0x20,
AcceptRunt = 0x10,
AcceptBroadcast = 0x08,
AcceptMulticast = 0x04,
AcceptMyPhys = 0x02,
AcceptAllPhys = 0x01,
};
enum tx_config_bits {
TxIFG1 = (1 << 25),
TxIFG0 = (1 << 24),
TxLoopBack = (1 << 18) | (1 << 17),
TxCRC = (1 << 16),
TxClearAbt = (1 << 0),
TxDMAShift = 8,
TxVersionMask = 0x7C800000,
};
enum Config1Bits {
Cfg1_PM_Enable = 0x01,
Cfg1_VPD_Enable = 0x02,
Cfg1_PIO = 0x04,
Cfg1_MMIO = 0x08,
LWAKE = 0x10,
Cfg1_Driver_Load = 0x20,
Cfg1_LED0 = 0x40,
Cfg1_LED1 = 0x80,
SLEEP = (1 << 1),
PWRDN = (1 << 0),
};
enum Config3Bits {
Cfg3_FBtBEn = (1 << 0),
Cfg3_FuncRegEn = (1 << 1),
Cfg3_CLKRUN_En = (1 << 2),
Cfg3_CardB_En = (1 << 3),
Cfg3_LinkUp = (1 << 4),
Cfg3_Magic = (1 << 5),
Cfg3_PARM_En = (1 << 6),
Cfg3_GNTSel = (1 << 7),
};
enum Config4Bits {
LWPTN = (1 << 2),
};
enum Config5Bits {
Cfg5_PME_STS = (1 << 0),
Cfg5_LANWake = (1 << 1),
Cfg5_LDPS = (1 << 2),
Cfg5_FIFOAddrPtr = (1 << 3),
Cfg5_UWF = (1 << 4),
Cfg5_MWF = (1 << 5),
Cfg5_BWF = (1 << 6),
};
enum RxConfigBits {
RxCfgEarlyRxNone = 0,
RxCfgEarlyRxShift = 24,
RxCfgFIFOShift = 13,
RxCfgFIFONone = (7 << RxCfgFIFOShift),
RxCfgDMAShift = 8,
RxCfgDMAUnlimited = (7 << RxCfgDMAShift),
RxCfgRcv8K = 0,
RxCfgRcv16K = (1 << 11),
RxCfgRcv32K = (1 << 12),
RxCfgRcv64K = (1 << 11) | (1 << 12),
RxNoWrap = (1 << 7),
};
enum CSCRBits {
CSCR_LinkOKBit = 0x0400,
CSCR_LinkChangeBit = 0x0800,
CSCR_LinkStatusBits = 0x0f000,
CSCR_LinkDownOffCmd = 0x003c0,
CSCR_LinkDownCmd = 0x0f3c0,
};
enum Cfg9346Bits {
Cfg9346_Lock = 0x00,
Cfg9346_Unlock = 0xC0,
};
static const unsigned long param[4][4] = {
{0xcb39de43, 0xcb39ce43, 0xfb38de03, 0xcb38de43},
{0xcb39de43, 0xcb39ce43, 0xcb39ce83, 0xcb39ce83},
{0xcb39de43, 0xcb39ce43, 0xcb39ce83, 0xcb39ce83},
{0xbb39de43, 0xbb39ce43, 0xbb39ce83, 0xbb39ce83}
};
struct ring_info {
struct sk_buff *skb;
dma_addr_t mapping;
};
typedef enum {
CH_8139 = 0,
CH_8139_K,
CH_8139A,
CH_8139B,
CH_8130,
CH_8139C,
} chip_t;
enum chip_flags {
HasHltClk = (1 << 0),
HasLWake = (1 << 1),
};
const static struct {
const char *name;
u8 version;
u32 RxConfigMask;
u32 flags;
} rtl_chip_info[] = {
{ "RTL-8139",
0x40,
0xf0fe0040,
HasHltClk,
},
{ "RTL-8139 rev K",
0x60,
0xf0fe0040,
HasHltClk,
},
{ "RTL-8139A",
0x70,
0xf0fe0040,
HasHltClk,
},
{ "RTL-8139B",
0x78,
0xf0fc0040,
HasLWake,
},
{ "RTL-8130",
0x7C,
0xf0fe0040,
HasLWake,
},
{ "RTL-8139C",
0x74,
0xf0fc0040,
HasLWake,
},
};
struct rtl_extra_stats {
unsigned long early_rx;
unsigned long tx_buf_mapped;
unsigned long tx_timeouts;
};
struct rtl8139_private {
void *mmio_addr;
int drv_flags;
struct pci_dev *pci_dev;
struct net_device_stats stats;
unsigned char *rx_ring;
unsigned int cur_rx;
unsigned int tx_flag;
unsigned long cur_tx;
unsigned long dirty_tx;
struct ring_info tx_info[4];
unsigned char *tx_buf[4];
unsigned char *tx_bufs;
dma_addr_t rx_ring_dma;
dma_addr_t tx_bufs_dma;
signed char phys[4];
char twistie, twist_row, twist_col;
unsigned int full_duplex:1;
unsigned int duplex_lock:1;
unsigned int default_port:4;
unsigned int media2:4;
unsigned int medialock:1;
unsigned int mediasense:1;
spinlock_t lock;
chip_t chipset;
pid_t thr_pid;
wait_queue_head_t thr_wait;
struct completion thr_exited;
u32 rx_config;
struct rtl_extra_stats xstats;
};
;
;
;
;
;
;
;
;
;
;
;
static int read_eeprom (void *ioaddr, int location, int addr_len);
static int rtl8139_open (struct net_device *dev);
static int mdio_read (struct net_device *dev, int phy_id, int location);
static void mdio_write (struct net_device *dev, int phy_id, int location,
int val);
static int rtl8139_thread (void *data);
static void rtl8139_tx_timeout (struct net_device *dev);
static void rtl8139_init_ring (struct net_device *dev);
static int rtl8139_start_xmit (struct sk_buff *skb,
struct net_device *dev);
static void rtl8139_interrupt (int irq, void *dev_instance,
struct pt_regs *regs);
static int rtl8139_close (struct net_device *dev);
static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
static struct net_device_stats *rtl8139_get_stats (struct net_device *dev);
static inline u32 ether_crc (int length, unsigned char *data);
static void rtl8139_set_rx_mode (struct net_device *dev);
static void __set_rx_mode (struct net_device *dev);
static void rtl8139_hw_start (struct net_device *dev);
# 712 "8139too.c"
static const u16 rtl8139_intr_mask =
PCIErr | PCSTimeout | RxUnderrun | RxOverflow | RxFIFOOver |
TxErr | TxOK | RxErr | RxOK;
static const unsigned int rtl8139_rx_config =
(14 << RxCfgEarlyRxShift) | RxCfgRcv32K | RxNoWrap |
(7 << RxCfgFIFOShift) |
(7 << RxCfgDMAShift);
static void __rtl8139_cleanup_dev (struct net_device *dev)
{
struct rtl8139_private *tp;
struct pci_dev *pdev;
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,727); };
if(!(dev->priv != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev->priv != NULL","8139too.c",__FUNCTION__,728); };
tp = dev->priv;
if(!(tp->pci_dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp->pci_dev != NULL","8139too.c",__FUNCTION__,731); };
pdev = tp->pci_dev;
if (tp->mmio_addr)
iounmap (tp->mmio_addr);
pci_release_regions (pdev);
(__builtin_constant_p(0xBC) ? (__builtin_constant_p((sizeof (struct net_device) + sizeof (struct rtl8139_private))) ? __constant_c_and_count_memset(((dev)),((0x01010101UL*(unsigned char)(0xBC))),((sizeof (struct net_device) + sizeof (struct rtl81 39_private)))) : __constant_c_memset(((dev)),((0x01010101UL*(unsigned char)(0xBC))),((sizeof (struct net_device) + sizeof (struct rtl8139_private))))) : (__builtin_constant_p((sizeof (struct net_device) + sizeof (struct rtl8139_private))) ? __memset_gene ric((((dev))),(((0xBC))),(((sizeof (struct net_device) + sizeof (struct rtl8139_private))))) : __memset_generic(((dev)),((0xBC)),((sizeof (struct net_device) + sizeof (struct rtl8139_private))))));
kfree (dev);
pci_set_drvdata (pdev, ((void *)0));
}
static void rtl8139_chip_reset (void *ioaddr)
{
int i;
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdReset)));
for (i = 1000; i > 0; i--) {
__asm__ __volatile__("": : :"memory");
if (((*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd)))) & CmdReset) == 0)
break;
(__builtin_constant_p(10) ? ((10) > 20000 ? __bad_udelay() : __const_udelay((10) * 0x10c6ul)) : __udelay(10));
}
}
static int rtl8139_init_board (struct pci_dev *pdev,
struct net_device **dev_out)
{
void *ioaddr;
struct net_device *dev;
struct rtl8139_private *tp;
u8 tmp8;
int rc;
unsigned int i;
u32 pio_start, pio_end, pio_flags, pio_len;
unsigned long mmio_start, mmio_end, mmio_flags, mmio_len;
u32 tmp;
;
if(!(pdev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "pdev != NULL","8139too.c",__FUNCTION__,787); };
*dev_out = ((void *)0);
dev = alloc_etherdev (sizeof (*tp));
if (dev == ((void *)0)) {
printk ("<3>" "8139too" ": " "%s: Unable to alloc new net device\n", pdev->slot_name);
;
return -12;
}
do { (dev)->owner = ((void *)0); } while (0);
tp = dev->priv;
tp->pci_dev = pdev;
rc = pci_enable_device (pdev);
if (rc)
goto err_out;
pio_start = ((pdev)->resource[(0)].start);
pio_end = ((pdev)->resource[(0)].end);
pio_flags = ((pdev)->resource[(0)].flags);
pio_len = (((((pdev))->resource[((0))].start) == 0 && (((pdev))->resource[((0))].end) == (((pdev))->resource[((0))].start)) ? 0 : ((((pdev))->resource[((0))].end) - (((pdev))->resource[((0))].start) + 1));
mmio_start = ((pdev)->resource[(1)].start);
mmio_end = ((pdev)->resource[(1)].end);
mmio_flags = ((pdev)->resource[(1)].flags);
mmio_len = (((((pdev))->resource[((1))].start) == 0 && (((pdev))->resource[((1))].end) == (((pdev))->resource[((1))].start)) ? 0 : ((((pdev))->resource[((1))].end) - (((pdev))->resource[((1))].start) + 1));
;
;
# 837 "8139too.c"
if (!(mmio_flags & 0x00000200)) {
printk ("<3>" "8139too" ": " "%s: region #1 not an MMIO resource, aborting\n", pdev->slot_name);
rc = -19;
goto err_out;
}
if (mmio_len < 0x80) {
printk ("<3>" "8139too" ": " "%s: Invalid PCI mem region size(s), aborting\n", pdev->slot_name);
rc = -19;
goto err_out;
}
rc = pci_request_regions (pdev, "8139too");
if (rc)
goto err_out;
pci_set_master (pdev);
ioaddr = ioremap (mmio_start, mmio_len);
if (ioaddr == ((void *)0)) {
printk ("<3>" "8139too" ": " "%s: cannot remap MMIO, aborting\n", pdev->slot_name);
rc = -5;
goto err_out;
}
dev->base_addr = (long) ioaddr;
tp->mmio_addr = ioaddr;
(*(volatile unsigned char *) ((void *)(ioaddr + (HltClk))) = (('R')));
if (((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (TxConfig))))) == 0xFFFFFFFF) {
printk ("<3>" "8139too" ": " "%s: Chip not responding, ignoring board\n",
pdev->slot_name);
rc = -5;
goto err_out;
}
tmp = (*(volatile unsigned char *) ((void *)(ioaddr + (ChipVersion))));
for (i = 0; i < (sizeof(rtl_chip_info) / sizeof((rtl_chip_info)[0])); i++)
if (tmp == rtl_chip_info[i].version) {
tp->chipset = i;
goto match;
}
printk ("<7>" "8139too" ": " "%s: unknown chip version, assuming RTL-8139\n",
pdev->slot_name);
printk ("<7>" "8139too" ": " "%s: TxConfig = 0x%lx\n", pdev->slot_name, ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (TxConfig))))));
tp->chipset = 0;
match:
;
if (tp->chipset >= CH_8139B) {
u8 new_tmp8 = tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config1))));
;
if ((rtl_chip_info[tp->chipset].flags & HasLWake) &&
(tmp8 & LWAKE))
new_tmp8 &= ~LWAKE;
new_tmp8 |= Cfg1_PM_Enable;
if (new_tmp8 != tmp8) {
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock)));
(*(volatile unsigned char *) ((void *)(ioaddr + (Config1))) = ((tmp8)));
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Lock)));
}
if (rtl_chip_info[tp->chipset].flags & HasLWake) {
tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config4))));
if (tmp8 & LWPTN)
(*(volatile unsigned char *) ((void *)(ioaddr + (Config4))) = ((tmp8 & ~LWPTN)));
}
} else {
;
tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config1))));
tmp8 &= ~(SLEEP | PWRDN);
(*(volatile unsigned char *) ((void *)(ioaddr + (Config1))) = ((tmp8)));
}
rtl8139_chip_reset (ioaddr);
;
*dev_out = dev;
return 0;
err_out:
__rtl8139_cleanup_dev (dev);
;
return rc;
}
static int rtl8139_init_one (struct pci_dev *pdev,
const struct pci_device_id *ent)
{
struct net_device *dev = ((void *)0);
struct rtl8139_private *tp;
int i, addr_len, option;
void *ioaddr;
static int board_idx = -1;
u8 pci_rev;
;
if(!(pdev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "pdev != NULL","8139too.c",__FUNCTION__,952); };
if(!(ent != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "ent != NULL","8139too.c",__FUNCTION__,953); };
board_idx++;
{
static int printed_version;
if (!printed_version++)
printk ("<6>" "8139too" " Fast Ethernet driver " "0.9.20" "\n");
}
pci_read_config_byte(pdev, 0x08, &pci_rev);
if (pdev->vendor == 0x10ec &&
pdev->device == 0x8139 && pci_rev >= 0x20) {
printk("<6>" "8139too" ": " "pci dev %s (id %04x:%04x rev %02x) is an enhanced 8139C+ chip\n",
pdev->slot_name, pdev->vendor, pdev->device, pci_rev);
printk("<6>" "8139too" ": " "Use the \"8139cp\" driver for improved performance and stability.\n");
}
i = rtl8139_init_board (pdev, &dev);
if (i < 0) {
;
return i;
}
tp = dev->priv;
ioaddr = tp->mmio_addr;
if(!(ioaddr != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "ioaddr != NULL","8139too.c",__FUNCTION__,986); };
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,987); };
if(!(tp != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp != NULL","8139too.c",__FUNCTION__,988); };
addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6;
for (i = 0; i < 3; i++)
((u16 *) (dev->dev_addr))[i] =
((__u16)(read_eeprom (ioaddr, i + 7, addr_len)));
dev->open = rtl8139_open;
dev->hard_start_xmit = rtl8139_start_xmit;
dev->stop = rtl8139_close;
dev->get_stats = rtl8139_get_stats;
dev->set_multicast_list = rtl8139_set_rx_mode;
dev->do_ioctl = netdev_ioctl;
dev->tx_timeout = rtl8139_tx_timeout;
dev->watchdog_timeo = (6*100);
dev->features |= 1|8;
dev->irq = pdev->irq;
tp = dev->priv;
tp->drv_flags = board_info[ent->driver_data].hw_flags;
tp->mmio_addr = ioaddr;
do { } while(0);
init_waitqueue_head (&tp->thr_wait);
init_completion (&tp->thr_exited);
;
i = register_netdev (dev);
if (i) goto err_out;
pci_set_drvdata (pdev, dev);
printk ("<6>" "%s: %s at 0x%lx, "
"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, "
"IRQ %d\n",
dev->name,
board_info[ent->driver_data].name,
dev->base_addr,
dev->dev_addr[0], dev->dev_addr[1],
dev->dev_addr[2], dev->dev_addr[3],
dev->dev_addr[4], dev->dev_addr[5],
dev->irq);
printk ("<7>" "%s: Identified 8139 chip type '%s'\n",
dev->name, rtl_chip_info[tp->chipset].name);
# 1063 "8139too.c"
tp->phys[0] = 32;
option = (board_idx >= 8) ? 0 : media[board_idx];
if (option > 0) {
tp->full_duplex = (option & 0x210) ? 1 : 0;
tp->default_port = option & 0xFF;
if (tp->default_port)
tp->medialock = 1;
}
if (board_idx < 8 && full_duplex[board_idx] > 0)
tp->full_duplex = full_duplex[board_idx];
if (tp->full_duplex) {
printk("<6>" "%s: Media type forced to Full Duplex.\n", dev->name);
tp->duplex_lock = 1;
}
if (tp->default_port) {
printk("<6>" " Forcing %dMbps %s-duplex operation.\n",
(option & 0x20 ? 100 : 10),
(option & 0x10 ? "full" : "half"));
mdio_write(dev, tp->phys[0], 0,
((option & 0x20) ? 0x2000 : 0) |
((option & 0x10) ? 0x0100 : 0));
}
if (rtl_chip_info[tp->chipset].flags & HasHltClk)
(*(volatile unsigned char *) ((void *)(ioaddr + (HltClk))) = (('H')));
;
return 0;
err_out:
__rtl8139_cleanup_dev (dev);
;
return i;
}
static void rtl8139_remove_one (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
struct rtl8139_private *np;
;
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,1111); };
np = dev->priv;
if(!(np != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "np != NULL","8139too.c",__FUNCTION__,1113); };
unregister_netdev (dev);
__rtl8139_cleanup_dev (dev);
;
}
# 1145 "8139too.c"
static int read_eeprom (void *ioaddr, int location, int addr_len)
{
int i;
unsigned retval = 0;
void *ee_addr = ioaddr + Cfg9346;
int read_cmd = location | ((6) << addr_len);
;
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08) & ~0x08));
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08)));
(*(volatile unsigned int *) ((void *)(ee_addr)));
for (i = 4 + addr_len; i >= 0; i--) {
int dataval = (read_cmd & (1 << i)) ? 0x02 : 0;
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08) | dataval));
(*(volatile unsigned int *) ((void *)(ee_addr)));
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08) | dataval | 0x04));
(*(volatile unsigned int *) ((void *)(ee_addr)));
}
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08)));
(*(volatile unsigned int *) ((void *)(ee_addr)));
for (i = 16; i > 0; i--) {
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08) | 0x04));
(*(volatile unsigned int *) ((void *)(ee_addr)));
retval =
(retval << 1) | (((*(volatile unsigned char *) ((void *)(ee_addr))) & 0x01) ? 1 :
0);
(*(volatile unsigned char *) ((void *)(ee_addr)) = ((0x80 | 0x08)));
(*(volatile unsigned int *) ((void *)(ee_addr)));
}
(*(volatile unsigned char *) ((void *)(ee_addr)) = (~0x08));
(*(volatile unsigned int *) ((void *)(ee_addr)));
;
return retval;
}
# 1203 "8139too.c"
static char mii_2_8139_map[8] = {
BasicModeCtrl,
BasicModeStatus,
0,
0,
NWayAdvert,
NWayLPAR,
NWayExpansion,
0
};
# 1234 "8139too.c"
static int mdio_read (struct net_device *dev, int phy_id, int location)
{
struct rtl8139_private *tp = dev->priv;
int retval = 0;
;
if (phy_id > 31) {
;
return location < 8 && mii_2_8139_map[location] ?
(*(volatile unsigned short *) ((void *)(tp->mmio_addr + mii_2_8139_map[location]))) : 0;
}
# 1274 "8139too.c"
;
return (retval >> 1) & 0xffff;
}
static void mdio_write (struct net_device *dev, int phy_id, int location,
int value)
{
struct rtl8139_private *tp = dev->priv;
;
if (phy_id > 31) {
void *ioaddr = tp->mmio_addr;
if (location == 0) {
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock)));
(*(volatile unsigned short *) ((void *)(ioaddr + (BasicModeCtrl))) = ((value)));
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Lock)));
} else if (location < 8 && mii_2_8139_map[location])
(*(volatile unsigned short *) ((void *)(ioaddr + (mii_2_8139_map[location]))) = ((value)));
return;
}
# 1322 "8139too.c"
}
static int rtl8139_open (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
int retval;
;
retval = request_irq (dev->irq, rtl8139_interrupt, 0x04000000, dev->name, dev);
if (retval) {
;
return retval;
}
tp->tx_bufs = pci_alloc_consistent(tp->pci_dev, (1536 * 4),
&tp->tx_bufs_dma);
tp->rx_ring = pci_alloc_consistent(tp->pci_dev, ((8192 << 2) + 16 + 2048),
&tp->rx_ring_dma);
if (tp->tx_bufs == ((void *)0) || tp->rx_ring == ((void *)0)) {
free_irq(dev->irq, dev);
if (tp->tx_bufs)
pci_free_consistent(tp->pci_dev, (1536 * 4),
tp->tx_bufs, tp->tx_bufs_dma);
if (tp->rx_ring)
pci_free_consistent(tp->pci_dev, ((8192 << 2) + 16 + 2048),
tp->rx_ring, tp->rx_ring_dma);
;
return -12;
}
tp->full_duplex = tp->duplex_lock;
tp->tx_flag = (256 << 11) & 0x003f0000;
tp->twistie = 1;
rtl8139_init_ring (dev);
rtl8139_hw_start (dev);
;
tp->thr_pid = kernel_thread (rtl8139_thread, dev, 0x00000200 | 0x00000400);
if (tp->thr_pid < 0)
printk ("<4>" "%s: unable to start kernel thread\n",
dev->name);
;
return 0;
}
static void rtl_check_media (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
;
if (tp->phys[0] >= 0) {
u16 mii_reg5 = mdio_read(dev, tp->phys[0], 5);
if (mii_reg5 == 0xffff)
;
else if ((mii_reg5 & 0x0100) == 0x0100
|| (mii_reg5 & 0x00C0) == 0x0040)
tp->full_duplex = 1;
printk ("<6>""%s: Setting %s%s-duplex based on"
" auto-negotiated partner ability %4.4x.\n",
dev->name, mii_reg5 == 0 ? "" :
(mii_reg5 & 0x0180) ? "100mbps " : "10mbps ",
tp->full_duplex ? "full" : "half", mii_reg5);
}
}
static void rtl8139_hw_start (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
u32 i;
u8 tmp;
;
if (rtl_chip_info[tp->chipset].flags & HasHltClk)
(*(volatile unsigned char *) ((void *)(ioaddr + (HltClk))) = (('R')));
rtl8139_chip_reset (ioaddr);
do { (*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock))); (*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346)))); } while (0);
do { (*(volatile unsigned int *) ((void *)(ioaddr + (MAC0 + 0))) = ((((__u32)(*(u32 *) (dev->dev_addr + 0)))))); (*(volatile unsigned int *) ((void *)(ioaddr + (MAC0 + 0)))); } while (0);
do { (*(volatile unsigned int *) ((void *)(ioaddr + (MAC0 + 4))) = ((((__u32)(*(u32 *) (dev->dev_addr + 4)))))); (*(volatile unsigned int *) ((void *)(ioaddr + (MAC0 + 4)))); } while (0);
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdRxEnb | CmdTxEnb)));
tp->rx_config = rtl8139_rx_config | AcceptBroadcast | AcceptMyPhys;
(*(volatile unsigned int *) ((void *)(ioaddr + (RxConfig))) = ((tp->rx_config)));
(*(volatile unsigned int *) ((void *)(ioaddr + (TxConfig))) = (((6 << TxDMAShift))));
tp->cur_rx = 0;
rtl_check_media (dev);
if (tp->chipset >= CH_8139B) {
(*(volatile unsigned char *) ((void *)(ioaddr + (Config3))) = (((*(volatile unsigned char *) ((void *)(ioaddr + (Config3)))) & ~Cfg3_Magic)));
}
;
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Lock)));
do { (*(volatile unsigned int *) ((void *)(ioaddr + (RxBuf))) = ((tp->rx_ring_dma))); (*(volatile unsigned int *) ((void *)(ioaddr + (RxBuf)))); } while (0);
for (i = 0; i < 4; i++)
do { (*(volatile unsigned int *) ((void *)(ioaddr + (TxAddr0 + (i * 4)))) = ((tp->tx_bufs_dma + (tp->tx_buf[i] - tp->tx_bufs)))); (*(volatile unsigned int *) ((void *)(ioaddr + (TxAddr0 + (i * 4))))); } while (0);
(*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed))) = ((0)));
rtl8139_set_rx_mode (dev);
(*(volatile unsigned short *) ((void *)(ioaddr + (MultiIntr))) = (((*(volatile unsigned short *) ((void *)(ioaddr + (MultiIntr)))) & MultiIntrClear)));
tmp = (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))));
if ((!(tmp & CmdRxEnb)) || (!(tmp & CmdTxEnb)))
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdRxEnb | CmdTxEnb)));
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrMask))) = ((rtl8139_intr_mask)));
netif_start_queue (dev);
;
}
static void rtl8139_init_ring (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
int i;
;
tp->cur_rx = 0;
tp->cur_tx = 0;
tp->dirty_tx = 0;
for (i = 0; i < 4; i++) {
tp->tx_info[i].skb = ((void *)0);
tp->tx_info[i].mapping = 0;
tp->tx_buf[i] = &tp->tx_bufs[i * 1536];
}
;
}
static int next_tick = 3 * 100;
static inline void rtl8139_tune_twister (struct net_device *dev,
struct rtl8139_private *tp) {}
# 1600 "8139too.c"
static inline void rtl8139_thread_iter (struct net_device *dev,
struct rtl8139_private *tp,
void *ioaddr)
{
int mii_reg5;
mii_reg5 = mdio_read (dev, tp->phys[0], 5);
if (!tp->duplex_lock && mii_reg5 != 0xffff) {
int duplex = (mii_reg5 & 0x0100)
|| (mii_reg5 & 0x01C0) == 0x0040;
if (tp->full_duplex != duplex) {
tp->full_duplex = duplex;
if (mii_reg5) {
printk ("<6>"
"%s: Setting %s-duplex based on MII #%d link"
" partner ability of %4.4x.\n",
dev->name,
tp->full_duplex ? "full" : "half",
tp->phys[0], mii_reg5);
} else {
printk("<6>""%s: media is unconnected, link down, or incompatible connection\n",
dev->name);
}
}
}
next_tick = 100 * 60;
rtl8139_tune_twister (dev, tp);
;
;
;
}
static int rtl8139_thread (void *data)
{
struct net_device *dev = data;
struct rtl8139_private *tp = dev->priv;
unsigned long timeout;
daemonize ();
reparent_to_init();
do { __asm__ __volatile__("cli": : :"memory"); (void)(&get_current()->sigmask_lock); } while (0);
sigemptyset(&get_current()->blocked);
recalc_sigpending(get_current());
do { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
strncpy (get_current()->comm, dev->name, sizeof(get_current()->comm) - 1);
get_current()->comm[sizeof(get_current()->comm) - 1] = '\0';
while (1) {
timeout = next_tick;
do {
timeout = interruptible_sleep_on_timeout (&tp->thr_wait, timeout);
} while (!signal_pending (get_current()) && (timeout > 0));
if (signal_pending (get_current()))
break;
rtnl_lock ();
rtl8139_thread_iter (dev, tp, tp->mmio_addr);
rtnl_unlock ();
}
complete_and_exit (&tp->thr_exited, 0);
}
static void rtl8139_tx_clear (struct rtl8139_private *tp)
{
int i;
tp->cur_tx = 0;
tp->dirty_tx = 0;
for (i = 0; i < 4; i++) {
struct ring_info *rp = &tp->tx_info[i];
if (rp->mapping != 0) {
pci_unmap_single (tp->pci_dev, rp->mapping,
rp->skb->len, 1);
rp->mapping = 0;
}
if (rp->skb) {
kfree_skb(rp->skb);
rp->skb = ((void *)0);
tp->stats.tx_dropped++;
}
}
}
static void rtl8139_tx_timeout (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
int i;
u8 tmp8;
unsigned long flags;
;
tp->xstats.tx_timeouts++;
tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))));
if (tmp8 & CmdTxEnb)
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdRxEnb)));
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrMask))) = ((0x0000)));
printk ("<7>" "%s: Tx queue start entry %ld dirty entry %ld.\n",
dev->name, tp->cur_tx, tp->dirty_tx);
for (i = 0; i < 4; i++)
printk ("<7>" "%s: Tx descriptor %d is %8.8lx.%s\n",
dev->name, i, ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (TxStatus0 + (i * 4)))))),
i == tp->dirty_tx % 4 ?
" (queue head)" : "");
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tp->lock); } while (0);
rtl8139_tx_clear (tp);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
rtl8139_hw_start (dev);
netif_wake_queue (dev);
}
static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
unsigned int entry;
u32 dma_addr;
__asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory");
entry = tp->cur_tx % 4;
if(!(tp->tx_info[entry].skb == ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp->tx_info[entry].skb == NULL","8139too.c",__FUNCTION__,1765); };
if(!(tp->tx_info[entry].mapping == 0)) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp->tx_info[entry].mapping == 0","8139too.c",__FUNCTION__,1766); };
tp->tx_info[entry].skb = skb;
if ( !((unsigned long)skb->data & 3) && ((struct skb_shared_info *)((skb)->end))->nr_frags == 0 &&
skb->ip_summed != 1) {
tp->xstats.tx_buf_mapped++;
tp->tx_info[entry].mapping =
pci_map_single (tp->pci_dev, skb->data, skb->len,
1);
dma_addr = tp->tx_info[entry].mapping;
} else if (skb->len < 1536) {
skb_copy_and_csum_dev(skb, tp->tx_buf[entry]);
dma_addr = tp->tx_bufs_dma + (tp->tx_buf[entry] - tp->tx_bufs);
} else {
kfree_skb(skb);
tp->tx_info[entry].skb = ((void *)0);
return 0;
}
do { __asm__ __volatile__("cli": : :"memory"); (void)(&tp->lock); } while (0);
do { (*(volatile unsigned int *) ((void *)(ioaddr + (TxAddr0 + (entry * 4)))) = ((dma_addr))); (*(volatile unsigned int *) ((void *)(ioaddr + (TxAddr0 + (entry * 4))))); } while (0);
do { (*(volatile unsigned int *) ((void *)(ioaddr + (TxStatus0 + (entry * sizeof (u32))))) = ((tp->tx_flag | (skb->len >= 60 ? skb->len : 60)))); (*(volatile unsigned int *) ((void *)(ioaddr + (TxStatus0 + (entry * sizeof (u32)))))); } while (0);
dev->trans_start = jiffies;
tp->cur_tx++;
__asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory");
if ((tp->cur_tx - 4) == tp->dirty_tx)
netif_stop_queue (dev);
do { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
;
return 0;
}
static void rtl8139_tx_interrupt (struct net_device *dev,
struct rtl8139_private *tp,
void *ioaddr)
{
unsigned long dirty_tx, tx_left;
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,1811); };
if(!(tp != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp != NULL","8139too.c",__FUNCTION__,1812); };
if(!(ioaddr != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "ioaddr != NULL","8139too.c",__FUNCTION__,1813); };
dirty_tx = tp->dirty_tx;
tx_left = tp->cur_tx - dirty_tx;
while (tx_left > 0) {
int entry = dirty_tx % 4;
int txstatus;
txstatus = ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (TxStatus0 + (entry * sizeof (u32)))))));
if (!(txstatus & (TxStatOK | TxUnderrun | TxAborted)))
break;
if (txstatus & (TxOutOfWindow | TxAborted)) {
;
tp->stats.tx_errors++;
if (txstatus & TxAborted) {
tp->stats.tx_aborted_errors++;
do { (*(volatile unsigned int *) ((void *)(ioaddr + (TxConfig))) = ((TxClearAbt | (6 << TxDMAShift)))); (*(volatile unsigned int *) ((void *)(ioaddr + (TxConfig)))); } while (0);
}
if (txstatus & TxCarrierLost)
tp->stats.tx_carrier_errors++;
if (txstatus & TxOutOfWindow)
tp->stats.tx_window_errors++;
} else {
if (txstatus & TxUnderrun) {
if (tp->tx_flag < 0x00300000)
tp->tx_flag += 0x00020000;
tp->stats.tx_fifo_errors++;
}
tp->stats.collisions += (txstatus >> 24) & 15;
tp->stats.tx_bytes += txstatus & 0x7ff;
tp->stats.tx_packets++;
}
if (tp->tx_info[entry].mapping != 0) {
pci_unmap_single(tp->pci_dev,
tp->tx_info[entry].mapping,
tp->tx_info[entry].skb->len,
1);
tp->tx_info[entry].mapping = 0;
}
dev_kfree_skb_irq (tp->tx_info[entry].skb);
tp->tx_info[entry].skb = ((void *)0);
dirty_tx++;
tx_left--;
}
if (tp->cur_tx - dirty_tx > 4) {
printk ("<3>" "%s: Out-of-sync dirty pointer, %ld vs. %ld.\n",
dev->name, dirty_tx, tp->cur_tx);
dirty_tx += 4;
}
if (tp->dirty_tx != dirty_tx) {
tp->dirty_tx = dirty_tx;
__asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory");
if (netif_queue_stopped (dev))
netif_wake_queue (dev);
}
}
static void rtl8139_rx_err (u32 rx_status, struct net_device *dev,
struct rtl8139_private *tp, void *ioaddr)
{
u8 tmp8;
int tmp_work;
;
if (rx_status & RxTooLong) {
;
}
tp->stats.rx_errors++;
if (rx_status & (RxBadSymbol | RxBadAlign))
tp->stats.rx_frame_errors++;
if (rx_status & (RxRunt | RxTooLong))
tp->stats.rx_length_errors++;
if (rx_status & RxCRCErr)
tp->stats.rx_crc_errors++;
do { (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdTxEnb))); (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd)))); } while (0);
tmp_work = 200;
while (--tmp_work > 0) {
(__builtin_constant_p(1) ? ((1) > 20000 ? __bad_udelay() : __const_udelay((1) * 0x10c6ul)) : __udelay(1));
tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))));
if (!(tmp8 & CmdRxEnb))
break;
}
if (tmp_work <= 0)
printk ("<4>" "8139too" ": " "rx stop wait too long\n");
tmp_work = 200;
while (--tmp_work > 0) {
do { (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdRxEnb | CmdTxEnb))); (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd)))); } while (0);
(__builtin_constant_p(1) ? ((1) > 20000 ? __bad_udelay() : __const_udelay((1) * 0x10c6ul)) : __udelay(1));
tmp8 = (*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))));
if ((tmp8 & CmdRxEnb) && (tmp8 & CmdTxEnb))
break;
}
if (tmp_work <= 0)
printk ("<4>" "8139too" ": " "tx/rx enable wait too long\n");
do { (*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock))); (*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346)))); } while (0);
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((CmdRxEnb | CmdTxEnb)));
tp->rx_config = rtl8139_rx_config | AcceptBroadcast | AcceptMyPhys;
(*(volatile unsigned int *) ((void *)(ioaddr + (RxConfig))) = ((tp->rx_config)));
tp->cur_rx = 0;
;
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Lock)));
do { (*(volatile unsigned int *) ((void *)(ioaddr + (RxBuf))) = ((tp->rx_ring_dma))); (*(volatile unsigned int *) ((void *)(ioaddr + (RxBuf)))); } while (0);
__set_rx_mode (dev);
}
static void rtl8139_rx_interrupt (struct net_device *dev,
struct rtl8139_private *tp, void *ioaddr)
{
unsigned char *rx_ring;
u16 cur_rx;
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,1963); };
if(!(tp != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp != NULL","8139too.c",__FUNCTION__,1964); };
if(!(ioaddr != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "ioaddr != NULL","8139too.c",__FUNCTION__,1965); };
rx_ring = tp->rx_ring;
cur_rx = tp->cur_rx;
;
while (((*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd)))) & RxBufEmpty) == 0) {
int ring_offset = cur_rx % (8192 << 2);
u32 rx_status;
unsigned int rx_size;
unsigned int pkt_size;
struct sk_buff *skb;
__asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory");
rx_status = ((__u32)(*(u32 *) (rx_ring + ring_offset)));
rx_size = rx_status >> 16;
pkt_size = rx_size - 4;
;
# 2003 "8139too.c"
if (rx_size == 0xfff0) {
tp->xstats.early_rx++;
break;
}
if ((rx_size > (1536 +4)) ||
(rx_size < 8) ||
(!(rx_status & RxStatusOK))) {
rtl8139_rx_err (rx_status, dev, tp, ioaddr);
return;
}
# 2029 "8139too.c"
skb = dev_alloc_skb (pkt_size + 2);
if (skb) {
skb->dev = dev;
skb_reserve (skb, 2);
eth_copy_and_sum (skb, &rx_ring[ring_offset + 4], pkt_size, 0);
skb_put (skb, pkt_size);
skb->protocol = eth_type_trans (skb, dev);
netif_rx (skb);
dev->last_rx = jiffies;
tp->stats.rx_bytes += pkt_size;
tp->stats.rx_packets++;
} else {
printk ("<4>"
"%s: Memory squeeze, dropping packet.\n",
dev->name);
tp->stats.rx_dropped++;
}
cur_rx = (cur_rx + rx_size + 4 + 3) & ~3;
(*(volatile unsigned short *) ((void *)(ioaddr + (RxBufPtr))) = ((cur_rx - 16)));
if ((*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus)))) & RxAckBits)
do { (*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus))) = ((RxAckBits))); (*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus)))); } while (0);
}
;
tp->cur_rx = cur_rx;
if (((*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd)))) & RxBufEmpty) &&
((*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus)))) & RxAckBits))
do { (*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus))) = ((RxAckBits))); (*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus)))); } while (0);
}
static void rtl8139_weird_interrupt (struct net_device *dev,
struct rtl8139_private *tp,
void *ioaddr,
int status, int link_changed)
{
;
if(!(dev != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "dev != NULL","8139too.c",__FUNCTION__,2077); };
if(!(tp != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "tp != NULL","8139too.c",__FUNCTION__,2078); };
if(!(ioaddr != ((void *)0))) { printk( "Assertion failed! %s,%s,%s,line=%d\n", "ioaddr != NULL","8139too.c",__FUNCTION__,2079); };
tp->stats.rx_missed_errors += ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed)))));
(*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed))) = ((0)));
if ((status & RxUnderrun) && link_changed &&
(tp->drv_flags & HAS_LNK_CHNG)) {
int lpar = (*(volatile unsigned short *) ((void *)(ioaddr + (NWayLPAR))));
int duplex = (lpar & 0x0100) || (lpar & 0x01C0) == 0x0040
|| tp->duplex_lock;
if (tp->full_duplex != duplex) {
tp->full_duplex = duplex;
}
status &= ~RxUnderrun;
}
if (status &
(RxUnderrun | RxOverflow | RxErr | RxFIFOOver))
tp->stats.rx_errors++;
if (status & (PCSTimeout))
tp->stats.rx_length_errors++;
if (status & (RxUnderrun | RxFIFOOver))
tp->stats.rx_fifo_errors++;
if (status & PCIErr) {
u16 pci_cmd_status;
pci_read_config_word (tp->pci_dev, 0x06, &pci_cmd_status);
printk ("<3>" "%s: PCI Bus error %4.4x.\n",
dev->name, pci_cmd_status);
}
}
static void rtl8139_interrupt (int irq, void *dev_instance,
struct pt_regs *regs)
{
struct net_device *dev = (struct net_device *) dev_instance;
struct rtl8139_private *tp = dev->priv;
int boguscnt = max_interrupt_work;
void *ioaddr = tp->mmio_addr;
int ackstat, status;
int link_changed = 0;
(void)(&tp->lock);
do {
status = (*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus))));
if (status == 0xFFFF)
break;
if (status & RxUnderrun)
link_changed = (*(volatile unsigned short *) ((void *)(ioaddr + (CSCR)))) & CSCR_LinkChangeBit;
ackstat = status & ~RxAckBits;
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus))) = ((ackstat)));
;
if ((status &
(PCIErr | PCSTimeout | RxUnderrun | RxOverflow |
RxFIFOOver | TxErr | TxOK | RxErr | RxOK)) == 0)
break;
if (netif_running (dev) && (status & RxAckBits))
rtl8139_rx_interrupt (dev, tp, ioaddr);
if (status & (PCIErr | PCSTimeout | RxUnderrun | RxOverflow |
RxFIFOOver | TxErr | RxErr))
rtl8139_weird_interrupt (dev, tp, ioaddr,
status, link_changed);
if (netif_running (dev) && (status & (TxOK | TxErr)))
rtl8139_tx_interrupt (dev, tp, ioaddr);
boguscnt--;
} while (boguscnt > 0);
if (boguscnt <= 0) {
printk ("<4>" "%s: Too much work at interrupt, "
"IntrStatus=0x%4.4x.\n", dev->name, status);
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrStatus))) = ((0xffff)));
}
do { } while(0);
;
}
static int rtl8139_close (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
int ret = 0;
unsigned long flags;
;
netif_stop_queue (dev);
if (tp->thr_pid >= 0) {
ret = kill_proc (tp->thr_pid, 15, 1);
if (ret) {
printk ("<3>" "%s: unable to signal thread\n", dev->name);
return ret;
}
wait_for_completion (&tp->thr_exited);
}
;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tp->lock); } while (0);
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((0)));
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrMask))) = ((0)));
tp->stats.rx_missed_errors += ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed)))));
(*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed))) = ((0)));
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
__asm__ __volatile__("": : :"memory");
free_irq (dev->irq, dev);
rtl8139_tx_clear (tp);
pci_free_consistent(tp->pci_dev, ((8192 << 2) + 16 + 2048),
tp->rx_ring, tp->rx_ring_dma);
pci_free_consistent(tp->pci_dev, (1536 * 4),
tp->tx_bufs, tp->tx_bufs_dma);
tp->rx_ring = ((void *)0);
tp->tx_bufs = ((void *)0);
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock)));
if (rtl_chip_info[tp->chipset].flags & HasHltClk)
(*(volatile unsigned char *) ((void *)(ioaddr + (HltClk))) = (('H')));
;
return 0;
}
static void netdev_get_eset (struct net_device *dev, struct ethtool_cmd *eset)
{
struct rtl8139_private *np = dev->priv;
void *ioaddr = np->mmio_addr;
u16 advert;
eset->supported = (1 << 0)
| (1 << 1)
| (1 << 2)
| (1 << 3)
| (1 << 6)
| (1 << 7);
eset->advertising = (1 << 7) | (1 << 6);
advert = mdio_read (dev, np->phys[0], 4);
if (advert & 0x0020)
eset->advertising |= (1 << 0);
if (advert & 0x0040)
eset->advertising |= (1 << 1);
if (advert & 0x0080)
eset->advertising |= (1 << 2);
if (advert & 0x0100)
eset->advertising |= (1 << 3);
eset->speed = ((*(volatile unsigned char *) ((void *)(ioaddr + (MediaStatus)))) & 0x08) ? 10 : 100;
eset->duplex = np->full_duplex ? 0x01 : 0x00;
eset->port = 0x00;
eset->phy_address = np->phys[0];
eset->transceiver = 0x00;
eset->autoneg = (mdio_read (dev, np->phys[0], 0) & 0x1000) != 0;
eset->maxtxpkt = 1;
eset->maxrxpkt = 1;
}
static void netdev_get_wol (struct net_device *dev, struct ethtool_wolinfo *wol)
{
struct rtl8139_private *np = dev->priv;
void *ioaddr = np->mmio_addr;
if (rtl_chip_info[np->chipset].flags & HasLWake) {
u8 cfg3 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config3))));
u8 cfg5 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config5))));
wol->supported = (1 << 0) | (1 << 5)
| (1 << 1) | (1 << 2) | (1 << 3);
wol->wolopts = 0;
if (cfg3 & Cfg3_LinkUp)
wol->wolopts |= (1 << 0);
if (cfg3 & Cfg3_Magic)
wol->wolopts |= (1 << 5);
if (cfg5 & Cfg5_UWF)
wol->wolopts |= (1 << 1);
if (cfg5 & Cfg5_MWF)
wol->wolopts |= (1 << 2);
if (cfg5 & Cfg5_BWF)
wol->wolopts |= (1 << 3);
}
}
static int netdev_set_wol (struct net_device *dev,
const struct ethtool_wolinfo *wol)
{
struct rtl8139_private *np = dev->priv;
void *ioaddr = np->mmio_addr;
u32 support;
u8 cfg3, cfg5;
support = ((rtl_chip_info[np->chipset].flags & HasLWake)
? ((1 << 0) | (1 << 5)
| (1 << 1) | (1 << 2) | (1 << 3))
: 0);
if (wol->wolopts & ~support)
return -22;
cfg3 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config3)))) & ~(Cfg3_LinkUp | Cfg3_Magic);
if (wol->wolopts & (1 << 0))
cfg3 |= Cfg3_LinkUp;
if (wol->wolopts & (1 << 5))
cfg3 |= Cfg3_Magic;
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Unlock)));
(*(volatile unsigned char *) ((void *)(ioaddr + (Config3))) = ((cfg3)));
(*(volatile unsigned char *) ((void *)(ioaddr + (Cfg9346))) = ((Cfg9346_Lock)));
cfg5 = (*(volatile unsigned char *) ((void *)(ioaddr + (Config5)))) & ~(Cfg5_UWF | Cfg5_MWF | Cfg5_BWF);
if (wol->wolopts & (1 << 1))
cfg5 |= Cfg5_UWF;
if (wol->wolopts & (1 << 2))
cfg5 |= Cfg5_MWF;
if (wol->wolopts & (1 << 3))
cfg5 |= Cfg5_BWF;
(*(volatile unsigned char *) ((void *)(ioaddr + (Config5))) = ((cfg5)));
return 0;
}
static int netdev_ethtool_ioctl (struct net_device *dev, void *useraddr)
{
struct rtl8139_private *np = dev->priv;
u32 ethcmd;
if ((__builtin_constant_p(sizeof (ethcmd)) ? __constant_copy_from_user((ðcmd),(useraddr),(sizeof (ethcmd))) : __generic_copy_from_user((ðcmd),(useraddr),(sizeof (ethcmd)))))
return -14;
switch (ethcmd) {
case 0x00000001:
{
struct ethtool_cmd eset = { 0x00000001 };
do { __asm__ __volatile__("cli": : :"memory"); (void)(&np->lock); } while (0);
netdev_get_eset (dev, &eset);
do { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
if ((__builtin_constant_p(sizeof (eset)) ? __constant_copy_to_user((useraddr),(&eset),(sizeof (eset))) : __generic_copy_to_user((useraddr),(&eset),(sizeof (eset)))))
return -14;
return 0;
}
case 0x00000003:
{
struct ethtool_drvinfo info = { 0x00000003 };
strcpy (info.driver, "8139too");
strcpy (info.version, "0.9.20");
strcpy (info.bus_info, np->pci_dev->slot_name);
if ((__builtin_constant_p(sizeof (info)) ? __constant_copy_to_user((useraddr),(&info),(sizeof (info))) : __generic_copy_to_user((useraddr),(&info),(sizeof (info)))))
return -14;
return 0;
}
case 0x00000005:
{
struct ethtool_wolinfo wol = { 0x00000005 };
do { __asm__ __volatile__("cli": : :"memory"); (void)(&np->lock); } while (0);
netdev_get_wol (dev, &wol);
do { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
if ((__builtin_constant_p(sizeof (wol)) ? __constant_copy_to_user((useraddr),(&wol),(sizeof (wol))) : __generic_copy_to_user((useraddr),(&wol),(sizeof (wol)))))
return -14;
return 0;
}
case 0x00000006:
{
struct ethtool_wolinfo wol;
int rc;
if ((__builtin_constant_p(sizeof (wol)) ? __constant_copy_from_user((&wol),(useraddr),(sizeof (wol))) : __generic_copy_from_user((&wol),(useraddr),(sizeof (wol)))))
return -14;
do { __asm__ __volatile__("cli": : :"memory"); (void)(&np->lock); } while (0);
rc = netdev_set_wol (dev, &wol);
do { do { } while(0); __asm__ __volatile__("sti": : :"memory"); } while (0);
return rc;
}
default:
break;
}
return -95;
}
static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
{
struct rtl8139_private *tp = dev->priv;
struct mii_ioctl_data *data = (struct mii_ioctl_data *)&rq->ifr_ifru.ifru_data;
int rc = 0;
int phy = tp->phys[0] & 0x3f;
;
if (cmd != 0x8946) {
data->phy_id &= 0x1f;
data->reg_num &= 0x1f;
}
switch (cmd) {
case 0x8946:
return netdev_ethtool_ioctl(dev, (void *) rq->ifr_ifru.ifru_data);
case 0x8947:
case 0x89F0:
data->phy_id = phy;
case 0x8948:
case 0x89F0 +1:
data->val_out = mdio_read (dev, data->phy_id, data->reg_num);
break;
case 0x8949:
case 0x89F0 +2:
if (!capable (12)) {
rc = -1;
break;
}
if (data->phy_id == phy) {
u16 value = data->val_in;
switch (data->reg_num) {
case 0:
tp->medialock = (value & 0x9000) ? 0 : 1;
if (tp->medialock)
tp->full_duplex = (value & 0x0100) ? 1 : 0;
break;
case 4: break;
}
}
mdio_write(dev, data->phy_id, data->reg_num, data->val_in);
break;
default:
rc = -95;
break;
}
;
return rc;
}
static struct net_device_stats *rtl8139_get_stats (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
unsigned long flags;
;
if (netif_running(dev)) {
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tp->lock); } while (0);
tp->stats.rx_missed_errors += ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed)))));
(*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed))) = ((0)));
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
;
return &tp->stats;
}
static unsigned const ethernet_polynomial = 0x04c11db7U;
static inline u32 ether_crc (int length, unsigned char *data)
{
int crc = -1;
;
while (--length >= 0) {
unsigned char current_octet = *data++;
int bit;
for (bit = 0; bit < 8; bit++, current_octet >>= 1)
crc = (crc << 1) ^ ((crc < 0) ^ (current_octet & 1) ?
ethernet_polynomial : 0);
}
;
return crc;
}
static void __set_rx_mode (struct net_device *dev)
{
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
u32 mc_filter[2];
int i, rx_mode;
u32 tmp;
;
;
if (dev->flags & 0x100) {
printk ("<5>" "%s: Promiscuous mode enabled.\n",
dev->name);
rx_mode =
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
} else if ((dev->mc_count > multicast_filter_limit)
|| (dev->flags & 0x200)) {
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
} else {
struct dev_mc_list *mclist;
rx_mode = AcceptBroadcast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(6, mclist->dmi_addr) >> 26;
mc_filter[bit_nr >> 5] |= ((__u32)(1 << (bit_nr & 31)));
rx_mode |= AcceptMulticast;
}
}
tmp = rtl8139_rx_config | rx_mode;
if (tp->rx_config != tmp) {
do { (*(volatile unsigned int *) ((void *)(ioaddr + (RxConfig))) = ((tmp))); (*(volatile unsigned int *) ((void *)(ioaddr + (RxConfig)))); } while (0);
tp->rx_config = tmp;
}
do { (*(volatile unsigned int *) ((void *)(ioaddr + (MAR0 + 0))) = ((mc_filter[0]))); (*(volatile unsigned int *) ((void *)(ioaddr + (MAR0 + 0)))); } while (0);
do { (*(volatile unsigned int *) ((void *)(ioaddr + (MAR0 + 4))) = ((mc_filter[1]))); (*(volatile unsigned int *) ((void *)(ioaddr + (MAR0 + 4)))); } while (0);
;
}
static void rtl8139_set_rx_mode (struct net_device *dev)
{
unsigned long flags;
struct rtl8139_private *tp = dev->priv;
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tp->lock); } while (0);
__set_rx_mode(dev);
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
}
static int rtl8139_suspend (struct pci_dev *pdev, u32 state)
{
struct net_device *dev = pci_get_drvdata (pdev);
struct rtl8139_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
unsigned long flags;
if (!netif_running (dev))
return 0;
netif_device_detach (dev);
do { __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (flags): :"memory"); (void)(&tp->lock); } while (0);
(*(volatile unsigned short *) ((void *)(ioaddr + (IntrMask))) = ((0)));
(*(volatile unsigned char *) ((void *)(ioaddr + (ChipCmd))) = ((0)));
tp->stats.rx_missed_errors += ((unsigned long) (*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed)))));
(*(volatile unsigned int *) ((void *)(ioaddr + (RxMissed))) = ((0)));
do { do { } while(0); __asm__ __volatile__("pushl %0 ; popfl": :"g" (flags):"memory", "cc"); } while (0);
return 0;
}
static int rtl8139_resume (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
if (!netif_running (dev))
return 0;
netif_device_attach (dev);
rtl8139_hw_start (dev);
return 0;
}
static struct pci_driver rtl8139_pci_driver = {
name: "8139too",
id_table: rtl8139_pci_tbl,
probe: rtl8139_init_one,
remove: rtl8139_remove_one,
suspend: rtl8139_suspend,
resume: rtl8139_resume,
};
static int __attribute__ ((__section__ (".text.init"))) rtl8139_init_module (void)
{
return pci_module_init (&rtl8139_pci_driver);
}
static void __attribute__ ((unused, __section__(".text.exit"))) rtl8139_cleanup_module (void)
{
pci_unregister_driver (&rtl8139_pci_driver);
}
static initcall_t __initcall_rtl8139_init_module __attribute__ ((unused,__section__ (".initcall.init"))) = rtl8139_init_module;;
static exitcall_t __exitcall_rtl8139_cleanup_module __attribute__ ((unused,__section__ (".exitcall.exit"))) = rtl8139_cleanup_module;;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2001-10-31 20:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-31 20:41 c/4736: gcc internal error in reload_cse_simplify_operands compiling linux 2.4.13 rodrigc
-- strict thread matches above, loose matches on Subject: below --
2001-10-30 1:06 MST
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).