uml: throw out CONFIG_MODE_TT
This patchset throws out tt mode, which has been non-functional for a while. This is done in phases, interspersed with code cleanups on the affected files. The removal is done as follows: remove all code, config options, and files which depend on CONFIG_MODE_TT get rid of the CHOOSE_MODE macro, which decided whether to call tt-mode or skas-mode code, and replace invocations with their skas portions replace all now-trivial procedures with their skas equivalents There are now a bunch of now-redundant pieces of data structures, including mode-specific pieces of the thread structure, pt_regs, and mm_context. These are all replaced with their skas-specific contents. As part of the ongoing style compliance project, I made a style pass over all files that were changed. There are three such patches, one for each phase, covering the files affected by that phase but no later ones. I noticed that we weren't freeing the LDT state associated with a process when it exited, so that's fixed in one of the later patches. The last patch is a tidying patch which I've had for a while, but which caused inexplicable crashes under tt mode. Since that is no longer a problem, this can now go in. This patch: Start getting rid of tt mode support. This patch throws out CONFIG_MODE_TT and all config options, code, and files which depend on it. CONFIG_MODE_SKAS is gone and everything that depends on it is included unconditionally. The few changed lines are in re-written Kconfig help, lines which needed something skas-related removed from them, and a few more which weren't strictly deletions. Signed-off-by: Jeff Dike <jdike@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Este commit está contenido en:
@@ -28,7 +28,6 @@ extern unsigned long _unprotected_end;
|
||||
extern unsigned long brk_start;
|
||||
|
||||
extern int linux_main(int argc, char **argv);
|
||||
extern void set_cmdline(char *cmd);
|
||||
|
||||
extern void (*sig_info[])(int, union uml_pt_regs *);
|
||||
|
||||
|
@@ -8,26 +8,8 @@
|
||||
|
||||
#include "uml-config.h"
|
||||
|
||||
#if defined(UML_CONFIG_MODE_TT) && defined(UML_CONFIG_MODE_SKAS)
|
||||
#define CHOOSE_MODE(tt, skas) (mode_tt ? (tt) : (skas))
|
||||
|
||||
extern int mode_tt;
|
||||
static inline void *__choose_mode(void *tt, void *skas) {
|
||||
return mode_tt ? tt : skas;
|
||||
}
|
||||
|
||||
#define __CHOOSE_MODE(tt, skas) (*( (typeof(tt) *) __choose_mode(&(tt), &(skas))))
|
||||
|
||||
#elif defined(UML_CONFIG_MODE_SKAS)
|
||||
#define CHOOSE_MODE(tt, skas) (skas)
|
||||
|
||||
#elif defined(UML_CONFIG_MODE_TT)
|
||||
#define CHOOSE_MODE(tt, skas) (tt)
|
||||
|
||||
#else
|
||||
#error CONFIG_MODE_SKAS and CONFIG_MODE_TT are both disabled
|
||||
#endif
|
||||
|
||||
#define CHOOSE_MODE_PROC(tt, skas, args...) \
|
||||
CHOOSE_MODE(tt(args), skas(args))
|
||||
|
||||
|
@@ -1,9 +1,6 @@
|
||||
/* for use by sys-$SUBARCH/kernel-offsets.c */
|
||||
|
||||
DEFINE(KERNEL_MADV_REMOVE, MADV_REMOVE);
|
||||
#ifdef CONFIG_MODE_TT
|
||||
OFFSET(HOST_TASK_EXTERN_PID, task_struct, thread.mode.tt.extern_pid);
|
||||
#endif
|
||||
|
||||
OFFSET(HOST_TASK_REGS, task_struct, thread.regs);
|
||||
OFFSET(HOST_TASK_PID, task_struct, pid);
|
||||
|
@@ -30,8 +30,4 @@ extern void deactivate_fd(int fd, int irqnum);
|
||||
extern int deactivate_all_fds(void);
|
||||
extern int activate_ipi(int fd, int pid);
|
||||
|
||||
#ifdef CONFIG_MODE_TT
|
||||
extern void forward_interrupts(int pid);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -34,9 +34,6 @@ extern int nsyscalls;
|
||||
UML_ROUND_DOWN(((unsigned long) addr) + PAGE_SIZE - 1)
|
||||
|
||||
extern int kernel_fork(unsigned long flags, int (*fn)(void *), void * arg);
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
extern unsigned long stack_sp(unsigned long page);
|
||||
#endif
|
||||
extern int kernel_thread_proc(void *data);
|
||||
extern void syscall_segv(int sig);
|
||||
extern int current_pid(void);
|
||||
@@ -82,9 +79,6 @@ extern void check_stack_overflow(void *ptr);
|
||||
extern void relay_signal(int sig, union uml_pt_regs *regs);
|
||||
extern int user_context(unsigned long sp);
|
||||
extern void timer_irq(union uml_pt_regs *regs);
|
||||
#ifdef CONFIG_MODE_TT
|
||||
extern void unprotect_stack(unsigned long stack);
|
||||
#endif
|
||||
extern void do_uml_exitcalls(void);
|
||||
extern int attach_debugger(int idle_pid, int pid, int stop);
|
||||
extern int config_gdb(char *str);
|
||||
|
@@ -6,25 +6,6 @@
|
||||
#ifndef __MODE_H__
|
||||
#define __MODE_H__
|
||||
|
||||
#include "uml-config.h"
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#include "mode-tt.h"
|
||||
#endif
|
||||
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
#include "mode-skas.h"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
@@ -6,12 +6,6 @@
|
||||
#ifndef __MODE_KERN_H__
|
||||
#define __MODE_KERN_H__
|
||||
|
||||
#ifdef CONFIG_MODE_TT
|
||||
#include "mode_kern_tt.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MODE_SKAS
|
||||
#include "mode_kern_skas.h"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -178,11 +178,7 @@ extern void check_host_supports_tls(int *supports_tls, int *tls_min);
|
||||
|
||||
/* Make sure they are clear when running in TT mode. Required by
|
||||
* SEGV_MAYBE_FIXABLE */
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
#define clear_can_do_skas() do { ptrace_faultinfo = proc_mm = 0; } while (0)
|
||||
#else
|
||||
#define clear_can_do_skas() do {} while (0)
|
||||
#endif
|
||||
|
||||
/* mem.c */
|
||||
extern int create_mem_file(unsigned long long len);
|
||||
@@ -193,18 +189,11 @@ extern int os_process_parent(int pid);
|
||||
extern void os_stop_process(int pid);
|
||||
extern void os_kill_process(int pid, int reap_child);
|
||||
extern void os_kill_ptraced_process(int pid, int reap_child);
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
extern void os_usr1_process(int pid);
|
||||
#endif
|
||||
extern long os_ptrace_ldt(long pid, long addr, long data);
|
||||
|
||||
extern int os_getpid(void);
|
||||
extern int os_getpgrp(void);
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
extern void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int));
|
||||
extern void stop(void);
|
||||
#endif
|
||||
extern void init_new_thread_signals(void);
|
||||
extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr);
|
||||
|
||||
@@ -217,18 +206,6 @@ extern int os_drop_memory(void *addr, int length);
|
||||
extern int can_drop_memory(void);
|
||||
extern void os_flush_stdout(void);
|
||||
|
||||
/* tt.c
|
||||
* for tt mode only (will be deleted in future...)
|
||||
*/
|
||||
extern void forward_ipi(int fd, int pid);
|
||||
extern void kill_child_dead(int pid);
|
||||
extern int wait_for_stop(int pid, int sig, int cont_type, void *relay);
|
||||
extern int protect_memory(unsigned long addr, unsigned long len,
|
||||
int r, int w, int x, int must_succeed);
|
||||
extern void forward_pending_sigio(int target);
|
||||
extern int start_fork_tramp(void *arg, unsigned long temp_stack,
|
||||
int clone_flags, int (*tramp)(void *));
|
||||
|
||||
/* uaccess.c */
|
||||
extern unsigned long __do_user_copy(void *to, const void *from, int n,
|
||||
void **fault_addr, void **fault_catcher,
|
||||
@@ -281,9 +258,6 @@ extern void os_dump_core(void);
|
||||
extern void switch_timers(int to_real);
|
||||
extern void idle_sleep(int secs);
|
||||
extern int set_interval(int is_virtual);
|
||||
#ifdef CONFIG_MODE_TT
|
||||
extern void enable_timer(void);
|
||||
#endif
|
||||
extern void disable_timer(void);
|
||||
extern void uml_idle_timer(void);
|
||||
extern unsigned long long os_nsecs(void);
|
||||
|
@@ -14,12 +14,7 @@
|
||||
#define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long))
|
||||
#define MAX_REG_OFFSET (UM_FRAME_SIZE)
|
||||
|
||||
#ifdef UML_CONFIG_PT_PROXY
|
||||
extern void update_debugregs(int seq);
|
||||
#else
|
||||
static inline void update_debugregs(int seq) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* syscall emulation path in ptrace */
|
||||
|
||||
@@ -31,12 +26,6 @@ void set_using_sysemu(int value);
|
||||
int get_using_sysemu(void);
|
||||
extern int sysemu_supported;
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#include "sysdep/sc.h"
|
||||
#endif
|
||||
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
|
||||
#include "skas_ptregs.h"
|
||||
|
||||
#define REGS_IP(r) ((r)[HOST_IP])
|
||||
@@ -60,20 +49,11 @@ extern int sysemu_supported;
|
||||
|
||||
#define REGS_RESTART_SYSCALL(r) IP_RESTART_SYSCALL(REGS_IP(r))
|
||||
|
||||
#endif
|
||||
#ifndef PTRACE_SYSEMU_SINGLESTEP
|
||||
#define PTRACE_SYSEMU_SINGLESTEP 32
|
||||
#endif
|
||||
|
||||
union uml_pt_regs {
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
struct tt_regs {
|
||||
long syscall;
|
||||
void *sc;
|
||||
struct faultinfo faultinfo;
|
||||
} tt;
|
||||
#endif
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
struct skas_regs {
|
||||
unsigned long regs[MAX_REG_NR];
|
||||
unsigned long fp[HOST_FP_SIZE];
|
||||
@@ -82,13 +62,10 @@ union uml_pt_regs {
|
||||
long syscall;
|
||||
int is_user;
|
||||
} skas;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define EMPTY_UML_PT_REGS { }
|
||||
|
||||
extern int mode_tt;
|
||||
|
||||
#define UPT_SC(r) ((r)->tt.sc)
|
||||
#define UPT_IP(r) \
|
||||
__CHOOSE_MODE(SC_IP(UPT_SC(r)), REGS_IP((r)->skas.regs))
|
||||
|
@@ -30,11 +30,7 @@
|
||||
#define SEGV_IS_FIXABLE(fi) ((fi)->trap_no == 14)
|
||||
|
||||
/* SKAS3 has no trap_no on i386, but get_skas_faultinfo() sets it to 0. */
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
#define SEGV_MAYBE_FIXABLE(fi) ((fi)->trap_no == 0 && ptrace_faultinfo)
|
||||
#else
|
||||
#define SEGV_MAYBE_FIXABLE(fi) 0
|
||||
#endif
|
||||
|
||||
extern unsigned long *sc_sigmask(void *sc_ptr);
|
||||
extern int sc_get_fpregs(unsigned long buf, void *sc_ptr);
|
||||
|
@@ -4,8 +4,5 @@
|
||||
#include <kern_constants.h>
|
||||
|
||||
#define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS]))
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2003 PathScale, Inc.
|
||||
* Copyright (C) 2003 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
|
||||
*
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
@@ -14,11 +15,6 @@
|
||||
#define MAX_REG_OFFSET (UM_FRAME_SIZE)
|
||||
#define MAX_REG_NR ((MAX_REG_OFFSET) / sizeof(unsigned long))
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#include "sysdep/sc.h"
|
||||
#endif
|
||||
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
#include "skas_ptregs.h"
|
||||
|
||||
#define REGS_IP(r) ((r)[HOST_IP])
|
||||
@@ -88,21 +84,10 @@
|
||||
|
||||
#define REGS_ERR(r) ((r)->fault_type)
|
||||
|
||||
#endif
|
||||
|
||||
#include "choose-mode.h"
|
||||
|
||||
/* XXX */
|
||||
union uml_pt_regs {
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
struct tt_regs {
|
||||
long syscall;
|
||||
unsigned long orig_rax;
|
||||
void *sc;
|
||||
struct faultinfo faultinfo;
|
||||
} tt;
|
||||
#endif
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
struct skas_regs {
|
||||
unsigned long regs[MAX_REG_NR];
|
||||
unsigned long fp[HOST_FP_SIZE];
|
||||
@@ -110,14 +95,10 @@ union uml_pt_regs {
|
||||
long syscall;
|
||||
int is_user;
|
||||
} skas;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define EMPTY_UML_PT_REGS { }
|
||||
|
||||
/* XXX */
|
||||
extern int mode_tt;
|
||||
|
||||
#define UPT_RBX(r) __CHOOSE_MODE(SC_RBX(UPT_SC(r)), REGS_RBX((r)->skas.regs))
|
||||
#define UPT_RCX(r) __CHOOSE_MODE(SC_RCX(UPT_SC(r)), REGS_RCX((r)->skas.regs))
|
||||
#define UPT_RDX(r) __CHOOSE_MODE(SC_RDX(UPT_SC(r)), REGS_RDX((r)->skas.regs))
|
||||
|
@@ -3,8 +3,4 @@
|
||||
|
||||
#include <kern_constants.h>
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) and
|
||||
* Lars Brinkhoff.
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __UML_TT_DEBUG_H
|
||||
#define __UML_TT_DEBUG_H
|
||||
|
||||
extern int debugger_proxy(int status, pid_t pid);
|
||||
extern void child_proxy(pid_t pid, int status);
|
||||
extern void init_proxy (pid_t pid, int waiting, int status);
|
||||
extern int start_debugger(char *prog, int startup, int stop, int *debugger_fd);
|
||||
extern void fake_child_exit(void);
|
||||
extern int gdb_config(char *str);
|
||||
extern int gdb_remove(int unused);
|
||||
|
||||
#endif
|
@@ -1,12 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __TT_MMU_H
|
||||
#define __TT_MMU_H
|
||||
|
||||
struct mmu_context_tt {
|
||||
};
|
||||
|
||||
#endif
|
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __MODE_TT_H__
|
||||
#define __MODE_TT_H__
|
||||
|
||||
#include "sysdep/ptrace.h"
|
||||
|
||||
enum { OP_NONE, OP_EXEC, OP_FORK, OP_TRACE_ON, OP_REBOOT, OP_HALT, OP_CB };
|
||||
|
||||
extern int tracing_pid;
|
||||
|
||||
extern int tracer(int (*init_proc)(void *), void *sp);
|
||||
extern void sig_handler_common_tt(int sig, void *sc);
|
||||
extern void syscall_handler_tt(int sig, union uml_pt_regs *regs);
|
||||
extern void reboot_tt(void);
|
||||
extern void halt_tt(void);
|
||||
extern int is_tracer_winch(int pid, int fd, void *data);
|
||||
extern void kill_off_processes_tt(void);
|
||||
|
||||
#endif
|
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __TT_MODE_KERN_H__
|
||||
#define __TT_MODE_KERN_H__
|
||||
|
||||
#include "linux/sched.h"
|
||||
#include "asm/page.h"
|
||||
#include "asm/ptrace.h"
|
||||
#include "asm/uaccess.h"
|
||||
|
||||
extern void switch_to_tt(void *prev, void *next);
|
||||
extern void flush_thread_tt(void);
|
||||
extern void start_thread_tt(struct pt_regs *regs, unsigned long eip,
|
||||
unsigned long esp);
|
||||
extern int copy_thread_tt(int nr, unsigned long clone_flags, unsigned long sp,
|
||||
unsigned long stack_top, struct task_struct *p,
|
||||
struct pt_regs *regs);
|
||||
extern void release_thread_tt(struct task_struct *task);
|
||||
extern void initial_thread_cb_tt(void (*proc)(void *), void *arg);
|
||||
extern void init_idle_tt(void);
|
||||
extern void flush_tlb_kernel_range_tt(unsigned long start, unsigned long end);
|
||||
extern void flush_tlb_kernel_vm_tt(void);
|
||||
extern void __flush_tlb_one_tt(unsigned long addr);
|
||||
extern void flush_tlb_range_tt(struct vm_area_struct *vma,
|
||||
unsigned long start, unsigned long end);
|
||||
extern void flush_tlb_mm_tt(struct mm_struct *mm);
|
||||
extern void force_flush_all_tt(void);
|
||||
extern long execute_syscall_tt(void *r);
|
||||
extern void before_mem_tt(unsigned long brk_start);
|
||||
extern unsigned long set_task_sizes_tt(unsigned long *task_size_out);
|
||||
extern int start_uml_tt(void);
|
||||
extern int external_pid_tt(struct task_struct *task);
|
||||
extern int thread_pid_tt(struct task_struct *task);
|
||||
|
||||
#define kmem_end_tt (host_task_size - ABOVE_KMEM)
|
||||
|
||||
#endif
|
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __TT_H__
|
||||
#define __TT_H__
|
||||
|
||||
#include "sysdep/ptrace.h"
|
||||
|
||||
extern int gdb_pid;
|
||||
extern int debug;
|
||||
extern int debug_stop;
|
||||
extern int debug_trace;
|
||||
|
||||
extern int honeypot;
|
||||
|
||||
extern int fork_tramp(void *sig_stack);
|
||||
extern int do_proc_op(void *t, int proc_id);
|
||||
extern int tracer(int (*init_proc)(void *), void *sp);
|
||||
extern void attach_process(int pid);
|
||||
extern void tracer_panic(char *format, ...)
|
||||
__attribute__ ((format (printf, 1, 2)));
|
||||
extern void set_init_pid(int pid);
|
||||
extern int set_user_mode(void *task);
|
||||
extern void set_tracing(void *t, int tracing);
|
||||
extern int is_tracing(void *task);
|
||||
extern void syscall_handler(int sig, union uml_pt_regs *regs);
|
||||
extern void exit_kernel(int pid, void *task);
|
||||
extern void do_syscall(void *task, int pid, int local_using_sysemu);
|
||||
extern void do_sigtrap(void *task);
|
||||
extern int is_valid_pid(int pid);
|
||||
extern void remap_data(void *segment_start, void *segment_end, int w);
|
||||
extern long execute_syscall_tt(void *r);
|
||||
|
||||
#endif
|
||||
|
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#ifndef __TT_UACCESS_H
|
||||
#define __TT_UACCESS_H
|
||||
|
||||
#include "linux/string.h"
|
||||
#include "linux/sched.h"
|
||||
#include "asm/processor.h"
|
||||
#include "asm/errno.h"
|
||||
#include "asm/current.h"
|
||||
#include "asm/a.out.h"
|
||||
#include "uml_uaccess.h"
|
||||
|
||||
#define ABOVE_KMEM (16 * 1024 * 1024)
|
||||
|
||||
extern unsigned long end_vm;
|
||||
extern unsigned long uml_physmem;
|
||||
|
||||
#define is_stack(addr, size) \
|
||||
(((unsigned long) (addr) < STACK_TOP) && \
|
||||
((unsigned long) (addr) >= STACK_TOP - ABOVE_KMEM) && \
|
||||
(((unsigned long) (addr) + (size)) <= STACK_TOP))
|
||||
|
||||
#define access_ok_tt(type, addr, size) \
|
||||
(is_stack(addr, size))
|
||||
|
||||
extern int __do_copy_from_user(void *to, const void *from, int n,
|
||||
void **fault_addr, void **fault_catcher);
|
||||
extern int __do_strncpy_from_user(char *dst, const char *src, size_t n,
|
||||
void **fault_addr, void **fault_catcher);
|
||||
extern int __do_clear_user(void *mem, size_t len, void **fault_addr,
|
||||
void **fault_catcher);
|
||||
extern int __do_strnlen_user(const char *str, unsigned long n,
|
||||
void **fault_addr, void **fault_catcher);
|
||||
|
||||
extern int copy_from_user_tt(void *to, const void __user *from, int n);
|
||||
extern int copy_to_user_tt(void __user *to, const void *from, int n);
|
||||
extern int strncpy_from_user_tt(char *dst, const char __user *src, int count);
|
||||
extern int __clear_user_tt(void __user *mem, int len);
|
||||
extern int clear_user_tt(void __user *mem, int len);
|
||||
extern int strnlen_user_tt(const void __user *str, int len);
|
||||
|
||||
#endif
|
@@ -8,33 +8,10 @@
|
||||
|
||||
#include "uml-config.h"
|
||||
#include "choose-mode.h"
|
||||
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
#include "mmu-tt.h"
|
||||
#endif
|
||||
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
#include "mmu-skas.h"
|
||||
#endif
|
||||
|
||||
typedef union mm_context {
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
struct mmu_context_tt tt;
|
||||
#endif
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
struct mmu_context_skas skas;
|
||||
#endif
|
||||
} mm_context_t;
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
@@ -7,15 +7,7 @@
|
||||
#define __ARCH_UM_UACCESS_H
|
||||
|
||||
#include "choose-mode.h"
|
||||
|
||||
#ifdef CONFIG_MODE_TT
|
||||
#include "uaccess-tt.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MODE_SKAS
|
||||
#include "uaccess-skas.h"
|
||||
#endif
|
||||
|
||||
#include "asm/fixmap.h"
|
||||
|
||||
#define __under_task_size(addr, size) \
|
||||
|
Referencia en una nueva incidencia
Block a user