public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/5775: Compilation stops abruptly
@ 2002-02-25 5:26 varadhu_n
0 siblings, 0 replies; only message in thread
From: varadhu_n @ 2002-02-25 5:26 UTC (permalink / raw)
To: gcc-gnats; +Cc: sureshls
>Number: 5775
>Category: c
>Synopsis: Compilation stops abruptly
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 25 05:06:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: N. Varadarajan
>Release: unknown-1.0
>Organization:
>Environment:
PowerPC Linux. RPX Lite board hosting MPC 850/823
>Description:
We booted the RPX Lite with the Linux Kernel 2.4.7
and we tried to compile the Linux source tree in that target
When doing a make zImage it proceeded and stopped after
sometime with the following message
gcc -D__KERNEL__ -I/home/root/kernel/kernel/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing
-fno-common -fomit-frame-pointer -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized
-mmultiple -mstring -mcpu=860 -msoft-float -g3 -c -o panic.o
panic.c
panic.c: In function `panic':
panic.c:109: Internal compiler error in `float_signal', at toplev.c:2418
Please submit a full bug report.
output of gcc -v
Reading specs from /opt/lib/gcc-lib/powerpc-linux/2.95.2/specs
gcc version 2.95.2 19991024 (release)
Please note that this is not a cross-compiler.
I have attached the pre-processor's output file
A similar kind of bug-report has been filed for x86 by
Terushi Arakawa
>How-To-Repeat:
Just compile the kernel as described above
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
>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 )) ; } swi tch ((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; } }
#define _sig_nand(x,y) ((x) & ~(y))
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; } }
#undef _SIG_SET_BINOP
#undef _sig_or
#undef _sig_and
#undef _sig_nand
#define _SIG_SET_OP(name, op) static inline void name(sigset_t *set) { unsigned long i; for (i = 0; i < _NSIG_WORDS/4; ++i) { set->sig[4*i+0] = op(set->sig[4*i+0]); set->sig[4*i+1] = op(set->sig[4*i+1]); set->sig[4*i+2] = op(set->sig[4*i+2]); set->sig[4* i+3] = op(set->sig[4*i+3]); } switch (_NSIG_WORDS % 4) { case 3: set->sig[4*i+2] = op(set->sig[4*i+2]); case 2: set->sig[4*i+1] = op(set->sig[4*i+1]); case 1: set->sig[4*i+0] = op(set->sig[4*i+0]); } }
# 149 "/home/root/kernel/kernel/include/linux/signal.h"
#define _sig_not(x) (~(x))
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] )) ; } }
#undef _SIG_SET_OP
#undef _sig_not
static inline void sigemptyset(sigset_t *set)
{
switch ((64 / 32 ) ) {
default:
memset(set, 0, sizeof(sigset_t));
break;
case 2: set->sig[1] = 0;
case 1: set->sig[0] = 0;
break;
}
}
static inline void sigfillset(sigset_t *set)
{
switch ((64 / 32 ) ) {
default:
memset(set, -1, sizeof(sigset_t));
break;
case 2: set->sig[1] = -1;
case 1: set->sig[0] = -1;
break;
}
}
extern char * render_sigset_t(sigset_t *set, char *buffer);
static inline void sigaddsetmask(sigset_t *set, unsigned long mask)
{
set->sig[0] |= mask;
}
static inline void sigdelsetmask(sigset_t *set, unsigned long mask)
{
set->sig[0] &= ~mask;
}
static inline int sigtestsetmask(sigset_t *set, unsigned long mask)
{
return (set->sig[0] & mask) != 0;
}
static inline void siginitset(sigset_t *set, unsigned long mask)
{
set->sig[0] = mask;
switch ((64 / 32 ) ) {
default:
memset(&set->sig[1], 0, sizeof(long)*((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:
memset(&set->sig[1], -1, sizeof(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);
# 29 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/securebits.h" 1
#define _LINUX_SECUREBITS_H 1
#define SECUREBITS_DEFAULT 0x00000000
extern unsigned securebits;
#define SECURE_NOROOT 0
#define SECURE_NO_SETUID_FIXUP 2
#define issecure(X) ( (1 << (X+1)) & SECUREBITS_DEFAULT ? (1 << (X)) & SECUREBITS_DEFAULT : (1 << (X)) & securebits )
# 30 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/fs_struct-defs.h" 1
#define _LINUX_FS_STRUCT_DEFS_H
struct fs_struct {
atomic_t count;
mutex_t lock;
int umask;
struct dentry * root, * pwd, * altroot;
struct vfsmount * rootmnt, * pwdmnt, * altrootmnt;
};
#define INIT_FS { ATOMIC_INIT(1), RW_LOCK_UNLOCKED, 0022, NULL, NULL, NULL, NULL, NULL, NULL }
extern void exit_fs(struct task_struct *);
extern void set_fs_altroot(void);
struct fs_struct *copy_fs_struct(struct fs_struct *old);
void put_fs_struct(struct fs_struct *fs);
# 31 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
#define IRQ_PRIORITY CONFIG_POSIX_PRIOS-2
#define SQ_PRIORITY CONFIG_POSIX_PRIOS-1
#define SOFTIRQ_PRIORITY CONFIG_POSIX_PRIOS-3
#define CSIGNAL 0x000000ff
#define CLONE_VM 0x00000100
#define CLONE_FS 0x00000200
#define CLONE_FILES 0x00000400
#define CLONE_SIGHAND 0x00000800
#define CLONE_PID 0x00001000
#define CLONE_PTRACE 0x00002000
#define CLONE_VFORK 0x00004000
#define CLONE_PARENT 0x00008000
#define CLONE_THREAD 0x00010000
#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD)
extern unsigned long avenrun[];
#define FSHIFT 11
#define FIXED_1 (1<<FSHIFT)
#define LOAD_FREQ (5*HZ)
#define EXP_1 1884
#define EXP_5 2014
#define EXP_15 2037
#define CALC_LOAD(load,exp,n) load *= exp; load += n*(FIXED_1-exp); load >>= FSHIFT;
#define CT_TO_SECS(x) ((long)((x) / ktimer_freq))
#define CT_TO_USECS(x) ((long)((((x) % ktimer_freq) * 1000000)/ktimer_freq))
#define OLD_CT_TO_SECS(x) ((x) / HZ)
#define OLD_CT_TO_USECS(x) (((x) % HZ) * 1000000/HZ)
extern int nr_running, nr_threads;
extern int last_pid;
# 1 "/home/root/kernel/kernel/include/linux/param.h" 1
#define _LINUX_PARAM_H
# 91 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/resource.h" 1
#define _LINUX_RESOURCE_H
#define RUSAGE_SELF 0
#define RUSAGE_CHILDREN (-1)
#define RUSAGE_BOTH (-2)
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;
};
#define PRIO_MIN (-20)
#define PRIO_MAX 20
#define PRIO_PROCESS 0
#define PRIO_PGRP 1
#define PRIO_USER 2
# 1 "/home/root/kernel/kernel/include/asm/resource.h" 1
#define _PPC_RESOURCE_H
#define RLIMIT_CPU 0
#define RLIMIT_FSIZE 1
#define RLIMIT_DATA 2
#define RLIMIT_STACK 3
#define RLIMIT_CORE 4
#define RLIMIT_RSS 5
#define RLIMIT_NPROC 6
#define RLIMIT_NOFILE 7
#define RLIMIT_MEMLOCK 8
#define RLIMIT_AS 9
#define RLIMIT_LOCKS 10
#define RLIM_NLIMITS 11
#define RLIM_INFINITY (~0UL)
#define INIT_RLIMITS { { RLIM_INFINITY, RLIM_INFINITY }, { RLIM_INFINITY, RLIM_INFINITY }, { RLIM_INFINITY, RLIM_INFINITY }, { _STK_LIM, RLIM_INFINITY }, { 0, RLIM_INFINITY }, { RLIM_INFINITY, RLIM_INFINITY }, { 0, 0 }, { INR_OPEN, INR_OPEN }, { RLIM_INFINITY, RLIM_INFINITY }, { RLIM_INFINITY, RLIM_INFINITY }, { RLIM_INFINITY, RLIM_INFINITY }, }
# 44 "/home/root/kernel/kernel/include/asm/resource.h"
# 56 "/home/root/kernel/kernel/include/linux/resource.h" 2
# 92 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/timer.h" 1
#define _LINUX_TIMER_H
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
};
extern void add_timer(struct timer_list * timer);
extern int del_timer(struct timer_list * timer);
extern int del_timer_sync(struct timer_list * timer);
extern void sync_timers(void);
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) ;
}
#define time_after(a,b) ((long)(b) - (long)(a) < 0)
#define time_before(a,b) time_after(b,a)
#define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0)
#define time_before_eq(a,b) time_after_eq(b,a)
# 93 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/asm/processor.h" 1
# 705 "/home/root/kernel/kernel/include/asm/processor.h"
# 95 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define TASK_ZOMBIE 4
#define TASK_STOPPED 8
#define __set_task_state(tsk, state_value) do { (tsk)->state = (state_value); } while (0)
#define set_task_state(tsk, state_value) __set_task_state((tsk), (state_value))
#define __set_current_state(state_value) do { current->state = (state_value); } while (0)
#define set_current_state(state_value) __set_current_state(state_value)
#define SCHED_OTHER 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_YIELD 0x10
struct sched_param {
int sched_priority;
};
struct completion;
extern mutex_t tasklist_lock;
extern mutex_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);
#define MAX_SCHEDULE_TIMEOUT LONG_MAX
extern signed long schedule_timeout(signed long timeout) ;
void schedule(void);
void preempt(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);
#define NR_OPEN_DEFAULT BITS_PER_LONG
struct files_struct {
atomic_t count;
mutex_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 ];
};
#define INIT_FILES { count: ATOMIC_INIT(1), file_lock: RW_LOCK_UNLOCKED, max_fds: NR_OPEN_DEFAULT, max_fdset: __FD_SETSIZE, next_fd: 0, fd: &init_files.fd_array[0], close_on_exec: &init_files.close_on_exec_init, open_fds: &init_files.open_fds_init, clo se_on_exec_init: { { 0, } }, open_fds_init: { { 0, } }, fd_array: { NULL, } }
# 205 "/home/root/kernel/kernel/include/linux/sched-defs.h"
#define MAX_MAP_COUNT (65536)
#define AVL_MIN_MAP_COUNT 32
struct mm_struct {
struct vm_area_struct * mmap;
struct vm_area_struct * mmap_avl;
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;
mutex_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;
struct task_struct *notify_mmdrop;
};
extern int mmlist_nr;
#define INIT_MM(name) { mmap: &init_mmap, mmap_avl: NULL, mmap_cache: NULL, pgd: swapper_pg_dir, mm_users: ATOMIC_INIT(2), mm_count: ATOMIC_INIT(1), map_count: 1, mmap_sem: __RWSEM_INITIALIZER(name.mmap_sem), page_table_lock: SPIN_LOCK_UNLOCKED, mmlist : LIST_HEAD_INIT(name.mmlist), }
# 260 "/home/root/kernel/kernel/include/linux/sched-defs.h"
struct signal_struct {
atomic_t count;
struct k_sigaction action[64 ];
mutex_t siglock;
};
#define INIT_SIGNALS { count: ATOMIC_INIT(1), action: { {{0,}}, }, siglock: SPIN_LOCK_UNLOCKED }
struct user_struct {
atomic_t __count;
atomic_t processes;
atomic_t files;
struct user_struct *next, **pprev;
uid_t uid;
};
#define get_current_user() ({ struct user_struct *__user = current->user; atomic_inc(&__user->__count); __user; })
extern struct user_struct root_user;
#define INIT_USER (&root_user)
typedef struct sched_ops {
void (*add)(struct task_struct *p, int cpu);
void (*add_head)(struct task_struct *p, int cpu);
void (*del)(struct task_struct *p, int cpu);
void (*charge)(struct task_struct *p, long time);
void (*yield)(struct task_struct *p, int cpu);
} sched_ops;
typedef struct sched_context {
struct task_struct *owner;
struct list_head sched_node;
struct list_head lent_to_node;
int queue_pos;
int last_prio;
struct task_struct *next_for_pi, *prev_for_pi;
struct task_struct *proc;
const sched_ops *sched_ops;
} __attribute__((aligned(64))) sched_context;
typedef 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;
unsigned long wchan;
unsigned long last_time;
unsigned long user_time, system_time;
int processor;
int lock_depth;
int bh_lock_depth;
unsigned long time_start;
unsigned long partial_jiffy;
int nice;
int policy, rt_priority;
int max_priority;
long time_left, slice;
unsigned int last_replenish;
unsigned int last_local_replenish;
int bound_cpu;
int timeshare_cpu;
int runnable;
volatile int has_cpu;
const sched_ops *sched_ops;
sched_context context[1 ];
struct task_struct *lender;
struct list_head lent_to;
int last_sched_queue;
int queue_num;
int context_queue_num;
ktimer *sleep_tmr;
struct mm_struct *mm;
unsigned long sleep_time;
struct task_struct *next_task, *prev_task;
struct mm_struct *active_mm;
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;
struct sigqueue sq_prof, sq_virt;
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 kernel_tms times;
unsigned long start_time;
cpu_tick_data_t 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;
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;
mutex_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;
mutex_t alloc_lock;
struct posix_timer **posix_timers;
int num_posix_timers;
mutex_t *lock_blocked;
struct task_struct *next_for_lock, *prev_for_lock;
int lock_type;
mutex_list_t *locks_held;
int mutex_abort;
int brlock_cpu;
int brlock_count;
int dying;
mutex_t exit_lock;
int usedfpu;
int preempted;
int dequeued;
int named;
struct rk_resource_set *rk_resource_set;
struct list_head rk_proclist;
int periodicType;
struct timespec period;
struct ktimer *period_timer;
struct ktimer *deadline_timer;
struct timespec last_start;
struct timespec startTime;
struct list_head tx_siglist;
struct list_head rx_siglist;
mutex_t siglist_lock;
int rk_inherit;
struct list_head rs_sock_list;
mutex_t socklist_lock;
int cpu_reserve_active;
int sysno;
} task_struct;
#define PF_ALIGNWARN 0x00000001
#define PF_STARTING 0x00000002
#define PF_EXITING 0x00000004
#define PF_FORKNOEXEC 0x00000040
#define PF_SUPERPRIV 0x00000100
#define PF_DUMPCORE 0x00000200
#define PF_SIGNALED 0x00000400
#define PF_MEMALLOC 0x00000800
#define PF_NOPREEMPT 0x08000000
#define PF_IRQHANDLER 0x10000000
#define PT_PTRACED 0x00000001
#define PT_TRACESYS 0x00000002
#define PT_DTRACE 0x00000004
#define PT_TRACESYSGOOD 0x00000008
#define _STK_LIM (8*1024*1024)
#define DEF_NICE 0
#define INIT_TASK(tsk) { state: 0, flags: 0, sigpending: 0, addr_limit: KERNEL_DS, exec_domain: &default_exec_domain, lock_depth: -1, nice: DEF_NICE, policy: SCHED_OTHER, bound_cpu: SHARED_QUEUE, has_cpu: 1, slice: DEF_SLICE, mm: NULL, active _mm: &init_mm, next_task: &tsk, prev_task: &tsk, p_opptr: &tsk, p_pptr: &tsk, thread_group: LIST_HEAD_INIT(tsk.thread_group), wait_chldexit: __WAIT_QUEUE_HEAD_INITIALIZER(tsk.wait_chldexit), real_timer: { function: it_real_fn }, cap_effective: CAP _INIT_EFF_SET, cap_inheritable: CAP_INIT_INH_SET, cap_permitted: CAP_FULL_SET, keep_capabilities: 0, rlim: INIT_RLIMITS, user: INIT_USER, comm: "swapper", thread: INIT_THREAD, fs: &init_fs, files: &init_files, sigmask_lock: SPIN_LOCK_UNLOCKED, sig : &init_signals, pending: { NULL, &tsk.pending.head, {{0}}}, blocked: {{0}}, alloc_lock: SPIN_LOCK_UNLOCKED, }
# 688 "/home/root/kernel/kernel/include/linux/sched-defs.h"
#define INIT_TASK_SIZE 2048*sizeof(long)
union task_union {
struct task_struct task;
unsigned long stack[2048*sizeof(long) /sizeof(long)];
};
# 4 "/home/root/kernel/kernel/include/linux/sched.h" 2
# 1 "/home/root/kernel/kernel/include/linux/mutex.h" 1
#define __LINUX_MUTEX_H
# 1 "/home/root/kernel/kernel/include/asm/current.h" 1
# 13 "/home/root/kernel/kernel/include/asm/current.h"
# 8 "/home/root/kernel/kernel/include/linux/mutex.h" 2
# 1 "/home/root/kernel/kernel/include/asm/bitops.h" 1
# 376 "/home/root/kernel/kernel/include/asm/bitops.h"
# 9 "/home/root/kernel/kernel/include/linux/mutex.h" 2
# 1 "/home/root/kernel/kernel/include/linux/measure.h" 1
#define __MEASURE_H
#define measure_gettimeofday(do) do_gettimeofday(do)
#define TIMEVAL struct timeval
# 1 "/home/root/kernel/kernel/include/linux/unistd.h" 1
#define _LINUX_UNISTD_H_
extern int errno;
# 1 "/home/root/kernel/kernel/include/asm/unistd.h" 1
#define _ASM_PPC_UNISTD_H_
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
#define __NR_close 6
#define __NR_waitpid 7
#define __NR_creat 8
#define __NR_link 9
#define __NR_unlink 10
#define __NR_execve 11
#define __NR_chdir 12
#define __NR_time 13
#define __NR_mknod 14
#define __NR_chmod 15
#define __NR_lchown 16
#define __NR_break 17
#define __NR_oldstat 18
#define __NR_lseek 19
#define __NR_getpid 20
#define __NR_mount 21
#define __NR_umount 22
#define __NR_setuid 23
#define __NR_getuid 24
#define __NR_stime 25
#define __NR_ptrace 26
#define __NR_alarm 27
#define __NR_oldfstat 28
#define __NR_pause 29
#define __NR_utime 30
#define __NR_stty 31
#define __NR_gtty 32
#define __NR_access 33
#define __NR_nice 34
#define __NR_ftime 35
#define __NR_sync 36
#define __NR_kill 37
#define __NR_rename 38
#define __NR_mkdir 39
#define __NR_rmdir 40
#define __NR_dup 41
#define __NR_pipe 42
#define __NR_times 43
#define __NR_prof 44
#define __NR_brk 45
#define __NR_setgid 46
#define __NR_getgid 47
#define __NR_signal 48
#define __NR_geteuid 49
#define __NR_getegid 50
#define __NR_acct 51
#define __NR_umount2 52
#define __NR_lock 53
#define __NR_ioctl 54
#define __NR_fcntl 55
#define __NR_mpx 56
#define __NR_setpgid 57
#define __NR_ulimit 58
#define __NR_oldolduname 59
#define __NR_umask 60
#define __NR_chroot 61
#define __NR_ustat 62
#define __NR_dup2 63
#define __NR_getppid 64
#define __NR_getpgrp 65
#define __NR_setsid 66
#define __NR_sigaction 67
#define __NR_sgetmask 68
#define __NR_ssetmask 69
#define __NR_setreuid 70
#define __NR_setregid 71
#define __NR_sigsuspend 72
#define __NR_sigpending 73
#define __NR_sethostname 74
#define __NR_setrlimit 75
#define __NR_getrlimit 76
#define __NR_getrusage 77
#define __NR_gettimeofday 78
#define __NR_settimeofday 79
#define __NR_getgroups 80
#define __NR_setgroups 81
#define __NR_select 82
#define __NR_symlink 83
#define __NR_oldlstat 84
#define __NR_readlink 85
#define __NR_uselib 86
#define __NR_swapon 87
#define __NR_reboot 88
#define __NR_readdir 89
#define __NR_mmap 90
#define __NR_munmap 91
#define __NR_truncate 92
#define __NR_ftruncate 93
#define __NR_fchmod 94
#define __NR_fchown 95
#define __NR_getpriority 96
#define __NR_setpriority 97
#define __NR_profil 98
#define __NR_statfs 99
#define __NR_fstatfs 100
#define __NR_ioperm 101
#define __NR_socketcall 102
#define __NR_syslog 103
#define __NR_setitimer 104
#define __NR_getitimer 105
#define __NR_stat 106
#define __NR_lstat 107
#define __NR_fstat 108
#define __NR_olduname 109
#define __NR_iopl 110
#define __NR_vhangup 111
#define __NR_idle 112
#define __NR_vm86 113
#define __NR_wait4 114
#define __NR_swapoff 115
#define __NR_sysinfo 116
#define __NR_ipc 117
#define __NR_fsync 118
#define __NR_sigreturn 119
#define __NR_clone 120
#define __NR_setdomainname 121
#define __NR_uname 122
#define __NR_modify_ldt 123
#define __NR_adjtimex 124
#define __NR_mprotect 125
#define __NR_sigprocmask 126
#define __NR_create_module 127
#define __NR_init_module 128
#define __NR_delete_module 129
#define __NR_get_kernel_syms 130
#define __NR_quotactl 131
#define __NR_getpgid 132
#define __NR_fchdir 133
#define __NR_bdflush 134
#define __NR_sysfs 135
#define __NR_personality 136
#define __NR_afs_syscall 137
#define __NR_setfsuid 138
#define __NR_setfsgid 139
#define __NR__llseek 140
#define __NR_getdents 141
#define __NR__newselect 142
#define __NR_flock 143
#define __NR_msync 144
#define __NR_readv 145
#define __NR_writev 146
#define __NR_getsid 147
#define __NR_fdatasync 148
#define __NR__sysctl 149
#define __NR_mlock 150
#define __NR_munlock 151
#define __NR_mlockall 152
#define __NR_munlockall 153
#define __NR_sched_setparam 154
#define __NR_sched_getparam 155
#define __NR_sched_setscheduler 156
#define __NR_sched_getscheduler 157
#define __NR_sched_yield 158
#define __NR_sched_get_priority_max 159
#define __NR_sched_get_priority_min 160
#define __NR_sched_rr_get_interval 161
#define __NR_nanosleep 162
#define __NR_mremap 163
#define __NR_setresuid 164
#define __NR_getresuid 165
#define __NR_query_module 166
#define __NR_poll 167
#define __NR_nfsservctl 168
#define __NR_setresgid 169
#define __NR_getresgid 170
#define __NR_prctl 171
#define __NR_rt_sigreturn 172
#define __NR_rt_sigaction 173
#define __NR_rt_sigprocmask 174
#define __NR_rt_sigpending 175
#define __NR_rt_sigtimedwait 176
#define __NR_rt_sigqueueinfo 177
#define __NR_rt_sigsuspend 178
#define __NR_pread 179
#define __NR_pwrite 180
#define __NR_chown 181
#define __NR_getcwd 182
#define __NR_capget 183
#define __NR_capset 184
#define __NR_sigaltstack 185
#define __NR_sendfile 186
#define __NR_getpmsg 187
#define __NR_putpmsg 188
#define __NR_vfork 189
#define __NR_ugetrlimit 190
#define __NR_mmap2 192
#define __NR_truncate64 193
#define __NR_ftruncate64 194
#define __NR_stat64 195
#define __NR_lstat64 196
#define __NR_fstat64 197
#define __NR_pciconfig_read 198
#define __NR_pciconfig_write 199
#define __NR_pciconfig_iobase 200
#define __NR_multiplexer 201
#define __NR_getdents64 202
#define __NR_pivot_root 203
#define __NR_fcntl64 204
#define __NR_madvise 205
#define __NR_mincore 206
#define __NR_sched_rr_set_interval 398
#define __NR_setname 399
#define __NR_measure_register 400
#define __NR_measure_getinfo 401
#define __NR_rk_resource_set_create 402
#define __NR_rk_resource_set_destroy 403
#define __NR_rk_resource_set_attach_process 404
#define __NR_rk_resource_set_detach_process 405
#define __NR_rk_reserve_create 406
#define __NR_rk_reserve_delete 407
#define __NR_rk_reserve_ctl 408
#define __NR_timer_create 411
#define __NR_timer_delete 412
#define __NR_timer_settime 413
#define __NR_timer_gettime 414
#define __NR_timer_getoverrun 415
#define __NR_rk_resource_sets_get_num 416
#define __NR_rk_resource_sets_get_list 417
#define __NR_rk_reserves_get_num 418
#define __NR_rk_reserves_get_list 419
#define __NR_rk_reserve_get_attr 420
#define __NR_rk_reserves_set_scheduling_policy 421
#define __NR_rk_reserves_get_scheduling_policy 422
#define __NR_rt_make_periodic 423
#define __NR_rt_wait_for_start_time 424
#define __NR_rt_wait_for_next_period 425
#define __NR_rt_process_get_period 426
#define __NR_rt_get_clock_frequency 427
#define __NR_rk_resource_set_get_name 428
#define __NR_rk_resource_set_get_rsv 429
#define __NR_rt_process_set_period 430
#define __NR_rk_resource_set_get_num_procs 431
#define __NR_rk_resource_set_get_proclist 432
#define __NR_rk_inherit_mode 433
#define __NR_rt_mutex_create 434
#define __NR_rt_mutex_destroy 435
#define __NR_rt_mutex_trylock 436
#define __NR_rt_mutex_lock 437
#define __NR_rt_mutex_unlock 438
#define __NR_rk_resource_set_set_name 439
#define __NR_rk_proc_get_rset 440
#define __NR_rk_signal 441
#define __NR_rk_resource_set_attach_socket 442
#define __NR_rk_resource_set_detach_socket 443
#define __NR_rt_set_prio_ceiling 444
#define __NR(n) #n
#define __syscall_return(type) return (__sc_err & 0x10000000 ? errno = __sc_ret, __sc_ret = -1 : 0), (type) __sc_ret
#define __syscall_clobbers "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
#define _syscall0(type,name) type name(void) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigned long __sc_3 __asm__ ("r3"); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3), "1" (__sc_0) : __syscall_clobbers); __sc_ret = __sc_3; __sc_err = __sc_0; } __syscall_return (type); }
# 298 "/home/root/kernel/kernel/include/asm/unistd.h"
#define _syscall1(type,name,type1,arg1) type name(type1 arg1) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigned long __sc_3 __asm__ ("r3"); __sc_3 = (unsigned long) (arg1); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3), "1" (__sc_0) : __syscall_clobbers); __sc_ret = __sc_3; __sc_err = __sc_0; } __syscall_return (type); }
# 320 "/home/root/kernel/kernel/include/asm/unistd.h"
#define _syscall2(type,name,type1,arg1,type2,arg2) type name(type1 arg1, type2 arg2) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigned long __sc_3 __asm__ ("r3"); register unsigned long __sc_4 __asm__ ( "r4"); __sc_3 = (unsigned long) (arg1); __sc_4 = (unsigned long) (arg2); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3), "1" (__sc_0), "r" (__sc_4) : __syscall_clobber s); __sc_ret = __sc_3; __sc_err = __sc_0; } __syscall_return (type); }
# 345 "/home/root/kernel/kernel/include/asm/unistd.h"
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) type name(type1 arg1, type2 arg2, type3 arg3) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigned long __sc_3 __asm__ ("r3"); register unsigne d long __sc_4 __asm__ ("r4"); register unsigned long __sc_5 __asm__ ("r5"); __sc_3 = (unsigned long) (arg1); __sc_4 = (unsigned long) (arg2); __sc_5 = (unsigned long) (arg3); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3), "1" (__sc_0), "r" (__sc_4), "r" (__sc_5) : __syscall_clobbers); __sc_ret = __sc_3; __sc_err = __sc_0; } __syscall_return (type); }
# 373 "/home/root/kernel/kernel/include/asm/unistd.h"
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigned long __sc_3 __asm__ ( "r3"); register unsigned long __sc_4 __asm__ ("r4"); register unsigned long __sc_5 __asm__ ("r5"); register unsigned long __sc_6 __asm__ ("r6"); __sc_3 = (unsigned long) (arg1); __sc_4 = (unsigned long) (arg2); __sc_5 = (unsigned long) (arg3); __sc_6 = ( unsigned long) (arg4); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3), "1" (__sc_0), "r" (__sc_4), "r" (__sc_5), "r" (__sc_6) : __syscall_clobbers); __sc_ret = __s c_3; __sc_err = __sc_0; } __syscall_return (type); }
# 404 "/home/root/kernel/kernel/include/asm/unistd.h"
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { unsigned long __sc_ret, __sc_err; { register unsigned long __sc_0 __asm__ ("r0"); register unsigne d long __sc_3 __asm__ ("r3"); register unsigned long __sc_4 __asm__ ("r4"); register unsigned long __sc_5 __asm__ ("r5"); register unsigned long __sc_6 __asm__ ("r6"); register unsigned long __sc_7 __asm__ ("r7"); __sc_3 = (unsigned long) (arg1); __sc_4 = (unsigned long) (arg2); __sc_5 = (unsigned long) (arg3); __sc_6 = (unsigned long) (arg4); __sc_7 = (unsigned long) (arg5); __sc_0 = __NR_##name; __asm__ __volatile__ ("sc \n\t" "mfcr %1 " : "=&r" (__sc_3), "=&r" (__sc_0) : "0" (__sc_3) , "1" (__sc_0), "r" (__sc_4), "r" (__sc_5), "r" (__sc_6), "r" (__sc_7) : __syscall_clobbers); __sc_ret = __sc_3; __sc_err = __sc_0; } __syscall_return (type); }
# 438 "/home/root/kernel/kernel/include/asm/unistd.h"
# 473 "/home/root/kernel/kernel/include/asm/unistd.h"
# 9 "/home/root/kernel/kernel/include/linux/unistd.h" 2
# 19 "/home/root/kernel/kernel/include/linux/measure.h" 2
# 1 "/home/root/kernel/kernel/include/rk/rkmod.h" 1
#define RK_RKMOD_H
# 1 "/home/root/kernel/kernel/include/linux/timespec.h" 1
#define _TIMESPEC_H_
#define NANOSEC_PER_SEC (1000000000L)
#define USEC_PER_SEC (1000000L)
#define timespec_zero(time) { (time).tv_sec = 0; (time).tv_nsec = 0; }
#define timespec_add_nsec(result, nanos) do { if (((result).tv_nsec += (nanos)) >= NANOSEC_PER_SEC) { (result).tv_nsec -= NANOSEC_PER_SEC; (result).tv_sec++; } } while (0)
#define timespec_add(result, addend) do { (result).tv_nsec += (addend).tv_nsec; (result).tv_sec += (addend).tv_sec; if ((result).tv_nsec >= NANOSEC_PER_SEC) { (result).tv_nsec -= NANOSEC_PER_SEC; (result).tv_sec++; } } while (0)
#define timespec_sub(result, subtrahend) do { if ((result).tv_nsec >= (subtrahend).tv_nsec) { (result).tv_nsec -= (subtrahend).tv_nsec; (result).tv_sec -= (subtrahend).tv_sec; } else { (result).tv_nsec += NANOSEC_PER_SEC; (result).tv_nsec -= (subtrahend) .tv_nsec; (result).tv_sec -= (subtrahend).tv_sec + 1; } } while (0)
# 35 "/home/root/kernel/kernel/include/linux/timespec.h"
#define timespec_set(time, newtime) do { (time).tv_sec = (newtime).tv_sec; (time).tv_nsec = (newtime).tv_nsec; } while (0)
#define timespec_cmp(time1, time2) (((time1).tv_sec < (time2).tv_sec) || (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec <= (time2).tv_nsec)))
#define timespec_ge(time1, time2) (((time1).tv_sec > (time2).tv_sec) || (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec >= (time2).tv_nsec)))
#define timespec_gt(time1, time2) (((time1).tv_sec > (time2).tv_sec) || (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec > (time2).tv_nsec)))
#define timespec_le(time1, time2) (((time1).tv_sec < (time2).tv_sec) || (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec <= (time2).tv_nsec)))
#define timespec_lt(time1, time2) (((time1).tv_sec < (time2).tv_sec) || (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec < (time2).tv_nsec)))
#define timespec_eq(time1,time2) (((time1).tv_sec == (time2).tv_sec) && ((time1).tv_nsec == (time2).tv_nsec))
#define timespec_min(time1,time2) (timespec_le((time1),(time2)) ? (time1) : (time2))
#define timespec_max(time1,time2) (timespec_ge((time1),(time2)) ? (time1) : (time2))
#define timespec_ne(time1,time2) (((time1).tv_sec != (time2).tv_sec) || ((time1).tv_nsec != (time2).tv_nsec))
#define timespec_nonzero(time) ((time).tv_nsec || (time).tv_sec)
#define timespec_valid(time) ((time).tv_sec >= 0 && (time).tv_nsec >= 0 && (time).tv_nsec <= NANOSEC_PER_SEC)
#define timespec2micro(time) (((time).tv_sec * USEC_PER_SEC) + ((time).tv_nsec / 1000))
#define timespec2nano(time) ((((unsigned long long)(time).tv_sec) * NANOSEC_PER_SEC) + ((time).tv_nsec))
#define nano2timespec(nanos, ts) do { ts.tv_sec = nanos / NANOSEC_PER_SEC; ts.tv_nsec = nanos - ts.tv_sec * NANOSEC_PER_SEC; } while (0)
# 34 "/home/root/kernel/kernel/include/rk/rkmod.h" 2
# 1 "/home/root/kernel/kernel/include/rk/rk.h" 1
#define RK_RK_H
# 51 "/home/root/kernel/kernel/include/rk/rk.h"
#define RK_TIMESYS_GRP 500
# 70 "/home/root/kernel/kernel/include/rk/rk.h"
#define NULL_RK_TIMER ((rk_timer_t)0)
#define NULL_RESOURCE_SET ((rk_resource_set_t)0)
#define NULL_RESERVE ((rk_reserve_t)0)
enum rk_reserve_mode
{
RSV_HARD =0x1,
RSV_FIRM =0x2,
RSV_SOFT =0x4,
};
typedef enum rk_reserve_mode rk_reserve_mode_t;
struct rk_reserve_param {
rk_reserve_mode_t sch_mode;
rk_reserve_mode_t enf_mode;
rk_reserve_mode_t rep_mode;
};
typedef struct rk_reserve_param rk_reserve_param_data_t;
typedef struct rk_reserve_param *rk_reserve_param_t;
struct cpu_reserve_attr {
struct timespec compute_time;
struct timespec period;
struct timespec deadline;
struct timespec blocking_time;
struct timespec start_time;
rk_reserve_param_data_t reserve_type;
int processor;
};
typedef struct cpu_reserve_attr cpu_reserve_attr_data_t;
typedef struct cpu_reserve_attr *cpu_reserve_attr_t;
#define RK_IFNAMSIZ 16
struct net_reserve_attr {
size_t amount;
struct timespec net_time;
struct timespec period;
struct timespec deadline;
struct timespec blocking_time;
struct timespec start_time;
rk_reserve_param_data_t reserve_type;
size_t buffer_space;
char dev_name[16 ];
};
typedef struct net_reserve_attr net_reserve_attr_data_t;
typedef struct net_reserve_attr *net_reserve_attr_t;
enum rk_reserve_type
{
RSV_NULL =0x0,
RSV_CPU =0x1,
RSV_NET,
RSV_NETR,
RSV_FS,
RSV_MEM,
RSV_DEV,
};
typedef enum rk_reserve_type rk_reserve_type_t;
#define RK_NAME_LEN 16
#define RSET_NAME_LEN RK_NAME_LEN
#define RATE_MONOTONIC 0
#define DEADLINE_MONOTONIC 1
#define NUM_CPU_RESERVE_POLICIES (DEADLINE_MONOTONIC + 1)
#define RK_ANY_CPU (-1)
#define RK_RSV_ENFORCE 1
#define RK_DEADLINE_MISSED 2
#define RT_MIN_PERIOD (struct timespec){0, 20000}
# 270 "/home/root/kernel/kernel/include/rk/rk.h"
# 37 "/home/root/kernel/kernel/include/rk/rkmod.h" 2
typedef unsigned long long * cpu_tick_t;
#define NANOSEC 1000000000L
#define MICROSEC 1000000L
#define RK_FALSE 0
#define RK_TRUE 1
#define RK_HISTORY_SIZE 32
#define LINUX_TIMESHARE_PRIORITY 0
#define LINUX_REALTIME_PRIORITY 256
enum rt_process_type
{
APERIODIC =0x1,
PERIODIC =0x2,
SPORADIC =0x4,
};
typedef enum rt_process_type rt_process_type_t;
enum rk_reserve_state
{
RSV_IS_NULL =0x0,
RSV_IS_RUNNING =0x1,
RSV_IS_DEPLETED =0x10,
RSV_IS_STARTING = 0x100,
RSV_IS_DYING = 0x200,
};
typedef enum rk_reserve_state rk_reserve_state_t;
# 92 "/home/root/kernel/kernel/include/rk/rkmod.h"
typedef struct rk_resource_set *rk_resource_set_t;
typedef struct rk_reserve *rk_reserve_t;
extern mutex_t rslist_lock;
extern mutex_t tasklist_lock;
extern old_rwlock_t rk_lock;
struct rk_resource_set {
char rs_name[16 ];
char rs_destructible;
struct list_head rs_list;
struct list_head rs_task_list;
int num_tasks;
rk_reserve_t cpu_rsv;
rk_reserve_t net_rsv;
rk_reserve_t netr_rsv;
struct proc_dir_entry *rs_proc_dir;
};
struct rk_reserve_ops {
int (*destroy) (rk_reserve_t);
void (*start_account) (rk_reserve_t);
void (*stop_account) (rk_reserve_t, cpu_tick_t);
void (*replenish) (rk_reserve_t, cpu_tick_t);
void (*enforce) (rk_reserve_t);
void (*attach)(rk_reserve_t, struct task_struct *);
void (*detach)(rk_reserve_t, struct task_struct *);
int (*get_history)(rk_reserve_t, char *);
int (*read_proc) (rk_reserve_t, char *);
};
struct rk_reserve {
rk_resource_set_t rsv_rs;
rk_reserve_type_t rsv_type;
rk_reserve_state_t rsv_state;
struct rk_reserve_ops * rsv_ops;
void * rsv_rsv;
ktimer *rsv_replenish_tmr;
rk_reserve_param_data_t rsv_reserve_param;
struct list_head siglist;
struct proc_dir_entry *rsv_proc_entry;
struct proc_dir_entry *rsv_proc_history;
};
typedef unsigned long cpu_capacity_t;
typedef unsigned long long cpu_capacity_quad_t;
struct cpu_reserve {
rk_reserve_t rsv;
struct list_head cpu_list;
cpu_tick_data_t cpu_period_used_ticks;
cpu_tick_data_t cpu_period_start_ticks;
cpu_tick_data_t cpu_period_available_ticks;
struct wait_queue *depleted_wait;
cpu_tick_data_t * cpu_period_prev_used_ticks;
cpu_capacity_t cpu_max_utilization;
cpu_capacity_t cpu_min_utilization;
struct {
unsigned long total_count;
cpu_capacity_quad_t total_utils;
} cpu_average;
cpu_reserve_attr_data_t cpu_res_attr;
cpu_tick_data_t cpu_time_ticks;
int cpu_priority_index;
cpu_tick_data_t cpu_period_ticks;
cpu_capacity_t cpu_capacity;
};
typedef struct cpu_reserve * cpu_reserve_t;
#define NULL_CPU_RESERVE ((cpu_reserve_t)0)
#define BOUND_CPU(crsv) ((crsv)->cpu_res_attr.processor)
struct rk_cpu_data_struct {
volatile int in_intr;
cpu_reserve_t current_cpu_reserve;
struct list_head cpu_list;
cpu_capacity_t current_capacity;
ktimer *enforce_tmr;
struct task_struct *current_task;
};
struct rk_signal_struct {
rk_reserve_t rsv;
struct list_head tx_list;
struct task_struct *task;
struct list_head rx_list;
sigevent_t ev;
struct sigqueue *sq;
};
typedef struct rk_signal_struct rk_signal_t;
extern struct rk_cpu_data_struct rk_cpu_data[1 ];
extern struct list_head rk_resource_set_root;
struct task_struct;
extern int (*rk_timer_interrupt_hook)(void);
extern void (*rk_kernel_intr_in_hook)(void);
extern void (*rk_restore_all_hook)(struct pt_regs regs);
extern int (*rk_ret_with_reschedule_hook)(struct pt_regs regs);
extern void (*rk_schedule_hook)(struct task_struct *, struct task_struct *);
extern void (*rt_adjbaseprio_hook)(struct task_struct *, int);
extern void (*rk_task_cleanup_hook)(struct task_struct *);
extern void (*rk_fork_hook)(struct task_struct *);
# 256 "/home/root/kernel/kernel/include/rk/rkmod.h"
#define CAPACITY_INT(x) ((x)/100)
#define CAPACITY_FRAC(x) ((x)-(x/100)*100)
#define INT2CAPACITY(x) ((x)*10000)
#define CAPACITY2INT(x) ((x)/10000)
#define PERCENT2CAPACITY(x) ((x)*100)
#define CAPACITY_OF(c,t) (INT2CAPACITY(c)/(t))
#define TICK2JIFFIES(tick) tick2jiffies(tick, &cpu_tick_at_last_jiffy)
#define TICK2JIFFIES2(tick,last) tick2jiffies(tick,last)
#define bzero(p,s) memset(p, 0, s)
#define rk_debug(f, a...)
extern int rk_count;
void rk_inc_use_count(void);
void rk_dec_use_count(void);
#define PERMISSION_CHECK_DISABLED
#define rk_capable() RK_TRUE
# 298 "/home/root/kernel/kernel/include/rk/rkmod.h"
static inline void
rs_proc_list_apply(struct list_head *proc_list_head,
void (*func)(struct task_struct *p, int arg), int arg)
{
struct list_head *proc_list = proc_list_head->next;
struct task_struct *p;
while (proc_list != proc_list_head) {
p = (( struct task_struct *)((char *)( proc_list )-(unsigned long)(&(( struct task_struct *)0)-> rk_proclist ))) ;
func(p, arg);
proc_list = proc_list->next;
}
}
static inline void
rs_reserve_apply(struct list_head *proc_list_head,
void (*func)(rk_reserve_t rsv, struct task_struct *p), rk_reserve_t rsv)
{
struct list_head *proc_list = proc_list_head->next;
struct task_struct *p;
while (proc_list != proc_list_head) {
p = (( struct task_struct *)((char *)( proc_list )-(unsigned long)(&(( struct task_struct *)0)-> rk_proclist ))) ;
func(rsv, p);
proc_list = proc_list->next;
}
}
static inline int ceiling(unsigned long dividend, unsigned long divider)
{
int quotient;
quotient = dividend / divider;
if (divider * quotient == dividend) return(quotient);
else return(++quotient);
}
static inline int
timespec_ceiling(struct timespec dividend, struct timespec divider)
{
int quotient = 1;
struct timespec divider1;
divider1 = divider;
while (((( dividend ).tv_sec > ( divider1 ).tv_sec) || ((( dividend ).tv_sec == ( divider1 ).tv_sec) && (( dividend ).tv_nsec > ( divider1 ).tv_nsec))) ) {
do { ( divider1 ).tv_nsec += ( divider ).tv_nsec; ( divider1 ).tv_sec += ( divider ).tv_sec; if (( divider1 ).tv_nsec >= (1000000000L) ) { ( divider1 ).tv_nsec -= (1000000000L) ; ( divider1 ).tv_sec++; } } while (0) ;
quotient++;
}
return(quotient);
}
static inline int
efficient_timespec_ceil(struct timespec dividend, struct timespec divider)
{
unsigned long dividend_microsecs, divider_microsecs;
if ((divider.tv_sec == 0) && (divider.tv_nsec == 0)) {
return -1;
}
if ((dividend.tv_sec >= 1000) || (divider.tv_sec >= 1000) ){
return(timespec_ceiling(dividend, divider));
}
#define MICROSECS_PER_SECOND 1000000
dividend_microsecs = (dividend.tv_sec % 1000) * 1000000 +
(dividend.tv_nsec / 1000);
divider_microsecs = (divider.tv_sec % 1000) * 1000000 +
(divider.tv_nsec / 1000);
return(ceiling(dividend_microsecs, divider_microsecs));
}
static inline struct timespec
timespec_mult(struct timespec multiplicand, int multiplier)
{
struct timespec result;
result.tv_sec = 0;
result.tv_nsec = 0;
do {
do { ( result ).tv_nsec += ( multiplicand ).tv_nsec; ( result ).tv_sec += ( multiplicand ).tv_sec; if (( result ).tv_nsec >= (1000000000L) ) { ( result ).tv_nsec -= (1000000000L) ; ( result ).tv_sec++; } } while (0) ;
} while (--multiplier);
return(result);
}
#define MIN_RK_SYSCALL 402
#define MAX_RK_SYSCALL 443
int rk_valid_rs(rk_resource_set_t);
int rk_valid_rsv(rk_reserve_t);
int resource_set_attach_process(rk_resource_set_t, task_struct *tsk);
int resource_set_detach_process(rk_resource_set_t, task_struct *tsk);
int rk_resource_set_attach_reserve(rk_resource_set_t, rk_reserve_t);
void rk_resource_set_detach_reserve(rk_resource_set_t, rk_reserve_t);
rk_resource_set_t rk_resource_set_create(char *name);
rk_reserve_t rk_reserve_create(struct timespec);
extern int rk_reserve_destroy(rk_reserve_t);
void reserve_send_signal(rk_reserve_t rsv, int type);
int call_cpu_reserve_create(rk_resource_set_t, rk_reserve_t *, void *);
int cpu_reserve_create(rk_resource_set_t, rk_reserve_t *, cpu_reserve_attr_t);
int call_cpu_reserve_ctl(rk_resource_set_t, void *);
int cpu_reserve_ctl(rk_resource_set_t, cpu_reserve_attr_t);
int cpu_reserve_delete(rk_resource_set_t rs);
int rk_cpu_reserves_get_num(void);
int rk_cpu_reserves_get_list(rk_reserve_t *, int);
int rk_cpu_reserves_get_scheduling_policy(void);
int rk_cpu_reserves_set_scheduling_policy(int);
int rk_cpu_reserve_get_attr(rk_reserve_t, void *);
void cpu_reserve_init(void);
void rt_mutex_init(void);
void rk_init(void);
void rk_enable_schedule_cpu(void);
void rk_disable_schedule_cpu(void);
void rk_enable_isr(void);
void rk_disable_isr(void);
int rk_ret_with_reschedule(struct pt_regs regs);
void rk_restore_all(struct pt_regs regs);
void rk_proc_rs_create(rk_resource_set_t);
void rk_proc_rs_destroy(rk_resource_set_t);
void rk_proc_reserve_create(rk_reserve_t);
void rk_proc_reserve_destroy(rk_reserve_t);
void rk_proc_cleanup(void);
void rk_reserve_signals_cleanup(rk_reserve_t);
rk_resource_set_t sys_rk_resource_set_create(char *name);
int sys_rk_resource_set_destroy(rk_resource_set_t rs);
int sys_rk_resource_set_attach_process(rk_resource_set_t rs, pid_t pid);
int sys_rk_resource_set_detach_process(rk_resource_set_t rs, pid_t pid);
int sys_rk_resource_sets_get_num(void);
int sys_rk_resource_sets_get_list(rk_resource_set_t *rs, int size);
int sys_rk_resource_set_get_proclist(rk_resource_set_t, pid_t *, int);
int sys_rk_resource_set_get_num_procs(rk_resource_set_t rs);
int sys_rk_resource_set_get_name(rk_resource_set_t rs, char * name);
int sys_rk_resource_set_set_name(rk_resource_set_t rs, char *name);
rk_reserve_t sys_rk_resource_set_get_rsv(rk_resource_set_t, rk_reserve_type_t);
int sys_rk_reserve_create(rk_resource_set_t, rk_reserve_type_t,
rk_reserve_t *, void *);
int sys_rk_reserve_delete(rk_resource_set_t rs, rk_reserve_type_t type);
int sys_rk_reserve_ctl(rk_resource_set_t, rk_reserve_type_t, void *);
int sys_rk_reserves_get_num(rk_reserve_type_t type);
int sys_rk_reserves_get_list(rk_reserve_t *, int, rk_reserve_type_t);
int sys_rk_reserve_get_attr(rk_reserve_t, void *, rk_reserve_type_t);
int sys_rk_reserves_get_scheduling_policy(rk_reserve_type_t type);
int sys_rk_reserves_set_scheduling_policy(int policy, rk_reserve_type_t type);
int sys_rk_signal(pid_t pid, void *data, int type, sigevent_t *evp);
rk_resource_set_t sys_rk_proc_get_rset(pid_t pid);
int sys_rt_make_periodic(struct timespec *_period, struct timespec *_start);
int sys_rt_wait_for_next_period(void);
int sys_rt_process_get_period(int pid, struct timespec *period);
int sys_rt_process_set_period(int pid, struct timespec *period);
unsigned long sys_rt_get_clock_frequency(void);
void sys_rk_inherit_mode(int mode);
# 22 "/home/root/kernel/kernel/include/linux/measure.h" 2
#define MEASURE_BEGIN 0
#define MEASURE_SLICE 1
#define MEASURE_END 2
#define MEASURE_INTERRUPT 3
#define MEASURE_IRQ 4
#define MEASURE_SOFTIRQ 5
#define MEASURE_SD 6
#define MEASURE_CS 7
#define MEASURE_DELAY 8
#define MEASURE_STACK 9
#define MEASURE_NEWPROCESS 100
#define MEASURE_ENDPROCESS 101
#define MEASURE_SYSCALL 102
#define MEASURE_CONTEXTSWAP_TO 103
#define MEASURE_USER_EVENT 104
#define MEASURE_EXEC 105
#define MEASURE_CRES_CREATE 110
#define MEASURE_CRES_DESTROY 111
#define MEASURE_CRES_SWAPTO 114
#define MEASURE_NRES_CREATE 115
#define MEASURE_NRES_DESTROY 116
#define MEASURE_NRES_SWAPTO 117
#define MEASURE_MUT_CREATE 120
#define MEASURE_MUT_DESTROY 121
#define MEASURE_MUT_LOCK 122
#define MEASURE_MUT_UNLOCK 123
#define MEASURE_MUTEX_BLOCKING 124
#define MEASURE_MUTEX_TRYLOCK_FAILED 125
#define MEASURE_RSET_CREATE 130
#define MEASURE_RSET_DESTROY 131
#define MEASURE_RSET_ATTACH 132
#define MEASURE_RSET_DETACH 133
#define MEASURE_RT_PER_START 140
#define MEASURE_RT_PER_NEXT 141
#define MEASURE_DISCARDED_DATA 142
#define MEASURE_NRRES_CREATE 143
#define MEASURE_NRRES_DESTROY 144
#define MEASURE_NRRES_SWAPTO 145
#define MEASURE_CHANGE_PRIORITY 146
#define MEASURE_MAKE_PERIODIC 147
#define MEASURE_CHANGE_PERIOD 148
#define MEASURE_RESERVE_CTL 149
#define MEASURE_CUSTOM_MIN 300
#define MEASURE_CUSTOM_MAX 500
#define MEASURE_OFF 0
#define MEASURE_ON 1
#define MEASURE_REGISTER_SYS 2
#define MEASURE_UNREGISTER_SYS 3
#define MEASURE_THRESHOLD 6
#define MEASURE_SET_IRQ 7
#define MEASURE_CLEAR_IRQ 8
#define MEASURE_GET_IRQ 9
#define MEASURE_MONITOR_INTERRUPT 10
#define MEASURE_MONITOR_PAGEFAULT 11
#define MEASURE_MONITOR_SOFTIRQ 12
#define MEASURE_MONITOR_SCHEDULE 13
#define MEASURE_MONITOR_CS 14
#define MEASURE_MONITOR_CONTEXTSWAP 15
#define MEASURE_MONITOR_NEWPROCESS 16
#define MEASURE_MONITOR_ENDPROCESS 17
#define MEASURE_NUM_CPUS 18
#define MEASURE_USER 19
#define MEASURE_LOG_MASK 21
#define MEASURE_GET_LOG_MASK 22
#define MUTEX_FAMILY_EVENT 0x000001
#define PROCESS_FAMILY_EVENT 0x000002
#define RESERVE_FAMILY_EVENT 0x000004
#define RESOURCE_FAMILY_EVENT 0x000008
#define PERIOD_FAMILY_EVENT 0x000010
#define PRIORITY_FAMILY_EVENT 0x000020
typedef struct {
unsigned int flags;
pid_t pid;
unsigned long data;
unsigned long data2;
unsigned long long measure;
} MEASURE;
#define MEASURE_MAX_ENTRY 10000
int sys_measure_register(int pid,int cmd,unsigned long data);
int sys_measure_getinfo(MEASURE *buf,int no_seg);
#define measure_user(flag) measure_register(-1,MEASURE_USER_EVENT,flag)
typedef struct {
int (*reg)(int pid,int cmd,unsigned long data);
int (*getinfo)(MEASURE *, int no_seg);
void (*contextswap)(int pid);
void (*newprocess)(int pid);
void (*endprocess)(int pid);
void (*exec)(int pid);
void (*syscall)(int pid, int no);
void (*event)(int pid, unsigned int type, unsigned long data);
void (*mutex_create)(int id);
void (*mutex_destroy)(int id);
void (*mutex_lock)(int id, int pid);
void (*mutex_unlock)(int id, int pid);
void (*mutex_block)(int id, int pid);
void (*mutex_trylockfail)(int id, int pid);
void (*new_reserve)(rk_reserve_t rsv);
void (*end_reserve)(rk_reserve_t rsv);
void (*rsv_swapto)(rk_reserve_t rsv, rk_reserve_type_t type);
void (*resource_create)(rk_resource_set_t id);
void (*resource_destroy)(rk_resource_set_t id);
void (*resource_attach)(rk_resource_set_t id);
void (*resource_detach)(rk_resource_set_t id);
void (*period_start)(int pid);
void (*next_period)(int pid);
void (*ctl_reserve)(rk_reserve_t rsv);
void (*change_priority)(int pid, int priority);
void (*make_periodic) (int pid,struct timespec *period,
struct timespec *start);
void (*change_period) (int pid, struct timespec *period);
} MeasureOp;
extern MeasureOp *current_measure_hook;
# 201 "/home/root/kernel/kernel/include/linux/measure.h"
extern inline void measure_contextswap(int newpid)
{
if (current_measure_hook && current_measure_hook->contextswap)
current_measure_hook->contextswap(newpid);
}
extern inline void measure_newprocess(int newpid)
{
if (current_measure_hook && current_measure_hook->newprocess)
current_measure_hook->newprocess(newpid);
}
extern inline void measure_endprocess(int pid)
{
if (current_measure_hook && current_measure_hook->endprocess)
current_measure_hook->endprocess(pid);
}
extern inline void measure_exec(int pid)
{
if (current_measure_hook && current_measure_hook->exec)
current_measure_hook->exec(pid);
}
extern inline void measure_event(int pid, unsigned int type, unsigned long data)
{
if (current_measure_hook && current_measure_hook->event)
current_measure_hook->event(pid,type,data);
}
extern inline void measure_mutex_block(int pid, int id)
{
if(current_measure_hook && current_measure_hook->mutex_block)
current_measure_hook->mutex_block(pid, id);
}
extern inline void measure_mutex_trylockfail(int pid, int id)
{
if(current_measure_hook && current_measure_hook->mutex_trylockfail)
current_measure_hook->mutex_trylockfail(pid, id);
}
extern inline void measure_change_priority(int pid, int priority)
{
if (current_measure_hook && current_measure_hook->change_priority)
current_measure_hook->change_priority(pid,priority);
}
extern inline void measure_make_periodic(int pid, struct timespec *period,
struct timespec *start)
{
if (current_measure_hook && current_measure_hook->make_periodic)
current_measure_hook->make_periodic(pid,period,start);
}
extern inline void measure_change_period(int pid, struct timespec *period)
{
if (current_measure_hook && current_measure_hook->change_period)
current_measure_hook->change_period(pid,period);
}
extern inline void measure_newreserve(rk_reserve_t rsv)
{
if (current_measure_hook && current_measure_hook->new_reserve)
current_measure_hook->new_reserve(rsv);
}
extern inline void measure_endreserve(rk_reserve_t rsv)
{
if (current_measure_hook && current_measure_hook->end_reserve)
current_measure_hook->end_reserve(rsv);
}
extern inline void measure_reserve_swapto(rk_reserve_t cpu, rk_reserve_type_t type)
{
if (current_measure_hook && current_measure_hook->rsv_swapto)
current_measure_hook->rsv_swapto(cpu,type);
}
extern inline void measure_mutex_create(int id)
{
if (current_measure_hook && current_measure_hook->mutex_create)
current_measure_hook->mutex_create(id);
}
extern inline void measure_mutex_destroy(int id)
{
if (current_measure_hook && current_measure_hook->mutex_destroy)
current_measure_hook->mutex_destroy(id);
}
extern inline void measure_mutex_lock(int id, int pid)
{
if (current_measure_hook && current_measure_hook->mutex_lock)
current_measure_hook->mutex_lock(id,pid);
}
extern inline void measure_mutex_unlock(int id, int pid)
{
if (current_measure_hook && current_measure_hook->mutex_unlock)
current_measure_hook->mutex_unlock(id,pid);
}
extern inline void measure_resource_create(rk_resource_set_t id)
{
if (current_measure_hook && current_measure_hook->resource_create)
current_measure_hook->resource_create(id);
}
extern inline void measure_resource_destroy(rk_resource_set_t id)
{
if (current_measure_hook && current_measure_hook->resource_destroy)
current_measure_hook->resource_destroy(id);
}
extern inline void measure_resource_attach(rk_resource_set_t id)
{
if (current_measure_hook && current_measure_hook->resource_attach)
current_measure_hook->resource_attach(id);
}
extern inline void measure_resource_detach(rk_resource_set_t id)
{
if (current_measure_hook && current_measure_hook->resource_detach)
current_measure_hook->resource_detach(id);
}
extern inline void measure_period_start(int pid)
{
if (current_measure_hook && current_measure_hook->period_start)
current_measure_hook->period_start(pid);
}
extern inline void measure_next_period(int pid)
{
if (current_measure_hook && current_measure_hook->next_period)
current_measure_hook->next_period(pid);
}
# 16 "/home/root/kernel/kernel/include/linux/mutex.h" 2
extern old_spinlock_t mutex_lock;
typedef struct user_mutex_t {
struct user_mutex_t *next;
int id;
int uid;
int gid;
mutex_t mtx;
int ceiling, ceiling_policy;
atomic_t count;
} user_mutex_t;
typedef struct {
task_struct *head[1 ];
task_struct *tail[1 ];
struct list_head node;
} mutex_sched;
#define mutex_is_locked(x) ((x)->state != MUTEX_UNLOCKED)
#define mutex_unlock_wait(x) do { if (mutex_is_locked(x)) { write_lock(x); write_unlock(x); } } while (0)
void do_read_lock(mutex_t *lock);
void do_write_lock(mutex_t *lock);
void do_unlock(mutex_t *lock);
extern int sched_init_done;
static inline mutex_list_t *get_mutex_list_slot(mutex_t *lock)
{
mutex_list_t *node;
for (node = lock->owners; node->proc; node++);
return node;
}
static inline void link_mutex_list(task_struct *p, mutex_list_t *node,
mutex_t *lock)
{
node->proc = p;
node->next = p->locks_held;
node->prev = ((void *)0) ;
node->mutex = lock;
if (p->locks_held)
p->locks_held->prev = node;
p->locks_held = node;
}
static inline mutex_list_t *unlink_mutex_list(task_struct *p, mutex_t *lock)
{
mutex_list_t *node = p->locks_held;
while (node) {
if (node->mutex == lock)
break;
node = node->next;
}
if (node->prev)
node->prev->next = node->next;
else
p->locks_held = node->next;
if (node->next)
node->next->prev = node->prev;
node->proc = ((void *)0) ;
return node;
}
# 131 "/home/root/kernel/kernel/include/linux/mutex.h"
static inline int mutex_trylock(mutex_t *lock)
{
unsigned long flags;
int ret = 0;
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &mutex_lock ) ; } while (0) ;
if (lock->state == 0 ) {
lock->state = 1 ;
ret = 1;
link_mutex_list(current, lock->owners, lock);
if (lock->proto == 2 ) {
extern void (*recalc_prio_hook)(task_struct *p);
if (recalc_prio_hook)
recalc_prio_hook(current);
}
}
do { (void)( &mutex_lock ) ; __restore_flags( flags ) ; } while (0) ;
return ret;
}
void bust_spinlocks(void);
static inline void read_lock(mutex_t *lock)
{
unsigned long flags;
# 176 "/home/root/kernel/kernel/include/linux/mutex.h"
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &mutex_lock ) ; } while (0) ;
if (lock->state != 1 && lock->num_readers != (16) &&
!lock->blocked_head)
{
mutex_list_t *node;
node = get_mutex_list_slot(lock);
link_mutex_list(current, node, lock);
lock->num_readers++;
lock->state = 2 ;
do { (void)( &mutex_lock ) ; __restore_flags( flags ) ; } while (0) ;
} else {
do_read_lock(lock);
__restore_flags( flags ) ;
}
}
static inline void read_unlock_nosched(mutex_t *lock)
{
unsigned long flags;
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &mutex_lock ) ; } while (0) ;
lock->num_readers--;
if (!lock->blocked_head) {
extern void (*recalc_prio_hook)(task_struct *p);
unlink_mutex_list(current, lock);
if (recalc_prio_hook)
recalc_prio_hook(current);
if (!lock->num_readers)
lock->state = 0 ;
} else {
do_unlock(lock);
}
do { (void)( &mutex_lock ) ; __restore_flags( flags ) ; } while (0) ;
}
static inline void read_unlock(mutex_t *lock)
{
read_unlock_nosched(lock);
if (current->need_resched)
preempt();
}
static inline void write_lock(mutex_t *lock)
{
unsigned long flags;
# 251 "/home/root/kernel/kernel/include/linux/mutex.h"
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &mutex_lock ) ; } while (0) ;
if (lock->state == 0 ) {
lock->state = 1 ;
if (lock->umtx)
measure_mutex_lock(lock->umtx->id, current->pid);
link_mutex_list(current, lock->owners, lock);
do { (void)( &mutex_lock ) ; __restore_flags( flags ) ; } while (0) ;
} else {
do_write_lock(lock);
__restore_flags( flags ) ;
}
}
static inline void write_unlock_nosched(mutex_t *lock)
{
unsigned long flags;
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &mutex_lock ) ; } while (0) ;
if (!lock->blocked_head) {
lock->state = 0 ;
unlink_mutex_list(current, lock);
} else {
do_unlock(lock);
}
do { (void)( &mutex_lock ) ; __restore_flags( flags ) ; } while (0) ;
}
static inline void write_unlock(mutex_t *lock)
{
write_unlock_nosched(lock);
if (current->need_resched)
preempt();
}
#define spin_lock_irq write_lock
#define spin_unlock_irq write_unlock
#define spin_lock_bh write_lock
#define spin_unlock_bh write_unlock
#define read_lock_irq read_lock
#define read_unlock_irq read_unlock
#define write_lock_irq write_lock
#define write_unlock_irq write_unlock
#define read_lock_bh read_lock
#define read_unlock_bh read_unlock
#define write_lock_bh write_lock
#define write_unlock_bh write_unlock
#define read_lock_irqsave(lock, flags) do { read_lock(lock); (void)flags; } while (0)
#define read_unlock_irqrestore(lock, flags) do { read_unlock(lock); (void)flags; } while (0)
#define write_lock_irqsave(lock, flags) do { write_lock(lock); (void)flags; } while (0)
#define write_unlock_irqrestore(lock, flags) do { write_unlock(lock); (void)flags; } while (0)
#define spin_lock_irqsave write_lock_irqsave
#define spin_unlock_irqrestore write_unlock_irqrestore
int alloc_mutex_sched(void);
void free_mutex_sched(void);
void mutex_sched_init(void);
# 7 "/home/root/kernel/kernel/include/linux/sched.h" 2
# 1 "/home/root/kernel/kernel/include/linux/fs.h" 1
#define __LINUX_FS_H
# 1 "/home/root/kernel/kernel/include/linux/dcache.h" 1
#define __LINUX_DCACHE_H
extern mutex_t dcache_lock;
static __inline__ void d_drop(struct dentry * dentry)
{
write_lock (&dcache_lock);
list_del(&dentry->d_hash);
do { ( &dentry->d_hash )->next = ( &dentry->d_hash ); ( &dentry->d_hash )->prev = ( &dentry->d_hash ); } while (0) ;
write_unlock (&dcache_lock);
}
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 *);
#define shrink_dcache() prune_dcache(0)
struct zone_struct;
extern void shrink_dcache_memory(int, unsigned int);
extern void prune_dcache(int);
extern void shrink_icache_memory(int, int);
extern void prune_icache(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 *);
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);
static __inline__ struct dentry * dget(struct dentry *dentry)
{
if (dentry) {
if (! (( &dentry->d_count )->counter) )
do { bust_spinlocks (); printk("kernel BUG at %s:%d!\n", "/home/root/kernel/kernel/include/linux/dcache.h", 127); __asm__ __volatile__(".long 0x0"); } while (0) ;
((void) atomic_inc_return(( &dentry->d_count ))) ;
}
return dentry;
}
extern struct dentry * dget_locked(struct dentry *);
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 *);
# 5 "/home/root/kernel/kernel/include/linux/fs.h" 2
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);
}
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);
}
# 8 "/home/root/kernel/kernel/include/linux/sched.h" 2
# 1 "/home/root/kernel/kernel/include/linux/fs_struct.h" 1
#define _LINUX_FS_STRUCT_H
static inline void set_fs_root(struct fs_struct *fs,
struct vfsmount *mnt,
struct dentry *dentry)
{
struct dentry *old_root;
struct vfsmount *old_rootmnt;
write_lock(&fs->lock);
old_root = fs->root;
old_rootmnt = fs->rootmnt;
fs->rootmnt = mntget(mnt);
fs->root = dget(dentry);
write_unlock(&fs->lock);
if (old_root) {
dput(old_root);
mntput(old_rootmnt);
}
}
static inline void set_fs_pwd(struct fs_struct *fs,
struct vfsmount *mnt,
struct dentry *dentry)
{
struct dentry *old_pwd;
struct vfsmount *old_pwdmnt;
write_lock(&fs->lock);
old_pwd = fs->pwd;
old_pwdmnt = fs->pwdmnt;
fs->pwdmnt = mntget(mnt);
fs->pwd = dget(dentry);
write_unlock(&fs->lock);
if (old_pwd) {
dput(old_pwd);
mntput(old_pwdmnt);
}
}
# 9 "/home/root/kernel/kernel/include/linux/sched.h" 2
extern union task_union init_task_union;
extern struct mm_struct init_mm;
extern struct task_struct *init_tasks[1 ];
#define PIDHASH_SZ (4096 >> 2)
extern struct task_struct *pidhash[(4096 >> 2) ];
#define pid_hashfn(x) ((((x) >> 8) ^ (x)) & (PIDHASH_SZ - 1))
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 "/home/root/kernel/kernel/include/asm/current.h" 1
# 13 "/home/root/kernel/kernel/include/asm/current.h"
# 54 "/home/root/kernel/kernel/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(void);
extern unsigned int * prof_buffer;
extern unsigned long prof_len;
extern unsigned long prof_shift;
#define CURRENT_TIME (xtime.tv_sec)
extern void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr) ;
extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr) ;
extern void sleep_on(wait_queue_head_t *q) ;
extern long sleep_on_timeout(wait_queue_head_t *q,
signed long timeout) ;
extern void interruptible_sleep_on(wait_queue_head_t *q) ;
extern long interruptible_sleep_on_timeout(wait_queue_head_t *q,
signed long timeout) ;
extern int wake_up_process(struct task_struct * tsk) ;
extern void wake_up_mutex(struct task_struct *tsk) ;
#define wake_up(x) __wake_up((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 1)
#define wake_up_nr(x, nr) __wake_up((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, nr)
#define wake_up_all(x) __wake_up((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 0)
#define wake_up_sync(x) __wake_up_sync((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, 1)
#define wake_up_sync_nr(x, nr) __wake_up_sync((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, nr)
#define wake_up_interruptible(x) __wake_up((x),TASK_INTERRUPTIBLE, 1)
#define wake_up_interruptible_nr(x, nr) __wake_up((x),TASK_INTERRUPTIBLE, nr)
#define wake_up_interruptible_all(x) __wake_up((x),TASK_INTERRUPTIBLE, 0)
#define wake_up_interruptible_sync(x) __wake_up_sync((x),TASK_INTERRUPTIBLE, 1)
#define wake_up_interruptible_sync_nr(x) __wake_up_sync((x),TASK_INTERRUPTIBLE, nr)
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 - current->sas_ss_sp < current->sas_ss_size);
}
static inline int sas_ss_flags(unsigned long sp)
{
return (current->sas_ss_size == 0 ? 2
: on_sig_stack(sp) ? 1 : 0);
}
extern int request_irq(unsigned int irq,
void (*handler)(int, void *, struct pt_regs *),
unsigned long flags,
const char *device,
void *dev_id);
extern void free_irq(unsigned int irq, void *dev_id);
static inline int suser(void)
{
if (! ( (1 << ( 0 +1)) & 0x00000000 ? (1 << ( 0 )) & 0x00000000 : (1 << ( 0 )) & securebits ) && current->euid == 0) {
current->flags |= 0x00000100 ;
return 1;
}
return 0;
}
static inline int fsuser(void)
{
if (! ( (1 << ( 0 +1)) & 0x00000000 ? (1 << ( 0 )) & 0x00000000 : (1 << ( 0 )) & securebits ) && current->fsuid == 0) {
current->flags |= 0x00000100 ;
return 1;
}
return 0;
}
static inline int capable(int cap)
{
if ((( current->cap_effective ) & (1 << ( cap )) ) )
{
current->flags |= 0x00000100 ;
return 1;
}
return 0;
}
extern struct mm_struct * mm_alloc(void);
extern struct mm_struct * start_lazy_tlb(void);
extern void end_lazy_tlb(struct mm_struct *mm);
extern inline void __mmdrop(struct mm_struct *) ;
extern inline void __mmdrop_lazy(struct mm_struct *) ;
static inline void mmdrop(struct mm_struct * mm)
{
__mmdrop(mm);
}
static inline void mmdrop_lazy(struct mm_struct * mm)
{
if ((atomic_dec_return(( &mm->mm_count )) == 0) )
__mmdrop_lazy(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 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) ;
extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait) ;
extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) ;
#define __wait_event(wq, condition) do { wait_queue_t __wait; init_waitqueue_entry(&__wait, current); add_wait_queue(&wq, &__wait); for (;;) { set_current_state(TASK_UNINTERRUPTIBLE); if (condition) break; schedule(); } current->state = TASK_RUNNING; rem ove_wait_queue(&wq, &__wait); } while (0)
# 303 "/home/root/kernel/kernel/include/linux/sched.h"
#define wait_event(wq, condition) do { if (condition) break; __wait_event(wq, condition); } while (0)
#define __wait_event_interruptible(wq, condition, ret) do { wait_queue_t __wait; init_waitqueue_entry(&__wait, current); add_wait_queue(&wq, &__wait); for (;;) { set_current_state(TASK_INTERRUPTIBLE); if (condition) break; if (!signal_pending(current)) { schedule(); continue; } ret = -ERESTARTSYS; break; } current->state = TASK_RUNNING; remove_wait_queue(&wq, &__wait); } while (0)
# 331 "/home/root/kernel/kernel/include/linux/sched.h"
#define wait_event_interruptible(wq, condition) ({ int __ret = 0; if (!(condition)) __wait_event_interruptible(wq, condition, __ret); __ret; })
#define REMOVE_LINKS(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)
# 350 "/home/root/kernel/kernel/include/linux/sched.h"
#define SET_LINKS(p) do { (p)->next_task = &init_task; (p)->prev_task = init_task.prev_task; init_task.prev_task->next_task = (p); init_task.prev_task = (p); (p)->p_ysptr = NULL; if (((p)->p_osptr = (p)->p_pptr->p_cptr) != NULL) (p)->p_osptr->p_ysptr = p ; (p)->p_pptr->p_cptr = p; } while (0)
# 361 "/home/root/kernel/kernel/include/linux/sched.h"
#define for_each_task(p) for (p = &init_task ; (p = p->next_task) != &init_task ; )
#define next_thread(p) list_entry((p)->thread_group.next, struct task_struct, thread_group)
#define task_on_runqueue(p) (p->runnable)
static inline void unhash_process(struct task_struct *p)
{
if (( p ->runnable) ) do { bust_spinlocks (); printk("kernel BUG at %s:%d!\n", "/home/root/kernel/kernel/include/linux/sched.h", 372); __asm__ __volatile__(".long 0x0"); } while (0) ;
write_lock (&tasklist_lock);
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);
write_unlock (&tasklist_lock);
}
static inline void task_lock(struct task_struct *p)
{
write_lock (&p->alloc_lock);
}
static inline void task_unlock(struct task_struct *p)
{
write_unlock (&p->alloc_lock);
}
static inline char * d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
char *buf, int buflen)
{
char *res;
struct vfsmount *rootmnt;
struct dentry *root;
read_lock(¤t->fs->lock);
rootmnt = mntget(current->fs->rootmnt);
root = dget(current->fs->root);
read_unlock(¤t->fs->lock);
write_lock (&dcache_lock);
res = __d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
write_unlock (&dcache_lock);
dput(root);
mntput(rootmnt);
return res;
}
void rt_setscheduler(task_struct *p, int prio, int policy, int cpu);
void update_time(void);
void send_signal_queue(struct sigqueue *q);
int adj_num_sigqueues(int adj);
void withdraw_signal_queue(struct sigqueue *q);
int try_to_wake_up(task_struct *p, int sync);
void timeshare_sched_give_time(task_struct *to, task_struct *from);
void timeshare_sched_init_proc(task_struct *p);
void timeshare_sched_init(void);
void posix_rt_sched_init(void);
void bind_cpu(task_struct *p, int cpu);
extern old_spinlock_t sched_lock;
extern mutex_t sigqueue_exit_lock;
extern old_spinlock_t sigqueue_state_lock;
extern task_struct *cli_owner;
extern mutex_t kthread_sem_lock;
extern struct semaphore kthread_sem;
static inline void check_resched(void)
{
if (!is_local_irq_enabled())
do { bust_spinlocks (); printk("kernel BUG at %s:%d!\n", "/home/root/kernel/kernel/include/linux/sched.h", 433); __asm__ __volatile__(".long 0x0"); } while (0) ;
if (current->need_resched && !(current->flags & 0x08000000 ))
preempt();
}
#define preempt_disable(flags) do { flags = current->flags; current->flags |= PF_NOPREEMPT; } while (0)
#define preempt_restore(flags) do { current->flags = flags; check_resched(); } while (0)
static inline void del_from_runqueue(task_struct *p)
{
# 466 "/home/root/kernel/kernel/include/linux/sched.h"
if (p->context[0].owner)
p->context[0].sched_ops->del(p, 0);
p->runnable = 0;
}
static inline void add_to_runqueue(task_struct *p)
{
# 491 "/home/root/kernel/kernel/include/linux/sched.h"
if (p->context[0].owner)
p->context[0].owner->sched_ops->add(p, 0);
p->runnable = 1;
}
static inline void add_to_runqueue_head(task_struct *p)
{
# 516 "/home/root/kernel/kernel/include/linux/sched.h"
if (p->context[0].owner)
p->context[0].owner->sched_ops->add_head(p, 0);
p->runnable = 1;
}
# 12 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/delay.h" 1
#define _LINUX_DELAY_H
extern unsigned long loops_per_jiffy;
# 1 "/home/root/kernel/kernel/include/asm/delay.h" 1
#define _PPC_DELAY_H
extern unsigned long loops_per_jiffy;
#define __MAX_UDELAY 1000000
extern void __delay(unsigned int loops);
extern __inline__ void __const_udelay(unsigned int secs)
{
unsigned int loops;
__asm__("mulhwu %0,%1,%2" : "=r" (loops) :
"r" (secs), "r" (loops_per_jiffy));
__delay(loops * 100 );
}
extern __inline__ void __udelay(unsigned int usecs)
{
__const_udelay(usecs * 4294);
}
extern void __bad_udelay(void);
#define udelay(n) (__builtin_constant_p(n)? ((n) > __MAX_UDELAY? __bad_udelay(): __const_udelay((n) * 4294u)) : __udelay(n))
# 12 "/home/root/kernel/kernel/include/linux/delay.h" 2
#define MAX_UDELAY_MS 5
#define mdelay(n) ( (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : ({unsigned long msec=(n); while (msec--) udelay(1000);}))
# 13 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/reboot.h" 1
#define _LINUX_REBOOT_H
#define LINUX_REBOOT_MAGIC1 0xfee1dead
#define LINUX_REBOOT_MAGIC2 672274793
#define LINUX_REBOOT_MAGIC2A 85072278
#define LINUX_REBOOT_MAGIC2B 369367448
#define LINUX_REBOOT_CMD_RESTART 0x01234567
#define LINUX_REBOOT_CMD_HALT 0xCDEF0123
#define LINUX_REBOOT_CMD_CAD_ON 0x89ABCDEF
#define LINUX_REBOOT_CMD_CAD_OFF 0x00000000
#define LINUX_REBOOT_CMD_POWER_OFF 0x4321FEDC
#define LINUX_REBOOT_CMD_RESTART2 0xA1B2C3D4
# 1 "/home/root/kernel/kernel/include/linux/notifier.h" 1
#define _LINUX_NOTIFIER_H
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);
#define NOTIFY_DONE 0x0000
#define NOTIFY_OK 0x0001
#define NOTIFY_STOP_MASK 0x8000
#define NOTIFY_BAD (NOTIFY_STOP_MASK|0x0002)
#define NETDEV_UP 0x0001
#define NETDEV_DOWN 0x0002
#define NETDEV_REBOOT 0x0003
#define NETDEV_CHANGE 0x0004
#define NETDEV_REGISTER 0x0005
#define NETDEV_UNREGISTER 0x0006
#define NETDEV_CHANGEMTU 0x0007
#define NETDEV_CHANGEADDR 0x0008
#define NETDEV_GOING_DOWN 0x0009
#define NETDEV_CHANGENAME 0x000A
#define SYS_DOWN 0x0001
#define SYS_RESTART SYS_DOWN
#define SYS_HALT 0x0002
#define SYS_POWER_OFF 0x0003
# 35 "/home/root/kernel/kernel/include/linux/reboot.h" 2
extern int register_reboot_notifier(struct notifier_block *);
extern int unregister_reboot_notifier(struct notifier_block *);
extern void machine_restart(char *cmd);
extern void machine_halt(void);
extern void machine_power_off(void);
# 14 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/init.h" 1
#define _LINUX_INIT_H
typedef int (*initcall_t)(void);
typedef void (*exitcall_t)(void);
extern initcall_t __initcall_start, __initcall_end;
#define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn
#define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn
struct kernel_param {
const char *str;
int (*setup_func)(char *);
};
extern struct kernel_param __setup_start, __setup_end;
#define __setup(str, fn) static char __setup_str_##fn[] __initdata = str; static struct kernel_param __setup_##fn __attribute__((unused)) __initsetup = { __setup_str_##fn, fn }
#define __init __attribute__ ((__section__ (".text.init")))
#define __exit __attribute__ ((unused, __section__(".text.exit")))
#define __initdata __attribute__ ((__section__ (".data.init")))
#define __exitdata __attribute__ ((unused, __section__ (".data.exit")))
#define __initsetup __attribute__ ((unused,__section__ (".setup.init")))
#define __init_call __attribute__ ((unused,__section__ (".initcall.init")))
#define __exit_call __attribute__ ((unused,__section__ (".exitcall.exit")))
#define __INIT .section ".text.init","ax"
#define __FINIT .previous
#define __INITDATA .section ".data.init","aw"
#define module_init(x) __initcall(x);
#define module_exit(x) __exitcall(x);
# 144 "/home/root/kernel/kernel/include/linux/init.h"
#define __devinit
#define __devinitdata
#define __devexit
#define __devexitdata
# 16 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/sysrq.h" 1
struct pt_regs;
struct kbd_struct;
struct tty_struct;
void handle_sysrq(int, struct pt_regs *, struct kbd_struct *, struct tty_struct *);
extern int emergency_sync_scheduled;
#define EMERG_SYNC 1
#define EMERG_REMOUNT 2
void do_emergency_sync(void);
#define CHECK_EMERGENCY_SYNC if (emergency_sync_scheduled) do_emergency_sync();
# 17 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/interrupt.h" 1
#define _LINUX_INTERRUPT_H
# 1 "/home/root/kernel/kernel/include/linux/spinlock.h" 1
# 9 "/home/root/kernel/kernel/include/linux/interrupt.h" 2
# 1 "/home/root/kernel/kernel/include/asm/bitops.h" 1
# 376 "/home/root/kernel/kernel/include/asm/bitops.h"
# 11 "/home/root/kernel/kernel/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 "/home/root/kernel/kernel/include/asm/hardirq.h" 1
#define __ASM_HARDIRQ_H
# 1 "/home/root/kernel/kernel/include/asm/smp.h" 1
#define _PPC_SMP_H
# 65 "/home/root/kernel/kernel/include/asm/smp.h"
# 9 "/home/root/kernel/kernel/include/asm/hardirq.h" 2
typedef struct {
unsigned long __softirq_pending;
unsigned int __local_irq_count;
unsigned int __local_bh_count;
unsigned int __syscall_count;
struct task_struct * __ksoftirqd_task;
unsigned int __last_jiffy_stamp;
} __attribute__((__aligned__(16 ))) irq_cpustat_t;
# 1 "/home/root/kernel/kernel/include/linux/irq_cpustat.h" 1
#define __irq_cpustat_h
extern irq_cpustat_t irq_stat[];
#define __IRQ_STAT(cpu, member) ((void)(cpu), irq_stat[0].member)
extern int global_softirq_active, global_softirq_mask;
#define softirq_pending(cpu) __IRQ_STAT((cpu), __softirq_pending)
#define local_irq_count(cpu) __IRQ_STAT((cpu), __local_irq_count)
#define local_bh_count(cpu) __IRQ_STAT((cpu), __local_bh_count)
#define syscall_count(cpu) __IRQ_STAT((cpu), __syscall_count)
#define ksoftirqd_task(cpu) __IRQ_STAT((cpu), __ksoftirqd_task)
#define nmi_count(cpu) __IRQ_STAT((cpu), __nmi_count)
# 26 "/home/root/kernel/kernel/include/asm/hardirq.h" 2
#define last_jiffy_stamp(cpu) __IRQ_STAT((cpu), __last_jiffy_stamp)
# 57 "/home/root/kernel/kernel/include/asm/hardirq.h"
#define in_interrupt() (local_irq_count(0))
#define in_irq() (in_interrupt() || (current->flags & PF_IRQHANDLER))
#define hardirq_trylock(cpu) (local_irq_count(cpu) == 0)
#define hardirq_endlock(cpu) do { } while (0)
#define irq_enter(cpu, irq) (local_irq_count(cpu)++)
#define irq_exit(cpu, irq) (local_irq_count(cpu)--)
static inline int irqs_running (void)
{
int i;
for (i = 0; i < 1 ; i++) {
if (((void)( ( ({ (void) i ; 0; }) ) ), irq_stat[0]. __local_irq_count ) )
return 1;
}
return 0;
}
# 135 "/home/root/kernel/kernel/include/asm/hardirq.h"
extern void synchronize_irq(void);
# 46 "/home/root/kernel/kernel/include/linux/interrupt.h" 2
# 1 "/home/root/kernel/kernel/include/asm/softirq.h" 1
#define __ASM_SOFTIRQ_H
# 1 "/home/root/kernel/kernel/include/asm/hardirq.h" 1
# 139 "/home/root/kernel/kernel/include/asm/hardirq.h"
# 9 "/home/root/kernel/kernel/include/asm/softirq.h" 2
# 1 "/home/root/kernel/kernel/include/linux/spinlock.h" 1
# 10 "/home/root/kernel/kernel/include/asm/softirq.h" 2
#define __cpu_raise_softirq(cpu, nr) set_bit(nr, &softirq_pending(cpu))
extern mutex_t softirq_lock;
static inline void local_bh_disable(void)
{
}
static inline void local_bh_enable(void)
{
}
#define in_softirq() (current->bh_lock_depth)
# 47 "/home/root/kernel/kernel/include/linux/interrupt.h" 2
enum
{
HI_SOFTIRQ=0,
NET_TX_SOFTIRQ,
NET_RX_SOFTIRQ,
TASKLET_SOFTIRQ
};
struct softirq_action
{
void (*action)(struct softirq_action *, int cpu);
void *data;
};
extern void open_softirq(int nr, void (*action)(struct softirq_action*, int cpu), void *data);
extern void softirq_init(void);
extern void cpu_raise_softirq(unsigned int cpu, unsigned int nr) ;
extern void raise_softirq(unsigned int nr) ;
struct tasklet_struct
{
struct tasklet_struct *next;
unsigned long state;
atomic_t count;
void (*func)(unsigned long);
unsigned long data;
wait_queue_head_t wait;
};
#define DECLARE_TASKLET(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data, __WAIT_QUEUE_HEAD_INITIALIZER(name.wait) }
#define DECLARE_TASKLET_DISABLED(name, func, data) struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data, __WAIT_QUEUE_HEAD_INITIALIZER(name.wait) }
enum
{
TASKLET_STATE_SCHED,
TASKLET_STATE_RUN,
TASKLET_STATE_PENDING
};
struct tasklet_head
{
struct tasklet_struct *list;
} __attribute__ ((__aligned__(16 )));
extern struct tasklet_head tasklet_vec[1 ];
extern struct tasklet_head tasklet_hi_vec[1 ];
#define tasklet_trylock(t) (!test_and_set_bit(TASKLET_STATE_RUN, &(t)->state))
#define tasklet_unlock(t) do { smp_mb__before_clear_bit(); clear_bit(TASKLET_STATE_RUN, &(t)->state); } while(0)
extern void tasklet_schedule(struct tasklet_struct *t);
extern void tasklet_hi_schedule(struct tasklet_struct *t);
static inline void tasklet_disable_nosync(struct tasklet_struct *t)
{
((void) atomic_inc_return(( &t->count ))) ;
}
void tasklet_sync(struct tasklet_struct *t);
static inline void tasklet_disable(struct tasklet_struct *t)
{
tasklet_disable_nosync(t);
tasklet_sync(t);
}
static inline void tasklet_enable(struct tasklet_struct *t)
{
if ((atomic_dec_return(( &t->count )) == 0) &&
test_bit(TASKLET_STATE_PENDING, &t->state))
tasklet_schedule(t);
}
static inline void tasklet_hi_enable(struct tasklet_struct *t)
{
if ((atomic_dec_return(( &t->count )) == 0) &&
test_bit(TASKLET_STATE_PENDING, &t->state))
tasklet_hi_schedule(t);
}
#define tasklet_kill(t) tasklet_disable(t)
extern void tasklet_init(struct tasklet_struct *t,
void (*func)(unsigned long),
unsigned long data);
# 185 "/home/root/kernel/kernel/include/linux/interrupt.h"
#define SMP_TIMER_NAME(name) name
#define SMP_TIMER_DEFINE(name, task)
extern struct tasklet_struct bh_task_vec[];
extern mutex_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);
extern unsigned long probe_irq_on(void);
extern int probe_irq_off(unsigned long);
extern unsigned int probe_irq_mask(unsigned long);
# 18 "panic.c" 2
void sys_sync(void);
extern void unblank_console(void);
int panic_timeout;
struct notifier_block *panic_notifier_list;
static int __attribute__ ((__section__ (".text.init"))) panic_setup(char *str)
{
panic_timeout = simple_strtoul(str, ((void *)0) , 0);
return 1;
}
static char __setup_str_panic_setup [] __attribute__ ((__section__ (".data.init"))) = "panic=" ; static struct kernel_param __setup_panic_setup __attribute__((unused)) __attribute__ ((unused,__section__ (".setup.init"))) = { __setup_str_panic_setup , panic_setup } ;
void panic(const char * fmt, ...)
{
static char buf[1024];
va_list args;
(__builtin_next_arg ( fmt ), __builtin_memcpy (( args ), __builtin_saveregs (), sizeof(__gnuc_va_list)) ) ;
vsprintf(buf, fmt, args);
((void)0) ;
printk("<0>" "Kernel panic: %s\n",buf);
if ((((void)( ( 0 ) ), irq_stat[0]. __local_irq_count ) ) )
printk("<0>" "In interrupt handler - not syncing\n");
else if (!current->pid)
printk("<0>" "In idle task - not syncing\n");
else
sys_sync();
unblank_console();
notifier_call_chain(&panic_notifier_list, 0, ((void *)0) );
if (panic_timeout > 0)
{
printk("<0>" "Rebooting in %d seconds..",panic_timeout);
( (__builtin_constant_p( panic_timeout*1000 ) && ( panic_timeout*1000 )<= 5 ) ? (__builtin_constant_p( ( panic_timeout*1000 )*1000 )? (( ( panic_timeout*1000 )*1000 ) > 1000000 ? __bad_udelay(): __const_udelay(( ( panic_timeout*1000 )*1000 ) * 4294u)) : __udelay( ( panic_timeout*1000 )*1000 )) : ({unsigned long msec=( panic_timeout*1000 ); while (msec--) (__builtin_constant_p( 1000 )? (( 1000 ) > 1000000 ? __bad_udelay(): __const_udelay(( 1000 ) * 4294u)) : __udelay( 1000 )) ;})) ;
machine_restart(((void *)0) );
}
if (! (((void)( ( 0 ) ), irq_stat[0]. __local_irq_count ) ) ) {
__global_sti() ;
for(;;) {
if (emergency_sync_scheduled) do_emergency_sync();
}
} else {
__cli();
for(;;);
}
}
----gnatsweb-attachment----
Content-Type: text/plain; name="panic.i"
Content-Disposition: inline; filename="panic.i"
# 0 "panic.c"
#define __BASE_FILE__ "panic.c"
# 0 "panic.c"
#define __VERSION__ "2.95.2 19991024 (release)"
# 0 "panic.c"
#define __SIZE_TYPE__ unsigned int
# 0 "panic.c"
#define __PTRDIFF_TYPE__ int
# 0 "panic.c"
#define __WCHAR_TYPE__ long int
# 0 "panic.c"
#define __DATE__ "Feb 25 2002"
# 0 "panic.c"
#define __TIME__ "18:10:05"
# 0 "panic.c"
#define __STDC__ 1
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 0 "panic.c"
# 1 "panic.c"
# 1 "/home/root/kernel/kernel/include/linux/config.h" 1
#define _LINUX_CONFIG_H
# 1 "/home/root/kernel/kernel/include/linux/autoconf.h" 1
#define AUTOCONF_INCLUDED
#define CONFIG_RWSEM_XCHGADD_ALGORITHM 1
#define CONFIG_EXPERIMENTAL 1
#define CONFIG_MODULES 1
#define CONFIG_MODVERSIONS 1
#define CONFIG_KMOD 1
#define CONFIG_PPC 1
#define CONFIG_8xx 1
#define CONFIG_SERIAL_CONSOLE 1
#define CONFIG_RPXLITE 1
#define CONFIG_NET 1
#define CONFIG_SYSCTL 1
#define CONFIG_SYSVIPC 1
#define CONFIG_KCORE_ELF 1
#define CONFIG_BINFMT_ELF 1
#define CONFIG_KERNEL_ELF 1
#define CONFIG_BINFMT_MISC_MODULE 1
#define CONFIG_HOTPLUG 1
#define CONFIG_PPC_RTC 1
#define CONFIG_CMDLINE_BOOL 1
#define CONFIG_CMDLINE "console=ttyS0,9600 root=/dev/nfs nfsroot=192.168.201.86:/rpx_root ip=192.168.201.87:192.168.201.86:192.168.201.86:255.255.255.0:asdf::"
#define CONFIG_POSIX_PRIOS (511)
#define CONFIG_RK 1
#define CONFIG_PRIO_INHERIT 1
#define CONFIG_MAX_READERS (16)
#define CONFIG_PIP_KERNEL_LOCKS 1
#define CONFIG_USER_SYS_TIMES 1
#define CONFIG_MEASURE 1
#define CONFIG_BLK_DEV_RAM 1
#define CONFIG_BLK_DEV_RAM_SIZE (4096)
#define CONFIG_PACKET 1
#define CONFIG_NETLINK 1
#define CONFIG_NETFILTER 1
#define CONFIG_UNIX 1
#define CONFIG_INET 1
#define CONFIG_IP_MULTICAST 1
#define CONFIG_IP_PNP 1
#define CONFIG_SYN_COOKIES 1
#define CONFIG_IP_NF_CONNTRACK_MODULE 1
#define CONFIG_IP_NF_FTP_MODULE 1
#define CONFIG_IP_NF_IPTABLES_MODULE 1
#define CONFIG_IP_NF_MATCH_LIMIT_MODULE 1
#define CONFIG_IP_NF_MATCH_MAC_MODULE 1
#define CONFIG_IP_NF_MATCH_MARK_MODULE 1
#define CONFIG_IP_NF_MATCH_MULTIPORT_MODULE 1
#define CONFIG_IP_NF_MATCH_TOS_MODULE 1
#define CONFIG_IP_NF_MATCH_TCPMSS_MODULE 1
#define CONFIG_IP_NF_MATCH_STATE_MODULE 1
#define CONFIG_IP_NF_MATCH_UNCLEAN_MODULE 1
#define CONFIG_IP_NF_MATCH_OWNER_MODULE 1
#define CONFIG_IP_NF_FILTER_MODULE 1
#define CONFIG_IP_NF_TARGET_REJECT_MODULE 1
#define CONFIG_IP_NF_TARGET_MIRROR_MODULE 1
#define CONFIG_IP_NF_NAT_MODULE 1
#define CONFIG_IP_NF_NAT_NEEDED 1
#define CONFIG_IP_NF_TARGET_MASQUERADE_MODULE 1
#define CONFIG_IP_NF_TARGET_REDIRECT_MODULE 1
#define CONFIG_IP_NF_NAT_FTP_MODULE 1
#define CONFIG_IP_NF_TARGET_TCPMSS_MODULE 1
#define CONFIG_IP_NF_COMPAT_IPCHAINS_MODULE 1
#define CONFIG_NETDEVICES 1
#define CONFIG_NET_ETHERNET 1
#define CONFIG_PPP 1
#define CONFIG_PPP_MULTILINK 1
#define CONFIG_PPP_ASYNC 1
#define CONFIG_PPP_DEFLATE 1
#define CONFIG_UNIX98_PTYS 1
#define CONFIG_UNIX98_PTY_COUNT (256)
#define CONFIG_HFS_FS_MODULE 1
#define CONFIG_FAT_FS_MODULE 1
#define CONFIG_MSDOS_FS_MODULE 1
#define CONFIG_VFAT_FS_MODULE 1
#define CONFIG_PROC_FS 1
#define CONFIG_DEVFS_FS 1
#define CONFIG_DEVPTS_FS 1
#define CONFIG_NFS_FS 1
#define CONFIG_NFS_V3 1
#define CONFIG_ROOT_NFS 1
#define CONFIG_NFSD 1
#define CONFIG_NFSD_V3 1
#define CONFIG_SUNRPC 1
#define CONFIG_LOCKD 1
#define CONFIG_LOCKD_V4 1
#define CONFIG_MSDOS_PARTITION 1
#define CONFIG_NLS 1
#define CONFIG_NLS_DEFAULT "iso8859-1"
#define CONFIG_NLS_ISO8859_1_MODULE 1
#define CONFIG_SCC_ENET 1
#define CONFIG_SCC2_ENET 1
#define CONFIG_USB 1
#define CONFIG_USB_DEVICEFS 1
#define CONFIG_USB_SERIAL_MODULE 1
#define CONFIG_USB_SERIAL_VISOR_MODULE 1
#define CONFIG_MAGIC_SYSRQ 1
# 4 "/home/root/kernel/kernel/include/linux/config.h" 2
# 11 "panic.c" 2
# 1 "/home/root/kernel/kernel/include/linux/sched.h" 1
#define _LINUX_SCHED_H
# 1 "/home/root/kernel/kernel/include/linux/sched-defs.h" 1
#define _LINUX_SCHED_DEFS_H
# 1 "/home/root/kernel/kernel/include/asm/param.h" 1
#define _ASM_PPC_PARAM_H
#define HZ 100
#define EXEC_PAGESIZE 4096
#define NGROUPS 32
#define NOGROUP (-1)
#define MAXHOSTNAMELEN 64
#define CLOCKS_PER_SEC 100
#define DEF_SLICE 0x80000
#define SLICE_BITS 21
# 4 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
extern unsigned long event;
# 1 "/home/root/kernel/kernel/include/linux/binfmts.h" 1
#define _LINUX_BINFMTS_H
# 1 "/home/root/kernel/kernel/include/linux/ptrace.h" 1
#define _LINUX_PTRACE_H
#define PTRACE_TRACEME 0
#define PTRACE_PEEKTEXT 1
#define PTRACE_PEEKDATA 2
#define PTRACE_PEEKUSR 3
#define PTRACE_POKETEXT 4
#define PTRACE_POKEDATA 5
#define PTRACE_POKEUSR 6
#define PTRACE_CONT 7
#define PTRACE_KILL 8
#define PTRACE_SINGLESTEP 9
#define PTRACE_ATTACH 0x10
#define PTRACE_DETACH 0x11
#define PTRACE_SYSCALL 24
# 1 "/home/root/kernel/kernel/include/asm/ptrace.h" 1
#define _PPC_PTRACE_H
struct pt_regs {
unsigned long gpr[32];
unsigned long nip;
unsigned long msr;
unsigned long orig_gpr3;
unsigned long ctr;
unsigned long link;
unsigned long xer;
unsigned long ccr;
unsigned long mq;
unsigned long trap;
unsigned long dar;
unsigned long dsisr;
unsigned long result;
};
#define STACK_FRAME_OVERHEAD 16
#define __SIGNAL_FRAMESIZE 64
#define instruction_pointer(regs) ((regs)->nip)
#define user_mode(regs) (((regs)->msr & MSR_PR) != 0)
#define PT_R0 0
#define PT_R1 1
#define PT_R2 2
#define PT_R3 3
#define PT_R4 4
#define PT_R5 5
#define PT_R6 6
#define PT_R7 7
#define PT_R8 8
#define PT_R9 9
#define PT_R10 10
#define PT_R11 11
#define PT_R12 12
#define PT_R13 13
#define PT_R14 14
#define PT_R15 15
#define PT_R16 16
#define PT_R17 17
#define PT_R18 18
#define PT_R19 19
#define PT_R20 20
#define PT_R21 21
#define PT_R22 22
#define PT_R23 23
#define PT_R24 24
#define PT_R25 25
#define PT_R26 26
#define PT_R27 27
#define PT_R28 28
#define PT_R29 29
#define PT_R30 30
#define PT_R31 31
#define PT_NIP 32
#define PT_MSR 33
#define PT_ORIG_R3 34
#define PT_CTR 35
#define PT_LNK 36
#define PT_XER 37
#define PT_CCR 38
#define PT_MQ 39
#define PT_FPR0 48
#define PT_FPR31 (PT_FPR0 + 2*31)
#define PT_FPSCR (PT_FPR0 + 2*32 + 1)
# 24 "/home/root/kernel/kernel/include/linux/ptrace.h" 2
# 4 "/home/root/kernel/kernel/include/linux/binfmts.h" 2
# 1 "/home/root/kernel/kernel/include/linux/capability.h" 1
#define _LINUX_CAPABILITY_H
# 1 "/home/root/kernel/kernel/include/linux/types.h" 1
#define _LINUX_TYPES_H
# 1 "/home/root/kernel/kernel/include/linux/posix_types.h" 1
#define _LINUX_POSIX_TYPES_H
# 1 "/home/root/kernel/kernel/include/linux/stddef.h" 1
#define _LINUX_STDDEF_H
#define NULL ((void *)0)
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
# 4 "/home/root/kernel/kernel/include/linux/posix_types.h" 2
#define __NFDBITS (8 * sizeof(unsigned long))
#define __FD_SETSIZE 1024
#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS)
#define __FDELT(d) ((d) / __NFDBITS)
#define __FDMASK(d) (1UL << ((d) % __NFDBITS))
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 "/home/root/kernel/kernel/include/asm/posix_types.h" 1
#define _PPC_POSIX_TYPES_H
typedef unsigned int __kernel_dev_t;
typedef unsigned int __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
typedef unsigned short __kernel_nlink_t;
typedef long __kernel_off_t;
typedef int __kernel_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_suseconds_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
typedef short __kernel_ipc_pid_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 int __kernel_old_uid_t;
typedef unsigned int __kernel_old_gid_t;
typedef long long __kernel_loff_t;
typedef struct {
int val[2];
} __kernel_fsid_t;
# 54 "/home/root/kernel/kernel/include/asm/posix_types.h"
static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / (8 * sizeof(unsigned long)) ;
unsigned long _rem = fd % (8 * sizeof(unsigned long)) ;
fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
}
static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / (8 * sizeof(unsigned long)) ;
unsigned long _rem = fd % (8 * sizeof(unsigned long)) ;
fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
}
static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
{
unsigned long _tmp = fd / (8 * sizeof(unsigned long)) ;
unsigned long _rem = fd % (8 * sizeof(unsigned long)) ;
return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
}
static __inline__ void __FD_ZERO(__kernel_fd_set *p)
{
unsigned int *tmp = (unsigned int *)p->fds_bits;
int i;
if (__builtin_constant_p((1024 / (8 * sizeof(unsigned long)) ) )) {
switch ((1024 / (8 * sizeof(unsigned long)) ) ) {
case 8:
tmp[0] = 0; tmp[1] = 0; tmp[2] = 0; tmp[3] = 0;
tmp[4] = 0; tmp[5] = 0; tmp[6] = 0; tmp[7] = 0;
return;
}
}
i = (1024 / (8 * sizeof(unsigned long)) ) ;
while (i) {
i--;
*tmp = 0;
tmp++;
}
}
# 46 "/home/root/kernel/kernel/include/linux/posix_types.h" 2
# 8 "/home/root/kernel/kernel/include/linux/types.h" 2
# 1 "/home/root/kernel/kernel/include/asm/types.h" 1
#define _PPC_TYPES_H
typedef __signed__ char __s8;
typedef unsigned char __u8;
typedef __signed__ short __s16;
typedef unsigned short __u16;
typedef __signed__ int __s32;
typedef unsigned int __u32;
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
typedef struct {
__u32 u[4];
} __attribute((aligned(16))) __vector128;
typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
typedef __vector128 vector128;
#define BITS_PER_LONG 32
typedef u32 dma_addr_t;
typedef unsigned short umode_t;
typedef long long cpu_tick_data_t;
# 9 "/home/root/kernel/kernel/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_loff_t loff_t;
#define _SIZE_T
typedef __kernel_size_t size_t;
#define _SSIZE_T
typedef __kernel_ssize_t ssize_t;
#define _PTRDIFF_T
typedef __kernel_ptrdiff_t ptrdiff_t;
#define _TIME_T
typedef __kernel_time_t time_t;
#define _CLOCK_T
typedef __kernel_clock_t clock_t;
#define _CADDR_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;
#define __BIT_TYPES_DEFINED__
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;
struct ustat {
__kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode;
char f_fname[6];
char f_fpack[6];
};
# 16 "/home/root/kernel/kernel/include/linux/capability.h" 2
# 1 "/home/root/kernel/kernel/include/linux/fs-defs.h" 1
#define _LINUX_FS_DEFS_H
# 1 "/home/root/kernel/kernel/include/linux/linkage.h" 1
#define _LINUX_LINKAGE_H
#define CPP_ASMLINKAGE
#define asmlinkage CPP_ASMLINKAGE
#define SYMBOL_NAME_STR(X) #X
#define SYMBOL_NAME(X) X
#define SYMBOL_NAME_LABEL(X) X##:
#define __ALIGN .align 4,0x90
#define __ALIGN_STR ".align 4,0x90"
# 61 "/home/root/kernel/kernel/include/linux/linkage.h"
# 10 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/limits.h" 1
#define _LINUX_LIMITS_H
#define NR_OPEN 1024
#define NGROUPS_MAX 32
#define ARG_MAX 131072
#define CHILD_MAX 999
#define OPEN_MAX 256
#define LINK_MAX 127
#define MAX_CANON 255
#define MAX_INPUT 255
#define NAME_MAX 255
#define PATH_MAX 4095
#define PIPE_BUF 4096
#define RTSIG_MAX 32
# 11 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/wait.h" 1
#define _LINUX_WAIT_H
#define WNOHANG 0x00000001
#define WUNTRACED 0x00000002
#define __WNOTHREAD 0x20000000
#define __WALL 0x40000000
#define __WCLONE 0x80000000
# 1 "/home/root/kernel/kernel/include/linux/kernel.h" 1
#define _LINUX_KERNEL_H
# 1 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/stdarg.h" 1 3
#define _STDARG_H
#define _ANSI_STDARG_H_
# 1 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/va-ppc.h" 1 3
#define __GNUC_VA_LIST
#define _SYS_VA_LIST_H
#define __va_overflow(AP) (AP)->overflow_arg_area
typedef struct __va_list_tag {
unsigned char gpr;
unsigned char fpr;
char *overflow_arg_area;
char *reg_save_area;
} __va_list[1], __gnuc_va_list[1];
#define __VA_PPC_H__
typedef struct {
long __gp_save[8];
double __fp_save[8];
} __va_regsave_t;
#define __VA_FP_REGSAVE(AP,OFS,TYPE) ((TYPE *) (void *) (&(((__va_regsave_t *) (AP)->reg_save_area)->__fp_save[OFS])))
#define __VA_GP_REGSAVE(AP,OFS,TYPE) ((TYPE *) (void *) (&(((__va_regsave_t *) (AP)->reg_save_area)->__gp_save[OFS])))
#define __va_start_common(AP, FAKE) __builtin_memcpy ((AP), __builtin_saveregs (), sizeof(__gnuc_va_list))
#define va_start(AP,LASTARG) (__builtin_next_arg (LASTARG), __va_start_common (AP, 0))
#define __va_float_p(TYPE) 0
#define __va_aggregate_p(TYPE) (__builtin_classify_type(*(TYPE *)0) >= 12)
#define __va_size(TYPE) ((sizeof(TYPE) + sizeof (long) - 1) / sizeof (long))
extern void __va_arg_type_violation(void) __attribute__((__noreturn__));
#define va_arg(AP,TYPE) __extension__ (*({ register TYPE *__ptr; if (__va_float_p (TYPE) && sizeof (TYPE) < 16) { unsigned char __fpr = (AP)->fpr; if (__fpr < 8) { __ptr = __VA_FP_REGSAVE (AP, __fpr, TYPE); (AP)->fpr = __fpr + 1; } else if (sizeof (TYPE) == 8) { unsigned long __addr = (unsigned long) (__va_overflow (AP)); __ptr = (TYPE *)((__addr + 7) & -8); __va_overflow (AP) = (char *)(__ptr + 1); } else { __va_arg_type_violation (); } } else if (__va_aggregate_p (TYPE) || __va_float_p (TYPE)) { unsigned char __gpr = (AP)->gpr; if (__gpr < 8) { __ptr = * __VA_GP_REGSAVE (AP, __gpr, TYPE *); (AP)->gpr = __gpr + 1; } else { TYPE **__pptr = (TYPE **) (__va_overflow (AP)); __ptr = * __pptr; __va_overflow (AP) = (char *) (__pptr + 1); } } else { if (sizeof (TYPE) == 8) { unsigned char __gpr = (AP)->gpr; if (__gpr < 7) { __gpr += __gpr & 1; __ptr = __VA_GP_REGSAVE (AP, __gpr, TYPE); (AP)->gpr = __gpr + 2; } else { unsigned long __addr = (unsigned long) (__va_overflow (AP)); __ptr = (TYPE *)((__addr + 7) & -8); (AP)->gpr = 8; __va_overflow (AP) = (char *)(__ptr + 1); } } else if (sizeof (TYPE) == 4) { unsigned char __gpr = (AP)->gpr; if (__gpr < 8) { __ptr = __VA_GP_REGSAVE (AP, __gpr, TYPE); (AP)->gpr = __gpr + 1; } else { __ptr = (TYPE *) __va_overflow (AP); __va_overflow (AP) = (char *)(__ptr + 1); } } else { __va_arg_type_violation (); } } __ptr; }))
# 192 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/va-ppc.h" 3
#define va_end(AP) ((void)0)
#define __va_copy(dest, src) *(dest) = *(src)
\f
# 255 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/va-ppc.h" 3
# 42 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/stdarg.h" 2 3
# 131 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/stdarg.h" 3
# 175 "/opt/lib/gcc-lib/powerpc-linux/2.95.2/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
#define _VA_LIST_
#define _VA_LIST
#define _VA_LIST_DEFINED
#define _VA_LIST_T_H
# 10 "/home/root/kernel/kernel/include/linux/kernel.h" 2
#define barrier() __asm__ __volatile__("": : :"memory")
#define INT_MAX ((int)(~0U>>1))
#define INT_MIN (-INT_MAX - 1)
#define UINT_MAX (~0U)
#define LONG_MAX ((long)(~0UL>>1))
#define LONG_MIN (-LONG_MAX - 1)
#define ULONG_MAX (~0UL)
#define STACK_MAGIC 0xdeadbeef
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define KERN_EMERG "<0>"
#define KERN_ALERT "<1>"
#define KERN_CRIT "<2>"
#define KERN_ERR "<3>"
#define KERN_WARNING "<4>"
#define KERN_NOTICE "<5>"
#define KERN_INFO "<6>"
#define KERN_DEBUG "<7>"
#define NORET_TYPE
#define ATTRIB_NORET __attribute__((noreturn))
#define NORET_AND noreturn,
#define FASTCALL(x) x
struct semaphore;
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 up_and_exit(struct semaphore *, 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 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);
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;
}
#define pr_debug(fmt,arg...) do { } while (0)
#define pr_info(fmt,arg...) printk(KERN_INFO fmt,##arg)
#define NIPQUAD(addr) ((unsigned char *)&addr)[0], ((unsigned char *)&addr)[1], ((unsigned char *)&addr)[2], ((unsigned char *)&addr)[3]
#define HIPQUAD(addr) ((unsigned char *)&addr)[3], ((unsigned char *)&addr)[2], ((unsigned char *)&addr)[1], ((unsigned char *)&addr)[0]
#define SI_LOAD_SHIFT 16
struct sysinfo {
long uptime;
unsigned long loads[3];
unsigned long totalram;
unsigned long freeram;
unsigned long sharedram;
unsigned long bufferram;
unsigned long totalswap;
unsigned long freeswap;
unsigned short procs;
unsigned short pad;
unsigned long totalhigh;
unsigned long freehigh;
unsigned int mem_unit;
char _f[20-2*sizeof(long)-sizeof(int)];
};
# 14 "/home/root/kernel/kernel/include/linux/wait.h" 2
# 1 "/home/root/kernel/kernel/include/linux/list.h" 1
#define _LINUX_LIST_H
struct list_head {
struct list_head *next, *prev;
};
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
#define INIT_LIST_HEAD(ptr) do { (ptr)->next = (ptr); (ptr)->prev = (ptr); } while (0)
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;
}
static __inline__ void list_add(struct list_head *new, struct list_head *head)
{
__list_add(new, head, head->next);
}
static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
{
__list_add(new, head->prev, head);
}
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;
}
}
#define list_entry(ptr, type, member) ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
#define list_for_each(pos, head) for (pos = (head)->next; pos != (head); pos = pos->next)
# 15 "/home/root/kernel/kernel/include/linux/wait.h" 2
# 1 "/home/root/kernel/kernel/include/linux/mutex-defs.h" 1
#define __LINUX_MUTEX_DEFS_H
# 1 "/home/root/kernel/kernel/include/linux/oldspinlock.h" 1
#define __LINUX_SPINLOCK_H
#define old_spin_lock_irqsave(lock, flags) do { local_irq_save(flags); old_spin_lock(lock); } while (0)
#define old_spin_lock_irq(lock) do { local_irq_disable(); old_spin_lock(lock); } while (0)
#define old_read_lock_irqsave(lock, flags) do { local_irq_save(flags); old_read_lock(lock); } while (0)
#define old_read_lock_irq(lock) do { local_irq_disable(); old_read_lock(lock); } while (0)
#define old_write_lock_irqsave(lock, flags) do { local_irq_save(flags); old_write_lock(lock); } while (0)
#define old_write_lock_irq(lock) do { local_irq_disable(); old_write_lock(lock); } while (0)
#define old_spin_unlock_irqrestore(lock, flags) do { old_spin_unlock(lock); local_irq_restore(flags); } while (0)
#define old_spin_unlock_irq(lock) do { old_spin_unlock(lock); local_irq_enable(); } while (0)
#define old_read_unlock_irqrestore(lock, flags) do { old_read_unlock(lock); local_irq_restore(flags); } while (0)
#define old_read_unlock_irq(lock) do { old_read_unlock(lock); local_irq_enable(); } while (0)
#define old_write_unlock_irqrestore(lock, flags) do { old_write_unlock(lock); local_irq_restore(flags); } while (0)
#define old_write_unlock_irq(lock) do { old_write_unlock(lock); local_irq_enable(); } while (0)
#define DEBUG_SPINLOCKS 0
typedef struct { int gcc_is_buggy; } old_spinlock_t;
#define OLD_SPIN_LOCK_UNLOCKED (old_spinlock_t) { 0 }
#define old_spin_lock_init(lock) do { } while(0)
#define old_spin_lock(lock) (void)(lock)
#define old_spin_is_locked(lock) ({(void)(lock); 0; })
#define old_spin_trylock(lock) ({(void)(lock); 1; })
#define old_spin_unlock_wait(lock) (void)(lock)
#define old_spin_unlock(lock) (void)(lock)
# 139 "/home/root/kernel/kernel/include/linux/oldspinlock.h"
typedef struct { int gcc_is_buggy; } old_rwlock_t;
#define OLD_RW_LOCK_UNLOCKED (old_rwlock_t) { 0 }
#define old_rwlock_init(lock) do { } while(0)
#define old_read_lock(lock) (void)(lock)
#define old_read_unlock(lock) do { } while(0)
#define old_write_lock(lock) (void)(lock)
#define old_write_unlock(lock) do { } while(0)
# 7 "/home/root/kernel/kernel/include/linux/mutex-defs.h" 2
# 1 "/home/root/kernel/kernel/include/asm/atomic.h" 1
#define _ASM_PPC_ATOMIC_H_
typedef struct { volatile int counter; } atomic_t;
#define ATOMIC_INIT(i) { (i) }
#define atomic_read(v) ((v)->counter)
#define atomic_set(v,i) (((v)->counter) = (i))
extern void atomic_clear_mask(unsigned long mask, unsigned long *addr);
extern void atomic_set_mask(unsigned long mask, unsigned long *addr);
static __inline__ int atomic_add_return(int a, atomic_t *v)
{
int t;
__asm__ __volatile__("\n1: lwarx %0,0,%3\n add %0,%2,%0\n stwcx. %0,0,%3\n bne- 1b"
: "=&r" (t), "=m" (v->counter)
: "r" (a), "r" (v), "m" (v->counter)
: "cc");
return t;
}
static __inline__ int atomic_sub_return(int a, atomic_t *v)
{
int t;
__asm__ __volatile__("\n1: lwarx %0,0,%3\n subf %0,%2,%0\n stwcx. %0,0,%3\n bne- 1b"
: "=&r" (t), "=m" (v->counter)
: "r" (a), "r" (v), "m" (v->counter)
: "cc");
return t;
}
static __inline__ int atomic_inc_return(atomic_t *v)
{
int t;
__asm__ __volatile__("\n1: lwarx %0,0,%2\n addic %0,%0,1\n stwcx. %0,0,%2\n bne- 1b"
: "=&r" (t), "=m" (v->counter)
: "r" (v), "m" (v->counter)
: "cc");
return t;
}
static __inline__ int atomic_dec_return(atomic_t *v)
{
int t;
__asm__ __volatile__("\n1: lwarx %0,0,%2\n addic %0,%0,-1\n stwcx. %0,0,%2\n bne 1b"
: "=&r" (t), "=m" (v->counter)
: "r" (v), "m" (v->counter)
: "cc");
return t;
}
#define atomic_add(a, v) ((void) atomic_add_return((a), (v)))
#define atomic_add_negative(a,v)(atomic_add_return ((a), (v)) < 0)
#define atomic_sub(a, v) ((void) atomic_sub_return((a), (v)))
#define atomic_sub_and_test(a, v) (atomic_sub_return((a), (v)) == 0)
#define atomic_inc(v) ((void) atomic_inc_return((v)))
#define atomic_dec(v) ((void) atomic_dec_return((v)))
#define atomic_dec_and_test(v) (atomic_dec_return((v)) == 0)
static __inline__ int atomic_dec_if_positive(atomic_t *v)
{
int t;
__asm__ __volatile__("\n"
"1: lwarx %0,0,%2\n"
" addic. %0,%0,-1\n"
" blt 2f\n"
" stwcx. %0,0,%2\n"
" bne 1b\n"
"2:"
: "=&r" (t), "=m" (v->counter)
: "r" (&v->counter), "m" (v->counter)
: "cc");
return t;
}
#define smp_mb__before_atomic_dec() smp_mb()
#define smp_mb__after_atomic_dec() smp_mb()
#define smp_mb__before_atomic_inc() smp_mb()
#define smp_mb__after_atomic_inc() smp_mb()
# 8 "/home/root/kernel/kernel/include/linux/mutex-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/string.h" 1
#define _LINUX_STRING_H_
extern char * ___strtok;
extern char * strpbrk(const char *,const char *);
extern char * strtok(char *,const char *);
extern char * strsep(char **,const char *);
extern __kernel_size_t strspn(const char *,const char *);
# 1 "/home/root/kernel/kernel/include/asm/string.h" 1
#define _PPC_STRING_H_
#define __HAVE_ARCH_STRCPY
#define __HAVE_ARCH_STRNCPY
#define __HAVE_ARCH_STRLEN
#define __HAVE_ARCH_STRCMP
#define __HAVE_ARCH_STRCAT
#define __HAVE_ARCH_MEMSET
#define __HAVE_ARCH_BCOPY
#define __HAVE_ARCH_MEMCPY
#define __HAVE_ARCH_MEMMOVE
#define __HAVE_ARCH_MEMCMP
#define __HAVE_ARCH_MEMCHR
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, int);
extern char * strcpy(char *,const char *);
extern char * strncpy(char *,const char *, __kernel_size_t);
extern __kernel_size_t strlen(const char *);
extern int strcmp(const char *,const char *);
extern char * strcat(char *, const char *);
extern void * memset(void *,int,__kernel_size_t);
extern void * memcpy(void *,const void *,__kernel_size_t);
extern void * memmove(void *,const void *,__kernel_size_t);
extern int memcmp(const void *,const void *,__kernel_size_t);
extern void * memchr(const void *,int,__kernel_size_t);
# 25 "/home/root/kernel/kernel/include/linux/string.h" 2
extern char * strncat(char *, const char *, __kernel_size_t);
extern int strncmp(const char *,const char *,__kernel_size_t);
extern int strnicmp(const char *, const char *, __kernel_size_t);
extern char * strchr(const char *,int);
extern char * strrchr(const char *,int);
extern char * strstr(const char *,const char *);
extern __kernel_size_t strnlen(const char *,__kernel_size_t);
extern void * memscan(void *,int,__kernel_size_t);
# 9 "/home/root/kernel/kernel/include/linux/mutex-defs.h" 2
#define MUTEX_UNLOCKED 0
#define MUTEX_WRITE 1
#define MUTEX_READ 2
#define PTHREAD_PRIO_NONE 0
#define PTHREAD_PRIO_INHERIT 1
#define PTHREAD_PRIO_PROTECT 2
#define SHARED_QUEUE 0
#define NUM_QUEUES 1
struct user_mutex_t;
struct mutex_t;
typedef struct mutex_list_t {
struct task_struct *proc;
struct mutex_list_t *next, *prev;
struct mutex_t *mutex;
} mutex_list_t;
typedef struct mutex_t {
int state;
int num_readers;
struct task_struct *blocked_head, *blocked_tail;
struct user_mutex_t *umtx;
int proto;
mutex_list_t owners[(16) ];
} mutex_t;
#define MUTEX_LOCK_UNLOCKED (mutex_t) { state: MUTEX_UNLOCKED, proto: PTHREAD_PRIO_INHERIT }
#define spinlock_t mutex_t
#define rwlock_t mutex_t
#define spin_lock_init mutex_init
#define spin_lock write_lock
#define spin_unlock write_unlock
#define spin_trylock mutex_trylock
#define spin_trylock_bh mutex_trylock
#define spin_unlock_wait mutex_unlock_wait
#define SPIN_LOCK_UNLOCKED MUTEX_LOCK_UNLOCKED
#define RW_LOCK_UNLOCKED MUTEX_LOCK_UNLOCKED
extern old_spinlock_t mutex_lock;
void mutex_adjust_priority(struct task_struct *p);
void fix_mutex_queue(struct task_struct *p);
void unlock_all_mutexes(void);
static inline void mutex_init(mutex_t *lock)
{
memset(lock, 0, sizeof(mutex_t));
lock->proto = 1 ;
}
extern int atomic_dec_and_lock(atomic_t *atomic, mutex_t *lock);
# 17 "/home/root/kernel/kernel/include/linux/wait.h" 2
# 1 "/home/root/kernel/kernel/include/asm/page.h" 1
#define _PPC_PAGE_H
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))
#define PAGE_OFFSET 0xc0000000
#define KERNELBASE PAGE_OFFSET
# 1 "/home/root/kernel/kernel/include/asm/system.h" 1
#define __PPC_SYSTEM_H
# 1 "/home/root/kernel/kernel/include/linux/kdev_t.h" 1
#define _LINUX_KDEV_T_H
#define MINORBITS 8
#define MINORMASK ((1U << MINORBITS) - 1)
typedef unsigned short kdev_t;
#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
#define HASHDEV(dev) ((unsigned int) (dev))
#define NODEV 0
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
#define B_FREE 0xffff
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;
major = (dev >> 8);
minor = (dev & 0xff);
return ((( major ) << 8 ) | ( minor )) ;
}
# 113 "/home/root/kernel/kernel/include/linux/kdev_t.h"
# 11 "/home/root/kernel/kernel/include/asm/system.h" 2
# 1 "/home/root/kernel/kernel/include/asm/processor.h" 1
#define __ASM_PPC_PROCESSOR_H
#define current_text_addr() ({ __label__ _l; _l: &&_l;})
# 1 "/home/root/kernel/kernel/include/asm/mpc8xx.h" 1
#define __CONFIG_8xx_DEFS
# 1 "/home/root/kernel/kernel/include/asm/rpxlite.h" 1
#define __MACH_RPX_DEFS
typedef struct bd_info {
unsigned int bi_memstart;
unsigned int bi_memsize;
unsigned int bi_intfreq;
unsigned int bi_busfreq;
unsigned char bi_enetaddr[6];
unsigned int bi_baudrate;
} bd_t;
extern bd_t m8xx_board_info;
#define RPX_CSR_ADDR ((uint)0xfa400000)
#define RPX_CSR_SIZE ((uint)(4 * 1024))
#define IMAP_ADDR ((uint)0xfa200000)
#define IMAP_SIZE ((uint)(64 * 1024))
#define PCMCIA_MEM_ADDR ((uint)0x04000000)
#define PCMCIA_MEM_SIZE ((uint)(64 * 1024))
#define PCMCIA_IO_ADDR ((uint)0x04400000)
#define PCMCIA_IO_SIZE ((uint)(4 * 1024))
#define BCSR0_ETHEN ((uint)0x80000000)
#define BCSR0_ETHLPBK ((uint)0x40000000)
#define BCSR0_COLTESTDIS ((uint)0x20000000)
#define BCSR0_FULLDPLXDIS ((uint)0x10000000)
#define BCSR0_LEDOFF ((uint)0x08000000)
#define BCSR0_USBDISABLE ((uint)0x04000000)
#define BCSR0_USBHISPEED ((uint)0x02000000)
#define BCSR0_USBPWREN ((uint)0x01000000)
#define BCSR0_PCMCIAVOLT ((uint)0x000f0000)
#define BCSR0_PCMCIA3VOLT ((uint)0x000a0000)
#define BCSR0_PCMCIA5VOLT ((uint)0x00060000)
#define BCSR1_IPB5SEL ((uint)0x00100000)
#define BCSR1_PCVCTL4 ((uint)0x00080000)
#define BCSR1_PCVCTL5 ((uint)0x00040000)
#define BCSR1_PCVCTL6 ((uint)0x00020000)
#define BCSR1_PCVCTL7 ((uint)0x00010000)
#define _IO_BASE 0x80000000
#define _IO_BASE_SIZE 0x1000
#define NR_8259_INTS 0
#define _MACH_8xx (_MACH_rpxlite)
# 28 "/home/root/kernel/kernel/include/asm/mpc8xx.h" 2
# 68 "/home/root/kernel/kernel/include/asm/mpc8xx.h"
#define _ISA_MEM_BASE 0
#define PCI_DRAM_OFFSET 0
extern unsigned long isa_io_base;
extern unsigned long isa_mem_base;
extern unsigned long pci_dram_offset;
extern unsigned char __res[];
extern int request_8xxirq(unsigned int irq,
void (*handler)(int, void *, struct pt_regs *),
unsigned long flags,
const char *device,
void *dev_id);
# 18 "/home/root/kernel/kernel/include/asm/processor.h" 2
#define MSR_VEC (1<<25)
#define MSR_POW (1<<18)
#define MSR_WE (1<<18)
#define MSR_TGPR (1<<17)
#define MSR_CE (1<<17)
#define MSR_ILE (1<<16)
#define MSR_EE (1<<15)
#define MSR_PR (1<<14)
#define MSR_FP (1<<13)
#define MSR_ME (1<<12)
#define MSR_FE0 (1<<11)
#define MSR_SE (1<<10)
#define MSR_DWE (1<<10)
#define MSR_BE (1<<9)
#define MSR_DE (1<<9)
#define MSR_FE1 (1<<8)
#define MSR_IP (1<<6)
#define MSR_IR (1<<5)
#define MSR_DR (1<<4)
#define MSR_PE (1<<3)
#define MSR_PX (1<<2)
#define MSR_RI (1<<1)
#define MSR_LE (1<<0)
#define MSR_ MSR_ME|MSR_RI
#define MSR_KERNEL MSR_|MSR_IR|MSR_DR
#define MSR_USER MSR_KERNEL|MSR_PR|MSR_EE
#define FPSCR_FX 0x80000000
#define FPSCR_FEX 0x40000000
#define FPSCR_VX 0x20000000
#define FPSCR_OX 0x10000000
#define FPSCR_UX 0x08000000
#define FPSCR_ZX 0x04000000
#define FPSCR_XX 0x02000000
#define FPSCR_VXSNAN 0x01000000
#define FPSCR_VXISI 0x00800000
#define FPSCR_VXIDI 0x00400000
#define FPSCR_VXZDZ 0x00200000
#define FPSCR_VXIMZ 0x00100000
#define FPSCR_VXVC 0x00080000
#define FPSCR_FR 0x00040000
#define FPSCR_FI 0x00020000
#define FPSCR_FPRF 0x0001f000
#define FPSCR_FPCC 0x0000f000
#define FPSCR_VXSOFT 0x00000400
#define FPSCR_VXSQRT 0x00000200
#define FPSCR_VXCVI 0x00000100
#define FPSCR_VE 0x00000080
#define FPSCR_OE 0x00000040
#define FPSCR_UE 0x00000020
#define FPSCR_ZE 0x00000010
#define FPSCR_XE 0x00000008
#define FPSCR_NI 0x00000004
#define FPSCR_RN 0x00000003
#define SPRN_CCR0 0x3B3
#define SPRN_CDBCR 0x3D7
#define SPRN_CTR 0x009
#define SPRN_DABR 0x3F5
#define SPRN_DAC1 0x3F6
#define SPRN_DAC2 0x3F7
#define SPRN_DAR 0x013
#define SPRN_DBAT0L 0x219
#define SPRN_DBAT0U 0x218
#define SPRN_DBAT1L 0x21B
#define SPRN_DBAT1U 0x21A
#define SPRN_DBAT2L 0x21D
#define SPRN_DBAT2U 0x21C
#define SPRN_DBAT3L 0x21F
#define SPRN_DBAT3U 0x21E
#define SPRN_DBCR 0x3F2
#define DBCR_EDM 0x80000000
#define DBCR_IDM 0x40000000
#define DBCR_RST(x) (((x) & 0x3) << 28)
#define DBCR_RST_NONE 0
#define DBCR_RST_CORE 1
#define DBCR_RST_CHIP 2
#define DBCR_RST_SYSTEM 3
#define DBCR_IC 0x08000000
#define DBCR_BT 0x04000000
#define DBCR_EDE 0x02000000
#define DBCR_TDE 0x01000000
#define DBCR_FER 0x00F80000
#define DBCR_FT 0x00040000
#define DBCR_IA1 0x00020000
#define DBCR_IA2 0x00010000
#define DBCR_D1R 0x00008000
#define DBCR_D1W 0x00004000
#define DBCR_D1S(x) (((x) & 0x3) << 12)
#define DAC_BYTE 0
#define DAC_HALF 1
#define DAC_WORD 2
#define DAC_QUAD 3
#define DBCR_D2R 0x00000800
#define DBCR_D2W 0x00000400
#define DBCR_D2S(x) (((x) & 0x3) << 8)
#define DBCR_SBT 0x00000040
#define DBCR_SED 0x00000020
#define DBCR_STD 0x00000010
#define DBCR_SIA 0x00000008
#define DBCR_SDA 0x00000004
#define DBCR_JOI 0x00000002
#define DBCR_JII 0x00000001
#define SPRN_DBCR0 0x3F2
#define SPRN_DBCR1 0x3BD
#define SPRN_DBSR 0x3F0
#define DBSR_IC 0x80000000
#define DBSR_TIE 0x10000000
#define SPRN_DCCR 0x3FA
#define DCCR_NOCACHE 0
#define DCCR_CACHE 1
#define SPRN_DCMP 0x3D1
#define SPRN_DCWR 0x3BA
#define DCWR_COPY 0
#define DCWR_WRITE 1
#define SPRN_DEAR 0x3D5
#define SPRN_DEC 0x016
#define SPRN_DER 0x095
#define DER_RSTE 0x40000000
#define DER_CHSTPE 0x20000000
#define DER_MCIE 0x10000000
#define DER_EXTIE 0x02000000
#define DER_ALIE 0x01000000
#define DER_PRIE 0x00800000
#define DER_FPUVIE 0x00400000
#define DER_DECIE 0x00200000
#define DER_SYSIE 0x00040000
#define DER_TRE 0x00020000
#define DER_SEIE 0x00004000
#define DER_ITLBMSE 0x00002000
#define DER_ITLBERE 0x00001000
#define DER_DTLBMSE 0x00000800
#define DER_DTLBERE 0x00000400
#define DER_LBRKE 0x00000008
#define DER_IBRKE 0x00000004
#define DER_EBRKE 0x00000002
#define DER_DPIE 0x00000001
#define SPRN_DMISS 0x3D0
#define SPRN_DSISR 0x012
#define SPRN_EAR 0x11A
#define SPRN_ESR 0x3D4
#define ESR_IMCP 0x80000000
#define ESR_IMCN 0x40000000
#define ESR_IMCB 0x20000000
#define ESR_IMCT 0x10000000
#define ESR_PIL 0x08000000
#define ESR_PPR 0x04000000
#define ESR_PTR 0x02000000
#define ESR_DST 0x00800000
#define ESR_DIZ 0x00400000
#define SPRN_EVPR 0x3D6
#define SPRN_HASH1 0x3D2
#define SPRN_HASH2 0x3D3
#define SPRN_HID0 0x3F0
#define HID0_EMCP (1<<31)
#define HID0_EBA (1<<29)
#define HID0_EBD (1<<28)
#define HID0_SBCLK (1<<27)
#define HID0_EICE (1<<26)
#define HID0_ECLK (1<<25)
#define HID0_PAR (1<<24)
#define HID0_DOZE (1<<23)
#define HID0_NAP (1<<22)
#define HID0_SLEEP (1<<21)
#define HID0_DPM (1<<20)
#define HID0_ICE (1<<15)
#define HID0_DCE (1<<14)
#define HID0_ILOCK (1<<13)
#define HID0_DLOCK (1<<12)
#define HID0_ICFI (1<<11)
#define HID0_DCI (1<<10)
#define HID0_SPD (1<<9)
#define HID0_SGE (1<<7)
#define HID0_SIED (1<<7)
#define HID0_DFCA (1<<6)
#define HID0_BTIC (1<<5)
#define HID0_ABE (1<<3)
#define HID0_BHTE (1<<2)
#define HID0_BTCD (1<<1)
#define SPRN_HID1 0x3F1
#define SPRN_IABR 0x3F2
#define SPRN_IAC1 0x3F4
#define SPRN_IAC2 0x3F5
#define SPRN_IBAT0L 0x211
#define SPRN_IBAT0U 0x210
#define SPRN_IBAT1L 0x213
#define SPRN_IBAT1U 0x212
#define SPRN_IBAT2L 0x215
#define SPRN_IBAT2U 0x214
#define SPRN_IBAT3L 0x217
#define SPRN_IBAT3U 0x216
#define SPRN_ICCR 0x3FB
#define ICCR_NOCACHE 0
#define ICCR_CACHE 1
#define SPRN_ICDBDR 0x3D3
#define SPRN_ICMP 0x3D5
#define SPRN_ICTC 0x3FB
#define SPRN_IMISS 0x3D4
#define SPRN_IMMR 0x27E
#define SPRN_L2CR 0x3F9
#define L2CR_L2E 0x80000000
#define L2CR_L2PE 0x40000000
#define L2CR_L2SIZ_MASK 0x30000000
#define L2CR_L2SIZ_256KB 0x10000000
#define L2CR_L2SIZ_512KB 0x20000000
#define L2CR_L2SIZ_1MB 0x30000000
#define L2CR_L2CLK_MASK 0x0e000000
#define L2CR_L2CLK_DISABLED 0x00000000
#define L2CR_L2CLK_DIV1 0x02000000
#define L2CR_L2CLK_DIV1_5 0x04000000
#define L2CR_L2CLK_DIV2 0x08000000
#define L2CR_L2CLK_DIV2_5 0x0a000000
#define L2CR_L2CLK_DIV3 0x0c000000
#define L2CR_L2RAM_MASK 0x01800000
#define L2CR_L2RAM_FLOW 0x00000000
#define L2CR_L2RAM_PIPE 0x01000000
#define L2CR_L2RAM_PIPE_LW 0x01800000
#define L2CR_L2DO 0x00400000
#define L2CR_L2I 0x00200000
#define L2CR_L2CTL 0x00100000
#define L2CR_L2WT 0x00080000
#define L2CR_L2TS 0x00040000
#define L2CR_L2OH_MASK 0x00030000
#define L2CR_L2OH_0_5 0x00000000
#define L2CR_L2OH_1_0 0x00010000
#define L2CR_L2SL 0x00008000
#define L2CR_L2DF 0x00004000
#define L2CR_L2BYP 0x00002000
#define L2CR_L2IP 0x00000001
#define SPRN_LR 0x008
#define SPRN_MMCR0 0x3B8
#define SPRN_MMCR1 0x3BC
#define SPRN_PBL1 0x3FC
#define SPRN_PBL2 0x3FE
#define SPRN_PBU1 0x3FD
#define SPRN_PBU2 0x3FF
#define SPRN_PID 0x3B1
#define SPRN_PIR 0x3FF
#define SPRN_PIT 0x3DB
#define SPRN_PMC1 0x3B9
#define SPRN_PMC2 0x3BA
#define SPRN_PMC3 0x3BD
#define SPRN_PMC4 0x3BE
#define SPRN_PVR 0x11F
#define SPRN_RPA 0x3D6
#define SPRN_SDA 0x3BF
#define SPRN_SDR1 0x019
#define SPRN_SGR 0x3B9
#define SGR_NORMAL 0
#define SGR_GUARDED 1
#define SPRN_SIA 0x3BB
#define SPRN_SPRG0 0x110
#define SPRN_SPRG1 0x111
#define SPRN_SPRG2 0x112
#define SPRN_SPRG3 0x113
#define SPRN_SPRG4 0x114
#define SPRN_SPRG5 0x115
#define SPRN_SPRG6 0x116
#define SPRN_SPRG7 0x117
#define SPRN_SRR0 0x01A
#define SPRN_SRR1 0x01B
#define SPRN_SRR2 0x3DE
#define SPRN_SRR3 0x3DF
#define SPRN_TBRL 0x10C
#define SPRN_TBRU 0x10D
#define SPRN_TBWL 0x11C
#define SPRN_TBWU 0x11D
#define SPRN_TCR 0x3DA
#define TCR_WP(x) (((x)&0x3)<<30)
#define WP_2_17 0
#define WP_2_21 1
#define WP_2_25 2
#define WP_2_29 3
#define TCR_WRC(x) (((x)&0x3)<<28)
#define WRC_NONE 0
#define WRC_CORE 1
#define WRC_CHIP 2
#define WRC_SYSTEM 3
#define TCR_WIE 0x08000000
#define TCR_PIE 0x04000000
#define TCR_FP(x) (((x)&0x3)<<24)
#define FP_2_9 0
#define FP_2_13 1
#define FP_2_17 2
#define FP_2_21 3
#define TCR_FIE 0x00800000
#define TCR_ARE 0x00400000
#define SPRN_THRM1 0x3FC
#define THRM1_TIN (1 << 31)
#define THRM1_TIV (1 << 30)
#define THRM1_THRES(x) ((x&0x7f)<<23)
#define THRM3_SITV(x) ((x&0x3fff)<<1)
#define THRM1_TID (1<<2)
#define THRM1_TIE (1<<1)
#define THRM1_V (1<<0)
#define SPRN_THRM2 0x3FD
#define SPRN_THRM3 0x3FE
#define THRM3_E (1<<0)
#define SPRN_TSR 0x3D8
#define TSR_ENW 0x80000000
#define TSR_WIS 0x40000000
#define TSR_WRS(x) (((x)&0x3)<<28)
#define WRS_NONE 0
#define WRS_CORE 1
#define WRS_CHIP 2
#define WRS_SYSTEM 3
#define TSR_PIS 0x08000000
#define TSR_FIS 0x04000000
#define SPRN_UMMCR0 0x3A8
#define SPRN_UMMCR1 0x3AC
#define SPRN_UPMC1 0x3A9
#define SPRN_UPMC2 0x3AA
#define SPRN_UPMC3 0x3AD
#define SPRN_UPMC4 0x3AE
#define SPRN_USIA 0x3AB
#define SPRN_VRSAVE 0x100
#define SPRN_XER 0x001
#define SPRN_ZPR 0x3B0
#define CTR SPRN_CTR
#define DAR SPRN_DAR
#define DABR SPRN_DABR
#define DBAT0L SPRN_DBAT0L
#define DBAT0U SPRN_DBAT0U
#define DBAT1L SPRN_DBAT1L
#define DBAT1U SPRN_DBAT1U
#define DBAT2L SPRN_DBAT2L
#define DBAT2U SPRN_DBAT2U
#define DBAT3L SPRN_DBAT3L
#define DBAT3U SPRN_DBAT3U
#define DCMP SPRN_DCMP
#define DEC SPRN_DEC
#define DMISS SPRN_DMISS
#define DSISR SPRN_DSISR
#define EAR SPRN_EAR
#define HASH1 SPRN_HASH1
#define HASH2 SPRN_HASH2
#define HID0 SPRN_HID0
#define HID1 SPRN_HID1
#define IABR SPRN_IABR
#define IBAT0L SPRN_IBAT0L
#define IBAT0U SPRN_IBAT0U
#define IBAT1L SPRN_IBAT1L
#define IBAT1U SPRN_IBAT1U
#define IBAT2L SPRN_IBAT2L
#define IBAT2U SPRN_IBAT2U
#define IBAT3L SPRN_IBAT3L
#define IBAT3U SPRN_IBAT3U
#define ICMP SPRN_ICMP
#define IMISS SPRN_IMISS
#define IMMR SPRN_IMMR
#define L2CR SPRN_L2CR
#define LR SPRN_LR
#define PVR SPRN_PVR
#define RPA SPRN_RPA
#define SDR1 SPRN_SDR1
#define SPR0 SPRN_SPRG0
#define SPR1 SPRN_SPRG1
#define SPR2 SPRN_SPRG2
#define SPR3 SPRN_SPRG3
#define SPR4 SPRN_SPRG4
#define SPR5 SPRN_SPRG5
#define SPR6 SPRN_SPRG6
#define SPR7 SPRN_SPRG7
#define SPRG0 SPRN_SPRG0
#define SPRG1 SPRN_SPRG1
#define SPRG2 SPRN_SPRG2
#define SPRG3 SPRN_SPRG3
#define SPRG4 SPRN_SPRG4
#define SPRG5 SPRN_SPRG5
#define SPRG6 SPRN_SPRG6
#define SPRG7 SPRN_SPRG7
#define SRR0 SPRN_SRR0
#define SRR1 SPRN_SRR1
#define TBRL SPRN_TBRL
#define TBRU SPRN_TBRU
#define TBWL SPRN_TBWL
#define TBWU SPRN_TBWU
#define ICTC 1019
#define THRM1 SPRN_THRM1
#define THRM2 SPRN_THRM2
#define THRM3 SPRN_THRM3
#define XER SPRN_XER
#define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF)
#define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF)
#define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF)
#define PVR_MEM(pvr) (((pvr) >> 16) & 0xF)
#define PVR_CORE(pvr) (((pvr) >> 12) & 0xF)
#define PVR_CFG(pvr) (((pvr) >> 8) & 0xF)
#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF)
#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF)
#define PVR_403GA 0x00200000
#define PVR_403GB 0x00200100
#define PVR_403GC 0x00200200
#define PVR_403GCX 0x00201400
#define PVR_405GP 0x40110000
#define PVR_STB03XXX 0x40310000
#define PVR_601 0x00010000
#define PVR_602 0x00050000
#define PVR_603 0x00030000
#define PVR_603e 0x00060000
#define PVR_603ev 0x00070000
#define PVR_603r 0x00071000
#define PVR_604 0x00040000
#define PVR_604e 0x00090000
#define PVR_604r 0x000A0000
#define PVR_620 0x00140000
#define PVR_740 0x00080000
#define PVR_750 PVR_740
#define PVR_740P 0x10080000
#define PVR_750P PVR_740P
#define PVR_7400 0x000C0000
#define PVR_7410 0x800C0000
#define PVR_821 0x00500000
#define PVR_823 PVR_821
#define PVR_850 PVR_821
#define PVR_860 PVR_821
#define PVR_8240 0x00810100
#define PVR_8260 PVR_8240
#define _MACH_prep 0x00000001
#define _MACH_Pmac 0x00000002
#define _MACH_chrp 0x00000004
#define _MACH_mbx 0x00000008
#define _MACH_apus 0x00000010
#define _MACH_fads 0x00000020
#define _MACH_rpxlite 0x00000040
#define _MACH_bseip 0x00000080
#define _MACH_unused0 0x00000100
#define _MACH_gemini 0x00000200
#define _MACH_classic 0x00000400
#define _MACH_oak 0x00000800
#define _MACH_walnut 0x00001000
#define _MACH_8260 0x00002000
#define _MACH_tqm860 0x00004000
#define _MACH_tqm8xxL 0x00008000
#define _MACH_spd8xx 0x00010000
#define _MACH_ivms8 0x00020000
#define _PREP_Motorola 0x01
#define _PREP_Firm 0x02
#define _PREP_IBM 0x00
#define _PREP_Bull 0x03
#define _CHRP_Motorola 0x04
#define _CHRP_IBM 0x05
#define _GLOBAL(n) .globl n;n:
#define stringify(s) tostring(s)
#define tostring(s) #s
#define mfdcr(rn) ({unsigned int rval; asm volatile("mfdcr %0," stringify(rn) : "=r" (rval)); rval;})
#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" : : "r" (v))
#define mfmsr() ({unsigned int rval; asm volatile("mfmsr %0" : "=r" (rval)); rval;})
#define mtmsr(v) asm volatile("mtmsr %0" : : "r" (v))
#define mfspr(rn) ({unsigned int rval; asm volatile("mfspr %0," stringify(rn) : "=r" (rval)); rval;})
#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" : : "r" (v))
#define SR0 0
#define SR1 1
#define SR2 2
#define SR3 3
#define SR4 4
#define SR5 5
#define SR6 6
#define SR7 7
#define SR8 8
#define SR9 9
#define SR10 10
#define SR11 11
#define SR12 12
#define SR13 13
#define SR14 14
#define SR15 15
extern int _prep_type;
extern unsigned char ucSystemType;
extern unsigned char ucBoardRev;
extern unsigned char ucBoardRevMaj, ucBoardRevMin;
struct task_struct;
void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
void release_thread(struct task_struct *);
extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
#define EISA_bus 0
#define EISA_bus__is_a_macro
#define MCA_bus 0
#define MCA_bus__is_a_macro
extern struct task_struct *last_task_used_math;
extern struct task_struct *last_task_used_altivec;
#define TASK_SIZE (0x80000000UL)
#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
typedef struct {
unsigned long seg;
} mm_segment_t;
struct thread_struct {
unsigned long ksp;
unsigned long wchan;
struct pt_regs *regs;
mm_segment_t fs;
void *pgdir;
signed long last_syscall;
double fpr[32];
unsigned long fpscr_pad;
unsigned long fpscr;
};
#define INIT_SP (sizeof(init_stack) + (unsigned long) &init_stack)
#define INIT_THREAD { INIT_SP, 0, (struct pt_regs *)INIT_SP - 1, KERNEL_DS, swapper_pg_dir, 0, {0}, 0, 0 }
# 640 "/home/root/kernel/kernel/include/asm/processor.h"
#define INIT_MMAP { &init_mm, 0, 0x1000, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, NULL, NULL }
static inline unsigned long thread_saved_pc(struct thread_struct *t)
{
return (t->regs) ? t->regs->nip : 0;
}
#define copy_segments(tsk, mm) do { } while (0)
#define release_segments(mm) do { } while (0)
unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) ((tsk)->thread.regs->nip)
#define KSTK_ESP(tsk) ((tsk)->thread.regs->gpr[1])
#define THREAD_SIZE (2*PAGE_SIZE)
#define alloc_task_struct() ((struct task_struct *) __get_free_pages(GFP_KERNEL,1))
#define free_task_struct(p) free_pages((unsigned long)(p),1)
#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count)
int ll_printk(const char *, ...);
void ll_puts(const char *);
#define init_task (init_task_union.task)
#define init_stack (init_task_union.stack)
void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
# 695 "/home/root/kernel/kernel/include/asm/processor.h"
#define _machine _MACH_8xx
#define have_of 0
# 13 "/home/root/kernel/kernel/include/asm/system.h" 2
# 1 "/home/root/kernel/kernel/include/asm/hw_irq.h" 1
#define _PPC_HW_IRQ_H
extern unsigned long timer_interrupt_intercept;
extern unsigned long do_IRQ_intercept;
int timer_interrupt(struct pt_regs *);
extern void __sti(void);
extern void __cli(void);
extern void __restore_flags(unsigned long);
extern void __save_flags_ptr(unsigned long *);
extern unsigned long __sti_end, __cli_end, __restore_flags_end, __save_flags_ptr_end;
#define __save_flags(flags) __save_flags_ptr((unsigned long *)&flags)
#define __save_and_cli(flags) ({__save_flags(flags);__cli();})
extern void do_lost_interrupts(unsigned long);
#define mask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->disable) irq_desc[irq].handler->disable(irq);})
#define unmask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->enable) irq_desc[irq].handler->enable(irq);})
#define ack_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->ack) irq_desc[irq].handler->ack(irq);})
struct hw_interrupt_type;
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
# 15 "/home/root/kernel/kernel/include/asm/system.h" 2
#define mb() __asm__ __volatile__ ("sync" : : : "memory")
#define rmb() __asm__ __volatile__ ("sync" : : : "memory")
#define wmb() __asm__ __volatile__ ("eieio" : : : "memory")
#define set_mb(var, value) do { var = value; mb(); } while (0)
#define set_wmb(var, value) do { var = value; wmb(); } while (0)
void hack_puts (const char *);
#define smp_mb() __asm__ __volatile__("": : :"memory")
#define smp_rmb() __asm__ __volatile__("": : :"memory")
#define smp_wmb() __asm__ __volatile__("": : :"memory")
extern void xmon_irq(int, void *, struct pt_regs *);
extern void xmon(struct pt_regs *excp);
extern void print_backtrace(unsigned long *);
extern void show_regs(struct pt_regs * regs);
extern void flush_instruction_cache(void);
extern void hard_reset_now(void);
extern void poweroff_now(void);
extern int _get_PVR(void);
extern long _get_L2CR(void);
extern void _set_L2CR(unsigned long);
extern void via_cuda_init(void);
extern void pmac_nvram_init(void);
extern void read_rtc_time(void);
extern void pmac_find_display(void);
extern void giveup_fpu(struct task_struct *);
extern void enable_kernel_fp(void);
extern void giveup_altivec(struct task_struct *);
extern void load_up_altivec(struct task_struct *);
extern void cvt_fd(float *from, double *to, unsigned long *fpscr);
extern void cvt_df(double *from, float *to, unsigned long *fpscr);
extern int call_rtas(const char *, int, int, unsigned long *, ...);
extern int abs(int);
extern void cacheable_memzero(void *p, unsigned int nb);
struct device_node;
extern void note_scsi_host(struct device_node *, void *);
struct task_struct;
#define prepare_to_switch() do { } while(0)
#define switch_to(prev,next,last) _switch_to((prev),(next),&(last))
extern void _switch_to(struct task_struct *, struct task_struct *,
struct task_struct **);
struct thread_struct;
extern struct task_struct *_switch(struct thread_struct *prev,
struct thread_struct *next);
extern unsigned int rtas_data;
struct pt_regs;
extern void dump_regs(struct pt_regs *);
extern void __global_cli(void);
extern void __global_sti(void);
extern unsigned long __global_save_flags(void);
extern void __global_restore_flags(unsigned long);
#define cli() __global_cli()
#define sti() __global_sti()
#define save_flags(x) ((x)=__global_save_flags())
#define restore_flags(x) __global_restore_flags(x)
#define local_irq_disable() __cli()
#define local_irq_enable() __sti()
#define local_irq_save(flags) __save_and_cli(flags)
#define local_irq_restore(flags) __restore_flags(flags)
static inline int is_local_irq_enabled (void)
{
unsigned long flags;
__save_flags_ptr((unsigned long *)& flags ) ;
return (flags & (1<<15) );
}
#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
static __inline__ unsigned long
xchg_u32(volatile void *p, unsigned long val)
{
unsigned long prev;
__asm__ __volatile__ ("\n1: lwarx %0,0,%2 \n stwcx. %3,0,%2 \n bne- 1b"
: "=&r" (prev), "=m" (*(volatile unsigned long *)p)
: "r" (p), "r" (val), "m" (*(volatile unsigned long *)p)
: "cc", "memory");
return prev;
}
extern void __xchg_called_with_bad_pointer(void);
#define tas(ptr) (xchg((ptr),1))
static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
{
switch (size) {
case 4:
return (unsigned long )xchg_u32(ptr, x);
}
__xchg_called_with_bad_pointer();
return x;
}
extern inline void * xchg_ptr(void * m, void * val)
{
return (void *) xchg_u32(m, (unsigned long) val);
}
#define __HAVE_ARCH_CMPXCHG 1
static __inline__ unsigned long
__cmpxchg_u32(volatile int *p, int old, int new)
{
int prev;
__asm__ __volatile__ ("\n1: lwarx %0,0,%2 \n cmpw 0,%0,%3 \n bne 2f \n stwcx. %4,0,%2 \n bne- 1b\n"
"2:"
: "=&r" (prev), "=m" (*p)
: "r" (p), "r" (old), "r" (new), "m" (*p)
: "cc", "memory");
return prev;
}
extern void __cmpxchg_called_with_bad_pointer(void);
static __inline__ unsigned long
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
{
switch (size) {
case 4:
return __cmpxchg_u32(ptr, old, new);
}
__cmpxchg_called_with_bad_pointer();
return old;
}
#define cmpxchg(ptr,o,n) ({ __typeof__(*(ptr)) _o_ = (o); __typeof__(*(ptr)) _n_ = (n); (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, (unsigned long)_n_, sizeof(*(ptr))); })
# 19 "/home/root/kernel/kernel/include/asm/page.h" 2
extern void bust_spinlocks (void);
#define BUG() do { bust_spinlocks (); printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); __asm__ __volatile__(".long 0x0"); } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
#define STRICT_MM_TYPECHECKS
typedef struct { unsigned long pte; } pte_t;
typedef struct { unsigned long pmd; } pmd_t;
typedef struct { unsigned long pgd; } pgd_t;
typedef struct { unsigned long pgprot; } pgprot_t;
#define pte_val(x) ((x).pte)
#define pmd_val(x) ((x).pmd)
#define pgd_val(x) ((x).pgd)
#define pgprot_val(x) ((x).pgprot)
#define __pte(x) ((pte_t) { (x) } )
#define __pmd(x) ((pmd_t) { (x) } )
#define __pgd(x) ((pgd_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )
# 78 "/home/root/kernel/kernel/include/asm/page.h"
#define _ALIGN(addr,size) (((addr)+size-1)&(~(size-1)))
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
extern void clear_page(void *page);
extern void copy_page(void *to, void *from);
#define clear_user_page(page, vaddr) clear_page(page)
#define copy_user_page(to, from, vaddr) copy_page(to, from)
static inline unsigned long ___pa(unsigned long v)
{
unsigned long p;
asm volatile ("1: addis %0, %1, %2;"
".section \".vtop_fixup\",\"aw\";"
".align 1;"
".long 1b;"
".previous;"
: "=r" (p)
: "b" (v), "K" (((- 0xc0000000 ) >> 16) & 0xffff));
return p;
}
static inline void* ___va(unsigned long p)
{
unsigned long v;
asm volatile ("1: addis %0, %1, %2;"
".section \".ptov_fixup\",\"aw\";"
".align 1;"
".long 1b;"
".previous;"
: "=r" (v)
: "b" (p), "K" (((0xc0000000 ) >> 16) & 0xffff));
return (void*) v;
}
#define __pa(x) ___pa ((unsigned long)(x))
#define __va(x) ___va ((unsigned long)(x))
#define MAP_PAGE_RESERVED (1<<15)
#define virt_to_page(kaddr) (mem_map + (((unsigned long)kaddr-PAGE_OFFSET) >> PAGE_SHIFT))
#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
extern unsigned long get_zero_page_fast(void);
extern __inline__ int get_order(unsigned long size)
{
int order;
size = (size-1) >> (12 -1);
order = -1;
do {
size >>= 1;
order++;
} while (size);
return order;
}
# 19 "/home/root/kernel/kernel/include/linux/wait.h" 2
# 1 "/home/root/kernel/kernel/include/asm/processor.h" 1
# 705 "/home/root/kernel/kernel/include/asm/processor.h"
# 20 "/home/root/kernel/kernel/include/linux/wait.h" 2
#define WAITQUEUE_DEBUG 0
struct __wait_queue {
unsigned int flags;
#define WQ_FLAG_EXCLUSIVE 0x01
struct task_struct * task;
struct list_head task_list;
};
typedef struct __wait_queue wait_queue_t;
# 52 "/home/root/kernel/kernel/include/linux/wait.h"
#define wq_lock_t spinlock_t
#define WAITQUEUE_RW_LOCK_UNLOCKED SPIN_LOCK_UNLOCKED
#define wq_read_lock spin_lock
#define wq_read_lock_irqsave spin_lock_irqsave
#define wq_read_unlock spin_unlock
#define wq_read_unlock_irqrestore spin_unlock_irqrestore
#define wq_write_lock_irq spin_lock_irq
#define wq_write_lock_irqsave spin_lock_irqsave
#define wq_write_unlock_irqrestore spin_unlock_irqrestore
#define wq_write_unlock_irq spin_unlock_irq
#define wq_write_unlock spin_unlock
struct __wait_queue_head {
mutex_t lock;
struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;
# 109 "/home/root/kernel/kernel/include/linux/wait.h"
#define WQ_BUG()
#define CHECK_MAGIC(x)
#define CHECK_MAGIC_WQHEAD(x)
#define WQ_CHECK_LIST_HEAD(list)
#define WQ_NOTE_WAKER(tsk)
#define __WAITQUEUE_DEBUG_INIT(name)
#define __WAITQUEUE_HEAD_DEBUG_INIT(name)
#define __WAITQUEUE_INITIALIZER(name, tsk) { task: tsk, task_list: { NULL, NULL }, __WAITQUEUE_DEBUG_INIT(name)}
#define DECLARE_WAITQUEUE(name, tsk) wait_queue_t name = __WAITQUEUE_INITIALIZER(name, tsk)
#define __WAIT_QUEUE_HEAD_INITIALIZER(name) { lock: WAITQUEUE_RW_LOCK_UNLOCKED, task_list: { &(name).task_list, &(name).task_list }, __WAITQUEUE_HEAD_DEBUG_INIT(name)}
#define DECLARE_WAIT_QUEUE_HEAD(name) wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name)
static inline void init_waitqueue_head(wait_queue_head_t *q)
{
q->lock = (mutex_t) { state: 0 , proto: 1 } ;
do { ( &q->task_list )->next = ( &q->task_list ); ( &q->task_list )->prev = ( &q->task_list ); } while (0) ;
}
static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p)
{
q->flags = 0;
q->task = p;
}
static inline int waitqueue_active(wait_queue_head_t *q)
{
return !list_empty(&q->task_list);
}
static inline void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *new)
{
list_add(&new->task_list, &head->task_list);
}
static inline void __add_wait_queue_tail(wait_queue_head_t *head,
wait_queue_t *new)
{
list_add_tail(&new->task_list, &head->task_list);
}
static inline void __remove_wait_queue(wait_queue_head_t *head,
wait_queue_t *old)
{
list_del(&old->task_list);
}
# 12 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/vfs.h" 1
#define _LINUX_VFS_H
# 1 "/home/root/kernel/kernel/include/asm/statfs.h" 1
#define _PPC_STATFS_H
typedef __kernel_fsid_t fsid_t;
struct statfs {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_spare[6];
};
# 4 "/home/root/kernel/kernel/include/linux/vfs.h" 2
# 14 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/net.h" 1
#define _LINUX_NET_H
# 1 "/home/root/kernel/kernel/include/linux/socket.h" 1
#define _LINUX_SOCKET_H
# 1 "/home/root/kernel/kernel/include/asm/socket.h" 1
#define _ASM_SOCKET_H
#define FIOSETOWN 0x8901
#define SIOCSPGRP 0x8902
#define FIOGETOWN 0x8903
#define SIOCGPGRP 0x8904
#define SIOCATMARK 0x8905
#define SIOCGSTAMP 0x8906
#define SOL_SOCKET 1
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
#define SO_ERROR 4
#define SO_DONTROUTE 5
#define SO_BROADCAST 6
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
#define SO_OOBINLINE 10
#define SO_NO_CHECK 11
#define SO_PRIORITY 12
#define SO_LINGER 13
#define SO_BSDCOMPAT 14
#define SO_RCVLOWAT 16
#define SO_SNDLOWAT 17
#define SO_RCVTIMEO 18
#define SO_SNDTIMEO 19
#define SO_PASSCRED 20
#define SO_PEERCRED 21
#define SO_SECURITY_AUTHENTICATION 22
#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
#define SO_SECURITY_ENCRYPTION_NETWORK 24
#define SO_BINDTODEVICE 25
#define SO_ATTACH_FILTER 26
#define SO_DETACH_FILTER 27
#define SO_PEERNAME 28
#define SO_TIMESTAMP 29
#define SCM_TIMESTAMP SO_TIMESTAMP
#define SO_ACCEPTCONN 30
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
#define SOCK_PACKET 10
#define SOCK_MAX (SOCK_PACKET+1)
# 6 "/home/root/kernel/kernel/include/linux/socket.h" 2
# 1 "/home/root/kernel/kernel/include/linux/sockios.h" 1
#define _LINUX_SOCKIOS_H
# 1 "/home/root/kernel/kernel/include/asm/sockios.h" 1
#define _ASM_PPC_SOCKIOS_H
# 18 "/home/root/kernel/kernel/include/asm/sockios.h"
# 21 "/home/root/kernel/kernel/include/linux/sockios.h" 2
#define SIOCINQ FIONREAD
#define SIOCOUTQ TIOCOUTQ
#define SIOCADDRT 0x890B
#define SIOCDELRT 0x890C
#define SIOCRTMSG 0x890D
#define SIOCGIFNAME 0x8910
#define SIOCSIFLINK 0x8911
#define SIOCGIFCONF 0x8912
#define SIOCGIFFLAGS 0x8913
#define SIOCSIFFLAGS 0x8914
#define SIOCGIFADDR 0x8915
#define SIOCSIFADDR 0x8916
#define SIOCGIFDSTADDR 0x8917
#define SIOCSIFDSTADDR 0x8918
#define SIOCGIFBRDADDR 0x8919
#define SIOCSIFBRDADDR 0x891a
#define SIOCGIFNETMASK 0x891b
#define SIOCSIFNETMASK 0x891c
#define SIOCGIFMETRIC 0x891d
#define SIOCSIFMETRIC 0x891e
#define SIOCGIFMEM 0x891f
#define SIOCSIFMEM 0x8920
#define SIOCGIFMTU 0x8921
#define SIOCSIFMTU 0x8922
#define SIOCSIFNAME 0x8923
#define SIOCSIFHWADDR 0x8924
#define SIOCGIFENCAP 0x8925
#define SIOCSIFENCAP 0x8926
#define SIOCGIFHWADDR 0x8927
#define SIOCGIFSLAVE 0x8929
#define SIOCSIFSLAVE 0x8930
#define SIOCADDMULTI 0x8931
#define SIOCDELMULTI 0x8932
#define SIOCGIFINDEX 0x8933
#define SIOGIFINDEX SIOCGIFINDEX
#define SIOCSIFPFLAGS 0x8934
#define SIOCGIFPFLAGS 0x8935
#define SIOCDIFADDR 0x8936
#define SIOCSIFHWBROADCAST 0x8937
#define SIOCGIFCOUNT 0x8938
#define SIOCGIFBR 0x8940
#define SIOCSIFBR 0x8941
#define SIOCGIFTXQLEN 0x8942
#define SIOCSIFTXQLEN 0x8943
#define SIOCGIFDIVERT 0x8944
#define SIOCSIFDIVERT 0x8945
#define SIOCETHTOOL 0x8946
#define SIOCGMIIPHY 0x8947
#define SIOCGMIIREG 0x8948
#define SIOCSMIIREG 0x8949
#define SIOCDARP 0x8953
#define SIOCGARP 0x8954
#define SIOCSARP 0x8955
#define SIOCDRARP 0x8960
#define SIOCGRARP 0x8961
#define SIOCSRARP 0x8962
#define SIOCGIFMAP 0x8970
#define SIOCSIFMAP 0x8971
#define SIOCADDDLCI 0x8980
#define SIOCDELDLCI 0x8981
#define SIOCDEVPRIVATE 0x89F0
#define SIOCPROTOPRIVATE 0x89E0
# 7 "/home/root/kernel/kernel/include/linux/socket.h" 2
# 1 "/home/root/kernel/kernel/include/linux/uio.h" 1
#define __LINUX_UIO_H
struct iovec
{
void *iov_base;
__kernel_size_t iov_len;
};
#define UIO_FASTIOV 8
#define UIO_MAXIOV 1024
# 8 "/home/root/kernel/kernel/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;
};
#define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg))
#define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg))
#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
#define CMSG_DATA(cmsg) ((void *)((char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr))))
#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
#define __CMSG_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr) ? (struct cmsghdr *)(ctl) : (struct cmsghdr *)NULL)
#define CMSG_FIRSTHDR(msg) __CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen)
#define __KINLINE static inline
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);
}
#define SCM_RIGHTS 0x01
#define SCM_CREDENTIALS 0x02
#define SCM_CONNECT 0x03
struct ucred {
__u32 pid;
__u32 uid;
__u32 gid;
};
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_LOCAL 1
#define AF_INET 2
#define AF_AX25 3
#define AF_IPX 4
#define AF_APPLETALK 5
#define AF_NETROM 6
#define AF_BRIDGE 7
#define AF_ATMPVC 8
#define AF_X25 9
#define AF_INET6 10
#define AF_ROSE 11
#define AF_DECnet 12
#define AF_NETBEUI 13
#define AF_SECURITY 14
#define AF_KEY 15
#define AF_NETLINK 16
#define AF_ROUTE AF_NETLINK
#define AF_PACKET 17
#define AF_ASH 18
#define AF_ECONET 19
#define AF_ATMSVC 20
#define AF_SNA 22
#define AF_IRDA 23
#define AF_PPPOX 24
#define AF_WANPIPE 25
#define AF_BLUETOOTH 31
#define AF_MAX 32
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_LOCAL AF_LOCAL
#define PF_INET AF_INET
#define PF_AX25 AF_AX25
#define PF_IPX AF_IPX
#define PF_APPLETALK AF_APPLETALK
#define PF_NETROM AF_NETROM
#define PF_BRIDGE AF_BRIDGE
#define PF_ATMPVC AF_ATMPVC
#define PF_X25 AF_X25
#define PF_INET6 AF_INET6
#define PF_ROSE AF_ROSE
#define PF_DECnet AF_DECnet
#define PF_NETBEUI AF_NETBEUI
#define PF_SECURITY AF_SECURITY
#define PF_KEY AF_KEY
#define PF_NETLINK AF_NETLINK
#define PF_ROUTE AF_ROUTE
#define PF_PACKET AF_PACKET
#define PF_ASH AF_ASH
#define PF_ECONET AF_ECONET
#define PF_ATMSVC AF_ATMSVC
#define PF_SNA AF_SNA
#define PF_IRDA AF_IRDA
#define PF_PPPOX AF_PPPOX
#define PF_WANPIPE AF_WANPIPE
#define PF_BLUETOOTH AF_BLUETOOTH
#define PF_MAX AF_MAX
#define SOMAXCONN 128
#define MSG_OOB 1
#define MSG_PEEK 2
#define MSG_DONTROUTE 4
#define MSG_TRYHARD 4
#define MSG_CTRUNC 8
#define MSG_PROBE 0x10
#define MSG_TRUNC 0x20
#define MSG_DONTWAIT 0x40
#define MSG_EOR 0x80
#define MSG_WAITALL 0x100
#define MSG_FIN 0x200
#define MSG_SYN 0x400
#define MSG_CONFIRM 0x800
#define MSG_RST 0x1000
#define MSG_ERRQUEUE 0x2000
#define MSG_NOSIGNAL 0x4000
#define MSG_MORE 0x8000
#define MSG_EOF MSG_FIN
#define SOL_IP 0
#define SOL_TCP 6
#define SOL_UDP 17
#define SOL_IPV6 41
#define SOL_ICMPV6 58
#define SOL_RAW 255
#define SOL_IPX 256
#define SOL_AX25 257
#define SOL_ATALK 258
#define SOL_NETROM 259
#define SOL_ROSE 260
#define SOL_DECNET 261
#define SOL_X25 262
#define SOL_PACKET 263
#define SOL_ATM 264
#define SOL_AAL 265
#define SOL_IRDA 266
#define IPX_TYPE 1
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);
# 22 "/home/root/kernel/kernel/include/linux/net.h" 2
struct poll_table_struct;
#define NPROTO 32
#define SYS_SOCKET 1
#define SYS_BIND 2
#define SYS_CONNECT 3
#define SYS_LISTEN 4
#define SYS_ACCEPT 5
#define SYS_GETSOCKNAME 6
#define SYS_GETPEERNAME 7
#define SYS_SOCKETPAIR 8
#define SYS_SEND 9
#define SYS_RECV 10
#define SYS_SENDTO 11
#define SYS_RECVFROM 12
#define SYS_SHUTDOWN 13
#define SYS_SETSOCKOPT 14
#define SYS_GETSOCKOPT 15
#define SYS_SENDMSG 16
#define SYS_RECVMSG 17
typedef enum {
SS_FREE = 0,
SS_UNCONNECTED,
SS_CONNECTING,
SS_CONNECTED,
SS_DISCONNECTING
} socket_state;
#define __SO_ACCEPTCON (1<<16)
#define SOCK_ASYNC_NOSPACE 0
#define SOCK_ASYNC_WAITDATA 1
#define SOCK_NOSPACE 2
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;
};
#define SOCK_INODE(S) ((S)->inode)
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);
#define SOCKOPS_WRAPPED(name) __unlocked_##name
#define SOCKCALL_WRAP(name, call, parms, args) static int __lock_##name##_##call parms { int ret; lock_kernel(); ret = __unlocked_##name##_ops.call args ; unlock_kernel(); return ret; }
# 158 "/home/root/kernel/kernel/include/linux/net.h"
#define SOCKCALL_UWRAP(name, call, parms, args) static unsigned int __lock_##name##_##call parms { int ret; lock_kernel(); ret = __unlocked_##name##_ops.call args ; unlock_kernel(); return ret; }
# 168 "/home/root/kernel/kernel/include/linux/net.h"
#define SOCKOPS_WRAP(name, fam) SOCKCALL_WRAP(name, release, (struct socket *sock), (sock)) SOCKCALL_WRAP(name, bind, (struct socket *sock, struct sockaddr *uaddr, int addr_len), (sock, uaddr, addr_len)) SOCKCALL_WRAP(name, connect, (struct socket *sock, struct sockaddr * uaddr, int addr_len, int flags), (sock, uaddr, addr_len, flags)) SOCKCALL_WRAP(name, socketpair, (struct socket *sock1, struct socket *sock2), (sock1, sock2)) SOCKCALL_WRAP(name, accept, (struct socket *sock, struct socket *newsock, int flags), (sock, newsock, flags)) SOCKCALL_WRAP(name, getname, (struct socket *sock, struct sockaddr *uaddr, int *addr_len, int peer), (sock, uaddr, addr_len, peer)) SOCKCALL_UWRAP(name, poll, (struct file *file, struct socket *sock, struct poll_table_struct *wait), (file, sock, wait)) SOCKCALL_WRAP(name, ioctl, (struct socket *sock, unsigned int cmd, unsigned long arg), (sock, cmd, arg)) SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, char *optval, int optlen), (sock, level, optname, optval, optlen)) SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, char *optval, int *optlen), (sock, level, optname, optval, optlen)) SOCKCALL_WRAP(name, sendmsg, (struct socket *sock, struct msghdr *m, int len, struct scm_cookie *scm), (sock, m, len, scm)) SOCKCALL_WRAP(name, recvmsg, (struct socket *sock, struct msghdr *m, int len, int flags, struct scm_cookie *scm), (sock, m, len, flags, scm)) SOCKCALL_WRAP(name, mmap, (struct file *file, struct socket *sock, struct vm_area_struct *vma), (file, sock, vma)) static struct proto_ops name##_ops = { family: fam, release: __lock_##name##_release, bind: __lock_##name##_bind, connect: __lock_##name##_connect, socketpair: __lock_##name##_socketpair, accept: __lock_##name##_accept, getname: __lock_##name##_getname, poll: __lock_##name##_poll, ioctl: __lock_##name##_ioctl, listen: __lock_##name##_listen, shutdown: __lock_##name##_shutdown, setsockopt: __lock_##name##_setsockopt, getsockopt: __lock_##name##_getsockopt, sendmsg: __lock_##name##_sendmsg, recvmsg: __lock_##name##_recvmsg, mmap: __lock_##name##_mmap, };
# 219 "/home/root/kernel/kernel/include/linux/net.h"
# 15 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ioctl.h" 1
#define _LINUX_IOCTL_H
# 1 "/home/root/kernel/kernel/include/asm/ioctl.h" 1
#define _PPC_IOCTL_H
#define _IOC_NRBITS 8
#define _IOC_TYPEBITS 8
#define _IOC_SIZEBITS 13
#define _IOC_DIRBITS 3
#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1)
#define _IOC_NRSHIFT 0
#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS)
#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS)
#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS)
#define _IOC_NONE 1U
#define _IOC_READ 2U
#define _IOC_WRITE 4U
#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT))
#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
#define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
# 4 "/home/root/kernel/kernel/include/linux/ioctl.h" 2
# 17 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/dcache-defs.h" 1
#define __LINUX_DCACHE_DEFS_H
# 1 "/home/root/kernel/kernel/include/linux/mount.h" 1
#define _LINUX_MOUNT_H
struct vfsmount
{
struct list_head mnt_hash;
struct vfsmount *mnt_parent;
struct dentry *mnt_mountpoint;
struct dentry *mnt_root;
struct list_head mnt_instances;
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;
uid_t mnt_owner;
};
static inline struct vfsmount *mntget(struct vfsmount *mnt)
{
if (mnt)
((void) atomic_inc_return(( &mnt->mnt_count ))) ;
return mnt;
}
extern void __mntput(struct vfsmount *mnt);
static inline void mntput(struct vfsmount *mnt)
{
if (mnt) {
if ((atomic_dec_return(( &mnt->mnt_count )) == 0) )
__mntput(mnt);
}
}
# 7 "/home/root/kernel/kernel/include/linux/dcache-defs.h" 2
#define IS_ROOT(x) ((x) == (x)->d_parent)
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;
#define init_name_hash() 0
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);
}
#define DNAME_INLINE_LEN 16
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 *);
};
#define DCACHE_AUTOFS_PENDING 0x0001
#define DCACHE_NFSFS_RENAMED 0x0002
#define DCACHE_NFSD_DISCONNECTED 0x0004
#define DCACHE_REFERENCED 0x0008
# 19 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/stat.h" 1
#define _LINUX_STAT_H
# 1 "/home/root/kernel/kernel/include/asm/stat.h" 1
#define _PPC_STAT_H
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 {
dev_t st_dev;
ino_t st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
off_t st_size;
unsigned long st_blksize;
unsigned long st_blocks;
unsigned long st_atime;
unsigned long __unused1;
unsigned long st_mtime;
unsigned long __unused2;
unsigned long st_ctime;
unsigned long __unused3;
unsigned long __unused4;
unsigned long __unused5;
};
struct stat64 {
unsigned long long st_dev;
unsigned long long st_ino;
unsigned int st_mode;
unsigned int st_nlink;
unsigned int st_uid;
unsigned int st_gid;
unsigned long long st_rdev;
unsigned short int __pad2;
long long st_size;
long st_blksize;
long long st_blocks;
long st_atime;
unsigned long int __unused1;
long st_mtime;
unsigned long int __unused2;
long st_ctime;
unsigned long int __unused3;
unsigned long int __unused4;
unsigned long int __unused5;
};
# 6 "/home/root/kernel/kernel/include/linux/stat.h" 2
#define S_IFMT 00170000
#define S_IFSOCK 0140000
#define S_IFLNK 0120000
#define S_IFREG 0100000
#define S_IFBLK 0060000
#define S_IFDIR 0040000
#define S_IFCHR 0020000
#define S_IFIFO 0010000
#define S_ISUID 0004000
#define S_ISGID 0002000
#define S_ISVTX 0001000
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#define S_IRWXU 00700
#define S_IRUSR 00400
#define S_IWUSR 00200
#define S_IXUSR 00100
#define S_IRWXG 00070
#define S_IRGRP 00040
#define S_IWGRP 00020
#define S_IXGRP 00010
#define S_IRWXO 00007
#define S_IROTH 00004
#define S_IWOTH 00002
#define S_IXOTH 00001
#define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO)
#define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
#define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH)
#define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH)
#define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH)
# 20 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/cache.h" 1
#define __LINUX_CACHE_H
# 1 "/home/root/kernel/kernel/include/asm/cache.h" 1
#define __ARCH_PPC_CACHE_H
# 1 "/home/root/kernel/kernel/include/asm/processor.h" 1
# 705 "/home/root/kernel/kernel/include/asm/processor.h"
# 12 "/home/root/kernel/kernel/include/asm/cache.h" 2
#define L1_CACHE_BYTES 16
#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
#define L1_CACHE_PAGES 8
#define SMP_CACHE_BYTES L1_CACHE_BYTES
#define __cacheline_aligned __attribute__((__aligned__(L1_CACHE_BYTES), __section__(".data.cacheline_aligned")))
extern void flush_dcache_range(unsigned long start, unsigned long stop);
#define CACHECRBA 0x80000823
#define L2CACHE_MASK 0x03
#define L2CACHE_512KB 0x00
#define L2CACHE_256KB 0x01
#define L2CACHE_1MB 0x02
#define L2CACHE_NONE 0x03
#define L2CACHE_PARITY 0x08
#define IC_CST 560
#define IC_ADR 561
#define IC_DAT 562
#define DC_CST 568
#define DC_ADR 569
#define DC_DAT 570
#define IDC_ENABLE 0x02000000
#define IDC_DISABLE 0x04000000
#define IDC_LDLCK 0x06000000
#define IDC_UNLINE 0x08000000
#define IDC_UNALL 0x0a000000
#define IDC_INVALL 0x0c000000
#define DC_FLINE 0x0e000000
#define DC_SFWT 0x01000000
#define DC_CFWT 0x03000000
#define DC_SLES 0x05000000
#define DC_CLES 0x07000000
#define IDC_ENABLED 0x80000000
#define IDC_CERR1 0x00200000
#define IDC_CERR2 0x00100000
#define IDC_CERR3 0x00080000
#define DC_DFWT 0x40000000
#define DC_LES 0x20000000
# 4 "/home/root/kernel/kernel/include/linux/cache.h" 2
#define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
# 26 "/home/root/kernel/kernel/include/linux/cache.h"
# 21 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/asm/bitops.h" 1
#define _PPC_BITOPS_H
# 1 "/home/root/kernel/kernel/include/asm/byteorder.h" 1
#define _PPC_BYTEORDER_H
extern __inline__ unsigned ld_le16(const volatile unsigned short *addr)
{
unsigned val;
__asm__ __volatile__ ("lhbrx %0,0,%1" : "=r" (val) : "r" (addr), "m" (*addr));
return val;
}
extern __inline__ void st_le16(volatile unsigned short *addr, const unsigned val)
{
__asm__ __volatile__ ("sthbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr));
}
extern __inline__ unsigned ld_le32(const volatile unsigned *addr)
{
unsigned val;
__asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (val) : "r" (addr), "m" (*addr));
return val;
}
extern __inline__ void st_le32(volatile unsigned *addr, const unsigned val)
{
__asm__ __volatile__ ("stwbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr));
}
# 65 "/home/root/kernel/kernel/include/asm/byteorder.h"
#define __arch__swab16p(addr) ld_le16(addr)
#define __arch__swab32p(addr) ld_le32(addr)
#define __arch__swab16s(addr) st_le16(addr,*addr)
#define __arch__swab32s(addr) st_le32(addr,*addr)
#define __BYTEORDER_HAS_U64__
# 1 "/home/root/kernel/kernel/include/linux/byteorder/big_endian.h" 1
#define _LINUX_BYTEORDER_BIG_ENDIAN_H
#define __BIG_ENDIAN 4321
#define __BIG_ENDIAN_BITFIELD
# 1 "/home/root/kernel/kernel/include/linux/byteorder/swab.h" 1
#define _LINUX_BYTEORDER_SWAB_H
#define ___swab16(x) ({ __u16 __x = (x); ((__u16)( (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) )); })
#define ___swab32(x) ({ __u32 __x = (x); ((__u32)( (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); })
# 38 "/home/root/kernel/kernel/include/linux/byteorder/swab.h"
#define ___swab64(x) ({ __u64 __x = (x); ((__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) )); })
# 52 "/home/root/kernel/kernel/include/linux/byteorder/swab.h"
#define ___constant_swab16(x) ((__u16)( (((__u16)(x) & (__u16)0x00ffU) << 8) | (((__u16)(x) & (__u16)0xff00U) >> 8) ))
#define ___constant_swab32(x) ((__u32)( (((__u32)(x) & (__u32)0x000000ffUL) << 24) | (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
#define ___constant_swab64(x) ((__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) ))
# 73 "/home/root/kernel/kernel/include/linux/byteorder/swab.h"
#define __arch__swab16(x) ({ __u16 __tmp = (x) ; ___swab16(__tmp); })
#define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
#define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
#define __arch__swab64p(x) __arch__swab64(*(x))
#define __arch__swab64s(x) do { *(x) = __arch__swab64p((x)); } while (0)
#define __swab16(x) (__builtin_constant_p((__u16)(x)) ? ___swab16((x)) : __fswab16((x)))
#define __swab32(x) (__builtin_constant_p((__u32)(x)) ? ___swab32((x)) : __fswab32((x)))
#define __swab64(x) (__builtin_constant_p((__u64)(x)) ? ___swab64((x)) : __fswab64((x)))
extern __inline__ __const__ __u16 __fswab16(__u16 x)
{
return ({ __u16 __tmp = ( x ) ; ({ __u16 __x = ( __tmp ); ((__u16)( (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) )); }) ; }) ;
}
extern __inline__ __u16 __swab16p(__u16 *x)
{
return ld_le16( x ) ;
}
extern __inline__ void __swab16s(__u16 *addr)
{
st_le16( addr ,* addr ) ;
}
extern __inline__ __const__ __u32 __fswab32(__u32 x)
{
return ({ __u32 __tmp = ( x ) ; ({ __u32 __x = ( __tmp ); ((__u32)( (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); }) ; }) ;
}
extern __inline__ __u32 __swab32p(__u32 *x)
{
return ld_le32( x ) ;
}
extern __inline__ void __swab32s(__u32 *addr)
{
st_le32( addr ,* addr ) ;
}
extern __inline__ __const__ __u64 __fswab64(__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) )); }) ; }) ;
}
extern __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) )); }) ; }) ;
}
extern __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) ;
}
#define swab16 __swab16
#define swab32 __swab32
#define swab64 __swab64
#define swab16p __swab16p
#define swab32p __swab32p
#define swab64p __swab64p
#define swab16s __swab16s
#define swab32s __swab32s
#define swab64s __swab64s
# 11 "/home/root/kernel/kernel/include/linux/byteorder/big_endian.h" 2
#define __constant_htonl(x) ((__u32)(x))
#define __constant_ntohl(x) ((__u32)(x))
#define __constant_htons(x) ((__u16)(x))
#define __constant_ntohs(x) ((__u16)(x))
#define __constant_cpu_to_le64(x) ___constant_swab64((x))
#define __constant_le64_to_cpu(x) ___constant_swab64((x))
#define __constant_cpu_to_le32(x) ___constant_swab32((x))
#define __constant_le32_to_cpu(x) ___constant_swab32((x))
#define __constant_cpu_to_le16(x) ___constant_swab16((x))
#define __constant_le16_to_cpu(x) ___constant_swab16((x))
#define __constant_cpu_to_be64(x) ((__u64)(x))
#define __constant_be64_to_cpu(x) ((__u64)(x))
#define __constant_cpu_to_be32(x) ((__u32)(x))
#define __constant_be32_to_cpu(x) ((__u32)(x))
#define __constant_cpu_to_be16(x) ((__u16)(x))
#define __constant_be16_to_cpu(x) ((__u16)(x))
#define __cpu_to_le64(x) __swab64((x))
#define __le64_to_cpu(x) __swab64((x))
#define __cpu_to_le32(x) __swab32((x))
#define __le32_to_cpu(x) __swab32((x))
#define __cpu_to_le16(x) __swab16((x))
#define __le16_to_cpu(x) __swab16((x))
#define __cpu_to_be64(x) ((__u64)(x))
#define __be64_to_cpu(x) ((__u64)(x))
#define __cpu_to_be32(x) ((__u32)(x))
#define __be32_to_cpu(x) ((__u32)(x))
#define __cpu_to_be16(x) ((__u16)(x))
#define __be16_to_cpu(x) ((__u16)(x))
#define __cpu_to_le64p(x) __swab64p((x))
#define __le64_to_cpup(x) __swab64p((x))
#define __cpu_to_le32p(x) __swab32p((x))
#define __le32_to_cpup(x) __swab32p((x))
#define __cpu_to_le16p(x) __swab16p((x))
#define __le16_to_cpup(x) __swab16p((x))
#define __cpu_to_be64p(x) (*(__u64*)(x))
#define __be64_to_cpup(x) (*(__u64*)(x))
#define __cpu_to_be32p(x) (*(__u32*)(x))
#define __be32_to_cpup(x) (*(__u32*)(x))
#define __cpu_to_be16p(x) (*(__u16*)(x))
#define __be16_to_cpup(x) (*(__u16*)(x))
#define __cpu_to_le64s(x) __swab64s((x))
#define __le64_to_cpus(x) __swab64s((x))
#define __cpu_to_le32s(x) __swab32s((x))
#define __le32_to_cpus(x) __swab32s((x))
#define __cpu_to_le16s(x) __swab16s((x))
#define __le16_to_cpus(x) __swab16s((x))
#define __cpu_to_be64s(x) do {} while (0)
#define __be64_to_cpus(x) do {} while (0)
#define __cpu_to_be32s(x) do {} while (0)
#define __be32_to_cpus(x) do {} while (0)
#define __cpu_to_be16s(x) do {} while (0)
#define __be16_to_cpus(x) do {} while (0)
# 1 "/home/root/kernel/kernel/include/linux/byteorder/generic.h" 1
#define _LINUX_BYTEORDER_GENERIC_H
#define cpu_to_le64 __cpu_to_le64
#define le64_to_cpu __le64_to_cpu
#define cpu_to_le32 __cpu_to_le32
#define le32_to_cpu __le32_to_cpu
#define cpu_to_le16 __cpu_to_le16
#define le16_to_cpu __le16_to_cpu
#define cpu_to_be64 __cpu_to_be64
#define be64_to_cpu __be64_to_cpu
#define cpu_to_be32 __cpu_to_be32
#define be32_to_cpu __be32_to_cpu
#define cpu_to_be16 __cpu_to_be16
#define be16_to_cpu __be16_to_cpu
#define cpu_to_le64p __cpu_to_le64p
#define le64_to_cpup __le64_to_cpup
#define cpu_to_le32p __cpu_to_le32p
#define le32_to_cpup __le32_to_cpup
#define cpu_to_le16p __cpu_to_le16p
#define le16_to_cpup __le16_to_cpup
#define cpu_to_be64p __cpu_to_be64p
#define be64_to_cpup __be64_to_cpup
#define cpu_to_be32p __cpu_to_be32p
#define be32_to_cpup __be32_to_cpup
#define cpu_to_be16p __cpu_to_be16p
#define be16_to_cpup __be16_to_cpup
#define cpu_to_le64s __cpu_to_le64s
#define le64_to_cpus __le64_to_cpus
#define cpu_to_le32s __cpu_to_le32s
#define le32_to_cpus __le32_to_cpus
#define cpu_to_le16s __cpu_to_le16s
#define le16_to_cpus __le16_to_cpus
#define cpu_to_be64s __cpu_to_be64s
#define be64_to_cpus __be64_to_cpus
#define cpu_to_be32s __cpu_to_be32s
#define be32_to_cpus __be32_to_cpus
#define cpu_to_be16s __cpu_to_be16s
#define be16_to_cpus __be16_to_cpus
extern __u32 ntohl(__u32);
extern __u32 htonl(__u32);
extern unsigned short int ntohs(unsigned short int);
extern unsigned short int htons(unsigned short int);
#define ___htonl(x) __cpu_to_be32(x)
#define ___htons(x) __cpu_to_be16(x)
#define ___ntohl(x) __be32_to_cpu(x)
#define ___ntohs(x) __be16_to_cpu(x)
#define htonl(x) ___htonl(x)
#define ntohl(x) ___ntohl(x)
#define htons(x) ___htons(x)
#define ntohs(x) ___ntohs(x)
# 66 "/home/root/kernel/kernel/include/linux/byteorder/big_endian.h" 2
# 82 "/home/root/kernel/kernel/include/asm/byteorder.h" 2
# 13 "/home/root/kernel/kernel/include/asm/bitops.h" 2
#define SMP_WMB
#define SMP_MB
static __inline__ void set_bit(int nr, volatile void * addr)
{
unsigned long old;
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
__asm__ __volatile__("\n1: lwarx %0,0,%3 \n or %0,%0,%2 \n stwcx. %0,0,%3 \n bne- 1b"
: "=&r" (old), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc" );
}
static __inline__ void __set_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
*p |= mask;
}
#define smp_mb__before_clear_bit() smp_mb()
#define smp_mb__after_clear_bit() smp_mb()
static __inline__ void clear_bit(int nr, volatile void *addr)
{
unsigned long old;
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
__asm__ __volatile__("\n1: lwarx %0,0,%3 \n andc %0,%0,%2 \n stwcx. %0,0,%3 \n bne- 1b"
: "=&r" (old), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc");
}
static __inline__ void __clear_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
*p &= ~mask;
}
static __inline__ void change_bit(int nr, volatile void *addr)
{
unsigned long old;
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
__asm__ __volatile__("\n1: lwarx %0,0,%3 \n xor %0,%0,%2 \n stwcx. %0,0,%3 \n bne- 1b"
: "=&r" (old), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc");
}
static __inline__ void __change_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
*p ^= mask;
}
static __inline__ int test_and_set_bit(int nr, volatile void *addr)
{
unsigned int old, t;
unsigned int mask = 1 << (nr & 0x1f);
volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5);
__asm__ __volatile__( "\n1: lwarx %0,0,%4 \n or %1,%0,%3 \n stwcx. %1,0,%4 \n bne 1b"
: "=&r" (old), "=&r" (t), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc", "memory");
return (old & mask) != 0;
}
static __inline__ int __test_and_set_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
unsigned long old = *p;
*p = old | mask;
return (old & mask) != 0;
}
static __inline__ int test_and_clear_bit(int nr, volatile void *addr)
{
unsigned int old, t;
unsigned int mask = 1 << (nr & 0x1f);
volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5);
__asm__ __volatile__( "\n1: lwarx %0,0,%4 \n andc %1,%0,%3 \n stwcx. %1,0,%4 \n bne 1b"
: "=&r" (old), "=&r" (t), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc", "memory");
return (old & mask) != 0;
}
static __inline__ int __test_and_clear_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
unsigned long old = *p;
*p = old & ~mask;
return (old & mask) != 0;
}
static __inline__ int test_and_change_bit(int nr, volatile void *addr)
{
unsigned int old, t;
unsigned int mask = 1 << (nr & 0x1f);
volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5);
__asm__ __volatile__( "\n1: lwarx %0,0,%4 \n xor %1,%0,%3 \n stwcx. %1,0,%4 \n bne 1b"
: "=&r" (old), "=&r" (t), "=m" (*p)
: "r" (mask), "r" (p), "m" (*p)
: "cc", "memory");
return (old & mask) != 0;
}
static __inline__ int __test_and_change_bit(int nr, volatile void *addr)
{
unsigned long mask = 1 << (nr & 0x1f);
unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
unsigned long old = *p;
*p = old ^ mask;
return (old & mask) != 0;
}
static __inline__ int test_bit(int nr, __const__ volatile void *addr)
{
__const__ unsigned int *p = (__const__ unsigned int *) addr;
return ((p[nr >> 5] >> (nr & 0x1f)) & 1) != 0;
}
static __inline__ int __ilog2(unsigned int x)
{
int lz;
asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
return 31 - lz;
}
static __inline__ int ffz(unsigned int x)
{
if ((x = ~x) == 0)
return 32;
return __ilog2(x & -x);
}
static __inline__ int ffs(int x)
{
return __ilog2(x & -x) + 1;
}
#define hweight32(x) generic_hweight32(x)
#define hweight16(x) generic_hweight16(x)
#define hweight8(x) generic_hweight8(x)
#define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
static __inline__ unsigned long find_next_zero_bit(void * addr,
unsigned long size, unsigned long offset)
{
unsigned int * p = ((unsigned int *) addr) + (offset >> 5);
unsigned int result = offset & ~31UL;
unsigned int tmp;
if (offset >= size)
return size;
size -= result;
offset &= 31UL;
if (offset) {
tmp = *p++;
tmp |= ~0UL >> (32-offset);
if (size < 32)
goto found_first;
if (tmp != ~0U)
goto found_middle;
size -= 32;
result += 32;
}
while (size >= 32) {
if ((tmp = *p++) != ~0U)
goto found_middle;
result += 32;
size -= 32;
}
if (!size)
return result;
tmp = *p;
found_first:
tmp |= ~0UL << size;
if (tmp == ~0UL)
return result + size;
found_middle:
return result + ffz(tmp);
}
#define ext2_set_bit(nr, addr) __test_and_set_bit((nr) ^ 0x18, addr)
#define ext2_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 0x18, addr)
static __inline__ int ext2_test_bit(int nr, __const__ void * addr)
{
__const__ unsigned char *ADDR = (__const__ unsigned char *) addr;
return (ADDR[nr >> 3] >> (nr & 7)) & 1;
}
#define ext2_find_first_zero_bit(addr, size) ext2_find_next_zero_bit((addr), (size), 0)
static __inline__ unsigned long ext2_find_next_zero_bit(void *addr,
unsigned long size, unsigned long offset)
{
unsigned int *p = ((unsigned int *) addr) + (offset >> 5);
unsigned int result = offset & ~31UL;
unsigned int tmp;
if (offset >= size)
return size;
size -= result;
offset &= 31UL;
if (offset) {
tmp = __swab32p(( p++ )) ;
tmp |= ~0UL >> (32-offset);
if (size < 32)
goto found_first;
if (tmp != ~0U)
goto found_middle;
size -= 32;
result += 32;
}
while (size >= 32) {
if ((tmp = __swab32p(( p++ )) ) != ~0U)
goto found_middle;
result += 32;
size -= 32;
}
if (!size)
return result;
tmp = __swab32p(( p )) ;
found_first:
tmp |= ~0U << size;
if (tmp == ~0UL)
return result + size;
found_middle:
return result + ffz(tmp);
}
#define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr)
#define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr))
#define minix_test_and_clear_bit(nr,addr) ext2_clear_bit(nr,addr)
#define minix_test_bit(nr,addr) ext2_test_bit(nr,addr)
#define minix_find_first_zero_bit(addr,size) ext2_find_first_zero_bit(addr,size)
# 26 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
struct poll_table_struct;
#undef NR_OPEN
#define NR_OPEN (1024*1024)
#define INR_OPEN 1024
#define BLOCK_SIZE_BITS 10
#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
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 max_super_blocks, nr_super_blocks;
extern int leases_enable, dir_notify_enable, lease_break_time;
#define NR_FILE 8192
#define NR_RESERVED_FILES 10
#define NR_SUPER 256
#define MAY_EXEC 1
#define MAY_WRITE 2
#define MAY_READ 4
#define FMODE_READ 1
#define FMODE_WRITE 2
#define READ 0
#define WRITE 1
#define READA 2
#define SPECIAL 4
#define SEL_IN 1
#define SEL_OUT 2
#define SEL_EX 4
#define FS_REQUIRES_DEV 1
#define FS_NO_DCACHE 2
#define FS_NO_PRELIM 4
#define FS_SINGLE 8
#define FS_NOMOUNT 16
#define FS_LITTER 32
#define FS_ODD_RENAME 32768
#define MS_RDONLY 1
#define MS_NOSUID 2
#define MS_NODEV 4
#define MS_NOEXEC 8
#define MS_SYNCHRONOUS 16
#define MS_REMOUNT 32
#define MS_MANDLOCK 64
#define MS_NOATIME 1024
#define MS_NODIRATIME 2048
#define MS_BIND 4096
#define MS_RMT_MASK (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC| MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME|MS_NODIRATIME)
#define MS_MGC_VAL 0xC0ED0000
#define MS_MGC_MSK 0xffff0000
#define S_SYNC 1
#define S_NOATIME 2
#define S_QUOTA 4
#define S_APPEND 8
#define S_IMMUTABLE 16
#define S_DEAD 32
#define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
#define IS_NOSUID(inode) __IS_FLG(inode, MS_NOSUID)
#define IS_NODEV(inode) __IS_FLG(inode, MS_NODEV)
#define IS_NOEXEC(inode) __IS_FLG(inode, MS_NOEXEC)
#define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) || ((inode)->i_flags & S_SYNC))
#define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
#define IS_QUOTAINIT(inode) ((inode)->i_flags & S_QUOTA)
#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
#define IS_NOATIME(inode) (__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME))
#define IS_NODIRATIME(inode) __IS_FLG(inode, MS_NODIRATIME)
#define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
#define BLKROSET _IO(0x12,93)
#define BLKROGET _IO(0x12,94)
#define BLKRRPART _IO(0x12,95)
#define BLKGETSIZE _IO(0x12,96)
#define BLKFLSBUF _IO(0x12,97)
#define BLKRASET _IO(0x12,98)
#define BLKRAGET _IO(0x12,99)
#define BLKFRASET _IO(0x12,100)
#define BLKFRAGET _IO(0x12,101)
#define BLKSECTSET _IO(0x12,102)
#define BLKSECTGET _IO(0x12,103)
#define BLKSSZGET _IO(0x12,104)
#define BMAP_IOCTL 1
#define FIBMAP _IO(0x00,1)
#define FIGETBSZ _IO(0x00,2)
# 1 "/home/root/kernel/kernel/include/asm/semaphore.h" 1
#define _PPC_SEMAPHORE_H
# 1 "/home/root/kernel/kernel/include/linux/rwsem.h" 1
#define _LINUX_RWSEM_H
#define RWSEM_DEBUG 0
struct rw_semaphore;
# 1 "/home/root/kernel/kernel/include/asm/rwsem.h" 1
#define _PPC_RWSEM_H
struct rw_semaphore {
signed long count;
#define RWSEM_UNLOCKED_VALUE 0x00000000
#define RWSEM_ACTIVE_BIAS 0x00000001
#define RWSEM_ACTIVE_MASK 0x0000ffff
#define RWSEM_WAITING_BIAS (-0x00010000)
#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
mutex_t wait_lock;
struct list_head wait_list;
};
#define __RWSEM_DEBUG_INIT
#define __RWSEM_INITIALIZER(name) { RWSEM_UNLOCKED_VALUE, SPIN_LOCK_UNLOCKED, LIST_HEAD_INIT((name).wait_list) __RWSEM_DEBUG_INIT }
#define DECLARE_RWSEM(name) struct rw_semaphore name = __RWSEM_INITIALIZER(name)
extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem);
extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem);
extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem);
static inline void init_rwsem(struct rw_semaphore *sem)
{
sem->count = 0x00000000 ;
mutex_init (&sem->wait_lock);
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)
{
if (atomic_inc_return((atomic_t *)(&sem->count)) >= 0)
__asm__ __volatile__("": : :"memory") ;
else
rwsem_down_read_failed(sem);
}
static inline void __down_write(struct rw_semaphore *sem)
{
int tmp;
tmp = atomic_add_return(((-0x00010000) + 0x00000001 ) ,
(atomic_t *)(&sem->count));
if (tmp == ((-0x00010000) + 0x00000001 ) )
__asm__ __volatile__("": : :"memory") ;
else
rwsem_down_write_failed(sem);
}
static inline void __up_read(struct rw_semaphore *sem)
{
int tmp;
__asm__ __volatile__("": : :"memory") ;
tmp = atomic_dec_return((atomic_t *)(&sem->count));
if (tmp < -1 && (tmp & 0x0000ffff ) == 0)
rwsem_wake(sem);
}
static inline void __up_write(struct rw_semaphore *sem)
{
__asm__ __volatile__("": : :"memory") ;
if (atomic_sub_return(((-0x00010000) + 0x00000001 ) ,
(atomic_t *)(&sem->count)) < 0)
rwsem_wake(sem);
}
static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem)
{
((void) atomic_add_return(( delta ), ( (atomic_t *)(&sem->count) ))) ;
}
static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
{
__asm__ __volatile__("": : :"memory") ;
return atomic_add_return(delta, (atomic_t *)(&sem->count));
}
# 27 "/home/root/kernel/kernel/include/linux/rwsem.h" 2
#define rwsemtrace(SEM,FMT)
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);
;
}
# 27 "/home/root/kernel/kernel/include/asm/semaphore.h" 2
struct semaphore {
atomic_t count;
wait_queue_head_t wait;
};
#define __SEM_DEBUG_INIT(name)
#define __SEMAPHORE_INITIALIZER(name, count) { ATOMIC_INIT(count), __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) __SEM_DEBUG_INIT(name) }
#define __MUTEX_INITIALIZER(name) __SEMAPHORE_INITIALIZER(name, 1)
#define __DECLARE_SEMAPHORE_GENERIC(name, count) struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1)
#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0)
static inline void sema_init (struct semaphore *sem, int val)
{
((( &sem->count )->counter) = ( val )) ;
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);
}
extern void __down(struct semaphore * sem);
extern int __down_interruptible(struct semaphore * sem);
extern void __up(struct semaphore * sem);
extern inline void down(struct semaphore * sem)
{
if (atomic_dec_return(&sem->count) < 0)
__down(sem);
__asm__ __volatile__("": : :"memory") ;
}
extern inline int down_interruptible(struct semaphore * sem)
{
int ret = 0;
if (atomic_dec_return(&sem->count) < 0)
ret = __down_interruptible(sem);
__asm__ __volatile__("": : :"memory") ;
return ret;
}
extern inline int down_trylock(struct semaphore * sem)
{
int ret;
ret = atomic_dec_if_positive(&sem->count) < 0;
__asm__ __volatile__("": : :"memory") ;
return ret;
}
extern inline void up(struct semaphore * sem)
{
__asm__ __volatile__("": : :"memory") ;
if (atomic_inc_return(&sem->count) <= 0)
__up(sem);
}
# 199 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
extern void update_atime (struct inode *);
#define UPDATE_ATIME(inode) update_atime (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_Protected,
BH_PrivateStart,
};
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 *);
#define __buffer_state(bh, state) (((bh)->b_state & (1UL << BH_##state)) != 0)
#define buffer_uptodate(bh) __buffer_state(bh,Uptodate)
#define buffer_dirty(bh) __buffer_state(bh,Dirty)
#define buffer_locked(bh) __buffer_state(bh,Lock)
#define buffer_req(bh) __buffer_state(bh,Req)
#define buffer_mapped(bh) __buffer_state(bh,Mapped)
#define buffer_new(bh) __buffer_state(bh,New)
#define buffer_protected(bh) __buffer_state(bh,Protected)
#define bh_offset(bh) ((unsigned long)(bh)->b_data & ~PAGE_MASK)
extern void set_bh_page(struct buffer_head *bh, struct page *page, unsigned long offset);
#define touch_buffer(bh) SetPageReferenced(bh->b_page)
# 1 "/home/root/kernel/kernel/include/linux/pipe_fs_i.h" 1
#define _LINUX_PIPE_FS_I_H
#define PIPEFS_MAGIC 0x50495045
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;
};
#define PIPE_SIZE PAGE_SIZE
#define PIPE_SEM(inode) (&(inode).i_sem)
#define PIPE_WAIT(inode) (&(inode).i_pipe->wait)
#define PIPE_BASE(inode) ((inode).i_pipe->base)
#define PIPE_START(inode) ((inode).i_pipe->start)
#define PIPE_LEN(inode) ((inode).i_pipe->len)
#define PIPE_READERS(inode) ((inode).i_pipe->readers)
#define PIPE_WRITERS(inode) ((inode).i_pipe->writers)
#define PIPE_WAITING_READERS(inode) ((inode).i_pipe->waiting_readers)
#define PIPE_WAITING_WRITERS(inode) ((inode).i_pipe->waiting_writers)
#define PIPE_RCOUNTER(inode) ((inode).i_pipe->r_counter)
#define PIPE_WCOUNTER(inode) ((inode).i_pipe->w_counter)
#define PIPE_EMPTY(inode) (PIPE_LEN(inode) == 0)
#define PIPE_FULL(inode) (PIPE_LEN(inode) == PIPE_SIZE)
#define PIPE_FREE(inode) (PIPE_SIZE - PIPE_LEN(inode))
#define PIPE_END(inode) ((PIPE_START(inode) + PIPE_LEN(inode)) & (PIPE_SIZE-1))
#define PIPE_MAX_RCHUNK(inode) (PIPE_SIZE - PIPE_START(inode))
#define PIPE_MAX_WCHUNK(inode) (PIPE_SIZE - PIPE_END(inode))
void pipe_wait(struct inode * inode);
struct inode* pipe_new(struct inode* inode);
# 286 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/minix_fs_i.h" 1
#define _MINIX_FS_I
struct minix_inode_info {
union {
__u16 i1_data[16];
__u32 i2_data[16];
} u;
};
# 287 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ext2_fs_i.h" 1
#define _LINUX_EXT2_FS_I
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;
int i_new_inode:1;
};
# 288 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/hpfs_fs_i.h" 1
#define _HPFS_FS_I
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;
};
#define i_hpfs_dno u.hpfs_i.i_dno
#define i_hpfs_parent_dir u.hpfs_i.i_parent_dir
#define i_hpfs_n_secs u.hpfs_i.i_n_secs
#define i_hpfs_file_sec u.hpfs_i.i_file_sec
#define i_hpfs_disk_sec u.hpfs_i.i_disk_sec
#define i_hpfs_dpos u.hpfs_i.i_dpos
#define i_hpfs_dsubdno u.hpfs_i.i_dsubdno
#define i_hpfs_ea_size u.hpfs_i.i_ea_size
#define i_hpfs_conv u.hpfs_i.i_conv
#define i_hpfs_ea_mode u.hpfs_i.i_ea_mode
#define i_hpfs_ea_uid u.hpfs_i.i_ea_uid
#define i_hpfs_ea_gid u.hpfs_i.i_ea_gid
#define i_hpfs_sem u.hpfs_i.i_sem
#define i_hpfs_rddir_off u.hpfs_i.i_rddir_off
#define i_hpfs_dirty u.hpfs_i.i_dirty
# 289 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ntfs_fs_i.h" 1
#define _LINUX_NTFS_FS_I_H
struct ntfs_attribute;
struct ntfs_sb_info;
#define NTFS_INTEGRAL_TYPES
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;
#define NTMODE_T
typedef __kernel_mode_t ntmode_t;
#define NTFS_UID_T
typedef uid_t ntfs_uid_t;
#define NTFS_GID_T
typedef gid_t ntfs_gid_t;
#define NTFS_SIZE_T
typedef __kernel_size_t ntfs_size_t;
#define NTFS_TIME_T
typedef __kernel_time_t ntfs_time_t;
#define NTFS_WCHAR_T
typedef u16 ntfs_wchar_t;
#define NTFS_OFFSET_T
typedef s64 ntfs_offset_t;
#define NTFS_TIME64_T
typedef u64 ntfs_time64_t;
#define NTFS_CLUSTER_T
typedef s32 ntfs_cluster_t;
struct ntfs_inode_info{
unsigned long mmu_private;
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;
};
# 290 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/msdos_fs_i.h" 1
#define _MSDOS_FS_I
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;
};
# 291 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/umsdos_fs_i.h" 1
#define 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;
};
# 292 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/iso_fs_i.h" 1
#define _ISO_FS_I
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;
};
# 293 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/nfs_fs_i.h" 1
#define _NFS_FS_I
# 1 "/home/root/kernel/kernel/include/linux/nfs.h" 1
#define _LINUX_NFS_H
# 1 "/home/root/kernel/kernel/include/linux/sunrpc/msg_prot.h" 1
#define _LINUX_SUNRPC_MSGPROT_H_
#define RPC_VERSION 2
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
};
#define RPC_PMAP_PROGRAM 100000
#define RPC_PMAP_VERSION 2
#define RPC_PMAP_PORT 111
#define RPC_MAXNETNAMELEN 256
# 10 "/home/root/kernel/kernel/include/linux/nfs.h" 2
#define NFS_PROGRAM 100003
#define NFS_PORT 2049
#define NFS_MAXDATA 8192
#define NFS_MAXPATHLEN 1024
#define NFS_MAXNAMLEN 255
#define NFS_MAXGROUPS 16
#define NFS_FHSIZE 32
#define NFS_COOKIESIZE 4
#define NFS_FIFO_DEV (-1)
#define NFSMODE_FMT 0170000
#define NFSMODE_DIR 0040000
#define NFSMODE_CHR 0020000
#define NFSMODE_BLK 0060000
#define NFSMODE_REG 0100000
#define NFSMODE_LNK 0120000
#define NFSMODE_SOCK 0140000
#define NFSMODE_FIFO 0010000
#define NFS_MNT_PROGRAM 100005
#define NFS_MNT_PORT 627
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
};
#define NFS_MAXFHSIZE 64
struct nfs_fh {
unsigned short size;
unsigned char data[64 ];
};
#define NFS_OFFSET_MAX ((__s64)((~(__u64)0) >> 1))
enum nfs3_stable_how {
NFS_UNSTABLE = 0,
NFS_DATA_SYNC = 1,
NFS_FILE_SYNC = 2
};
# 6 "/home/root/kernel/kernel/include/linux/nfs_fs_i.h" 2
struct nfs_inode_info {
__u64 fsid;
__u64 fileid;
struct nfs_fh fh;
unsigned short flags;
unsigned long read_cache_jiffies;
__u64 read_cache_ctime;
__u64 read_cache_mtime;
__u64 read_cache_atime;
__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;
};
#define NFS_INO_STALE 0x0001
#define NFS_INO_ADVISE_RDPLUS 0x0002
#define NFS_INO_REVALIDATING 0x0004
#define NFS_IS_SNAPSHOT 0x0010
#define NFS_INO_FLUSH 0x0020
struct nfs_lock_info {
u32 state;
u32 flags;
struct nlm_host *host;
};
#define NFS_LCK_GRANTED 0x0001
# 294 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/sysv_fs_i.h" 1
#define _SYSV_FS_I
struct sysv_inode_info {
u32 i_data[10+1+1+1];
};
# 295 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/affs_fs_i.h" 1
#define _AFFS_FS_I
# 1 "/home/root/kernel/kernel/include/linux/a.out.h" 1
#define __A_OUT_GNU_H__
#define __GNU_EXEC_MACROS__
# 1 "/home/root/kernel/kernel/include/asm/a.out.h" 1
#define __PPC_A_OUT_H__
#define STACK_TOP TASK_SIZE
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;
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
# 8 "/home/root/kernel/kernel/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
};
#define N_MAGIC(exec) ((exec).a_info & 0xffff)
#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
#define N_SET_INFO(exec, magic, type, flags) ((exec).a_info = ((magic) & 0xffff) | (((int)(type) & 0xff) << 16) | (((flags) & 0xff) << 24))
#define N_SET_MAGIC(exec, magic) ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
#define N_SET_MACHTYPE(exec, machtype) ((exec).a_info = ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
#define N_SET_FLAGS(exec, flags) ((exec).a_info = ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
#define OMAGIC 0407
#define NMAGIC 0410
#define ZMAGIC 0413
#define QMAGIC 0314
#define CMAGIC 0421
#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
#define _N_HDROFF(x) (1024 - sizeof (struct exec))
#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
#define SEGMENT_SIZE PAGE_SIZE
#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
#define N_DATADDR(x) (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
\f
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;
};
#define N_UNDF 0
#define N_ABS 2
#define N_TEXT 4
#define N_DATA 6
#define N_BSS 8
#define N_FN 15
#define N_EXT 1
#define N_TYPE 036
#define N_STAB 0340
#define N_INDR 0xa
#define N_SETA 0x14
#define N_SETT 0x16
#define N_SETD 0x18
#define N_SETB 0x1A
#define N_SETV 0x1C
\f
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;
};
# 4 "/home/root/kernel/kernel/include/linux/affs_fs_i.h" 2
# 1 "/home/root/kernel/kernel/include/linux/time.h" 1
#define _LINUX_TIME_H
#define _STRUCT_TIMESPEC
struct timespec {
time_t tv_sec;
long tv_nsec;
};
#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
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 ;
}
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;
}
void set_rtc(void);
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
#define NFDBITS __NFDBITS
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 *);
#define FD_SETSIZE __FD_SETSIZE
#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
#define ITIMER_REAL 0
#define ITIMER_VIRTUAL 1
#define ITIMER_PROF 2
#define _STRUCT_ITIMERSPEC
struct itimerspec {
struct timespec it_interval;
struct timespec it_value;
};
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
# 7 "/home/root/kernel/kernel/include/linux/affs_fs_i.h" 2
#define AFFS_CACHE_SIZE PAGE_SIZE
#define AFFS_MAX_PREALLOC 32
#define AFFS_LC_SIZE (AFFS_CACHE_SIZE/sizeof(u32)/2)
#define AFFS_AC_SIZE (AFFS_CACHE_SIZE/sizeof(struct affs_ext_key)/2)
#define AFFS_AC_MASK (AFFS_AC_SIZE-1)
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;
#define i_hash_lock 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;
};
#define AFFS_INODE (&inode->u.affs_i)
#define AFFS_DIR (&dir->u.affs_i)
# 296 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ufs_fs_i.h" 1
#define _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;
};
# 297 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/efs_fs_i.h" 1
#define __EFS_FS_I_H__
typedef int32_t efs_block_t;
typedef uint32_t efs_ino_t;
#define EFS_DIRECTEXTENTS 12
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 ];
};
# 298 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/coda_fs_i.h" 1
#define _LINUX_CODA_FS_I
# 1 "/home/root/kernel/kernel/include/linux/coda.h" 1
#define _CODA_HEADER_
#define CODA_MAXSYMLINKS 10
# 98 "/home/root/kernel/kernel/include/linux/coda.h"
#define cdev_t u_quad_t
typedef unsigned long long u_quad_t;
# 130 "/home/root/kernel/kernel/include/linux/coda.h"
#define CODA_MAXNAMLEN 255
#define CODA_MAXPATHLEN 1024
#define CODA_MAXSYMLINK 10
#define C_O_READ 0x001
#define C_O_WRITE 0x002
#define C_O_TRUNC 0x010
#define C_O_EXCL 0x100
#define C_O_CREAT 0x200
#define C_M_READ 00400
#define C_M_WRITE 00200
#define C_A_C_OK 8
#define C_A_R_OK 4
#define C_A_W_OK 2
#define C_A_X_OK 1
#define C_A_F_OK 0
#define _VENUS_DIRENT_T_ 1
struct venus_dirent {
unsigned long d_fileno;
unsigned short d_reclen;
unsigned char d_type;
unsigned char d_namlen;
char d_name[255 + 1];
};
#define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3))
#define CDT_UNKNOWN 0
#define CDT_FIFO 1
#define CDT_CHR 2
#define CDT_DIR 4
#define CDT_BLK 6
#define CDT_REG 8
#define CDT_LNK 10
#define CDT_SOCK 12
#define CDT_WHT 14
#define IFTOCDT(mode) (((mode) & 0170000) >> 12)
#define CDTTOIF(dirtype) ((dirtype) << 12)
#define _FID_T_ 1
typedef u_long VolumeId;
typedef u_long VnodeId;
typedef u_long Unique_t;
typedef u_long FileVersion;
#define _VICEFID_T_ 1
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));
}
#define _VUID_T_
typedef u_int32_t vuid_t;
typedef u_int32_t vgid_t;
#define _CODACRED_T_
struct coda_cred {
vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid;
vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid;
};
#define _VENUS_VATTR_T_
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;
};
#define CODA_ROOT 2
#define CODA_OPEN_BY_FD 3
#define CODA_OPEN 4
#define CODA_CLOSE 5
#define CODA_IOCTL 6
#define CODA_GETATTR 7
#define CODA_SETATTR 8
#define CODA_ACCESS 9
#define CODA_LOOKUP 10
#define CODA_CREATE 11
#define CODA_REMOVE 12
#define CODA_LINK 13
#define CODA_RENAME 14
#define CODA_MKDIR 15
#define CODA_RMDIR 16
#define CODA_SYMLINK 18
#define CODA_READLINK 19
#define CODA_FSYNC 20
#define CODA_VGET 22
#define CODA_SIGNAL 23
#define CODA_REPLACE 24
#define CODA_FLUSH 25
#define CODA_PURGEUSER 26
#define CODA_ZAPFILE 27
#define CODA_ZAPDIR 28
#define CODA_PURGEFID 30
#define CODA_OPEN_BY_PATH 31
#define CODA_RESOLVE 32
#define CODA_REINTEGRATE 33
#define CODA_STATFS 34
#define CODA_STORE 35
#define CODA_RELEASE 36
#define CODA_NCALLS 37
#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
#define VC_MAXDATASIZE 8192
#define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) + VC_MAXDATASIZE
#define CIOC_KERNEL_VERSION _IOWR('c', 10, sizeof (int))
#define CODA_KERNEL_VERSION 2
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;
};
#define CLU_CASE_SENSITIVE 0x01
#define CLU_CASE_INSENSITIVE 0x02
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;
};
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;
};
#define CODA_NOCACHE 0x80000000
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;
};
#define PIOCPARM_MASK 0x0000ffff
struct ViceIoctl {
caddr_t in, out;
short in_size;
short out_size;
};
struct PioctlData {
const char *path;
int follow;
struct ViceIoctl vi;
};
#define CODA_CONTROL ".CONTROL"
#define CODA_CONTROLLEN 8
#define CTL_VOL -1
#define CTL_VNO -1
#define CTL_UNI -1
#define CTL_INO -1
#define CTL_FILE "/coda/.CONTROL"
#define IS_CTL_FID(fidp) ((fidp)->Volume == CTL_VOL && (fidp)->Vnode == CTL_VNO && (fidp)->Unique == CTL_UNI)
#define CODA_MOUNT_VERSION 1
struct coda_mount_data {
int version;
int fd;
};
# 14 "/home/root/kernel/kernel/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;
};
#define C_VATTR 0x1
#define C_FLUSH 0x2
#define C_DYING 0x4
#define C_PURGE 0x8
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 *);
# 299 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/romfs_fs_i.h" 1
#define __ROMFS_FS_I
struct romfs_inode_info {
unsigned long i_metasize;
unsigned long i_dataoffset;
};
# 300 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/shmem_fs.h" 1
#define __SHMEM_FS_H
#define SHMEM_NR_DIRECT 16
typedef struct {
unsigned long val;
} swp_entry_t;
struct shmem_inode_info {
mutex_t lock;
unsigned long max_index;
swp_entry_t i_direct[16 ];
swp_entry_t **i_indirect;
unsigned long swapped;
int locked;
struct list_head list;
};
struct shmem_sb_info {
unsigned long max_blocks;
unsigned long free_blocks;
unsigned long max_inodes;
unsigned long free_inodes;
mutex_t stat_lock;
};
# 301 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/smb_fs_i.h" 1
#define _LINUX_SMB_FS_I
struct smb_inode_info {
unsigned int open;
__u16 fileid;
__u16 attr;
__u16 access;
__u16 flags;
unsigned long oldmtime;
unsigned long closed;
unsigned openers;
};
# 302 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/hfs_fs_i.h" 1
#define _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);
};
# 303 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/adfs_fs_i.h" 1
#define _ADFS_FS_I
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;
};
# 304 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/qnx4_fs_i.h" 1
#define _QNX4_FS_I
# 1 "/home/root/kernel/kernel/include/linux/qnxtypes.h" 1
#define _QNX4TYPES_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;
# 14 "/home/root/kernel/kernel/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;
};
# 305 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/reiserfs_fs_i.h" 1
#define _REISER_FS_I
struct reiserfs_inode_info {
__u32 i_key [4];
int i_version;
int i_pack_on_close ;
__u32 i_first_direct_byte;
int i_prealloc_block;
int i_prealloc_count;
struct list_head i_prealloc_list;
int nopack;
};
# 306 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/bfs_fs_i.h" 1
#define _LINUX_BFS_FS_I
struct bfs_inode_info {
unsigned long i_dsk_ino;
unsigned long i_sblock;
unsigned long i_eblock;
};
# 307 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/udf_fs_i.h" 1
#define _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;
};
#define UDF_GETEASIZE _IOR('l', 0x40, int)
#define UDF_GETEABLOCK _IOR('l', 0x41, void *)
#define UDF_GETVOLIDENT _IOR('l', 0x42, void *)
#define UDF_RELOCATE_BLOCKS _IOWR('l', 0x43, long)
# 308 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ncp_fs_i.h" 1
#define _LINUX_NCP_FS_I
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));
};
# 309 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/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;
};
# 310 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/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;
};
# 311 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
#define ATTR_MODE 1
#define ATTR_UID 2
#define ATTR_GID 4
#define ATTR_SIZE 8
#define ATTR_ATIME 16
#define ATTR_MTIME 32
#define ATTR_CTIME 64
#define ATTR_ATIME_SET 128
#define ATTR_MTIME_SET 256
#define ATTR_FORCE 512
#define ATTR_ATTR_FLAG 1024
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;
};
#define ATTR_FLAG_SYNCRONOUS 1
#define ATTR_FLAG_NOATIME 2
#define ATTR_FLAG_APPEND 4
#define ATTR_FLAG_IMMUTABLE 8
#define ATTR_FLAG_NODIRATIME 16
# 1 "/home/root/kernel/kernel/include/linux/quota.h" 1
#define _LINUX_QUOTA_
# 1 "/home/root/kernel/kernel/include/linux/errno.h" 1
#define _LINUX_ERRNO_H
# 1 "/home/root/kernel/kernel/include/asm/errno.h" 1
#define _PPC_ERRNO_H
#define EPERM 1
#define ENOENT 2
#define ESRCH 3
#define EINTR 4
#define EIO 5
#define ENXIO 6
#define E2BIG 7
#define ENOEXEC 8
#define EBADF 9
#define ECHILD 10
#define EAGAIN 11
#define ENOMEM 12
#define EACCES 13
#define EFAULT 14
#define ENOTBLK 15
#define EBUSY 16
#define EEXIST 17
#define EXDEV 18
#define ENODEV 19
#define ENOTDIR 20
#define EISDIR 21
#define EINVAL 22
#define ENFILE 23
#define EMFILE 24
#define ENOTTY 25
#define ETXTBSY 26
#define EFBIG 27
#define ENOSPC 28
#define ESPIPE 29
#define EROFS 30
#define EMLINK 31
#define EPIPE 32
#define EDOM 33
#define ERANGE 34
#define EDEADLK 35
#define ENAMETOOLONG 36
#define ENOLCK 37
#define ENOSYS 38
#define ENOTEMPTY 39
#define ELOOP 40
#define EWOULDBLOCK EAGAIN
#define ENOMSG 42
#define EIDRM 43
#define ECHRNG 44
#define EL2NSYNC 45
#define EL3HLT 46
#define EL3RST 47
#define ELNRNG 48
#define EUNATCH 49
#define ENOCSI 50
#define EL2HLT 51
#define EBADE 52
#define EBADR 53
#define EXFULL 54
#define ENOANO 55
#define EBADRQC 56
#define EBADSLT 57
#define EDEADLOCK 58
#define EBFONT 59
#define ENOSTR 60
#define ENODATA 61
#define ETIME 62
#define ENOSR 63
#define ENONET 64
#define ENOPKG 65
#define EREMOTE 66
#define ENOLINK 67
#define EADV 68
#define ESRMNT 69
#define ECOMM 70
#define EPROTO 71
#define EMULTIHOP 72
#define EDOTDOT 73
#define EBADMSG 74
#define EOVERFLOW 75
#define ENOTUNIQ 76
#define EBADFD 77
#define EREMCHG 78
#define ELIBACC 79
#define ELIBBAD 80
#define ELIBSCN 81
#define ELIBMAX 82
#define ELIBEXEC 83
#define EILSEQ 84
#define ERESTART 85
#define ESTRPIPE 86
#define EUSERS 87
#define ENOTSOCK 88
#define EDESTADDRREQ 89
#define EMSGSIZE 90
#define EPROTOTYPE 91
#define ENOPROTOOPT 92
#define EPROTONOSUPPORT 93
#define ESOCKTNOSUPPORT 94
#define EOPNOTSUPP 95
#define EPFNOSUPPORT 96
#define EAFNOSUPPORT 97
#define EADDRINUSE 98
#define EADDRNOTAVAIL 99
#define ENETDOWN 100
#define ENETUNREACH 101
#define ENETRESET 102
#define ECONNABORTED 103
#define ECONNRESET 104
#define ENOBUFS 105
#define EISCONN 106
#define ENOTCONN 107
#define ESHUTDOWN 108
#define ETOOMANYREFS 109
#define ETIMEDOUT 110
#define ECONNREFUSED 111
#define EHOSTDOWN 112
#define EHOSTUNREACH 113
#define EALREADY 114
#define EINPROGRESS 115
#define ESTALE 116
#define EUCLEAN 117
#define ENOTNAM 118
#define ENAVAIL 119
#define EISNAM 120
#define EREMOTEIO 121
#define EDQUOT 122
#define ENOMEDIUM 123
#define EMEDIUMTYPE 124
#define ERESTARTSYS 512
#define ERESTARTNOINTR 513
#define ERESTARTNOHAND 514
#define ENOIOCTLCMD 515
#define _LAST_ERRNO 515
# 4 "/home/root/kernel/kernel/include/linux/errno.h" 2
#define EBADHANDLE 521
#define ENOTSYNC 522
#define EBADCOOKIE 523
#define ENOTSUPP 524
#define ETOOSMALL 525
#define ESERVERFAULT 526
#define EBADTYPE 527
#define EJUKEBOX 528
# 42 "/home/root/kernel/kernel/include/linux/quota.h" 2
#define dbtob(num) (num << BLOCK_SIZE_BITS)
#define btodb(num) (num >> BLOCK_SIZE_BITS)
#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / BLOCK_SIZE)
#define MAX_IQ_TIME 604800
#define MAX_DQ_TIME 604800
#define MAXQUOTAS 2
#define USRQUOTA 0
#define GRPQUOTA 1
#define INITQFNAMES { "user", "group", "undefined", };
#define QUOTAFILENAME "quota"
#define QUOTAGROUP "staff"
extern int nr_dquots, nr_free_dquots;
extern int max_dquots;
extern int dquot_root_squash;
#define NR_DQHASH 43
#define NR_DQUOTS 1024
#define SUBCMDMASK 0x00ff
#define SUBCMDSHIFT 8
#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
#define Q_QUOTAON 0x0100
#define Q_QUOTAOFF 0x0200
#define Q_GETQUOTA 0x0300
#define Q_SETQUOTA 0x0400
#define Q_SETUSE 0x0500
#define Q_SYNC 0x0600
#define Q_SETQLIM 0x0700
#define Q_GETSTATS 0x0800
#define Q_RSQUASH 0x1000
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;
};
#define dq_bhardlimit dq_dqb.dqb_bhardlimit
#define dq_bsoftlimit dq_dqb.dqb_bsoftlimit
#define dq_curblocks dq_dqb.dqb_curblocks
#define dq_ihardlimit dq_dqb.dqb_ihardlimit
#define dq_isoftlimit dq_dqb.dqb_isoftlimit
#define dq_curinodes dq_dqb.dqb_curinodes
#define dq_btime dq_dqb.dqb_btime
#define dq_itime dq_dqb.dqb_itime
#define dqoff(UID) ((loff_t)((UID) * sizeof (struct dqblk)))
struct dqstats {
__u32 lookups;
__u32 drops;
__u32 reads;
__u32 writes;
__u32 cache_hits;
__u32 allocated_dquots;
__u32 free_dquots;
__u32 syncs;
};
#define MAX_QUOTA_MESSAGE 75
#define DQ_LOCKED 0x01
#define DQ_WANT 0x02
#define DQ_MOD 0x04
#define DQ_BLKS 0x10
#define DQ_INODES 0x20
#define DQ_FAKE 0x40
struct dquot {
struct dquot *dq_next;
struct dquot **dq_pprev;
struct list_head dq_free;
struct dquot *dq_hash_next;
struct dquot **dq_hash_pprev;
wait_queue_head_t dq_wait;
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;
};
#define NODQUOT (struct dquot *)NULL
#define QUOTA_SYSCALL 0x01
#define SET_QUOTA 0x02
#define SET_USE 0x04
#define SET_QLIMIT 0x08
#define QUOTA_OK 0
#define NO_QUOTA 1
# 208 "/home/root/kernel/kernel/include/linux/quota.h"
# 362 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
struct page;
struct address_space;
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);
};
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;
mutex_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;
dev_t bd_dev;
atomic_t bd_openers;
const struct block_device_operations *bd_op;
struct semaphore bd_sem;
};
struct inode {
struct list_head i_hash;
struct list_head i_list;
struct list_head i_dentry;
struct list_head i_dirty_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 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 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;
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;
};
extern mutex_t files_lock;
#define file_list_lock() spin_lock(&files_lock);
#define file_list_unlock() spin_unlock(&files_lock);
#define get_file(x) atomic_inc(&(x)->f_count)
#define file_count(x) atomic_read(&(x)->f_count)
extern int init_private_file(struct file *, struct dentry *, int);
#define MAX_NON_LFS ((1UL<<31) - 1)
#define FL_POSIX 1
#define FL_FLOCK 2
#define FL_BROKEN 4
#define FL_ACCESS 8
#define FL_LOCKD 16
#define FL_LEASE 32
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;
};
#define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
#define OFFSET_MAX INT_LIMIT(loff_t)
#define OFFT_OFFSET_MAX INT_LIMIT(off_t)
extern struct list_head file_lock_list;
# 1 "/home/root/kernel/kernel/include/linux/fcntl.h" 1
#define _LINUX_FCNTL_H
# 1 "/home/root/kernel/kernel/include/asm/fcntl.h" 1
#define _PPC_FCNTL_H
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#define O_CREAT 0100
#define O_EXCL 0200
#define O_NOCTTY 0400
#define O_TRUNC 01000
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
#define O_SYNC 010000
#define FASYNC 020000
#define O_DIRECTORY 040000
#define O_NOFOLLOW 0100000
#define O_LARGEFILE 0200000
#define O_DIRECT 0400000
#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_GETFL 3
#define F_SETFL 4
#define F_GETLK 5
#define F_SETLK 6
#define F_SETLKW 7
#define F_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11
#define F_GETLK64 12
#define F_SETLK64 13
#define F_SETLKW64 14
#define FD_CLOEXEC 1
#define F_RDLCK 0
#define F_WRLCK 1
#define F_UNLCK 2
#define F_EXLCK 4
#define F_SHLCK 8
#define F_INPROGRESS 16
#define LOCK_SH 1
#define LOCK_EX 2
#define LOCK_NB 4
#define LOCK_UN 8
#define LOCK_MAND 32
#define LOCK_READ 64
#define LOCK_WRITE 128
#define LOCK_RW 192
#define F_POSIX 1
#define F_FLOCK 2
#define F_BROKEN 4
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;
};
#define F_LINUX_SPECIFIC_BASE 1024
# 4 "/home/root/kernel/kernel/include/linux/fcntl.h" 2
#define F_SETLEASE (F_LINUX_SPECIFIC_BASE+0)
#define F_GETLEASE (F_LINUX_SPECIFIC_BASE+1)
#define F_NOTIFY (F_LINUX_SPECIFIC_BASE+2)
#define DN_ACCESS 0x00000001
#define DN_MODIFY 0x00000002
#define DN_CREATE 0x00000004
#define DN_DELETE 0x00000008
#define DN_RENAME 0x00000010
#define DN_ATTRIB 0x00000020
#define DN_MULTISHOT 0x80000000
# 576 "/home/root/kernel/kernel/include/linux/fs-defs.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 __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;
};
#define FASYNC_MAGIC 0x4601
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;
};
#define DQUOT_USR_ENABLED 0x01
#define DQUOT_GRP_ENABLED 0x02
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 ];
};
#define MNT_FORCE 0x00000001
# 1 "/home/root/kernel/kernel/include/linux/minix_fs_sb.h" 1
#define _MINIX_FS_SB
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;
};
# 642 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ext2_fs_sb.h" 1
#define _LINUX_EXT2_FS_SB
#define EXT2_MAX_GROUP_LOADED 8
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;
};
# 643 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/hpfs_fs_sb.h" 1
#define _HPFS_FS_SB
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;
};
#define s_hpfs_root u.hpfs_sb.sb_root
#define s_hpfs_fs_size u.hpfs_sb.sb_fs_size
#define s_hpfs_bitmaps u.hpfs_sb.sb_bitmaps
#define s_hpfs_dirband_start u.hpfs_sb.sb_dirband_start
#define s_hpfs_dirband_size u.hpfs_sb.sb_dirband_size
#define s_hpfs_dmap u.hpfs_sb.sb_dmap
#define s_hpfs_uid u.hpfs_sb.sb_uid
#define s_hpfs_gid u.hpfs_sb.sb_gid
#define s_hpfs_mode u.hpfs_sb.sb_mode
#define s_hpfs_n_free u.hpfs_sb.sb_n_free
#define s_hpfs_n_free_dnodes u.hpfs_sb.sb_n_free_dnodes
#define s_hpfs_lowercase u.hpfs_sb.sb_lowercase
#define s_hpfs_conv u.hpfs_sb.sb_conv
#define s_hpfs_eas u.hpfs_sb.sb_eas
#define s_hpfs_err u.hpfs_sb.sb_err
#define s_hpfs_chk u.hpfs_sb.sb_chk
#define s_hpfs_was_error u.hpfs_sb.sb_was_error
#define s_hpfs_chkdsk u.hpfs_sb.sb_chkdsk
#define s_hpfs_rd_inode u.hpfs_sb.sb_rd_inode
#define s_hpfs_cp_table u.hpfs_sb.sb_cp_table
#define s_hpfs_bmp_dir u.hpfs_sb.sb_bmp_dir
#define s_hpfs_c_bitmap u.hpfs_sb.sb_c_bitmap
#define s_hpfs_creation_de u.hpfs_sb.sb_creation_de
#define s_hpfs_creation_de_lock u.hpfs_sb.sb_creation_de_lock
#define s_hpfs_iget_q u.hpfs_sb.sb_iget_q
#define s_hpfs_timeshift u.hpfs_sb.sb_timeshift
# 644 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ntfs_fs_sb.h" 1
#define _LINUX_NTFS_FS_SB_H
typedef __s64 LCN;
struct ntfs_sb_info{
ntfs_uid_t uid;
ntfs_gid_t gid;
ntmode_t umask;
unsigned int nct;
void *nls_map;
unsigned int ngt;
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;
LCN mft_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;
};
# 645 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/msdos_fs_sb.h" 1
#define _MSDOS_FS_SB
# 1 "/home/root/kernel/kernel/include/linux/fat_cvf.h" 1
#define _FAT_CVF
#define CVF_USE_READPAGE 0x0001
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[];
# 3 "/home/root/kernel/kernel/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 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 vfat_unicode {
unsigned char uni1;
unsigned char uni2;
};
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;
wait_queue_head_t fat_wait;
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;
};
# 646 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/iso_fs_sb.h" 1
#define _ISOFS_FS_SB
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;
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;
};
# 647 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/nfs_fs_sb.h" 1
#define _NFS_FS_SB
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;
};
# 648 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/sysv_fs_sb.h" 1
#define _SYSV_FS_SB
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;
};
#define sv_type u.sysv_sb.s_type
#define sv_bytesex u.sysv_sb.s_bytesex
#define sv_kludge_symlinks u.sysv_sb.s_kludge_symlinks
#define sv_truncate u.sysv_sb.s_truncate
#define sv_link_max u.sysv_sb.s_link_max
#define sv_inodes_per_block u.sysv_sb.s_inodes_per_block
#define sv_inodes_per_block_1 u.sysv_sb.s_inodes_per_block_1
#define sv_inodes_per_block_bits u.sysv_sb.s_inodes_per_block_bits
#define sv_ind_per_block u.sysv_sb.s_ind_per_block
#define sv_ind_per_block_bits u.sysv_sb.s_ind_per_block_bits
#define sv_ind_per_block_2 u.sysv_sb.s_ind_per_block_2
#define sv_toobig_block u.sysv_sb.s_toobig_block
#define sv_block_base u.sysv_sb.s_block_base
#define sv_fic_size u.sysv_sb.s_fic_size
#define sv_flc_size u.sysv_sb.s_flc_size
#define sv_bh1 u.sysv_sb.s_bh1
#define sv_bh2 u.sysv_sb.s_bh2
#define sv_sbd1 u.sysv_sb.s_sbd1
#define sv_sbd2 u.sysv_sb.s_sbd2
#define sv_sb_fic_count u.sysv_sb.s_sb_fic_count
#define sv_sb_fic_inodes u.sysv_sb.s_sb_fic_inodes
#define sv_sb_total_free_inodes u.sysv_sb.s_sb_total_free_inodes
#define sv_bcache_count u.sysv_sb.s_bcache_count
#define sv_bcache u.sysv_sb.s_bcache
#define sv_free_blocks u.sysv_sb.s_free_blocks
#define sv_sb_time u.sysv_sb.s_sb_time
#define sv_sb_state u.sysv_sb.s_sb_state
#define sv_firstinodezone u.sysv_sb.s_firstinodezone
#define sv_firstdatazone u.sysv_sb.s_firstdatazone
#define sv_ninodes u.sysv_sb.s_ninodes
#define sv_ndatazones u.sysv_sb.s_ndatazones
#define sv_nzones u.sysv_sb.s_nzones
#define sv_namelen u.sysv_sb.s_namelen
# 649 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/affs_fs_sb.h" 1
#define _AFFS_FS_SB
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];
};
#define SF_INTL 0x0001
#define SF_BM_VALID 0x0002
#define SF_IMMUTABLE 0x0004
#define SF_QUIET 0x0008
#define SF_SETUID 0x0010
#define SF_SETGID 0x0020
#define SF_SETMODE 0x0040
#define SF_MUFS 0x0100
#define SF_OFS 0x0200
#define SF_PREFIX 0x0400
#define SF_VERBOSE 0x0800
#define SF_READONLY 0x1000
#define AFFS_SB (&sb->u.affs_sb)
# 650 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ufs_fs_sb.h" 1
#define __LINUX_UFS_FS_SB_H
# 1 "/home/root/kernel/kernel/include/linux/ufs_fs.h" 1
#define __LINUX_UFS_FS_H
#define UFS_BBLOCK 0
#define UFS_BBSIZE 8192
#define UFS_SBLOCK 8192
#define UFS_SBSIZE 8192
#define UFS_SECTOR_SIZE 512
#define UFS_SECTOR_BITS 9
#define UFS_MAGIC 0x00011954
#define UFS_CIGAM 0x54190100
#define UFS_MAGIC_LFN 0x00095014
#define UFS_CIGAM_LFN 0x14500900
#define UFS_MAGIC_SEC 0x00612195
#define UFS_CIGAM_SEC 0x95216100
#define UFS_MAGIC_FEA 0x00195612
#define UFS_CIGAM_FEA 0x12561900
#define UFS_MAGIC_4GB 0x05231994
#define UFS_CIGAM_4GB 0x94192305
#define UFS_FSF_LFN 0x00000001
#define UFS_FSF_B1 0x00000002
#define UFS_FSF_LFS 0x00000002
#define UFS_FSF_LUID 0x00000004
#define UFS_BSIZE 8192
#define UFS_MINBSIZE 4096
#define UFS_FSIZE 1024
#define UFS_MAXFRAG (UFS_BSIZE / UFS_FSIZE)
#define UFS_NDADDR 12
#define UFS_NINDIR 3
#define UFS_IND_BLOCK (UFS_NDADDR + 0)
#define UFS_DIND_BLOCK (UFS_NDADDR + 1)
#define UFS_TIND_BLOCK (UFS_NDADDR + 2)
#define UFS_NDIR_FRAGMENT (UFS_NDADDR << uspi->s_fpbshift)
#define UFS_IND_FRAGMENT (UFS_IND_BLOCK << uspi->s_fpbshift)
#define UFS_DIND_FRAGMENT (UFS_DIND_BLOCK << uspi->s_fpbshift)
#define UFS_TIND_FRAGMENT (UFS_TIND_BLOCK << uspi->s_fpbshift)
#define UFS_ROOTINO 2
#define UFS_FIRST_INO (UFS_ROOTINO + 1)
#define UFS_USEEFT ((__u16)65535)
#define UFS_FSOK 0x7c269d38
#define UFS_FSACTIVE ((char)0x00)
#define UFS_FSCLEAN ((char)0x01)
#define UFS_FSSTABLE ((char)0x02)
#define UFS_FSOSF1 ((char)0x03)
#define UFS_FSBAD ((char)0xff)
#define UFS_BYTESEX 0x00000001
#define UFS_NATIVE_ENDIAN 0x00000000
#define UFS_SWABBED_ENDIAN 0x00000001
#define UFS_DE_MASK 0x00000010
#define UFS_DE_OLD 0x00000000
#define UFS_DE_44BSD 0x00000010
#define UFS_UID_MASK 0x00000060
#define UFS_UID_OLD 0x00000000
#define UFS_UID_44BSD 0x00000020
#define UFS_UID_EFT 0x00000040
#define UFS_ST_MASK 0x00000700
#define UFS_ST_OLD 0x00000000
#define UFS_ST_44BSD 0x00000100
#define UFS_ST_SUN 0x00000200
#define UFS_ST_SUNx86 0x00000400
#define UFS_CG_MASK 0x00003000
#define UFS_CG_OLD 0x00000000
#define UFS_CG_44BSD 0x00002000
#define UFS_CG_SUN 0x00001000
#define UFS_42INODEFMT -1
#define UFS_44INODEFMT 2
#define UFS_MOUNT_ONERROR 0x0000000F
#define UFS_MOUNT_ONERROR_PANIC 0x00000001
#define UFS_MOUNT_ONERROR_LOCK 0x00000002
#define UFS_MOUNT_ONERROR_UMOUNT 0x00000004
#define UFS_MOUNT_ONERROR_REPAIR 0x00000008
#define UFS_MOUNT_UFSTYPE 0x00000FF0
#define UFS_MOUNT_UFSTYPE_OLD 0x00000010
#define UFS_MOUNT_UFSTYPE_44BSD 0x00000020
#define UFS_MOUNT_UFSTYPE_SUN 0x00000040
#define UFS_MOUNT_UFSTYPE_NEXTSTEP 0x00000080
#define UFS_MOUNT_UFSTYPE_NEXTSTEP_CD 0x00000100
#define UFS_MOUNT_UFSTYPE_OPENSTEP 0x00000200
#define UFS_MOUNT_UFSTYPE_SUNx86 0x00000400
#define UFS_MOUNT_UFSTYPE_HP 0x00000800
#define ufs_clear_opt(o,opt) o &= ~UFS_MOUNT_##opt
#define ufs_set_opt(o,opt) o |= UFS_MOUNT_##opt
#define ufs_test_opt(o,opt) ((o) & UFS_MOUNT_##opt)
#define UFS_MINFREE 5
#define UFS_DEFAULTOPT UFS_OPTTIME
#define ufs_fsbtodb(uspi, b) ((b) << (uspi)->s_fsbtodb)
#define ufs_dbtofsb(uspi, b) ((b) >> (uspi)->s_fsbtodb)
#define ufs_cgbase(c) (uspi->s_fpg * (c))
#define ufs_cgstart(c) (ufs_cgbase(c) + uspi->s_cgoffset * ((c) & ~uspi->s_cgmask))
#define ufs_cgsblock(c) (ufs_cgstart(c) + uspi->s_sblkno)
#define ufs_cgcmin(c) (ufs_cgstart(c) + uspi->s_cblkno)
#define ufs_cgimin(c) (ufs_cgstart(c) + uspi->s_iblkno)
#define ufs_cgdmin(c) (ufs_cgstart(c) + uspi->s_dblkno)
#define ufs_inotocg(x) ((x) / uspi->s_ipg)
#define ufs_inotocgoff(x) ((x) % uspi->s_ipg)
#define ufs_inotofsba(x) (ufs_cgimin(ufs_inotocg(x)) + ufs_inotocgoff(x) / uspi->s_inopf)
#define ufs_inotofsbo(x) ((x) % uspi->s_inopf)
#define ufs_dtog(d) ((d) / uspi->s_fpg)
#define ufs_dtogd(d) ((d) % uspi->s_fpg)
#define ufs_cbtocylno(bno) ((bno) * uspi->s_nspf / uspi->s_spc)
#define ufs_cbtorpos(bno) ((((bno) * uspi->s_nspf % uspi->s_spc / uspi->s_nsect * uspi->s_trackskew + (bno) * uspi->s_nspf % uspi->s_spc % uspi->s_nsect * uspi->s_interleave) % uspi->s_nsect * uspi->s_nrpos) / uspi->s_npsect)
#define ufs_blkoff(loc) ((loc) & uspi->s_qbmask)
#define ufs_fragoff(loc) ((loc) & uspi->s_qfmask)
#define ufs_lblktosize(blk) ((blk) << uspi->s_bshift)
#define ufs_lblkno(loc) ((loc) >> uspi->s_bshift)
#define ufs_numfrags(loc) ((loc) >> uspi->s_fshift)
#define ufs_blkroundup(size) (((size) + uspi->s_qbmask) & uspi->s_bmask)
#define ufs_fragroundup(size) (((size) + uspi->s_qfmask) & uspi->s_fmask)
#define ufs_fragstoblks(frags) ((frags) >> uspi->s_fpbshift)
#define ufs_blkstofrags(blks) ((blks) << uspi->s_fpbshift)
#define ufs_fragnum(fsb) ((fsb) & uspi->s_fpbmask)
#define ufs_blknum(fsb) ((fsb) & ~uspi->s_fpbmask)
#define UFS_MAXNAMLEN 255
#define UFS_MAXMNTLEN 512
#define UFS_MAXCSBUFS 31
#define UFS_LINK_MAX 32000
#define UFS_DIR_PAD 4
#define UFS_DIR_ROUND (UFS_DIR_PAD - 1)
#define UFS_DIR_REC_LEN(name_len) (((name_len) + 1 + 8 + UFS_DIR_ROUND) & ~UFS_DIR_ROUND)
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];
};
#define UFS_OPTTIME 0
#define UFS_OPTSPACE 1
#define UFS_42POSTBLFMT -1
#define UFS_DYNAMICPOSTBLFMT 1
#define fs_cs(indx) u.ufs_sb.s_csp[(indx) >> uspi->s_csshift][(indx) & ~uspi->s_csmask]
#define CG_MAGIC 0x090255
#define ufs_cg_chkmagic(ucg) (SWAB32((ucg)->cg_magic) == CG_MAGIC)
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;
};
#define UFS_UF_SETTABLE 0x0000ffff
#define UFS_UF_NODUMP 0x00000001
#define UFS_UF_IMMUTABLE 0x00000002
#define UFS_UF_APPEND 0x00000004
#define UFS_UF_OPAQUE 0x00000008
#define UFS_UF_NOUNLINK 0x00000010
#define UFS_SF_SETTABLE 0xffff0000
#define UFS_SF_ARCHIVED 0x00010000
#define UFS_SF_IMMUTABLE 0x00020000
#define UFS_SF_APPEND 0x00040000
#define UFS_SF_NOUNLINK 0x00100000
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 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, 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 *);
# 17 "/home/root/kernel/kernel/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;
};
#define UFS_MAX_GROUP_LOADED 8
#define UFS_CGNO_EMPTY ((unsigned)-1)
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];
};
# 651 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/efs_fs_sb.h" 1
#define __EFS_FS_SB_H__
#define EFS_SUPER_MAGIC 0x414A53
#define EFS_MAGIC 0x072959
#define EFS_NEWMAGIC 0x07295a
#define IS_EFS_MAGIC(x) ((x == EFS_MAGIC) || (x == EFS_NEWMAGIC))
#define EFS_SUPER 1
#define EFS_ROOTINODE 2
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;
};
# 652 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/romfs_fs_sb.h" 1
#define __ROMFS_FS_SB
struct romfs_sb_info {
unsigned long s_maxsize;
};
# 653 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/smb_fs_sb.h" 1
#define _SMB_FS_SB
# 1 "/home/root/kernel/kernel/include/linux/smb.h" 1
#define _LINUX_SMB_H
enum smb_protocol {
SMB_PROTOCOL_NONE,
SMB_PROTOCOL_CORE,
SMB_PROTOCOL_COREPLUS,
SMB_PROTOCOL_LANMAN1,
SMB_PROTOCOL_LANMAN2,
SMB_PROTOCOL_NT1
};
enum smb_case_hndl {
SMB_CASE_DEFAULT,
SMB_CASE_LOWER,
SMB_CASE_UPPER
};
struct smb_dskattr {
__u16 total;
__u16 allocblocks;
__u16 blocksize;
__u16 free;
};
struct smb_conn_opt {
unsigned int fd;
enum smb_protocol protocol;
enum smb_case_hndl case_handling;
__u32 max_xmit;
__u16 server_uid;
__u16 tid;
__u16 secmode;
__u16 maxmux;
__u16 maxvcs;
__u16 rawmode;
__u32 sesskey;
__u32 maxraw;
__u32 capabilities;
__s16 serverzone;
};
#define SMB_NLS_MAXNAMELEN 20
struct smb_nls_codepage {
char local_name[20 ];
char remote_name[20 ];
};
#define SMB_MAXNAMELEN 255
#define SMB_MAXPATHLEN 1024
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
};
#define SMB_SUPER_MAGIC 0x517B
#define SMB_HEADER_LEN 37
#define SMB_INITIAL_PACKET_SIZE 4000
#define SMB_MAX_PACKET_SIZE 32768
#define SMB_TRANS2_MAX_PARAM 64
# 15 "/home/root/kernel/kernel/include/linux/smb_fs_sb.h" 2
#define server_from_inode(inode) (&(inode)->i_sb->u.smbfs_sb)
#define server_from_dentry(dentry) (&(dentry)->d_sb->u.smbfs_sb)
#define SB_of(server) ((struct super_block *) ((char *)(server) - (unsigned long)(&((struct super_block *)0)->u.smbfs_sb)))
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));
}
# 654 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/hfs_fs_sb.h" 1
#define _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;
};
# 655 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/adfs_fs_sb.h" 1
#define _ADFS_FS_SB
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;
};
# 656 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/qnx4_fs_sb.h" 1
#define _QNX4_FS_SB
# 1 "/home/root/kernel/kernel/include/linux/qnx4_fs.h" 1
#define _LINUX_QNX4_FS_H
#define QNX4_ROOT_INO 1
#define QNX4_MAX_XTNTS_PER_XBLK 60
#define QNX4_FILE_USED 0x01
#define QNX4_FILE_MODIFIED 0x02
#define QNX4_FILE_BUSY 0x04
#define QNX4_FILE_LINK 0x08
#define QNX4_FILE_INODE 0x10
#define QNX4_FILE_FSYSCLEAN 0x20
#define QNX4_I_MAP_SLOTS 8
#define QNX4_Z_MAP_SLOTS 64
#define QNX4_SUPER_MAGIC 0x002f
#define QNX4_VALID_FS 0x0001
#define QNX4_ERROR_FS 0x0002
#define QNX4_BLOCK_SIZE 0x200
#define QNX4_BLOCK_SIZE_BITS 9
#define QNX4_DIR_ENTRY_SIZE 0x040
#define QNX4_DIR_ENTRY_SIZE_BITS 6
#define QNX4_XBLK_ENTRY_SIZE 0x200
#define QNX4_INODES_PER_BLOCK 0x08
#define QNX4_SHORT_NAME_MAX 16
#define QNX4_NAME_MAX 48
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;
};
#define QNX4_DEBUG 0
#define QNX4DEBUG(X) (void) 0
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);
# 14 "/home/root/kernel/kernel/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;
};
# 657 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/reiserfs_fs_sb.h" 1
#define _LINUX_REISER_FS_SB
# 1 "/home/root/kernel/kernel/include/linux/tqueue.h" 1
#define _LINUX_TQUEUE_H
# 1 "/home/root/kernel/kernel/include/asm/bitops.h" 1
# 376 "/home/root/kernel/kernel/include/asm/bitops.h"
# 18 "/home/root/kernel/kernel/include/linux/tqueue.h" 2
struct tq_struct {
struct list_head list;
unsigned long sync;
void (*routine)(void *);
void *data;
};
#define PREPARE_TQUEUE(_tq, _routine, _data) do { (_tq)->routine = _routine; (_tq)->data = _data; } while (0)
#define INIT_TQUEUE(_tq, _routine, _data) do { INIT_LIST_HEAD(&(_tq)->list); (_tq)->sync = 0; PREPARE_TQUEUE((_tq), (_routine), (_data)); } while (0)
typedef struct list_head task_queue;
#define DECLARE_TASK_QUEUE(q) LIST_HEAD(q)
#define TQ_ACTIVE(q) (!list_empty(&q))
extern task_queue tq_timer, tq_immediate, tq_disk;
extern old_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 { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( &tqueue_lock ) ; } while (0) ;
list_add_tail(&bh_pointer->list, bh_list);
do { (void)( &tqueue_lock ) ; __restore_flags( flags ) ; } 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);
}
# 8 "/home/root/kernel/kernel/include/linux/reiserfs_fs_sb.h" 2
#define REISERFS_VERSION_2 2
#define UNSET_HASH 0
#define TEA_HASH 1
#define YURA_HASH 2
#define R5_HASH 3
#define DEFAULT_HASH R5_HASH
struct reiserfs_super_block
{
__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[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__));
#define SB_SIZE (sizeof(struct reiserfs_super_block))
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__));
#define SB_SIZE_V1 (sizeof(struct reiserfs_super_block_v1))
#define JOURNAL_BLOCK_SIZE 4096
#define JOURNAL_MAX_CNODE 1500
#define JOURNAL_TRANS_MAX 1024
#define JOURNAL_HASH_SIZE 8192
#define JOURNAL_NUM_BITMAPS 5
#define JOURNAL_LIST_COUNT 64
#define BH_JDirty 16
#define BH_JDirty_wait 18
#define BH_JNew 19
#define BH_JPrepared 20
#define BH_JRestore_dirty 22
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;
};
#define JOURNAL_DESC_MAGIC "ReIsErLB"
typedef __u32 (*hashf_t) (const 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;
};
#define NOTAIL 0
#define REPLAYONLY 3
#define REISERFS_NOLOG 4
#define REISERFS_CONVERT 5
#define FORCE_TEA_HASH 6
#define FORCE_RUPASOV_HASH 7
#define FORCE_R5_HASH 8
#define FORCE_HASH_DETECT 9
#define REISERFS_NO_BORDER 11
#define REISERFS_NO_UNHASHED_RELOCATION 12
#define REISERFS_HASHED_RELOCATION 13
#define REISERFS_TEST4 14
#define REISERFS_TEST1 11
#define REISERFS_TEST2 12
#define REISERFS_TEST3 13
#define reiserfs_r5_hash(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << FORCE_R5_HASH))
#define reiserfs_rupasov_hash(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << FORCE_RUPASOV_HASH))
#define reiserfs_tea_hash(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << FORCE_TEA_HASH))
#define reiserfs_hash_detect(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << FORCE_HASH_DETECT))
#define reiserfs_no_border(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_NO_BORDER))
#define reiserfs_no_unhashed_relocation(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_NO_UNHASHED_RELOCATION))
#define reiserfs_hashed_relocation(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_HASHED_RELOCATION))
#define reiserfs_test4(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_TEST4))
#define dont_have_tails(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << NOTAIL))
#define replay_only(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REPLAYONLY))
#define reiserfs_dont_log(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_NOLOG))
#define old_format_only(s) ((SB_VERSION(s) != REISERFS_VERSION_2) && !((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_CONVERT)))
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) ;
#define CARRY_ON 0
#define SCHEDULE_OCCURRED 1
#define SB_BUFFER_WITH_SB(s) ((s)->u.reiserfs_sb.s_sbh)
#define SB_JOURNAL(s) ((s)->u.reiserfs_sb.s_journal)
#define SB_JOURNAL_LIST(s) (SB_JOURNAL(s)->j_journal_list)
#define SB_JOURNAL_LIST_INDEX(s) (SB_JOURNAL(s)->j_journal_list_index)
#define SB_JOURNAL_LEN_FREE(s) (SB_JOURNAL(s)->j_journal_len_free)
#define SB_AP_BITMAP(s) ((s)->u.reiserfs_sb.s_ap_bitmap)
#define SB_DISK_SUPER_BLOCK(s) ((s)->u.reiserfs_sb.s_rs)
#define SB_BLOCK_COUNT(s) le32_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_block_count))
#define SB_FREE_BLOCKS(s) le32_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_free_blocks))
#define SB_REISERFS_MAGIC(s) (SB_DISK_SUPER_BLOCK(s)->s_magic)
#define SB_ROOT_BLOCK(s) le32_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_root_block))
#define SB_TREE_HEIGHT(s) le16_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_tree_height))
#define SB_REISERFS_STATE(s) le16_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_state))
#define SB_VERSION(s) le16_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_version))
#define SB_BMAP_NR(s) le16_to_cpu ((SB_DISK_SUPER_BLOCK(s)->s_bmap_nr))
#define PUT_SB_BLOCK_COUNT(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_block_count = cpu_to_le32(val); } while (0)
#define PUT_SB_FREE_BLOCKS(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_free_blocks = cpu_to_le32(val); } while (0)
#define PUT_SB_ROOT_BLOCK(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_root_block = cpu_to_le32(val); } while (0)
#define PUT_SB_TREE_HEIGHT(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_tree_height = cpu_to_le16(val); } while (0)
#define PUT_SB_REISERFS_STATE(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_state = cpu_to_le16(val); } while (0)
#define PUT_SB_VERSION(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_version = cpu_to_le16(val); } while (0)
#define PUT_SB_BMAP_NR(s, val) do { SB_DISK_SUPER_BLOCK(s)->s_bmap_nr = cpu_to_le16 (val); } while (0)
# 658 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/bfs_fs_sb.h" 1
#define _LINUX_BFS_FS_SB
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;
};
# 659 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/udf_fs_sb.h" 1
#define _LINUX_UDF_FS_SB_H
# 1 "/home/root/kernel/kernel/include/linux/version.h" 1
#define UTS_RELEASE "2.4.7-timesys-2.1"
#define LINUX_VERSION_CODE 132103
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
# 22 "/home/root/kernel/kernel/include/linux/udf_fs_sb.h" 2
#pragma pack(1)
#define UDF_MAX_BLOCK_LOADED 8
#define UDF_TYPE1_MAP15 0x1511U
#define UDF_VIRTUAL_MAP15 0x1512U
#define UDF_VIRTUAL_MAP20 0x2012U
#define UDF_SPARABLE_MAP15 0x1522U
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;
__u32 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;
};
# 660 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ncp_fs_sb.h" 1
#define _NCP_FS_SB
# 1 "/home/root/kernel/kernel/include/linux/ncp_mount.h" 1
#define _LINUX_NCP_MOUNT_H
# 1 "/home/root/kernel/kernel/include/linux/ncp.h" 1
#define _LINUX_NCP_H
#define NCP_PTYPE (0x11)
#define NCP_PORT (0x0451)
#define NCP_ALLOC_SLOT_REQUEST (0x1111)
#define NCP_REQUEST (0x2222)
#define NCP_DEALLOC_SLOT_REQUEST (0x5555)
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));
};
#define NCP_REPLY (0x3333)
#define NCP_POSITIVE_ACK (0x9999)
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));
};
#define NCP_VOLNAME_LEN (16)
#define NCP_NUMBER_OF_VOLUMES (64)
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];
};
#define AR_READ (ntohs(0x0100))
#define AR_WRITE (ntohs(0x0200))
#define AR_EXCLUSIVE (ntohs(0x2000))
#define NCP_FILE_ID_LEN 6
#define NW_NS_DOS 0
#define NW_NS_MAC 1
#define NW_NS_NFS 2
#define NW_NS_FTAM 3
#define NW_NS_OS2 4
#define RIM_NAME (ntohl(0x01000000L))
#define RIM_SPACE_ALLOCATED (ntohl(0x02000000L))
#define RIM_ATTRIBUTES (ntohl(0x04000000L))
#define RIM_DATA_SIZE (ntohl(0x08000000L))
#define RIM_TOTAL_SIZE (ntohl(0x10000000L))
#define RIM_EXT_ATTR_INFO (ntohl(0x20000000L))
#define RIM_ARCHIVE (ntohl(0x40000000L))
#define RIM_MODIFY (ntohl(0x80000000L))
#define RIM_CREATION (ntohl(0x00010000L))
#define RIM_OWNING_NAMESPACE (ntohl(0x00020000L))
#define RIM_DIRECTORY (ntohl(0x00040000L))
#define RIM_RIGHTS (ntohl(0x00080000L))
#define RIM_ALL (ntohl(0xFF0F0000L))
#define RIM_COMPRESSED_INFO (ntohl(0x00000080L))
#define OC_MODE_OPEN 0x01
#define OC_MODE_TRUNCATE 0x02
#define OC_MODE_REPLACE 0x02
#define OC_MODE_CREATE 0x08
#define OC_ACTION_NONE 0x00
#define OC_ACTION_OPEN 0x01
#define OC_ACTION_CREATE 0x02
#define OC_ACTION_TRUNCATE 0x04
#define OC_ACTION_REPLACE 0x04
#define AR_READ_ONLY 0x0001
#define AR_WRITE_ONLY 0x0002
#define AR_DENY_READ 0x0004
#define AR_DENY_WRITE 0x0008
#define AR_COMPATIBILITY 0x0010
#define AR_WRITE_THROUGH 0x0040
#define AR_OPEN_COMPRESSED 0x0100
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));
};
#define DM_ATTRIBUTES (ntohl(0x02000000L))
#define DM_CREATE_DATE (ntohl(0x04000000L))
#define DM_CREATE_TIME (ntohl(0x08000000L))
#define DM_CREATOR_ID (ntohl(0x10000000L))
#define DM_ARCHIVE_DATE (ntohl(0x20000000L))
#define DM_ARCHIVE_TIME (ntohl(0x40000000L))
#define DM_ARCHIVER_ID (ntohl(0x80000000L))
#define DM_MODIFY_DATE (ntohl(0x00010000L))
#define DM_MODIFY_TIME (ntohl(0x00020000L))
#define DM_MODIFIER_ID (ntohl(0x00040000L))
#define DM_LAST_ACCESS_DATE (ntohl(0x00080000L))
#define DM_INHERITED_RIGHTS_MASK (ntohl(0x00100000L))
#define DM_MAXIMUM_SPACE (ntohl(0x00200000L))
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));
};
# 12 "/home/root/kernel/kernel/include/linux/ncp_mount.h" 2
#define NCP_MOUNT_VERSION 3
#define NCP_MOUNT_SOFT 0x0001
#define NCP_MOUNT_INTR 0x0002
#define NCP_MOUNT_STRONG 0x0004
#define NCP_MOUNT_NO_OS2 0x0008
#define NCP_MOUNT_NO_NFS 0x0010
#define NCP_MOUNT_EXTRAS 0x0020
#define NCP_MOUNT_SYMLINKS 0x0040
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;
};
#define NCP_MOUNT_VERSION_V4 (4)
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;
#define NCP_IMOUNT_LOGGEDIN_POSSIBLE 0x0001
__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;
};
# 12 "/home/root/kernel/kernel/include/linux/ncp_fs_sb.h" 2
#define NCP_DEFAULT_OPTIONS 0
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;
};
#define ncp_sb_info ncp_server
#define NCP_FLAG_UTF8 1
#define NCP_CLR_FLAG(server, flag) ((server)->flags &= ~(flag))
#define NCP_SET_FLAG(server, flag) ((server)->flags |= (flag))
#define NCP_IS_FLAG(server, flag) ((server)->flags & (flag))
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;
}
# 661 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/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;
};
# 662 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/cramfs_fs_sb.h" 1
#define _CRAMFS_FS_SB
struct cramfs_sb_info {
unsigned long magic;
unsigned long size;
unsigned long blocks;
unsigned long files;
unsigned long flags;
};
# 663 "/home/root/kernel/kernel/include/linux/fs-defs.h" 2
extern struct list_head super_blocks;
#define sb_entry(list) list_entry((list), struct super_block, s_list)
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;
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_mounts;
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 cramfs_sb_info cramfs_sb;
void *generic_sbp;
} u;
struct semaphore s_vfs_rename_sem;
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 *);
#define DT_UNKNOWN 0
#define DT_FIFO 1
#define DT_CHR 2
#define DT_DIR 4
#define DT_BLK 6
#define DT_REG 8
#define DT_LNK 10
#define DT_SOCK 12
#define DT_WHT 14
typedef int (*filldir_t)(void *, const char *, int, off_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 *);
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);
};
#define I_DIRTY_SYNC 1
#define I_DIRTY_DATASYNC 2
#define I_DIRTY_PAGES 4
#define I_LOCK 8
#define I_FREEING 16
#define I_CLEAR 32
#define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
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) (const struct inode *, unsigned long, char);
int (*alloc_inode) (const struct inode *, unsigned long);
void (*free_block) (const struct inode *, unsigned long);
void (*free_inode) (const struct inode *, unsigned long);
int (*transfer) (struct dentry *, 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 vfsmount *kern_mnt;
struct file_system_type * next;
};
#define DECLARE_FSTYPE(var,type,read,flags) struct file_system_type var = { name: type, read_super: read, fs_flags: flags, owner: THIS_MODULE, }
#define DECLARE_FSTYPE_DEV(var,type,read) DECLARE_FSTYPE(var,type,read,FS_REQUIRES_DEV)
#define fops_get(fops) (((fops) && (fops)->owner) ? ( try_inc_mod_count((fops)->owner) ? (fops) : NULL ) : (fops))
#define fops_put(fops) do { if ((fops) && (fops)->owner) __MOD_DEC_USE_COUNT((fops)->owner); } while(0)
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 *);
#define kern_umount mntput
extern int vfs_statfs(struct super_block *, struct statfs *);
#define LOCK_USE_CLNT 1
#define FLOCK_VERIFY_READ 1
#define FLOCK_VERIFY_WRITE 2
extern int locks_mandatory_locked(struct inode *);
extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t);
#define MANDATORY_LOCK(inode) (IS_MANDLOCK(inode) && ((inode)->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
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;
}
extern 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;
}
long sys_open(const char *, int, int);
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);
#define __getname() kmem_cache_alloc(names_cachep, SLAB_KERNEL)
#define putname(name) kmem_cache_free(names_cachep, (void *)(name))
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 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 struct file_operations def_blk_fops;
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) ;
#define BUF_CLEAN 0
#define BUF_LOCKED 1
#define BUF_DIRTY 2
#define BUF_PROTECTED 3
#define NR_LIST 4
static inline void get_bh(struct buffer_head * bh)
{
((void) atomic_inc_return(( &(bh)->b_count ))) ;
}
static inline void put_bh(struct buffer_head *bh)
{
__asm__ __volatile__("": : :"memory") ;
((void) atomic_dec_return(( &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);
}
#define atomic_set_buffer_clean(bh) test_and_clear_bit(BH_Dirty, &(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);
}
#define atomic_set_buffer_protected(bh) test_and_set_bit(BH_Protected, &(bh)->b_state)
static inline void __mark_buffer_protected(struct buffer_head *bh)
{
refile_buffer(bh);
}
static inline void mark_buffer_protected(struct buffer_head * bh)
{
if (! test_and_set_bit(BH_Protected, &( bh )->b_state) )
__mark_buffer_protected(bh);
}
extern void __mark_buffer_dirty(struct buffer_head *bh) ;
extern void mark_buffer_dirty(struct buffer_head *bh) ;
#define atomic_set_buffer_dirty(bh) test_and_set_bit(BH_Dirty, &(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(kdev_t);
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_buffers(struct inode *);
#define invalidate_buffers(dev) __invalidate_buffers((dev), 0)
#define destroy_buffers(dev) __invalidate_buffers((dev), 1)
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 void sync_dev(kdev_t);
extern int fsync_dev(kdev_t);
extern int fsync_super(struct super_block *);
extern void sync_inodes_sb(struct super_block *);
extern int fsync_inode_buffers(struct inode *);
extern int osync_inode_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)
{
((void) atomic_dec_return(( &inode->i_writecount ))) ;
}
static inline void allow_write_access(struct file *file)
{
if (file)
((void) atomic_inc_return(( &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 *);
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;
}
#define LOOKUP_FOLLOW (1)
#define LOOKUP_DIRECTORY (2)
#define LOOKUP_CONTINUE (4)
#define LOOKUP_POSITIVE (8)
#define LOOKUP_PARENT (16)
#define LOOKUP_NOALT (32)
enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
typedef struct {
size_t written;
size_t count;
char * buf;
int error;
} read_descriptor_t;
typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
extern loff_t default_llseek(struct file *file, loff_t offset, int origin);
extern int __user_walk(const char *, unsigned, struct nameidata *);
extern int path_init(const char *, unsigned, struct nameidata *);
extern int path_walk(const char *, struct nameidata *);
extern 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 *);
#define user_path_walk(name,nd) __user_walk(name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, nd)
#define user_path_walk_link(name,nd) __user_walk(name, LOOKUP_POSITIVE, nd)
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;
}
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 void file_moveto(struct file *new, struct file *old);
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 void set_blocksize(kdev_t, int);
extern struct buffer_head * bread(kdev_t, int, int);
extern void wakeup_bdflush(int wait);
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 block_flushpage(struct page *, unsigned long);
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_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 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 ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);
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);
static inline int is_mounted(kdev_t dev)
{
struct super_block *sb = get_super(dev);
if (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 void inode_setattr(struct inode *, struct iattr *);
# 17 "/home/root/kernel/kernel/include/linux/capability.h" 2
#define _LINUX_CAPABILITY_VERSION 0x19980330
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;
typedef __u32 kernel_cap_t;
#define _USER_CAP_HEADER_SIZE (2*sizeof(__u32))
#define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t))
#define CAP_CHOWN 0
#define CAP_DAC_OVERRIDE 1
#define CAP_DAC_READ_SEARCH 2
#define CAP_FOWNER 3
#define CAP_FSETID 4
#define CAP_FS_MASK 0x1f
#define CAP_KILL 5
#define CAP_SETGID 6
#define CAP_SETUID 7
#define CAP_SETPCAP 8
#define CAP_LINUX_IMMUTABLE 9
#define CAP_NET_BIND_SERVICE 10
#define CAP_NET_BROADCAST 11
#define CAP_NET_ADMIN 12
#define CAP_NET_RAW 13
#define CAP_IPC_LOCK 14
#define CAP_IPC_OWNER 15
#define CAP_SYS_MODULE 16
#define CAP_SYS_RAWIO 17
#define CAP_SYS_CHROOT 18
#define CAP_SYS_PTRACE 19
#define CAP_SYS_PACCT 20
#define CAP_SYS_ADMIN 21
#define CAP_SYS_BOOT 22
#define CAP_SYS_NICE 23
#define CAP_SYS_RESOURCE 24
#define CAP_SYS_TIME 25
#define CAP_SYS_TTY_CONFIG 26
#define CAP_MKNOD 27
#define CAP_LEASE 28
extern kernel_cap_t cap_bset;
#define to_cap_t(x) (x)
#define cap_t(x) (x)
#define CAP_EMPTY_SET to_cap_t(0)
#define CAP_FULL_SET to_cap_t(~0)
#define CAP_INIT_EFF_SET to_cap_t(~0 & ~CAP_TO_MASK(CAP_SETPCAP))
#define CAP_INIT_INH_SET to_cap_t(0)
#define CAP_TO_MASK(x) (1 << (x))
#define cap_raise(c, flag) (cap_t(c) |= CAP_TO_MASK(flag))
#define cap_lower(c, flag) (cap_t(c) &= ~CAP_TO_MASK(flag))
#define cap_raised(c, flag) (cap_t(c) & CAP_TO_MASK(flag))
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;
}
#define cap_isclear(c) (!cap_t(c))
#define cap_issubset(a,set) (!(cap_t(a) & ~cap_t(set)))
#define cap_clear(c) do { cap_t(c) = 0; } while(0)
#define cap_set_full(c) do { cap_t(c) = ~0; } while(0)
#define cap_mask(c,mask) do { cap_t(c) &= cap_t(mask); } while(0)
#define cap_is_fs_cap(c) (CAP_TO_MASK(c) & CAP_FS_MASK)
# 5 "/home/root/kernel/kernel/include/linux/binfmts.h" 2
#define MAX_ARG_PAGES 32
#define BINPRM_BUF_SIZE 128
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);
# 9 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/personality.h" 1
#define _PERSONALITY_H
# 1 "/home/root/kernel/kernel/include/asm/current.h" 1
#define _PPC_CURRENT_H
register struct task_struct *current asm ("r2");
# 6 "/home/root/kernel/kernel/include/linux/personality.h" 2
#define STICKY_TIMEOUTS 0x4000000
#define WHOLE_SECONDS 0x2000000
#define ADDR_LIMIT_32BIT 0x0800000
#define PER_MASK (0x00ff)
#define PER_LINUX (0x0000)
#define PER_LINUX_32BIT (0x0000 | ADDR_LIMIT_32BIT)
#define PER_SVR4 (0x0001 | STICKY_TIMEOUTS)
#define PER_SVR3 (0x0002 | STICKY_TIMEOUTS)
#define PER_SCOSVR3 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS)
#define PER_WYSEV386 (0x0004 | STICKY_TIMEOUTS)
#define PER_ISCR4 (0x0005 | STICKY_TIMEOUTS)
#define PER_BSD (0x0006)
#define PER_SUNOS (PER_BSD | STICKY_TIMEOUTS)
#define PER_XENIX (0x0007 | STICKY_TIMEOUTS)
#define PER_LINUX32 (0x0008)
#define PER_IRIX32 (0x0009 | STICKY_TIMEOUTS)
#define PER_IRIXN32 (0x000a | STICKY_TIMEOUTS)
#define PER_IRIX64 (0x000b | STICKY_TIMEOUTS)
#define PER_RISCOS (0x000c)
#define PER_SOLARIS (0x000d | STICKY_TIMEOUTS)
typedef void (*lcall7_func)(int, struct pt_regs *);
struct exec_domain {
const char *name;
lcall7_func handler;
unsigned char pers_low, pers_high;
unsigned long * signal_map;
unsigned long * signal_invmap;
struct module * module;
struct exec_domain *next;
};
extern struct exec_domain default_exec_domain;
extern int register_exec_domain(struct exec_domain *it);
extern int unregister_exec_domain(struct exec_domain *it);
#define put_exec_domain(it) if (it && it->module) __MOD_DEC_USE_COUNT(it->module);
#define get_exec_domain(it) if (it && it->module) __MOD_INC_USE_COUNT(it->module);
extern void __set_personality(unsigned long personality);
#define set_personality(pers) do { if (current->personality != pers) __set_personality(pers); } while (0)
long sys_personality(unsigned long personality);
# 10 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/threads.h" 1
#define _LINUX_THREADS_H
#define NR_CPUS 1
#define MIN_THREADS_LEFT_FOR_ROOT 4
#define RUNQUEUE_MAXBLOCKS 127
#define RUNQUEUE_BLOCKBITS 8
#define PID_MAX 0x8000
# 11 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/times.h" 1
#define _LINUX_TIMES_H
struct tms {
clock_t tms_utime;
clock_t tms_stime;
clock_t tms_cutime;
clock_t tms_cstime;
};
struct kernel_tms {
cpu_tick_data_t tms_utime;
cpu_tick_data_t tms_stime;
cpu_tick_data_t tms_cutime;
cpu_tick_data_t tms_cstime;
};
# 14 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/heapqueue.h" 1
#define _LINUX_HEAPQUEUE_H
typedef struct {
void *data;
unsigned int pos;
} heapqueue_node;
typedef struct {
heapqueue_node **q;
int num, max;
} heapqueue;
typedef struct {
heapqueue_node ***q;
int num, max, nblocks;
int maxblocks, blockmask, blockbits;
} blocked_heapqueue;
heapqueue *heapqueue_create(int max);
void heapqueue_destroy(heapqueue *q);
blocked_heapqueue *blocked_heapqueue_create(int maxblocks, int blockbits);
void blocked_heapqueue_destroy(blocked_heapqueue *q);
int blocked_heapqueue_adj_max(blocked_heapqueue *q,
int adj, old_spinlock_t *lock);
#define heapqueue_top(Q) (Q->q[1])
#define blocked_heapqueue_top(Q) (Q->num?Q->q[0][1]:NULL)
#define heapqueue_num(Q) (Q->num)
#define blocked_heapqueue_num(Q) (Q->num)
# 15 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/ktimer.h" 1
#define _LINUX_KTIMER_H
#define KTIMER_MAXBLOCKS 256
#define KTIMER_BLOCKBITS 10
# 1 "/home/root/kernel/kernel/include/asm/timex.h" 1
#define _ASMppc_TIMEX_H
#define CLOCK_TICK_RATE 1193180
#define CLOCK_TICK_FACTOR 20
#define FINETUNE ((((((long)LATCH * HZ - CLOCK_TICK_RATE) << SHIFT_HZ) * (1000000/CLOCK_TICK_FACTOR) / (CLOCK_TICK_RATE/CLOCK_TICK_FACTOR)) << (SHIFT_SCALE-SHIFT_HZ)) / HZ)
typedef unsigned long cycles_t;
extern cycles_t cacheflush_time;
static inline cycles_t get_cycles(void)
{
return 0;
}
struct ktimer;
extern unsigned long cpu_khz;
#define ktimer_freq (cpu_khz*1000LL)
extern volatile long cpu_tick_at_last_xtime_update;
extern volatile cpu_tick_data_t cpu_tick_at_last_jiffy;
extern long cpu_ticks_per_jiffy;
static inline void nanosec2tick(cpu_tick_data_t ns, cpu_tick_data_t *tick)
{
*tick = (ns * cpu_khz) / 1000000LL;
}
static inline void tick2nanosec(cpu_tick_data_t tick, cpu_tick_data_t *ns)
{
*ns = (tick * 1000000LL) / cpu_khz;
}
static inline unsigned long tick2jiffies(cpu_tick_data_t tick)
{
return tick / (cpu_khz * 10);
}
static inline unsigned long tick2jiffies_lock(cpu_tick_data_t *tick,
old_spinlock_t *lock)
{
unsigned long ret, flags;
do { ({__save_flags_ptr((unsigned long *)& flags ) ;__cli();}) ; (void)( lock ) ; } while (0) ;
ret = *tick / (cpu_khz * 10);
do { (void)( lock ) ; __restore_flags( flags ) ; } while (0) ;
return ret;
}
static inline void tick2timespec(cpu_tick_data_t tick, struct timespec *ts)
{
ts->tv_sec = tick / (cpu_khz*1000LL) ;
tick -= ts->tv_sec * 1000000000LL;
ts->tv_nsec = (tick * 1000000LL) / cpu_khz;
}
static inline void timespec2tick(struct timespec ts, cpu_tick_data_t *tick)
{
*tick = ts.tv_sec * (cpu_khz*1000LL) ;
*tick += ((cpu_tick_data_t)ts.tv_nsec * cpu_khz) / 1000000;
}
static inline cpu_tick_data_t get_timestamp(void)
{
cpu_tick_data_t now;
unsigned long tmp;
unsigned long low;
unsigned long high;
asm volatile ("0: mftbu %0;"
" mftb %1;"
" mftbu %2;"
" cmpw %2,%0;"
" bne 0b"
:"=r" (high), "=r" (low), "=r" (tmp));
now = high;
now <<= 32;
now += low;
return now;
}
# 10 "/home/root/kernel/kernel/include/linux/ktimer.h" 2
#define KTIMER_RR 1
#define KTIMER_EARLY 2
typedef struct ktimer {
heapqueue_node hq_node;
cpu_tick_data_t expires;
int flags;
int cpu;
void (*handler)(struct ktimer *);
void *data;
cpu_tick_data_t period;
} ktimer;
extern ktimer *(*ktimer_create_hook)(void);
ktimer *ktimer_create(void);
extern void (*ktimer_destroy_hook)(ktimer *tmr);
void ktimer_destroy(ktimer *tmr);
int ktimer_arm(ktimer *tmr);
int __ktimer_arm(ktimer *tmr);
int __ktimer_arm_norun(ktimer *tmr);
int ktimer_mod(ktimer *tmr, cpu_tick_data_t expires);
void ktimer_disarm(ktimer *tmr);
void __ktimer_disarm(ktimer *tmr);
int __ktimer_disarm_norun(ktimer *tmr);
void ktimer_init(void);
void run_timers(void);
extern old_spinlock_t ktimer_lock;
extern void (*timer_hook)(void);
extern int (*nanosleep_hook)(struct timespec *req, struct timespec *rem);
extern int set_hw_timer(ktimer *tmr);
extern void make_hw_timer_periodic(void);
# 16 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/asm/mmu.h" 1
#define _PPC_MMU_H_
typedef unsigned long mm_context_t;
typedef struct _PTE {
unsigned long v:1;
unsigned long vsid:24;
unsigned long h:1;
unsigned long api:6;
unsigned long rpn:20;
unsigned long :3;
unsigned long r:1;
unsigned long c:1;
unsigned long w:1;
unsigned long i:1;
unsigned long m:1;
unsigned long g:1;
unsigned long :1;
unsigned long pp:2;
} PTE;
#define PP_RWXX 0
#define PP_RWRX 1
#define PP_RWRW 2
#define PP_RXRX 3
typedef struct _SEGREG {
unsigned long t:1;
unsigned long ks:1;
unsigned long kp:1;
unsigned long n:1;
unsigned long :4;
unsigned long vsid:24;
} SEGREG;
typedef struct _P601_BATU {
unsigned long bepi:15;
unsigned long :8;
unsigned long w:1;
unsigned long i:1;
unsigned long m:1;
unsigned long ks:1;
unsigned long kp:1;
unsigned long pp:2;
} P601_BATU;
typedef struct _BATU {
unsigned long bepi:15;
unsigned long :4;
unsigned long bl:11;
unsigned long vs:1;
unsigned long vp:1;
} BATU;
typedef struct _P601_BATL {
unsigned long brpn:15;
unsigned long :10;
unsigned long v:1;
unsigned long bl:6;
} P601_BATL;
typedef struct _BATL {
unsigned long brpn:15;
unsigned long :10;
unsigned long w:1;
unsigned long i:1;
unsigned long m:1;
unsigned long g:1;
unsigned long :1;
unsigned long pp:2;
} BATL;
typedef struct _BAT {
BATU batu;
BATL batl;
} BAT;
typedef struct _P601_BAT {
P601_BATU batu;
P601_BATL batl;
} P601_BAT;
extern void _tlbie(unsigned long va);
extern void _tlbia(void);
#define BL_128K 0x000
#define BL_256K 0x001
#define BL_512K 0x003
#define BL_1M 0x007
#define BL_2M 0x00F
#define BL_4M 0x01F
#define BL_8M 0x03F
#define BL_16M 0x07F
#define BL_32M 0x0FF
#define BL_64M 0x1FF
#define BL_128M 0x3FF
#define BL_256M 0x7FF
#define BPP_XX 0x00
#define BPP_RX 0x01
#define BPP_RW 0x02
#define MI_CTR 784
#define MI_GPM 0x80000000
#define MI_PPM 0x40000000
#define MI_CIDEF 0x20000000
#define MI_RSV4I 0x08000000
#define MI_PPCS 0x02000000
#define MI_IDXMASK 0x00001f00
#define MI_RESETVAL 0x00000000
#define MI_AP 786
#define MI_Ks 0x80000000
#define MI_Kp 0x40000000
#define MI_EPN 787
#define MI_EPNMASK 0xfffff000
#define MI_EVALID 0x00000200
#define MI_ASIDMASK 0x0000000f
#define MI_TWC 789
#define MI_APG 0x000001e0
#define MI_GUARDED 0x00000010
#define MI_PSMASK 0x0000000c
#define MI_PS8MEG 0x0000000c
#define MI_PS512K 0x00000004
#define MI_PS4K_16K 0x00000000
#define MI_SVALID 0x00000001
#define MI_RPN 790
#define MI_BOOTINIT 0x000001fd
#define MD_CTR 792
#define MD_GPM 0x80000000
#define MD_PPM 0x40000000
#define MD_CIDEF 0x20000000
#define MD_WTDEF 0x10000000
#define MD_RSV4I 0x08000000
#define MD_TWAM 0x04000000
#define MD_PPCS 0x02000000
#define MD_IDXMASK 0x00001f00
#define MD_RESETVAL 0x04000000
#define M_CASID 793
#define MC_ASIDMASK 0x0000000f
#define MD_AP 794
#define MD_Ks 0x80000000
#define MD_Kp 0x40000000
#define MD_EPN 795
#define MD_EPNMASK 0xfffff000
#define MD_EVALID 0x00000200
#define MD_ASIDMASK 0x0000000f
#define M_TWB 796
#define M_L1TB 0xfffff000
#define M_L1INDX 0x00000ffc
#define MD_TWC 797
#define MD_L2TB 0xfffff000
#define MD_L2INDX 0xfffffe00
#define MD_APG 0x000001e0
#define MD_GUARDED 0x00000010
#define MD_PSMASK 0x0000000c
#define MD_PS8MEG 0x0000000c
#define MD_PS512K 0x00000004
#define MD_PS4K_16K 0x00000000
#define MD_WT 0x00000002
#define MD_SVALID 0x00000001
#define MD_RPN 798
#define M_TW 799
#define PPC4XX_TLB_SIZE 64
#define TLB_LO 1
#define TLB_HI 0
#define TLB_DATA TLB_LO
#define TLB_TAG TLB_HI
#define TLB_EPN_MASK 0xFFFFFC00
#define TLB_PAGESZ_MASK 0x00000380
#define TLB_PAGESZ(x) (((x) & 0x7) << 7)
#define PAGESZ_1K 0
#define PAGESZ_4K 1
#define PAGESZ_16K 2
#define PAGESZ_64K 3
#define PAGESZ_256K 4
#define PAGESZ_1M 5
#define PAGESZ_4M 6
#define PAGESZ_16M 7
#define TLB_VALID 0x00000040
#define TLB_RPN_MASK 0xFFFFFC00
#define TLB_PERM_MASK 0x00000300
#define TLB_EX 0x00000200
#define TLB_WR 0x00000100
#define TLB_ZSEL_MASK 0x000000F0
#define TLB_ZSEL(x) (((x) & 0xF) << 4)
#define TLB_ATTR_MASK 0x0000000F
#define TLB_W 0x00000008
#define TLB_I 0x00000004
#define TLB_M 0x00000002
#define TLB_G 0x00000001
# 23 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/asm/timex.h" 1
# 133 "/home/root/kernel/kernel/include/asm/timex.h"
# 24 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/smp.h" 1
#define __LINUX_SMP_H
# 74 "/home/root/kernel/kernel/include/linux/smp.h"
#define smp_num_cpus 1
#define smp_processor_id() 0
#define hard_smp_processor_id() 0
#define smp_threads_ready 1
#define kernel_lock()
#define cpu_logical_map(cpu) ({ (void)cpu; 0; })
#define cpu_number_map(cpu) ({ (void)cpu; 0; })
#define smp_call_function(func,info,retry,wait) ({ 0; })
#define cpu_online_map 1
# 26 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/tty.h" 1
#define _LINUX_TTY_H
#define MIN_NR_CONSOLES 1
#define MAX_NR_CONSOLES 63
#define MAX_NR_USER_CONSOLES 63
# 1 "/home/root/kernel/kernel/include/linux/major.h" 1
#define _LINUX_MAJOR_H
#define MAX_CHRDEV 255
#define MAX_BLKDEV 255
#define UNNAMED_MAJOR 0
#define MEM_MAJOR 1
#define RAMDISK_MAJOR 1
#define FLOPPY_MAJOR 2
#define PTY_MASTER_MAJOR 2
#define IDE0_MAJOR 3
#define PTY_SLAVE_MAJOR 3
#define HD_MAJOR IDE0_MAJOR
#define TTY_MAJOR 4
#define TTYAUX_MAJOR 5
#define LP_MAJOR 6
#define VCS_MAJOR 7
#define LOOP_MAJOR 7
#define SCSI_DISK0_MAJOR 8
#define SCSI_TAPE_MAJOR 9
#define MD_MAJOR 9
#define MISC_MAJOR 10
#define SCSI_CDROM_MAJOR 11
#define QIC02_TAPE_MAJOR 12
#define XT_DISK_MAJOR 13
#define SOUND_MAJOR 14
#define CDU31A_CDROM_MAJOR 15
#define JOYSTICK_MAJOR 15
#define GOLDSTAR_CDROM_MAJOR 16
#define OPTICS_CDROM_MAJOR 17
#define SANYO_CDROM_MAJOR 18
#define CYCLADES_MAJOR 19
#define CYCLADESAUX_MAJOR 20
#define MITSUMI_X_CDROM_MAJOR 20
#define MFM_ACORN_MAJOR 21
#define SCSI_GENERIC_MAJOR 21
#define Z8530_MAJOR 34
#define DIGI_MAJOR 23
#define IDE1_MAJOR 22
#define DIGICU_MAJOR 22
#define MITSUMI_CDROM_MAJOR 23
#define CDU535_CDROM_MAJOR 24
#define STL_SERIALMAJOR 24
#define MATSUSHITA_CDROM_MAJOR 25
#define STL_CALLOUTMAJOR 25
#define MATSUSHITA_CDROM2_MAJOR 26
#define QIC117_TAPE_MAJOR 27
#define MATSUSHITA_CDROM3_MAJOR 27
#define MATSUSHITA_CDROM4_MAJOR 28
#define STL_SIOMEMMAJOR 28
#define ACSI_MAJOR 28
#define AZTECH_CDROM_MAJOR 29
#define GRAPHDEV_MAJOR 29
#define SHMIQ_MAJOR 85
#define CM206_CDROM_MAJOR 32
#define IDE2_MAJOR 33
#define IDE3_MAJOR 34
#define XPRAM_MAJOR 35
#define NETLINK_MAJOR 36
#define PS2ESDI_MAJOR 36
#define IDETAPE_MAJOR 37
#define Z2RAM_MAJOR 37
#define APBLOCK_MAJOR 38
#define DDV_MAJOR 39
#define NBD_MAJOR 43
#define RISCOM8_NORMAL_MAJOR 48
#define DAC960_MAJOR 48
#define RISCOM8_CALLOUT_MAJOR 49
#define MKISS_MAJOR 55
#define DSP56K_MAJOR 55
#define IDE4_MAJOR 56
#define IDE5_MAJOR 57
#define LVM_BLK_MAJOR 58
#define SCSI_DISK1_MAJOR 65
#define SCSI_DISK2_MAJOR 66
#define SCSI_DISK3_MAJOR 67
#define SCSI_DISK4_MAJOR 68
#define SCSI_DISK5_MAJOR 69
#define SCSI_DISK6_MAJOR 70
#define SCSI_DISK7_MAJOR 71
#define COMPAQ_SMART2_MAJOR 72
#define COMPAQ_SMART2_MAJOR1 73
#define COMPAQ_SMART2_MAJOR2 74
#define COMPAQ_SMART2_MAJOR3 75
#define COMPAQ_SMART2_MAJOR4 76
#define COMPAQ_SMART2_MAJOR5 77
#define COMPAQ_SMART2_MAJOR6 78
#define COMPAQ_SMART2_MAJOR7 79
#define SPECIALIX_NORMAL_MAJOR 75
#define SPECIALIX_CALLOUT_MAJOR 76
#define COMPAQ_CISS_MAJOR 104
#define COMPAQ_CISS_MAJOR1 105
#define COMPAQ_CISS_MAJOR2 106
#define COMPAQ_CISS_MAJOR3 107
#define COMPAQ_CISS_MAJOR4 108
#define COMPAQ_CISS_MAJOR5 109
#define COMPAQ_CISS_MAJOR6 110
#define COMPAQ_CISS_MAJOR7 111
#define DASD_MAJOR 94
#define MDISK_MAJOR 95
#define I2O_MAJOR 80
#define IDE6_MAJOR 88
#define IDE7_MAJOR 89
#define IDE8_MAJOR 90
#define IDE9_MAJOR 91
#define UBD_MAJOR 98
#define AURORA_MAJOR 79
#define JSFD_MAJOR 99
#define PHONE_MAJOR 100
#define LVM_CHAR_MAJOR 109
#define RTF_MAJOR 150
#define RAW_MAJOR 162
#define USB_ACM_MAJOR 166
#define USB_ACM_AUX_MAJOR 167
#define USB_CHAR_MAJOR 180
#define UNIX98_PTY_MASTER_MAJOR 128
#define UNIX98_PTY_MAJOR_COUNT 8
#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
#define VXVM_MAJOR 199
#define VXSPEC_MAJOR 200
#define VXDMP_MAJOR 201
#define MSR_MAJOR 202
#define CPUID_MAJOR 203
#define OSST_MAJOR 206
#define IBM_TTY3270_MAJOR 227
#define IBM_FS3270_MAJOR 228
#define SCSI_DISK_MAJOR(M) ((M) == SCSI_DISK0_MAJOR || ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
#define SCSI_BLK_MAJOR(M) (SCSI_DISK_MAJOR(M) || (M) == SCSI_CDROM_MAJOR)
static __inline__ int scsi_blk_major(int m) {
return ((( m ) == 8 || (( m ) >= 65 && ( m ) <= 71 )) || ( m ) == 11 ) ;
}
# 21 "/home/root/kernel/kernel/include/linux/tty.h" 2
# 1 "/home/root/kernel/kernel/include/linux/termios.h" 1
#define _LINUX_TERMIOS_H
# 1 "/home/root/kernel/kernel/include/asm/termios.h" 1
#define _PPC_TERMIOS_H
# 1 "/home/root/kernel/kernel/include/asm/ioctls.h" 1
#define _ASM_PPC_IOCTLS_H
#define FIOCLEX _IO('f', 1)
#define FIONCLEX _IO('f', 2)
#define FIOASYNC _IOW('f', 125, int)
#define FIONBIO _IOW('f', 126, int)
#define FIONREAD _IOR('f', 127, int)
#define TIOCINQ FIONREAD
#define FIOQSIZE _IOR('f', 128, loff_t)
#define TIOCGETP _IOR('t', 8, struct sgttyb)
#define TIOCSETP _IOW('t', 9, struct sgttyb)
#define TIOCSETN _IOW('t', 10, struct sgttyb)
#define TIOCSETC _IOW('t', 17, struct tchars)
#define TIOCGETC _IOR('t', 18, struct tchars)
#define TCGETS _IOR('t', 19, struct termios)
#define TCSETS _IOW('t', 20, struct termios)
#define TCSETSW _IOW('t', 21, struct termios)
#define TCSETSF _IOW('t', 22, struct termios)
#define TCGETA _IOR('t', 23, struct termio)
#define TCSETA _IOW('t', 24, struct termio)
#define TCSETAW _IOW('t', 25, struct termio)
#define TCSETAF _IOW('t', 28, struct termio)
#define TCSBRK _IO('t', 29)
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110)
#define TIOCSTOP _IO('t', 111)
#define TIOCOUTQ _IOR('t', 115, int)
#define TIOCGLTC _IOR('t', 116, struct ltchars)
#define TIOCSLTC _IOW('t', 117, struct ltchars)
#define TIOCSPGRP _IOW('t', 118, int)
#define TIOCGPGRP _IOR('t', 119, int)
#define TIOCEXCL 0x540C
#define TIOCNXCL 0x540D
#define TIOCSCTTY 0x540E
#define TIOCSTI 0x5412
#define TIOCMGET 0x5415
#define TIOCMBIS 0x5416
#define TIOCMBIC 0x5417
#define TIOCMSET 0x5418
#define TIOCM_LE 0x001
#define TIOCM_DTR 0x002
#define TIOCM_RTS 0x004
#define TIOCM_ST 0x008
#define TIOCM_SR 0x010
#define TIOCM_CTS 0x020
#define TIOCM_CAR 0x040
#define TIOCM_RNG 0x080
#define TIOCM_DSR 0x100
#define TIOCM_CD TIOCM_CAR
#define TIOCM_RI TIOCM_RNG
#define TIOCGSOFTCAR 0x5419
#define TIOCSSOFTCAR 0x541A
#define TIOCLINUX 0x541C
#define TIOCCONS 0x541D
#define TIOCGSERIAL 0x541E
#define TIOCSSERIAL 0x541F
#define TIOCPKT 0x5420
#define TIOCPKT_DATA 0
#define TIOCPKT_FLUSHREAD 1
#define TIOCPKT_FLUSHWRITE 2
#define TIOCPKT_STOP 4
#define TIOCPKT_START 8
#define TIOCPKT_NOSTOP 16
#define TIOCPKT_DOSTOP 32
#define TIOCNOTTY 0x5422
#define TIOCSETD 0x5423
#define TIOCGETD 0x5424
#define TCSBRKP 0x5425
#define TIOCTTYGSTRUCT 0x5426
#define TIOCSBRK 0x5427
#define TIOCCBRK 0x5428
#define TIOCGSID 0x5429
#define TIOCGPTN _IOR('T',0x30, unsigned int)
#define TIOCSPTLCK _IOW('T',0x31, int)
#define TIOCSERCONFIG 0x5453
#define TIOCSERGWILD 0x5454
#define TIOCSERSWILD 0x5455
#define TIOCGLCKTRMIOS 0x5456
#define TIOCSLCKTRMIOS 0x5457
#define TIOCSERGSTRUCT 0x5458
#define TIOCSERGETLSR 0x5459
#define TIOCSER_TEMT 0x01
#define TIOCSERGETMULTI 0x545A
#define TIOCSERSETMULTI 0x545B
#define TIOCMIWAIT 0x545C
#define TIOCGICOUNT 0x545D
# 14 "/home/root/kernel/kernel/include/asm/termios.h" 2
# 1 "/home/root/kernel/kernel/include/asm/termbits.h" 1
#define _PPC_TERMBITS_H
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
#define NCCS 19
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc[19 ];
cc_t c_line;
speed_t c_ispeed;
speed_t c_ospeed;
};
#define VINTR 0
#define VQUIT 1
#define VERASE 2
#define VKILL 3
#define VEOF 4
#define VMIN 5
#define VEOL 6
#define VTIME 7
#define VEOL2 8
#define VSWTC 9
#define VWERASE 10
#define VREPRINT 11
#define VSUSP 12
#define VSTART 13
#define VSTOP 14
#define VLNEXT 15
#define VDISCARD 16
#define IGNBRK 0000001
#define BRKINT 0000002
#define IGNPAR 0000004
#define PARMRK 0000010
#define INPCK 0000020
#define ISTRIP 0000040
#define INLCR 0000100
#define IGNCR 0000200
#define ICRNL 0000400
#define IXON 0001000
#define IXOFF 0002000
#define IXANY 0004000
#define IUCLC 0010000
#define IMAXBEL 0020000
#define OPOST 0000001
#define ONLCR 0000002
#define OLCUC 0000004
#define OCRNL 0000010
#define ONOCR 0000020
#define ONLRET 0000040
#define OFILL 00000100
#define OFDEL 00000200
#define NLDLY 00001400
#define NL0 00000000
#define NL1 00000400
#define NL2 00001000
#define NL3 00001400
#define TABDLY 00006000
#define TAB0 00000000
#define TAB1 00002000
#define TAB2 00004000
#define TAB3 00006000
#define CRDLY 00030000
#define CR0 00000000
#define CR1 00010000
#define CR2 00020000
#define CR3 00030000
#define FFDLY 00040000
#define FF0 00000000
#define FF1 00040000
#define BSDLY 00100000
#define BS0 00000000
#define BS1 00100000
#define VTDLY 00200000
#define VT0 00000000
#define VT1 00200000
#define XTABS 01000000
#define CBAUD 0000377
#define B0 0000000
#define B50 0000001
#define B75 0000002
#define B110 0000003
#define B134 0000004
#define B150 0000005
#define B200 0000006
#define B300 0000007
#define B600 0000010
#define B1200 0000011
#define B1800 0000012
#define B2400 0000013
#define B4800 0000014
#define B9600 0000015
#define B19200 0000016
#define B38400 0000017
#define EXTA B19200
#define EXTB B38400
#define CBAUDEX 0000000
#define B57600 00020
#define B115200 00021
#define B230400 00022
#define B460800 00023
#define B500000 00024
#define B576000 00025
#define B921600 00026
#define B1000000 00027
#define B1152000 00030
#define B1500000 00031
#define B2000000 00032
#define B2500000 00033
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
#define CSIZE 00001400
#define CS5 00000000
#define CS6 00000400
#define CS7 00001000
#define CS8 00001400
#define CSTOPB 00002000
#define CREAD 00004000
#define PARENB 00010000
#define PARODD 00020000
#define HUPCL 00040000
#define CLOCAL 00100000
#define CRTSCTS 020000000000
#define ISIG 0x00000080
#define ICANON 0x00000100
#define XCASE 0x00004000
#define ECHO 0x00000008
#define ECHOE 0x00000002
#define ECHOK 0x00000004
#define ECHONL 0x00000010
#define NOFLSH 0x80000000
#define TOSTOP 0x00400000
#define ECHOCTL 0x00000040
#define ECHOPRT 0x00000020
#define ECHOKE 0x00000001
#define FLUSHO 0x00800000
#define PENDIN 0x20000000
#define IEXTEN 0x00000400
#define TCOOFF 0
#define TCOON 1
#define TCIOFF 2
#define TCION 3
#define TCIFLUSH 0
#define TCOFLUSH 1
#define TCIOFLUSH 2
#define TCSANOW 0
#define TCSADRAIN 1
#define TCSAFLUSH 2
# 15 "/home/root/kernel/kernel/include/asm/termios.h" 2
struct sgttyb {
char sg_ispeed;
char sg_ospeed;
char sg_erase;
char sg_kill;
short sg_flags;
};
struct tchars {
char t_intrc;
char t_quitc;
char t_startc;
char t_stopc;
char t_eofc;
char t_brkc;
};
struct ltchars {
char t_suspc;
char t_dsuspc;
char t_rprntc;
char t_flushc;
char t_werasc;
char t_lnextc;
};
struct winsize {
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
#define NCC 10
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[10 ];
};
#define _VINTR 0
#define _VQUIT 1
#define _VERASE 2
#define _VKILL 3
#define _VEOF 4
#define _VMIN 5
#define _VEOL 6
#define _VTIME 7
#define _VEOL2 8
#define _VSWTC 9
#define INIT_C_CC "\003\034\177\025\004\001\000\000\000\000\027\022\032\021\023\026\025"
#define TIOCM_OUT1 0x2000
#define TIOCM_OUT2 0x4000
#define TIOCM_LOOP 0x8000
#define N_TTY 0
#define N_SLIP 1
#define N_MOUSE 2
#define N_PPP 3
#define N_STRIP 4
#define N_AX25 5
#define N_X25 6
#define N_6PACK 7
#define N_MASC 8
#define N_R3964 9
#define N_PROFIBUS_FDL 10
#define N_IRDA 11
#define N_SMSBLOCK 12
#define N_HDLC 13
#define N_SYNC_PPP 14
#define N_HCI 15
#define SET_LOW_TERMIOS_BITS(termios, termio, x) { unsigned short __tmp; get_user(__tmp,&(termio)->x); (termios)->x = (0xffff0000 & (termios)->x) | __tmp; }
#define user_termio_to_kernel_termios(termios, termio) ({ SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); })
#define kernel_termios_to_user_termio(termio, termios) ({ put_user((termios)->c_iflag, &(termio)->c_iflag); put_user((termios)->c_oflag, &(termio)->c_oflag); put_user((termios)->c_cflag, &(termio)->c_cflag); put_user((termios)->c_lflag, &(termio)->c_lflag); put_user((termios)->c_line, &(termio)->c_line); copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); })
# 230 "/home/root/kernel/kernel/include/asm/termios.h"
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios))
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios))
# 5 "/home/root/kernel/kernel/include/linux/termios.h" 2
# 22 "/home/root/kernel/kernel/include/linux/tty.h" 2
# 1 "/home/root/kernel/kernel/include/linux/tty_driver.h" 1
#define _LINUX_TTY_DRIVER_H
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;
};
#define TTY_DRIVER_MAGIC 0x5402
#define TTY_DRIVER_INSTALLED 0x0001
#define TTY_DRIVER_RESET_TERMIOS 0x0002
#define TTY_DRIVER_REAL_RAW 0x0004
#define TTY_DRIVER_NO_DEVFS 0x0008
#define TTY_DRIVER_TYPE_SYSTEM 0x0001
#define TTY_DRIVER_TYPE_CONSOLE 0x0002
#define TTY_DRIVER_TYPE_SERIAL 0x0003
#define TTY_DRIVER_TYPE_PTY 0x0004
#define TTY_DRIVER_TYPE_SCC 0x0005
#define TTY_DRIVER_TYPE_SYSCONS 0x0006
#define SYSTEM_TYPE_TTY 0x0001
#define SYSTEM_TYPE_CONSOLE 0x0002
#define SYSTEM_TYPE_SYSCONS 0x0003
#define SYSTEM_TYPE_SYSPTMX 0x0004
#define PTY_TYPE_MASTER 0x0001
#define PTY_TYPE_SLAVE 0x0002
#define SERIAL_TYPE_NORMAL 1
#define SERIAL_TYPE_CALLOUT 2
# 24 "/home/root/kernel/kernel/include/linux/tty.h" 2
# 1 "/home/root/kernel/kernel/include/linux/tty_ldisc.h" 1
#define _LINUX_TTY_LDISC_H
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 *);
};
#define TTY_LDISC_MAGIC 0x5403
#define LDISC_FLAG_DEFINED 0x00000001
# 25 "/home/root/kernel/kernel/include/linux/tty.h" 2
#define NR_PTYS 256
#define NR_LDISCS 16
#define UNIX98_NR_MAJORS ((CONFIG_UNIX98_PTY_COUNT+NR_PTYS-1)/NR_PTYS)
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;
#define ORIG_X (screen_info.orig_x)
#define ORIG_Y (screen_info.orig_y)
#define ORIG_VIDEO_MODE (screen_info.orig_video_mode)
#define ORIG_VIDEO_COLS (screen_info.orig_video_cols)
#define ORIG_VIDEO_EGA_BX (screen_info.orig_video_ega_bx)
#define ORIG_VIDEO_LINES (screen_info.orig_video_lines)
#define ORIG_VIDEO_ISVGA (screen_info.orig_video_isVGA)
#define ORIG_VIDEO_POINTS (screen_info.orig_video_points)
#define VIDEO_TYPE_MDA 0x10
#define VIDEO_TYPE_CGA 0x11
#define VIDEO_TYPE_EGAM 0x20
#define VIDEO_TYPE_EGAC 0x21
#define VIDEO_TYPE_VGAC 0x22
#define VIDEO_TYPE_VLFB 0x23
#define VIDEO_TYPE_PICA_S3 0x30
#define VIDEO_TYPE_MIPS_G364 0x31
#define VIDEO_TYPE_SNI_RM 0x32
#define VIDEO_TYPE_SGI 0x33
#define VIDEO_TYPE_TGAC 0x40
#define VIDEO_TYPE_SUN 0x50
#define VIDEO_TYPE_SUNPCI 0x51
#define VIDEO_TYPE_PMAC 0x60
#define __DISABLED_CHAR '\0'
#define TTY_FLIPBUF_SIZE 512
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];
};
#define PTY_BUF_SIZE 4*TTY_FLIPBUF_SIZE
#define TTY_NORMAL 0
#define TTY_BREAK 1
#define TTY_FRAME 2
#define TTY_PARITY 3
#define TTY_OVERRUN 4
#define INTR_CHAR(tty) ((tty)->termios->c_cc[VINTR])
#define QUIT_CHAR(tty) ((tty)->termios->c_cc[VQUIT])
#define ERASE_CHAR(tty) ((tty)->termios->c_cc[VERASE])
#define KILL_CHAR(tty) ((tty)->termios->c_cc[VKILL])
#define EOF_CHAR(tty) ((tty)->termios->c_cc[VEOF])
#define TIME_CHAR(tty) ((tty)->termios->c_cc[VTIME])
#define MIN_CHAR(tty) ((tty)->termios->c_cc[VMIN])
#define SWTC_CHAR(tty) ((tty)->termios->c_cc[VSWTC])
#define START_CHAR(tty) ((tty)->termios->c_cc[VSTART])
#define STOP_CHAR(tty) ((tty)->termios->c_cc[VSTOP])
#define SUSP_CHAR(tty) ((tty)->termios->c_cc[VSUSP])
#define EOL_CHAR(tty) ((tty)->termios->c_cc[VEOL])
#define REPRINT_CHAR(tty) ((tty)->termios->c_cc[VREPRINT])
#define DISCARD_CHAR(tty) ((tty)->termios->c_cc[VDISCARD])
#define WERASE_CHAR(tty) ((tty)->termios->c_cc[VWERASE])
#define LNEXT_CHAR(tty) ((tty)->termios->c_cc[VLNEXT])
#define EOL2_CHAR(tty) ((tty)->termios->c_cc[VEOL2])
#define _I_FLAG(tty,f) ((tty)->termios->c_iflag & (f))
#define _O_FLAG(tty,f) ((tty)->termios->c_oflag & (f))
#define _C_FLAG(tty,f) ((tty)->termios->c_cflag & (f))
#define _L_FLAG(tty,f) ((tty)->termios->c_lflag & (f))
#define I_IGNBRK(tty) _I_FLAG((tty),IGNBRK)
#define I_BRKINT(tty) _I_FLAG((tty),BRKINT)
#define I_IGNPAR(tty) _I_FLAG((tty),IGNPAR)
#define I_PARMRK(tty) _I_FLAG((tty),PARMRK)
#define I_INPCK(tty) _I_FLAG((tty),INPCK)
#define I_ISTRIP(tty) _I_FLAG((tty),ISTRIP)
#define I_INLCR(tty) _I_FLAG((tty),INLCR)
#define I_IGNCR(tty) _I_FLAG((tty),IGNCR)
#define I_ICRNL(tty) _I_FLAG((tty),ICRNL)
#define I_IUCLC(tty) _I_FLAG((tty),IUCLC)
#define I_IXON(tty) _I_FLAG((tty),IXON)
#define I_IXANY(tty) _I_FLAG((tty),IXANY)
#define I_IXOFF(tty) _I_FLAG((tty),IXOFF)
#define I_IMAXBEL(tty) _I_FLAG((tty),IMAXBEL)
#define O_OPOST(tty) _O_FLAG((tty),OPOST)
#define O_OLCUC(tty) _O_FLAG((tty),OLCUC)
#define O_ONLCR(tty) _O_FLAG((tty),ONLCR)
#define O_OCRNL(tty) _O_FLAG((tty),OCRNL)
#define O_ONOCR(tty) _O_FLAG((tty),ONOCR)
#define O_ONLRET(tty) _O_FLAG((tty),ONLRET)
#define O_OFILL(tty) _O_FLAG((tty),OFILL)
#define O_OFDEL(tty) _O_FLAG((tty),OFDEL)
#define O_NLDLY(tty) _O_FLAG((tty),NLDLY)
#define O_CRDLY(tty) _O_FLAG((tty),CRDLY)
#define O_TABDLY(tty) _O_FLAG((tty),TABDLY)
#define O_BSDLY(tty) _O_FLAG((tty),BSDLY)
#define O_VTDLY(tty) _O_FLAG((tty),VTDLY)
#define O_FFDLY(tty) _O_FLAG((tty),FFDLY)
#define C_BAUD(tty) _C_FLAG((tty),CBAUD)
#define C_CSIZE(tty) _C_FLAG((tty),CSIZE)
#define C_CSTOPB(tty) _C_FLAG((tty),CSTOPB)
#define C_CREAD(tty) _C_FLAG((tty),CREAD)
#define C_PARENB(tty) _C_FLAG((tty),PARENB)
#define C_PARODD(tty) _C_FLAG((tty),PARODD)
#define C_HUPCL(tty) _C_FLAG((tty),HUPCL)
#define C_CLOCAL(tty) _C_FLAG((tty),CLOCAL)
#define C_CIBAUD(tty) _C_FLAG((tty),CIBAUD)
#define C_CRTSCTS(tty) _C_FLAG((tty),CRTSCTS)
#define L_ISIG(tty) _L_FLAG((tty),ISIG)
#define L_ICANON(tty) _L_FLAG((tty),ICANON)
#define L_XCASE(tty) _L_FLAG((tty),XCASE)
#define L_ECHO(tty) _L_FLAG((tty),ECHO)
#define L_ECHOE(tty) _L_FLAG((tty),ECHOE)
#define L_ECHOK(tty) _L_FLAG((tty),ECHOK)
#define L_ECHONL(tty) _L_FLAG((tty),ECHONL)
#define L_NOFLSH(tty) _L_FLAG((tty),NOFLSH)
#define L_TOSTOP(tty) _L_FLAG((tty),TOSTOP)
#define L_ECHOCTL(tty) _L_FLAG((tty),ECHOCTL)
#define L_ECHOPRT(tty) _L_FLAG((tty),ECHOPRT)
#define L_ECHOKE(tty) _L_FLAG((tty),ECHOKE)
#define L_FLUSHO(tty) _L_FLAG((tty),FLUSHO)
#define L_PENDIN(tty) _L_FLAG((tty),PENDIN)
#define L_IEXTEN(tty) _L_FLAG((tty),IEXTEN)
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;
#define N_TTY_BUF_SIZE 4096
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;
mutex_t read_lock;
struct tq_struct SAK_tq;
};
#define TTY_MAGIC 0x5401
#define TTY_THROTTLED 0
#define TTY_IO_ERROR 1
#define TTY_OTHER_CLOSED 2
#define TTY_EXCLUSIVE 3
#define TTY_DEBUG 4
#define TTY_DO_WRITE_WAKEUP 5
#define TTY_PUSH 6
#define TTY_CLOSING 7
#define TTY_DONT_FLIP 8
#define TTY_HW_COOK_OUT 14
#define TTY_HW_COOK_IN 15
#define TTY_PTY_LOCK 16
#define TTY_NO_WRITE_SPLIT 17
#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
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);
# 27 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/sem.h" 1
#define _LINUX_SEM_H
# 1 "/home/root/kernel/kernel/include/linux/ipc.h" 1
#define _LINUX_IPC_H
#define IPC_PRIVATE ((__kernel_key_t) 0)
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 "/home/root/kernel/kernel/include/asm/ipcbuf.h" 1
#define __PPC_IPCBUF_H__
struct ipc64_perm
{
__kernel_key_t key;
__kernel_uid_t uid;
__kernel_gid_t gid;
__kernel_uid_t cuid;
__kernel_gid_t cgid;
__kernel_mode_t mode;
unsigned long seq;
unsigned int __pad2;
unsigned long long __unused1;
unsigned long long __unused2;
};
# 21 "/home/root/kernel/kernel/include/linux/ipc.h" 2
#define IPC_CREAT 00001000
#define IPC_EXCL 00002000
#define IPC_NOWAIT 00004000
#define IPC_DIPC 00010000
#define IPC_OWN 00020000
#define IPC_RMID 0
#define IPC_SET 1
#define IPC_STAT 2
#define IPC_INFO 3
#define IPC_OLD 0
#define IPC_64 0x0100
#define IPCMNI 32768
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;
};
# 4 "/home/root/kernel/kernel/include/linux/sem.h" 2
#define SEM_UNDO 0x1000
#define GETPID 11
#define GETVAL 12
#define GETALL 13
#define GETNCNT 14
#define GETZCNT 15
#define SETVAL 16
#define SETALL 17
#define SEM_STAT 18
#define SEM_INFO 19
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 "/home/root/kernel/kernel/include/asm/sembuf.h" 1
#define _PPC_SEMBUF_H
struct semid64_ds {
struct ipc64_perm sem_perm;
unsigned int __unused1;
__kernel_time_t sem_otime;
unsigned int __unused2;
__kernel_time_t sem_ctime;
unsigned long sem_nsems;
unsigned long __unused3;
unsigned long __unused4;
};
# 35 "/home/root/kernel/kernel/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;
};
#define SEMMNI 128
#define SEMMSL 250
#define SEMMNS (SEMMNI*SEMMSL)
#define SEMOPM 32
#define SEMVMX 32767
#define SEMUME SEMOPM
#define SEMMNU SEMMNS
#define SEMAEM (SEMVMX >> 1)
#define SEMMAP SEMMNS
#define SEMUSZ 20
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;
};
long sys_semget (key_t key, int nsems, int semflg);
long sys_semop (int semid, struct sembuf *sops, unsigned nsops);
long sys_semctl (int semid, int semnum, int cmd, union semun arg);
# 28 "/home/root/kernel/kernel/include/linux/sched-defs.h" 2
# 1 "/home/root/kernel/kernel/include/linux/signal.h" 1
#define _LINUX_SIGNAL_H
# 1 "/home/root/kernel/kernel/include/asm/signal.h" 1
#define _ASMPPC_SIGNAL_H
struct siginfo;
#define _NSIG 64
#define _NSIG_BPW 32
#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
typedef unsigned long old_sigset_t;
typedef struct {
unsigned long sig[(64 / 32 ) ];
} sigset_t;
#define SIGHUP 1
#define SIGINT 2
#define SIGQUIT 3
#define SIGILL 4
#define SIGTRAP 5
#define SIGABRT 6
#define SIGIOT 6
#define SIGBUS 7
#define SIGFPE 8
#define SIGKILL 9
#define SIGUSR1 10
#define SIGSEGV 11
#define SIGUSR2 12
#define SIGPIPE 13
#define SIGALRM 14
#define SIGTERM 15
#define SIGSTKFLT 16
#define SIGCHLD 17
#define SIGCONT 18
#define SIGSTOP 19
#define SIGTSTP 20
#define SIGTTIN 21
#define SIGTTOU 22
#define SIGURG 23
#define SIGXCPU 24
#define SIGXFSZ 25
#define SIGVTALRM 26
#define SIGPROF 27
#define SIGWINCH 28
#define SIGIO 29
#define SIGPOLL SIGIO
#define SIGPWR 30
#define SIGSYS 31
#define SIGUNUSED 31
#define SIGRTMIN 32
#define SIGRTMAX (_NSIG-1)
#define SA_NOCLDSTOP 0x00000001
#define SA_NOCLDWAIT 0x00000002
#define SA_SIGINFO 0x00000004
#define SA_ONSTACK 0x08000000
#define SA_RESTART 0x10000000
#define SA_NODEFER 0x40000000
#define SA_RESETHAND 0x80000000
#define SA_NOMASK SA_NODEFER
#define SA_ONESHOT SA_RESETHAND
#define SA_INTERRUPT 0x20000000
#define SA_RESTORER 0x04000000
#define SS_ONSTACK 1
#define SS_DISABLE 2
#define MINSIGSTKSZ 2048
#define SIGSTKSZ 8192
#define SA_PROBE SA_ONESHOT
#define SA_SAMPLE_RANDOM SA_RESTART
#define SA_SHIRQ 0x04000000
#define SIG_BLOCK 0
#define SIG_UNBLOCK 1
#define SIG_SETMASK 2
typedef void (*__sighandler_t)(int);
#define SIG_DFL ((__sighandler_t)0)
#define SIG_IGN ((__sighandler_t)1)
#define SIG_ERR ((__sighandler_t)-1)
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;
};
typedef struct sigaltstack {
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 1 "/home/root/kernel/kernel/include/asm/sigcontext.h" 1
#define _ASM_PPC_SIGCONTEXT_H
struct sigcontext_struct {
unsigned long _unused[4];
int signal;
unsigned long handler;
unsigned long oldmask;
struct pt_regs *regs;
};
# 155 "/home/root/kernel/kernel/include/asm/signal.h" 2
# 4 "/home/root/kernel/kernel/include/linux/signal.h" 2
# 1 "/home/root/kernel/kernel/include/asm/siginfo.h" 1
#define _PPC_SIGINFO_H
typedef union sigval {
int sival_int;
void *sival_ptr;
} sigval_t;
#define SI_MAX_SIZE 128
#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 3)
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;
#define si_pid _sifields._kill._pid
#define si_uid _sifields._kill._uid
#define si_status _sifields._sigchld._status
#define si_utime _sifields._sigchld._utime
#define si_stime _sifields._sigchld._stime
#define si_value _sifields._rt._sigval
#define si_int _sifields._rt._sigval.sival_int
#define si_ptr _sifields._rt._sigval.sival_ptr
#define si_addr _sifields._sigfault._addr
#define si_band _sifields._sigpoll._band
#define si_fd _sifields._sigpoll._fd
#define __SI_MASK 0xffff0000
#define __SI_KILL (0 << 16)
#define __SI_TIMER (1 << 16)
#define __SI_POLL (2 << 16)
#define __SI_FAULT (3 << 16)
#define __SI_CHLD (4 << 16)
#define __SI_RT (5 << 16)
#define __SI_CODE(T,N) ((T) | ((N) & 0xffff))
# 100 "/home/root/kernel/kernel/include/asm/siginfo.h"
#define SI_USER 0
#define SI_KERNEL 0x80
#define SI_QUEUE -1
#define SI_TIMER __SI_CODE(__SI_TIMER,-2)
#define SI_MESGQ -3
#define SI_ASYNCIO -4
#define SI_SIGIO -5
#define SI_FROMUSER(siptr) ((siptr)->si_code <= 0)
#define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0)
#define ILL_ILLOPC (__SI_FAULT|1)
#define ILL_ILLOPN (__SI_FAULT|2)
#define ILL_ILLADR (__SI_FAULT|3)
#define ILL_ILLTRP (__SI_FAULT|4)
#define ILL_PRVOPC (__SI_FAULT|5)
#define ILL_PRVREG (__SI_FAULT|6)
#define ILL_COPROC (__SI_FAULT|7)
#define ILL_BADSTK (__SI_FAULT|8)
#define NSIGILL 8
#define FPE_INTDIV (__SI_FAULT|1)
#define FPE_INTOVF (__SI_FAULT|2)
#define FPE_FLTDIV (__SI_FAULT|3)
#define FPE_FLTOVF (__SI_FAULT|4)
#define FPE_FLTUND (__SI_FAULT|5)
#define FPE_FLTRES (__SI_FAULT|6)
#define FPE_FLTINV (__SI_FAULT|7)
#define FPE_FLTSUB (__SI_FAULT|8)
#define NSIGFPE 8
#define SEGV_MAPERR (__SI_FAULT|1)
#define SEGV_ACCERR (__SI_FAULT|2)
#define NSIGSEGV 2
#define BUS_ADRALN (__SI_FAULT|1)
#define BUS_ADRERR (__SI_FAULT|2)
#define BUS_OBJERR (__SI_FAULT|3)
#define NSIGBUS 3
#define TRAP_BRKPT (__SI_FAULT|1)
#define TRAP_TRACE (__SI_FAULT|2)
#define NSIGTRAP 2
#define CLD_EXITED (__SI_CHLD|1)
#define CLD_KILLED (__SI_CHLD|2)
#define CLD_DUMPED (__SI_CHLD|3)
#define CLD_TRAPPED (__SI_CHLD|4)
#define CLD_STOPPED (__SI_CHLD|5)
#define CLD_CONTINUED (__SI_CHLD|6)
#define NSIGCHLD 6
#define POLL_IN (__SI_POLL|1)
#define POLL_OUT (__SI_POLL|2)
#define POLL_MSG (__SI_POLL|3)
#define POLL_ERR (__SI_POLL|4)
#define POLL_PRI (__SI_POLL|5)
#define POLL_HUP (__SI_POLL|6)
#define NSIGPOLL 6
#define SIGEV_SIGNAL 0
#define SIGEV_NONE 1
#define SIGEV_THREAD 2
#define SIGEV_MAX_SIZE 64
#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
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;
#define sigev_notify_function _sigev_un._sigev_thread._function
#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
extern inline void copy_siginfo(siginfo_t *to, siginfo_t *from)
{
if (from->si_code < 0)
memcpy(to, from, sizeof(siginfo_t));
else
memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld));
}
extern int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from);
# 5 "/home/root/kernel/kernel/include/linux/signal.h" 2
#define SIGQUEUE_DYNAMIC 0
#define SIGQUEUE_UNDELIVERED 1
#define SIGQUEUE_DELIVERED 2
#define SIGQUEUE_ZOMBIE 3
struct sigqueue {
struct sigqueue *next;
siginfo_t info;
struct task_struct *task;
int type;
int prio;
heapqueue_node hq_node;
};
struct sigpending {
struct sigqueue *head, **tail;
sigset_t signal;
};
# 1 "/home/root/kernel/kernel/include/asm/bitops.h" 1
# 376 "/home/root/kernel/kernel/include/asm/bitops.h"
# 38 "/home/root/kernel/kernel/include/linux/signal.h" 2
static inline void sigaddset(sigset_t *set, int _sig)
{
unsigned long sig = _sig - 1;
if ((64 / 32 ) == 1)
set->sig[0] |= 1UL << sig;
else
set->sig[sig / 32 ] |= 1UL << (sig % 32 );
}
static inline void sigdelset(sigset_t *set, int _sig)
{
unsigned long sig = _sig - 1;
if ((64 / 32 ) == 1)
set->sig[0] &= ~(1UL << sig);
else
set->sig[sig / 32 ] &= ~(1UL << (sig % 32 ));
}
static inline int sigismember(sigset_t *set, int _sig)
{
unsigned long sig = _sig - 1;
if ((64 / 32 ) == 1)
return 1 & (set->sig[0] >> sig);
else
return 1 & (set->sig[sig / 32 ] >> (sig % 32 ));
}
static inline int sigfindinword(unsigned long word)
{
return ffz(~word);
}
#define sigmask(sig) (1UL << ((sig) - 1))
#define _SIG_SET_BINOP(name, op) static inline void name(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 < _NSIG_WORDS/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] = op(a0, b0); r->sig[4*i+1] = op(a1, b1); r->sig[4*i+2] = op(a2, b2); r->sig[4*i+3] = op(a3, b3); } switch (_NSIG_WORDS % 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] = op(a0, b0); r->sig[4*i+1] = op(a1, b1); r->sig[4*i+2] = op(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] = op(a0, b0); r->sig[4*i+1] = op(a1, b1); break; case 1: a0 = a->sig[4*i+0]; b0 = b->sig[4*i+0]; r->sig[4*i+0] = op(a0, b0); break; } }
# 117 "/home/root/kernel/kernel/include/linux/signal.h"
#define _sig_or(x,y) ((x) | (y))
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; } }
#define _sig_and(x,y) ((x) & (y))
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-
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-02-25 13:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-25 5:26 c/5775: Compilation stops abruptly varadhu_n
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).