提交 df2e71fb 编写于 作者: A akpm@osdl.org 提交者: Linus Torvalds

[PATCH] dump_thread() cleanup

)

From: Adrian Bunk <bunk@stusta.de>

- create one common dump_thread() prototype in kernel.h

- dump_thread() is only used in fs/binfmt_aout.c and can therefore be
  removed on all architectures where CONFIG_BINFMT_AOUT is not
  available
Signed-off-by: NAdrian Bunk <bunk@stusta.de>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 be4f1bb2
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <asm/unistd.h> #include <asm/unistd.h>
extern struct hwrpb_struct *hwrpb; extern struct hwrpb_struct *hwrpb;
extern void dump_thread(struct pt_regs *, struct user *);
extern spinlock_t rtc_lock; extern spinlock_t rtc_lock;
/* these are C runtime functions with special calling conventions: */ /* these are C runtime functions with special calling conventions: */
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
/* 2.3.x zone allocator, 1999 Andrea Arcangeli <andrea@suse.de> */ /* 2.3.x zone allocator, 1999 Andrea Arcangeli <andrea@suse.de> */
#include <linux/config.h> #include <linux/config.h>
#include <linux/pagemap.h>
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/kernel.h> #include <linux/kernel.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <asm/checksum.h> #include <asm/checksum.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(struct pt_regs *, struct user_fp_struct *); extern int dump_fpu(struct pt_regs *, struct user_fp_struct *);
extern void inswb(unsigned int port, void *to, int len); extern void inswb(unsigned int port, void *to, int len);
extern void outswb(unsigned int port, const void *to, int len); extern void outswb(unsigned int port, const void *to, int len);
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/fasttimer.h> #include <asm/fasttimer.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern unsigned long get_cmos_time(void); extern unsigned long get_cmos_time(void);
extern void __Udiv(void); extern void __Udiv(void);
extern void __Umod(void); extern void __Umod(void);
...@@ -33,7 +32,6 @@ extern void __lshrdi3(void); ...@@ -33,7 +32,6 @@ extern void __lshrdi3(void);
extern void iounmap(volatile void * __iomem); extern void iounmap(volatile void * __iomem);
/* Platform dependent support */ /* Platform dependent support */
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(get_cmos_time); EXPORT_SYMBOL(get_cmos_time);
EXPORT_SYMBOL(loops_per_usec); EXPORT_SYMBOL(loops_per_usec);
......
...@@ -257,34 +257,6 @@ void flush_thread(void) ...@@ -257,34 +257,6 @@ void flush_thread(void)
{ {
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
#if 0
int i;
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = regs->esp & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
for (i = 0; i < 8; i++)
dump->u_debugreg[i] = current->debugreg[i];
if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT;
dump->regs = *regs;
dump->u_fpvalid = dump_fpu (regs, &dump->i387);
#endif
}
/* Fill in the fpu structure for a core dump. */ /* Fill in the fpu structure for a core dump. */
int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
{ {
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <asm/hardirq.h> #include <asm/hardirq.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern long __memcpy_user(void *dst, const void *src, size_t count); extern long __memcpy_user(void *dst, const void *src, size_t count);
extern long __memset_user(void *dst, const void *src, size_t count); extern long __memset_user(void *dst, const void *src, size_t count);
...@@ -27,7 +26,6 @@ extern long __memset_user(void *dst, const void *src, size_t count); ...@@ -27,7 +26,6 @@ extern long __memset_user(void *dst, const void *src, size_t count);
EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(strnlen); EXPORT_SYMBOL(strnlen);
EXPORT_SYMBOL(strrchr); EXPORT_SYMBOL(strrchr);
EXPORT_SYMBOL(strstr); EXPORT_SYMBOL(strstr);
......
...@@ -243,28 +243,6 @@ int copy_thread(int nr, unsigned long clone_flags, ...@@ -243,28 +243,6 @@ int copy_thread(int nr, unsigned long clone_flags,
return 0; return 0;
} /* end copy_thread() */ } /* end copy_thread() */
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs *regs, struct user *dump)
{
#if 0
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = user_stack(regs) & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1))) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT;
dump->regs = *(struct user_context *) regs;
#endif
}
/* /*
* sys_execve() executes a new program. * sys_execve() executes a new program.
*/ */
......
...@@ -22,11 +22,8 @@ ...@@ -22,11 +22,8 @@
//asmlinkage long long __lshrdi3 (long long, int); //asmlinkage long long __lshrdi3 (long long, int);
extern char h8300_debug_device[]; extern char h8300_debug_device[];
extern void dump_thread(struct pt_regs *, struct user *);
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(strnlen); EXPORT_SYMBOL(strnlen);
EXPORT_SYMBOL(strrchr); EXPORT_SYMBOL(strrchr);
EXPORT_SYMBOL(strstr); EXPORT_SYMBOL(strstr);
......
...@@ -207,34 +207,6 @@ int copy_thread(int nr, unsigned long clone_flags, ...@@ -207,34 +207,6 @@ int copy_thread(int nr, unsigned long clone_flags,
return 0; return 0;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = rdusp() & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk +
(PAGE_SIZE-1))) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
dump->u_ar0 = (struct user_regs_struct *)(((int)(&dump->regs)) -((int)(dump)));
dump->regs.er0 = regs->er0;
dump->regs.er1 = regs->er1;
dump->regs.er2 = regs->er2;
dump->regs.er3 = regs->er3;
dump->regs.er4 = regs->er4;
dump->regs.er5 = regs->er5;
dump->regs.er6 = regs->er6;
dump->regs.orig_er0 = regs->orig_er0;
dump->regs.ccr = regs->ccr;
dump->regs.pc = regs->pc;
}
/* /*
* sys_execve() executes a new program. * sys_execve() executes a new program.
*/ */
......
...@@ -18,8 +18,6 @@ ...@@ -18,8 +18,6 @@
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
extern void dump_thread(struct pt_regs *, struct user *);
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE) #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
extern struct drive_info_struct drive_info; extern struct drive_info_struct drive_info;
EXPORT_SYMBOL(drive_info); EXPORT_SYMBOL(drive_info);
...@@ -27,7 +25,6 @@ EXPORT_SYMBOL(drive_info); ...@@ -27,7 +25,6 @@ EXPORT_SYMBOL(drive_info);
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(boot_cpu_data); EXPORT_SYMBOL(boot_cpu_data);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
......
...@@ -260,14 +260,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long spu, ...@@ -260,14 +260,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long spu,
return 0; return 0;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
/* M32R_FIXME */
}
/* /*
* Capture the user space registers if the task is not running (in user space) * Capture the user space registers if the task is not running (in user space)
*/ */
......
...@@ -23,8 +23,6 @@ asmlinkage long long __lshrdi3 (long long, int); ...@@ -23,8 +23,6 @@ asmlinkage long long __lshrdi3 (long long, int);
asmlinkage long long __muldi3 (long long, long long); asmlinkage long long __muldi3 (long long, long long);
extern char m68k_debug_device[]; extern char m68k_debug_device[];
extern void dump_thread(struct pt_regs *, struct user *);
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(m68k_machtype); EXPORT_SYMBOL(m68k_machtype);
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <asm/checksum.h> #include <asm/checksum.h>
#include <asm/current.h> #include <asm/current.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(struct pt_regs *, elf_fpregset_t *); extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
/* platform dependent support */ /* platform dependent support */
...@@ -26,7 +25,6 @@ extern int dump_fpu(struct pt_regs *, elf_fpregset_t *); ...@@ -26,7 +25,6 @@ extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(strnlen); EXPORT_SYMBOL(strnlen);
EXPORT_SYMBOL(strrchr); EXPORT_SYMBOL(strrchr);
EXPORT_SYMBOL(strstr); EXPORT_SYMBOL(strstr);
......
...@@ -275,52 +275,6 @@ int dump_fpu(struct pt_regs *regs, struct user_m68kfp_struct *fpu) ...@@ -275,52 +275,6 @@ int dump_fpu(struct pt_regs *regs, struct user_m68kfp_struct *fpu)
return 1; return 1;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
struct switch_stack *sw;
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = rdusp() & ~(PAGE_SIZE - 1);
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk +
(PAGE_SIZE-1))) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT;
dump->u_ar0 = (struct user_regs_struct *)((int)&dump->regs - (int)dump);
sw = ((struct switch_stack *)regs) - 1;
dump->regs.d1 = regs->d1;
dump->regs.d2 = regs->d2;
dump->regs.d3 = regs->d3;
dump->regs.d4 = regs->d4;
dump->regs.d5 = regs->d5;
dump->regs.d6 = sw->d6;
dump->regs.d7 = sw->d7;
dump->regs.a0 = regs->a0;
dump->regs.a1 = regs->a1;
dump->regs.a2 = regs->a2;
dump->regs.a3 = sw->a3;
dump->regs.a4 = sw->a4;
dump->regs.a5 = sw->a5;
dump->regs.a6 = sw->a6;
dump->regs.d0 = regs->d0;
dump->regs.orig_d0 = regs->orig_d0;
dump->regs.stkadj = regs->stkadj;
dump->regs.sr = regs->sr;
dump->regs.pc = regs->pc;
dump->regs.fmtvec = (regs->format << 12) | regs->vector;
/* dump floating point stuff */
dump->u_fpvalid = dump_fpu (regs, &dump->m68kfp);
}
/* /*
* Generic dumping code. Used for panic and debug. * Generic dumping code. Used for panic and debug.
*/ */
......
...@@ -352,27 +352,6 @@ int dump_fpu (struct pt_regs * regs, s390_fp_regs *fpregs) ...@@ -352,27 +352,6 @@ int dump_fpu (struct pt_regs * regs, s390_fp_regs *fpregs)
return 1; return 1;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
/* changed the size calculations - should hopefully work better. lbt */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = regs->gprs[15] & ~(PAGE_SIZE - 1);
dump->u_tsize = current->mm->end_code >> PAGE_SHIFT;
dump->u_dsize = (current->mm->brk + PAGE_SIZE - 1) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE)
dump->u_ssize = (TASK_SIZE - dump->start_stack) >> PAGE_SHIFT;
memcpy(&dump->regs, regs, sizeof(s390_regs));
dump_fpu (regs, &dump->regs.fp_regs);
dump->regs.per_info = current->thread.per_info;
}
unsigned long get_wchan(struct task_struct *p) unsigned long get_wchan(struct task_struct *p)
{ {
struct stack_frame *sf, *low, *high; struct stack_frame *sf, *low, *high;
......
...@@ -305,26 +305,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -305,26 +305,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
return 0; return 0;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
dump->magic = CMAGIC;
dump->start_code = current->mm->start_code;
dump->start_data = current->mm->start_data;
dump->start_stack = regs->regs[15] & ~(PAGE_SIZE - 1);
dump->u_tsize = (current->mm->end_code - dump->start_code) >> PAGE_SHIFT;
dump->u_dsize = (current->mm->brk + (PAGE_SIZE-1) - dump->start_data) >> PAGE_SHIFT;
dump->u_ssize = (current->mm->start_stack - dump->start_stack +
PAGE_SIZE - 1) >> PAGE_SHIFT;
/* Debug registers will come here. */
dump->regs = *regs;
dump->u_fpvalid = dump_fpu(regs, &dump->fpu);
}
/* Tracing by user break controller. */ /* Tracing by user break controller. */
static void static void
ubc_set_tracing(int asid, unsigned long pc) ubc_set_tracing(int asid, unsigned long pc)
......
...@@ -21,14 +21,12 @@ ...@@ -21,14 +21,12 @@
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/checksum.h> #include <asm/checksum.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(struct pt_regs *, elf_fpregset_t *); extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
extern struct hw_interrupt_type no_irq_type; extern struct hw_interrupt_type no_irq_type;
EXPORT_SYMBOL(sh_mv); EXPORT_SYMBOL(sh_mv);
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(enable_irq); EXPORT_SYMBOL(enable_irq);
......
...@@ -775,26 +775,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, ...@@ -775,26 +775,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
return 0; return 0;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
{
dump->magic = CMAGIC;
dump->start_code = current->mm->start_code;
dump->start_data = current->mm->start_data;
dump->start_stack = regs->regs[15] & ~(PAGE_SIZE - 1);
dump->u_tsize = (current->mm->end_code - dump->start_code) >> PAGE_SHIFT;
dump->u_dsize = (current->mm->brk + (PAGE_SIZE-1) - dump->start_data) >> PAGE_SHIFT;
dump->u_ssize = (current->mm->start_stack - dump->start_stack +
PAGE_SIZE - 1) >> PAGE_SHIFT;
/* Debug registers will come here. */
dump->regs = *regs;
dump->u_fpvalid = dump_fpu(regs, &dump->fpu);
}
asmlinkage int sys_fork(unsigned long r2, unsigned long r3, asmlinkage int sys_fork(unsigned long r2, unsigned long r3,
unsigned long r4, unsigned long r5, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7, unsigned long r6, unsigned long r7,
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/irq.h> #include <asm/irq.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(struct pt_regs *, elf_fpregset_t *); extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
#if 0 #if 0
...@@ -41,7 +40,6 @@ EXPORT_SYMBOL(drive_info); ...@@ -41,7 +40,6 @@ EXPORT_SYMBOL(drive_info);
#endif #endif
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(enable_irq); EXPORT_SYMBOL(enable_irq);
......
...@@ -82,8 +82,6 @@ extern int __lshrdi3(int, int); ...@@ -82,8 +82,6 @@ extern int __lshrdi3(int, int);
extern int __muldi3(int, int); extern int __muldi3(int, int);
extern int __divdi3(int, int); extern int __divdi3(int, int);
extern void dump_thread(struct pt_regs *, struct user *);
/* Private functions with odd calling conventions. */ /* Private functions with odd calling conventions. */
extern void ___atomic24_add(void); extern void ___atomic24_add(void);
extern void ___atomic24_sub(void); extern void ___atomic24_sub(void);
......
...@@ -36,8 +36,6 @@ static int load_aout32_binary(struct linux_binprm *, struct pt_regs * regs); ...@@ -36,8 +36,6 @@ static int load_aout32_binary(struct linux_binprm *, struct pt_regs * regs);
static int load_aout32_library(struct file*); static int load_aout32_library(struct file*);
static int aout32_core_dump(long signr, struct pt_regs * regs, struct file *file); static int aout32_core_dump(long signr, struct pt_regs * regs, struct file *file);
extern void dump_thread(struct pt_regs *, struct user *);
static struct linux_binfmt aout32_format = { static struct linux_binfmt aout32_format = {
NULL, THIS_MODULE, load_aout32_binary, load_aout32_library, aout32_core_dump, NULL, THIS_MODULE, load_aout32_binary, load_aout32_library, aout32_core_dump,
PAGE_SIZE PAGE_SIZE
......
...@@ -94,7 +94,6 @@ extern void (*prom_palette)(int); ...@@ -94,7 +94,6 @@ extern void (*prom_palette)(int);
extern int __ashrdi3(int, int); extern int __ashrdi3(int, int);
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs); extern int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs);
extern unsigned long phys_base; extern unsigned long phys_base;
...@@ -241,7 +240,6 @@ EXPORT_SYMBOL(io_remap_pfn_range); ...@@ -241,7 +240,6 @@ EXPORT_SYMBOL(io_remap_pfn_range);
EXPORT_SYMBOL(_sigpause_common); EXPORT_SYMBOL(_sigpause_common);
EXPORT_SYMBOL(verify_compat_iovec); EXPORT_SYMBOL(verify_compat_iovec);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(pte_alloc_one_kernel); EXPORT_SYMBOL(pte_alloc_one_kernel);
#ifndef CONFIG_SMP #ifndef CONFIG_SMP
......
...@@ -163,30 +163,6 @@ int copy_thread (int nr, unsigned long clone_flags, ...@@ -163,30 +163,6 @@ int copy_thread (int nr, unsigned long clone_flags,
return 0; return 0;
} }
/*
* fill in the user structure for a core dump..
*/
void dump_thread (struct pt_regs *regs, struct user *dump)
{
#if 0 /* Later. XXX */
dump->magic = CMAGIC;
dump->start_code = 0;
dump->start_stack = regs->gpr[GPR_SP];
dump->u_tsize = ((unsigned long) current->mm->end_code) >> PAGE_SHIFT;
dump->u_dsize = ((unsigned long) (current->mm->brk +
(PAGE_SIZE-1))) >> PAGE_SHIFT;
dump->u_dsize -= dump->u_tsize;
dump->u_ssize = 0;
if (dump->start_stack < TASK_SIZE)
dump->u_ssize = ((unsigned long) (TASK_SIZE - dump->start_stack)) >> PAGE_SHIFT;
dump->u_ar0 = (struct user_regs_struct *)((int)&dump->regs - (int)dump);
dump->regs = *regs;
dump->u_fpvalid = 0;
#endif
}
/* /*
* sys_execve() executes a new program. * sys_execve() executes a new program.
*/ */
......
...@@ -21,8 +21,6 @@ extern void *trap_table; ...@@ -21,8 +21,6 @@ extern void *trap_table;
EXPORT_SYMBOL (trap_table); EXPORT_SYMBOL (trap_table);
/* platform dependent support */ /* platform dependent support */
extern void dump_thread (struct pt_regs *, struct user *);
EXPORT_SYMBOL (dump_thread);
EXPORT_SYMBOL (kernel_thread); EXPORT_SYMBOL (kernel_thread);
EXPORT_SYMBOL (enable_irq); EXPORT_SYMBOL (enable_irq);
EXPORT_SYMBOL (disable_irq); EXPORT_SYMBOL (disable_irq);
......
...@@ -33,8 +33,6 @@ static int load_aout_binary(struct linux_binprm *, struct pt_regs * regs); ...@@ -33,8 +33,6 @@ static int load_aout_binary(struct linux_binprm *, struct pt_regs * regs);
static int load_aout_library(struct file*); static int load_aout_library(struct file*);
static int aout_core_dump(long signr, struct pt_regs * regs, struct file *file); static int aout_core_dump(long signr, struct pt_regs * regs, struct file *file);
extern void dump_thread(struct pt_regs *, struct user *);
static struct linux_binfmt aout_format = { static struct linux_binfmt aout_format = {
.module = THIS_MODULE, .module = THIS_MODULE,
.load_binary = load_aout_binary, .load_binary = load_aout_binary,
......
...@@ -77,8 +77,6 @@ static int load_flat_shared_library(int id, struct lib_info *p); ...@@ -77,8 +77,6 @@ static int load_flat_shared_library(int id, struct lib_info *p);
static int load_flat_binary(struct linux_binprm *, struct pt_regs * regs); static int load_flat_binary(struct linux_binprm *, struct pt_regs * regs);
static int flat_core_dump(long signr, struct pt_regs * regs, struct file *file); static int flat_core_dump(long signr, struct pt_regs * regs, struct file *file);
extern void dump_thread(struct pt_regs *, struct user *);
static struct linux_binfmt flat_format = { static struct linux_binfmt flat_format = {
.module = THIS_MODULE, .module = THIS_MODULE,
.load_binary = load_flat_binary, .load_binary = load_flat_binary,
......
...@@ -89,7 +89,6 @@ extern struct task_struct *alloc_task_struct(void); ...@@ -89,7 +89,6 @@ extern struct task_struct *alloc_task_struct(void);
extern void release_thread(struct task_struct *); extern void release_thread(struct task_struct *);
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
extern void dump_thread(struct pt_regs *regs, struct user *u);
static inline void prepare_to_copy(struct task_struct *tsk) static inline void prepare_to_copy(struct task_struct *tsk)
{ {
......
...@@ -47,6 +47,8 @@ extern int console_printk[]; ...@@ -47,6 +47,8 @@ extern int console_printk[];
#define default_console_loglevel (console_printk[3]) #define default_console_loglevel (console_printk[3])
struct completion; struct completion;
struct pt_regs;
struct user;
/** /**
* might_sleep - annotation for functions that can sleep * might_sleep - annotation for functions that can sleep
...@@ -123,6 +125,8 @@ extern int __kernel_text_address(unsigned long addr); ...@@ -123,6 +125,8 @@ extern int __kernel_text_address(unsigned long addr);
extern int kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr);
extern int session_of_pgrp(int pgrp); extern int session_of_pgrp(int pgrp);
extern void dump_thread(struct pt_regs *regs, struct user *dump);
#ifdef CONFIG_PRINTK #ifdef CONFIG_PRINTK
asmlinkage int vprintk(const char *fmt, va_list args) asmlinkage int vprintk(const char *fmt, va_list args)
__attribute__ ((format (printf, 1, 0))); __attribute__ ((format (printf, 1, 0)));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册