diff options
Diffstat (limited to 'arch/um/include/shared')
34 files changed, 68 insertions, 723 deletions
diff --git a/arch/um/include/shared/arch.h b/arch/um/include/shared/arch.h index 2de92a08a76..4f46abda060 100644 --- a/arch/um/include/shared/arch.h +++ b/arch/um/include/shared/arch.h @@ -6,7 +6,7 @@  #ifndef __ARCH_H__  #define __ARCH_H__ -#include "sysdep/ptrace.h" +#include <sysdep/ptrace.h>  extern void arch_check_bugs(void);  extern int arch_fixup(unsigned long address, struct uml_pt_regs *regs); diff --git a/arch/um/include/shared/as-layout.h b/arch/um/include/shared/as-layout.h index a92b678503c..41c8c774ec1 100644 --- a/arch/um/include/shared/as-layout.h +++ b/arch/um/include/shared/as-layout.h @@ -6,7 +6,7 @@  #ifndef __START_H__  #define __START_H__ -#include "kern_constants.h" +#include <generated/asm-offsets.h>  /*   * Stolen from linux/const.h, which can't be directly included since @@ -35,7 +35,7 @@  #ifndef __ASSEMBLY__ -#include "sysdep/ptrace.h" +#include <sysdep/ptrace.h>  struct cpu_task {  	int pid; @@ -44,7 +44,6 @@ struct cpu_task {  extern struct cpu_task cpu_tasks[]; -extern unsigned long low_physmem;  extern unsigned long high_physmem;  extern unsigned long uml_physmem;  extern unsigned long uml_reserved; @@ -52,15 +51,14 @@ extern unsigned long end_vm;  extern unsigned long start_vm;  extern unsigned long long highmem; -extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; -extern unsigned long _unprotected_end;  extern unsigned long brk_start;  extern unsigned long host_task_size;  extern int linux_main(int argc, char **argv); -extern void (*sig_info[])(int, struct uml_pt_regs *); +struct siginfo; +extern void (*sig_info[])(int, struct siginfo *si, struct uml_pt_regs *);  #endif diff --git a/arch/um/include/shared/chan_kern.h b/arch/um/include/shared/chan_kern.h deleted file mode 100644 index 1e651457e04..00000000000 --- a/arch/um/include/shared/chan_kern.h +++ /dev/null @@ -1,50 +0,0 @@ -/*  - * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __CHAN_KERN_H__ -#define __CHAN_KERN_H__ - -#include "linux/tty.h" -#include "linux/list.h" -#include "linux/console.h" -#include "chan_user.h" -#include "line.h" - -struct chan { -	struct list_head list; -	struct list_head free_list; -	struct line *line; -	char *dev; -	unsigned int primary:1; -	unsigned int input:1; -	unsigned int output:1; -	unsigned int opened:1; -	unsigned int enabled:1; -	int fd; -	const struct chan_ops *ops; -	void *data; -}; - -extern void chan_interrupt(struct list_head *chans, struct delayed_work *task, -			   struct tty_struct *tty, int irq); -extern int parse_chan_pair(char *str, struct line *line, int device, -			   const struct chan_opts *opts, char **error_out); -extern int write_chan(struct list_head *chans, const char *buf, int len, -			     int write_irq); -extern int console_write_chan(struct list_head *chans, const char *buf,  -			      int len); -extern int console_open_chan(struct line *line, struct console *co); -extern void deactivate_chan(struct list_head *chans, int irq); -extern void reactivate_chan(struct list_head *chans, int irq); -extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty); -extern int enable_chan(struct line *line); -extern void close_chan(struct list_head *chans, int delay_free_irq); -extern int chan_window_size(struct list_head *chans,  -			     unsigned short *rows_out,  -			     unsigned short *cols_out); -extern int chan_config_string(struct list_head *chans, char *str, int size, -			      char **error_out); - -#endif diff --git a/arch/um/include/shared/chan_user.h b/arch/um/include/shared/chan_user.h deleted file mode 100644 index 9b9ced85b70..00000000000 --- a/arch/um/include/shared/chan_user.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __CHAN_USER_H__ -#define __CHAN_USER_H__ - -#include "init.h" - -struct chan_opts { -	void (*const announce)(char *dev_name, int dev); -	char *xterm_title; -	const int raw; -}; - -enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE }; - -struct chan_ops { -	char *type; -	void *(*init)(char *, int, const struct chan_opts *); -	int (*open)(int, int, int, void *, char **); -	void (*close)(int, void *); -	int (*read)(int, char *, void *); -	int (*write)(int, const char *, int, void *); -	int (*console_write)(int, const char *, int); -	int (*window_size)(int, void *, unsigned short *, unsigned short *); -	void (*free)(void *); -	int winch; -}; - -extern const struct chan_ops fd_ops, null_ops, port_ops, pts_ops, pty_ops, -	tty_ops, xterm_ops; - -extern void generic_close(int fd, void *unused); -extern int generic_read(int fd, char *c_out, void *unused); -extern int generic_write(int fd, const char *buf, int n, void *unused); -extern int generic_console_write(int fd, const char *buf, int n); -extern int generic_window_size(int fd, void *unused, unsigned short *rows_out, -			       unsigned short *cols_out); -extern void generic_free(void *data); - -struct tty_struct; -extern void register_winch(int fd,  struct tty_struct *tty); -extern void register_winch_irq(int fd, int tty_fd, int pid, -			       struct tty_struct *tty, unsigned long stack); - -#define __channel_help(fn, prefix) \ -__uml_help(fn, prefix "[0-9]*=<channel description>\n" \ -"    Attach a console or serial line to a host channel.  See\n" \ -"    http://user-mode-linux.sourceforge.net/old/input.html for a complete\n" \ -"    description of this switch.\n\n" \ -); - -#endif diff --git a/arch/um/include/shared/common-offsets.h b/arch/um/include/shared/common-offsets.h index 72009c7e321..c9230680902 100644 --- a/arch/um/include/shared/common-offsets.h +++ b/arch/um/include/shared/common-offsets.h @@ -2,24 +2,11 @@  DEFINE(KERNEL_MADV_REMOVE, MADV_REMOVE); -OFFSET(HOST_TASK_REGS, task_struct, thread.regs); -OFFSET(HOST_TASK_PID, task_struct, pid); -  DEFINE(UM_KERN_PAGE_SIZE, PAGE_SIZE);  DEFINE(UM_KERN_PAGE_MASK, PAGE_MASK);  DEFINE(UM_KERN_PAGE_SHIFT, PAGE_SHIFT);  DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC); -DEFINE_STR(UM_KERN_EMERG, KERN_EMERG); -DEFINE_STR(UM_KERN_ALERT, KERN_ALERT); -DEFINE_STR(UM_KERN_CRIT, KERN_CRIT); -DEFINE_STR(UM_KERN_ERR, KERN_ERR); -DEFINE_STR(UM_KERN_WARNING, KERN_WARNING); -DEFINE_STR(UM_KERN_NOTICE, KERN_NOTICE); -DEFINE_STR(UM_KERN_INFO, KERN_INFO); -DEFINE_STR(UM_KERN_DEBUG, KERN_DEBUG); -DEFINE_STR(UM_KERN_CONT, KERN_CONT); -  DEFINE(UM_ELF_CLASS, ELF_CLASS);  DEFINE(UM_ELFCLASS32, ELFCLASS32);  DEFINE(UM_ELFCLASS64, ELFCLASS64); @@ -43,8 +30,8 @@ DEFINE(UM_NSEC_PER_USEC, NSEC_PER_USEC);  #ifdef CONFIG_PRINTK  DEFINE(UML_CONFIG_PRINTK, CONFIG_PRINTK);  #endif -#ifdef CONFIG_NO_HZ -DEFINE(UML_CONFIG_NO_HZ, CONFIG_NO_HZ); +#ifdef CONFIG_NO_HZ_COMMON +DEFINE(UML_CONFIG_NO_HZ_COMMON, CONFIG_NO_HZ_COMMON);  #endif  #ifdef CONFIG_UML_X86  DEFINE(UML_CONFIG_UML_X86, CONFIG_UML_X86); diff --git a/arch/um/include/shared/frame_kern.h b/arch/um/include/shared/frame_kern.h index 76078490c25..f2ca5702a4e 100644 --- a/arch/um/include/shared/frame_kern.h +++ b/arch/um/include/shared/frame_kern.h @@ -6,16 +6,13 @@  #ifndef __FRAME_KERN_H_  #define __FRAME_KERN_H_ -#define _S(nr) (1<<((nr)-1)) -#define _BLOCKABLE (~(_S(SIGKILL) | _S(SIGSTOP))) - -extern int setup_signal_stack_sc(unsigned long stack_top, int sig,  +extern int setup_signal_stack_sc(unsigned long stack_top, int sig,  				 struct k_sigaction *ka, -				 struct pt_regs *regs,  +				 struct pt_regs *regs,  				 sigset_t *mask); -extern int setup_signal_stack_si(unsigned long stack_top, int sig,  +extern int setup_signal_stack_si(unsigned long stack_top, int sig,  				 struct k_sigaction *ka, -				 struct pt_regs *regs, siginfo_t *info,  +				 struct pt_regs *regs, struct siginfo *info,  				 sigset_t *mask);  #endif diff --git a/arch/um/include/shared/initrd.h b/arch/um/include/shared/initrd.h deleted file mode 100644 index 22673bcc273..00000000000 --- a/arch/um/include/shared/initrd.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __INITRD_USER_H__ -#define __INITRD_USER_H__ - -extern int load_initrd(char *filename, void *buf, int size); - -#endif - diff --git a/arch/um/include/shared/irq_kern.h b/arch/um/include/shared/irq_kern.h index b05d22f3d84..e05bd667de1 100644 --- a/arch/um/include/shared/irq_kern.h +++ b/arch/um/include/shared/irq_kern.h @@ -6,13 +6,13 @@  #ifndef __IRQ_KERN_H__  #define __IRQ_KERN_H__ -#include "linux/interrupt.h" -#include "asm/ptrace.h" +#include <linux/interrupt.h> +#include <asm/ptrace.h>  extern int um_request_irq(unsigned int irq, int fd, int type,  			  irq_handler_t handler,  			  unsigned long irqflags,  const char * devname,  			  void *dev_id); - +void um_free_irq(unsigned int irq, void *dev);  #endif diff --git a/arch/um/include/shared/irq_user.h b/arch/um/include/shared/irq_user.h index c6c784df267..df563305395 100644 --- a/arch/um/include/shared/irq_user.h +++ b/arch/um/include/shared/irq_user.h @@ -6,7 +6,7 @@  #ifndef __IRQ_USER_H__  #define __IRQ_USER_H__ -#include "sysdep/ptrace.h" +#include <sysdep/ptrace.h>  struct irq_fd {  	struct irq_fd *next; @@ -20,7 +20,8 @@ struct irq_fd {  enum { IRQ_READ, IRQ_WRITE }; -extern void sigio_handler(int sig, struct uml_pt_regs *regs); +struct siginfo; +extern void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);  extern void free_irq_by_fd(int fd);  extern void reactivate_fd(int fd, int irqnum);  extern void deactivate_fd(int fd, int irqnum); diff --git a/arch/um/include/shared/kern.h b/arch/um/include/shared/kern.h index 4ce3fc650e5..6cd01240bbf 100644 --- a/arch/um/include/shared/kern.h +++ b/arch/um/include/shared/kern.h @@ -13,28 +13,10 @@   * includes.   */ -extern int errno; - -extern int clone(int (*proc)(void *), void *sp, int flags, void *data); -extern int sleep(int);  extern int printf(const char *fmt, ...); -extern char *strerror(int errnum); -extern char *ptsname(int __fd); -extern int munmap(void *, int);  extern void *sbrk(int increment); -extern void *malloc(int size); -extern void perror(char *err); -extern int kill(int pid, int sig); -extern int getuid(void); -extern int getgid(void);  extern int pause(void); -extern int write(int, const void *, int);  extern void exit(int); -extern int close(int); -extern int read(unsigned int, char *, int); -extern int pipe(int *); -extern int sched_yield(void); -extern int ptrace(int op, int pid, long addr, long data);  #endif diff --git a/arch/um/include/shared/kern_util.h b/arch/um/include/shared/kern_util.h index 3c341222d25..83a91f97633 100644 --- a/arch/um/include/shared/kern_util.h +++ b/arch/um/include/shared/kern_util.h @@ -6,8 +6,10 @@  #ifndef __KERN_UTIL_H__  #define __KERN_UTIL_H__ -#include "sysdep/ptrace.h" -#include "sysdep/faultinfo.h" +#include <sysdep/ptrace.h> +#include <sysdep/faultinfo.h> + +struct siginfo;  extern int uml_exitcode; @@ -21,9 +23,8 @@ extern unsigned long alloc_stack(int order, int atomic);  extern void free_stack(unsigned long stack, int order);  extern int do_signal(void); -extern void copy_sc(struct uml_pt_regs *regs, void *from);  extern void interrupt_end(void); -extern void relay_signal(int sig, struct uml_pt_regs *regs); +extern void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs);  extern unsigned long segv(struct faultinfo fi, unsigned long ip,  			  int is_user, struct uml_pt_regs *regs); @@ -34,9 +35,8 @@ extern unsigned int do_IRQ(int irq, struct uml_pt_regs *regs);  extern int smp_sigio_handler(void);  extern void initial_thread_cb(void (*proc)(void *), void *arg);  extern int is_syscall(unsigned long addr); -extern void timer_handler(int sig, struct uml_pt_regs *regs); -extern void timer_handler(int sig, struct uml_pt_regs *regs); +extern void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);  extern int start_uml(void);  extern void paging_init(void); @@ -49,7 +49,7 @@ extern void do_uml_exitcalls(void);   * GFP_ATOMIC.   */  extern int __cant_sleep(void); -extern void *get_current(void); +extern int get_current_pid(void);  extern int copy_from_user_proc(void *to, void *from, int size);  extern int cpu(void);  extern char *uml_strdup(const char *string); @@ -60,9 +60,9 @@ extern unsigned long from_irq_stack(int nested);  extern void syscall_trace(struct uml_pt_regs *regs, int entryexit);  extern int singlestepping(void *t); -extern void segv_handler(int sig, struct uml_pt_regs *regs); -extern void bus_handler(int sig, struct uml_pt_regs *regs); -extern void winch(int sig, struct uml_pt_regs *regs); +extern void segv_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs); +extern void bus_handler(int sig, struct siginfo *si, struct uml_pt_regs *regs); +extern void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);  extern void fatal_sigsegv(void) __attribute__ ((noreturn)); diff --git a/arch/um/include/shared/ldt.h b/arch/um/include/shared/ldt.h deleted file mode 100644 index a7f999a5877..00000000000 --- a/arch/um/include/shared/ldt.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2004 Fujitsu Siemens Computers GmbH - * Licensed under the GPL - * - * Author: Bodo Stroesser <bstroesser@fujitsu-siemens.com> - */ - -#ifndef __ASM_LDT_H -#define __ASM_LDT_H - -#include <linux/mutex.h> -#include <sysdep/host_ldt.h> - -extern void ldt_host_info(void); - -#define LDT_PAGES_MAX \ -	((LDT_ENTRIES * LDT_ENTRY_SIZE)/PAGE_SIZE) -#define LDT_ENTRIES_PER_PAGE \ -	(PAGE_SIZE/LDT_ENTRY_SIZE) -#define LDT_DIRECT_ENTRIES \ -	((LDT_PAGES_MAX*sizeof(void *))/LDT_ENTRY_SIZE) - -struct ldt_entry { -	__u32 a; -	__u32 b; -}; - -typedef struct uml_ldt { -	int entry_count; -	struct mutex lock; -	union { -		struct ldt_entry * pages[LDT_PAGES_MAX]; -		struct ldt_entry entries[LDT_DIRECT_ENTRIES]; -	} u; -} uml_ldt_t; - -#endif diff --git a/arch/um/include/shared/line.h b/arch/um/include/shared/line.h deleted file mode 100644 index 311a0d3d93a..00000000000 --- a/arch/um/include/shared/line.h +++ /dev/null @@ -1,105 +0,0 @@ -/*  - * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __LINE_H__ -#define __LINE_H__ - -#include "linux/list.h" -#include "linux/workqueue.h" -#include "linux/tty.h" -#include "linux/interrupt.h" -#include "linux/spinlock.h" -#include "linux/mutex.h" -#include "chan_user.h" -#include "mconsole_kern.h" - -/* There's only one modifiable field in this - .mc.list */ -struct line_driver { -	const char *name; -	const char *device_name; -	const short major; -	const short minor_start; -	const short type; -	const short subtype; -	const int read_irq; -	const char *read_irq_name; -	const int write_irq; -	const char *write_irq_name; -	struct mc_device mc; -}; - -struct line { -	struct tty_struct *tty; -	spinlock_t count_lock; -	int valid; - -	char *init_str; -	int init_pri; -	struct list_head chan_list; - -	/*This lock is actually, mostly, local to*/ -	spinlock_t lock; -	int throttled; -	/* Yes, this is a real circular buffer. -	 * XXX: And this should become a struct kfifo! -	 * -	 * buffer points to a buffer allocated on demand, of length -	 * LINE_BUFSIZE, head to the start of the ring, tail to the end.*/ -	char *buffer; -	char *head; -	char *tail; - -	int sigio; -	struct delayed_work task; -	const struct line_driver *driver; -	int have_irq; -}; - -#define LINE_INIT(str, d) \ -	{ .count_lock =	__SPIN_LOCK_UNLOCKED((str).count_lock), \ -	  .init_str =	str,	\ -	  .init_pri =	INIT_STATIC, \ -	  .valid =	1, \ -	  .lock =	__SPIN_LOCK_UNLOCKED((str).lock), \ -	  .driver =	d } - -extern void line_close(struct tty_struct *tty, struct file * filp); -extern int line_open(struct line *lines, struct tty_struct *tty); -extern int line_setup(struct line *lines, unsigned int sizeof_lines, -		      char *init, char **error_out); -extern int line_write(struct tty_struct *tty, const unsigned char *buf, -		      int len); -extern int line_put_char(struct tty_struct *tty, unsigned char ch); -extern void line_set_termios(struct tty_struct *tty, struct ktermios * old); -extern int line_chars_in_buffer(struct tty_struct *tty); -extern void line_flush_buffer(struct tty_struct *tty); -extern void line_flush_chars(struct tty_struct *tty); -extern int line_write_room(struct tty_struct *tty); -extern int line_ioctl(struct tty_struct *tty, struct file * file, -		      unsigned int cmd, unsigned long arg); -extern void line_throttle(struct tty_struct *tty); -extern void line_unthrottle(struct tty_struct *tty); - -extern char *add_xterm_umid(char *base); -extern int line_setup_irq(int fd, int input, int output, struct line *line, -			  void *data); -extern void line_close_chan(struct line *line); -extern struct tty_driver *register_lines(struct line_driver *line_driver, -					 const struct tty_operations *driver, -					 struct line *lines, int nlines); -extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts); -extern void close_lines(struct line *lines, int nlines); - -extern int line_config(struct line *lines, unsigned int sizeof_lines, -		       char *str, const struct chan_opts *opts, -		       char **error_out); -extern int line_id(char **str, int *start_out, int *end_out); -extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n, -		       char **error_out); -extern int line_get_config(char *dev, struct line *lines, -			   unsigned int sizeof_lines, char *str, -			   int size, char **error_out); - -#endif diff --git a/arch/um/include/shared/longjmp.h b/arch/um/include/shared/longjmp.h index e860bc5848e..9bdddf4c405 100644 --- a/arch/um/include/shared/longjmp.h +++ b/arch/um/include/shared/longjmp.h @@ -1,8 +1,8 @@  #ifndef __UML_LONGJMP_H  #define __UML_LONGJMP_H -#include "sysdep/archsetjmp.h" -#include "os.h" +#include <sysdep/archsetjmp.h> +#include <os.h>  extern int setjmp(jmp_buf);  extern void longjmp(jmp_buf, int); diff --git a/arch/um/include/shared/mconsole.h b/arch/um/include/shared/mconsole.h deleted file mode 100644 index c139ae1d682..00000000000 --- a/arch/um/include/shared/mconsole.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) - * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) - * Licensed under the GPL - */ - -#ifndef __MCONSOLE_H__ -#define __MCONSOLE_H__ - -#ifndef __KERNEL__ -#include <stdint.h> -#define u32 uint32_t -#endif - -#include "sysdep/ptrace.h" - -#define MCONSOLE_MAGIC (0xcafebabe) -#define MCONSOLE_MAX_DATA (512) -#define MCONSOLE_VERSION 2 - -struct mconsole_request { -	u32 magic; -	u32 version; -	u32 len; -	char data[MCONSOLE_MAX_DATA]; -}; - -struct mconsole_reply { -	u32 err; -	u32 more; -	u32 len; -	char data[MCONSOLE_MAX_DATA]; -}; - -struct mconsole_notify { -	u32 magic; -	u32 version; -	enum { MCONSOLE_SOCKET, MCONSOLE_PANIC, MCONSOLE_HANG, -	       MCONSOLE_USER_NOTIFY } type; -	u32 len; -	char data[MCONSOLE_MAX_DATA]; -}; - -struct mc_request; - -enum mc_context { MCONSOLE_INTR, MCONSOLE_PROC }; - -struct mconsole_command -{ -	char *command; -	void (*handler)(struct mc_request *req); -	enum mc_context context; -}; - -struct mc_request -{ -	int len; -	int as_interrupt; - -	int originating_fd; -	unsigned int originlen; -	unsigned char origin[128];			/* sockaddr_un */ - -	struct mconsole_request request; -	struct mconsole_command *cmd; -	struct uml_pt_regs regs; -}; - -extern char mconsole_socket_name[]; - -extern int mconsole_unlink_socket(void); -extern int mconsole_reply_len(struct mc_request *req, const char *reply, -			      int len, int err, int more); -extern int mconsole_reply(struct mc_request *req, const char *str, int err, -			  int more); - -extern void mconsole_version(struct mc_request *req); -extern void mconsole_help(struct mc_request *req); -extern void mconsole_halt(struct mc_request *req); -extern void mconsole_reboot(struct mc_request *req); -extern void mconsole_config(struct mc_request *req); -extern void mconsole_remove(struct mc_request *req); -extern void mconsole_sysrq(struct mc_request *req); -extern void mconsole_cad(struct mc_request *req); -extern void mconsole_stop(struct mc_request *req); -extern void mconsole_go(struct mc_request *req); -extern void mconsole_log(struct mc_request *req); -extern void mconsole_proc(struct mc_request *req); -extern void mconsole_stack(struct mc_request *req); - -extern int mconsole_get_request(int fd, struct mc_request *req); -extern int mconsole_notify(char *sock_name, int type, const void *data, -			   int len); -extern char *mconsole_notify_socket(void); -extern void lock_notify(void); -extern void unlock_notify(void); - -#endif diff --git a/arch/um/include/shared/mconsole_kern.h b/arch/um/include/shared/mconsole_kern.h deleted file mode 100644 index d2fe07e7895..00000000000 --- a/arch/um/include/shared/mconsole_kern.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __MCONSOLE_KERN_H__ -#define __MCONSOLE_KERN_H__ - -#include "linux/list.h" -#include "mconsole.h" - -struct mconsole_entry { -	struct list_head list; -	struct mc_request request; -}; - -/* All these methods are called in process context. */ -struct mc_device { -	struct list_head list; -	char *name; -	int (*config)(char *, char **); -	int (*get_config)(char *, char *, int, char **); -	int (*id)(char **, int *, int *); -	int (*remove)(int, char **); -}; - -#define CONFIG_CHUNK(str, size, current, chunk, end) \ -do { \ -	current += strlen(chunk); \ -	if(current >= size) \ -		str = NULL; \ -	if(str != NULL){ \ -		strcpy(str, chunk); \ -		str += strlen(chunk); \ -	} \ -	if(end) \ -		current++; \ -} while(0) - -#ifdef CONFIG_MCONSOLE - -extern void mconsole_register_dev(struct mc_device *new); - -#else - -static inline void mconsole_register_dev(struct mc_device *new) -{ -} - -#endif - -#endif diff --git a/arch/um/include/shared/mem_kern.h b/arch/um/include/shared/mem_kern.h deleted file mode 100644 index 69be0fd0ce4..00000000000 --- a/arch/um/include/shared/mem_kern.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - -#ifndef __MEM_KERN_H__ -#define __MEM_KERN_H__ - -#include "linux/list.h" -#include "linux/types.h" - -struct remapper { -	struct list_head list; -	int (*proc)(int, unsigned long, int, __u64); -}; - -extern void register_remapper(struct remapper *info); - -#endif - diff --git a/arch/um/include/shared/net_kern.h b/arch/um/include/shared/net_kern.h index 5c367f22595..012ac87d490 100644 --- a/arch/um/include/shared/net_kern.h +++ b/arch/um/include/shared/net_kern.h @@ -18,7 +18,6 @@ struct uml_net {  	struct net_device *dev;  	struct platform_device pdev;  	int index; -	unsigned char mac[ETH_ALEN];  };  struct uml_net_private { diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h index c4617baaa4f..08eec0b691b 100644 --- a/arch/um/include/shared/os.h +++ b/arch/um/include/shared/os.h @@ -7,10 +7,9 @@  #define __OS_H__  #include <stdarg.h> -#include "irq_user.h" -#include "longjmp.h" -#include "mm_id.h" -#include "sysdep/tls.h" +#include <irq_user.h> +#include <longjmp.h> +#include <mm_id.h>  #define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR)) @@ -29,6 +28,12 @@  #define OS_ACC_R_OK    4       /* Test for read permission.  */  #define OS_ACC_RW_OK   (OS_ACC_W_OK | OS_ACC_R_OK) /* Test for RW permission */ +#ifdef CONFIG_64BIT +#define OS_LIB_PATH	"/usr/lib64/" +#else +#define OS_LIB_PATH	"/usr/lib/" +#endif +  /*   * types taken from stat_file() in hostfs_user.c   * (if they are wrong here, they are wrong there...). @@ -131,11 +136,13 @@ extern int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg);  extern int os_get_ifname(int fd, char *namebuf);  extern int os_set_slip(int fd);  extern int os_mode_fd(int fd, int mode); +extern int os_fsync_file(int fd);  extern int os_seek_file(int fd, unsigned long long offset);  extern int os_open_file(const char *file, struct openflags flags, int mode);  extern int os_read_file(int fd, void *buf, int len);  extern int os_write_file(int fd, const void *buf, int count); +extern int os_sync_file(int fd);  extern int os_file_size(const char *file, unsigned long long *size_out);  extern int os_file_modtime(const char *file, unsigned long *modtime);  extern int os_pipe(int *fd, int stream, int close_on_exec); @@ -186,7 +193,6 @@ extern int os_getpid(void);  extern int os_getpgrp(void);  extern void init_new_thread_signals(void); -extern int run_kernel_thread(int (*fn)(void *), void *arg, jmp_buf **jmp_ptr);  extern int os_map_memory(void *virt, int fd, unsigned long long off,  			 unsigned long len, int r, int w, int x); @@ -196,12 +202,7 @@ extern int os_unmap_memory(void *addr, int len);  extern int os_drop_memory(void *addr, int length);  extern int can_drop_memory(void);  extern void os_flush_stdout(void); - -/* uaccess.c */ -extern unsigned long __do_user_copy(void *to, const void *from, int n, -				    void **fault_addr, jmp_buf **fault_catcher, -				    void (*op)(void *to, const void *from, -					       int n), int *faulted_out); +extern int os_mincore(void *addr, unsigned long len);  /* execvp.c */  extern int execvp_noalloc(char *buf, const char *file, char *const argv[]); @@ -212,10 +213,6 @@ extern int run_helper_thread(int (*proc)(void *), void *arg,  extern int helper_wait(int pid); -/* tls.c */ -extern int os_set_thread_area(user_desc_t *info, int pid); -extern int os_get_thread_area(user_desc_t *info, int pid); -  /* umid.c */  extern int umid_file_name(char *name, char *buf, int len);  extern int set_umid(char *name); @@ -225,12 +222,13 @@ extern char *get_umid(void);  extern void timer_init(void);  extern void set_sigstack(void *sig_stack, int size);  extern void remove_sigstack(void); -extern void set_handler(int sig, void (*handler)(int), int flags, ...); +extern void set_handler(int sig);  extern int change_sig(int signal, int on);  extern void block_signals(void);  extern void unblock_signals(void);  extern int get_signals(void);  extern int set_signals(int enable); +extern int os_is_signal_stack(void);  /* util.c */  extern void stack_protections(unsigned long address); @@ -238,6 +236,8 @@ extern int raw(int fd);  extern void setup_machinename(char *machine_out);  extern void setup_hostinfo(char *buf, int len);  extern void os_dump_core(void) __attribute__ ((noreturn)); +extern void um_early_printk(const char *s, unsigned int n); +extern void os_fix_helper_signals(void);  /* time.c */  extern void idle_sleep(unsigned long long nsecs); diff --git a/arch/um/include/shared/process.h b/arch/um/include/shared/process.h deleted file mode 100644 index bb873a51262..00000000000 --- a/arch/um/include/shared/process.h +++ /dev/null @@ -1,17 +0,0 @@ -/*  - * Copyright (C) 2000 - 2008 Jeff Dike (jdike@{addtoit,linux.intel}.com) - * Licensed under the GPL - */ - -#ifndef __PROCESS_H__ -#define __PROCESS_H__ - -#include <signal.h> - -/* Copied from linux/compiler-gcc.h since we can't include it directly */ -#define barrier() __asm__ __volatile__("": : :"memory") - -extern void sig_handler(int sig, struct sigcontext *sc); -extern void alarm_handler(int sig, struct sigcontext *sc); - -#endif diff --git a/arch/um/include/shared/ptrace_user.h b/arch/um/include/shared/ptrace_user.h index 7fd8539bc19..56b2f284b10 100644 --- a/arch/um/include/shared/ptrace_user.h +++ b/arch/um/include/shared/ptrace_user.h @@ -6,7 +6,8 @@  #ifndef __PTRACE_USER_H__  #define __PTRACE_USER_H__ -#include "sysdep/ptrace_user.h" +#include <sys/ptrace.h> +#include <sysdep/ptrace_user.h>  extern int ptrace_getregs(long pid, unsigned long *regs_out);  extern int ptrace_setregs(long pid, unsigned long *regs_in); diff --git a/arch/um/include/shared/registers.h b/arch/um/include/shared/registers.h index b0b4589e0eb..f5b76355ad7 100644 --- a/arch/um/include/shared/registers.h +++ b/arch/um/include/shared/registers.h @@ -6,8 +6,8 @@  #ifndef __REGISTERS_H  #define __REGISTERS_H -#include "sysdep/ptrace.h" -#include "sysdep/archsetjmp.h" +#include <sysdep/ptrace.h> +#include <sysdep/archsetjmp.h>  extern int save_fp_registers(int pid, unsigned long *fp_regs);  extern int restore_fp_registers(int pid, unsigned long *fp_regs); @@ -16,7 +16,7 @@ extern int restore_fpx_registers(int pid, unsigned long *fp_regs);  extern int save_registers(int pid, struct uml_pt_regs *regs);  extern int restore_registers(int pid, struct uml_pt_regs *regs);  extern int init_registers(int pid); -extern void get_safe_registers(unsigned long *regs); +extern void get_safe_registers(unsigned long *regs, unsigned long *fp_regs);  extern unsigned long get_thread_reg(int reg, jmp_buf *buf);  extern int get_fp_registers(int pid, unsigned long *regs);  extern int put_fp_registers(int pid, unsigned long *regs); diff --git a/arch/um/include/shared/skas/skas.h b/arch/um/include/shared/skas/skas.h index 64d2c744330..c45df961c87 100644 --- a/arch/um/include/shared/skas/skas.h +++ b/arch/um/include/shared/skas/skas.h @@ -6,7 +6,7 @@  #ifndef __SKAS_H  #define __SKAS_H -#include "sysdep/ptrace.h" +#include <sysdep/ptrace.h>  extern int userspace_pid[];  extern int proc_mm, ptrace_faultinfo, ptrace_ldt; diff --git a/arch/um/include/shared/skas_ptrace.h b/arch/um/include/shared/skas_ptrace.h index 3d31bbacd01..630a9c92b93 100644 --- a/arch/um/include/shared/skas_ptrace.h +++ b/arch/um/include/shared/skas_ptrace.h @@ -9,6 +9,6 @@  #define PTRACE_FAULTINFO 52  #define PTRACE_SWITCH_MM 55 -#include "sysdep/skas_ptrace.h" +#include <sysdep/skas_ptrace.h>  #endif diff --git a/arch/um/include/shared/skas_ptregs.h b/arch/um/include/shared/skas_ptregs.h deleted file mode 100644 index 73db19e9c07..00000000000 --- a/arch/um/include/shared/skas_ptregs.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __SKAS_PT_REGS_ -#define __SKAS_PT_REGS_ - -#include <user_constants.h> - -#endif diff --git a/arch/um/include/shared/syscall.h b/arch/um/include/shared/syscall.h deleted file mode 100644 index dda1df901a0..00000000000 --- a/arch/um/include/shared/syscall.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __SYSCALL_USER_H -#define __SYSCALL_USER_H - -extern int record_syscall_start(int syscall); -extern void record_syscall_end(int index, long result); - -#endif diff --git a/arch/um/include/shared/sysrq.h b/arch/um/include/shared/sysrq.h deleted file mode 100644 index c8d332b56b9..00000000000 --- a/arch/um/include/shared/sysrq.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __UM_SYSRQ_H -#define __UM_SYSRQ_H - -struct task_struct; -extern void show_trace(struct task_struct* task, unsigned long *stack); - -#endif diff --git a/arch/um/include/shared/task.h b/arch/um/include/shared/task.h deleted file mode 100644 index 3fe726b3cf4..00000000000 --- a/arch/um/include/shared/task.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __TASK_H -#define __TASK_H - -#include <kern_constants.h> - -#define TASK_REGS(task) ((struct uml_pt_regs *) &(((char *) (task))[HOST_TASK_REGS])) -#define TASK_PID(task) *((int *) &(((char *) (task))[HOST_TASK_PID])) - -#endif diff --git a/arch/um/include/shared/tlb.h b/arch/um/include/shared/tlb.h deleted file mode 100644 index ecd2265b301..00000000000 --- a/arch/um/include/shared/tlb.h +++ /dev/null @@ -1,15 +0,0 @@ -/*  - * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __TLB_H__ -#define __TLB_H__ - -#include "um_mmu.h" - -extern void force_flush_all(void); -extern int flush_tlb_kernel_range_common(unsigned long start, -					 unsigned long end); - -#endif diff --git a/arch/um/include/shared/ubd_user.h b/arch/um/include/shared/ubd_user.h deleted file mode 100644 index 3845051f1b1..00000000000 --- a/arch/um/include/shared/ubd_user.h +++ /dev/null @@ -1,16 +0,0 @@ -/*  - * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) - * Copyright (C) 2001 RidgeRun, Inc (glonnon@ridgerun.com) - * Licensed under the GPL - */ - -#ifndef __UM_UBD_USER_H -#define __UM_UBD_USER_H - -extern void ignore_sigwinch_sig(void); -extern int start_io_thread(unsigned long sp, int *fds_out); -extern int io_thread(void *arg); -extern int kernel_fd; - -#endif - diff --git a/arch/um/include/shared/um_malloc.h b/arch/um/include/shared/um_malloc.h index c554d706d10..6395fef6b69 100644 --- a/arch/um/include/shared/um_malloc.h +++ b/arch/um/include/shared/um_malloc.h @@ -6,7 +6,7 @@  #ifndef __UM_MALLOC_H__  #define __UM_MALLOC_H__ -#include "kern_constants.h" +#include <generated/asm-offsets.h>  extern void *uml_kmalloc(int size, int flags);  extern void kfree(const void *ptr); diff --git a/arch/um/include/shared/um_mmu.h b/arch/um/include/shared/um_mmu.h deleted file mode 100644 index b1a7e47d102..00000000000 --- a/arch/um/include/shared/um_mmu.h +++ /dev/null @@ -1,24 +0,0 @@ -/*  - * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) - * Licensed under the GPL - */ - -#ifndef __ARCH_UM_MMU_H -#define __ARCH_UM_MMU_H - -#include "mm_id.h" -#include "ldt.h" - -typedef struct mm_context { -	struct mm_id id; -	struct uml_ldt ldt; -	struct page **stub_pages; -} mm_context_t; - -extern void __switch_mm(struct mm_id * mm_idp); - -/* Avoid tangled inclusion with asm/ldt.h */ -extern long init_new_ldt(struct mm_context *to_mm, struct mm_context *from_mm); -extern void free_ldt(struct mm_context *mm); - -#endif diff --git a/arch/um/include/shared/um_uaccess.h b/arch/um/include/shared/um_uaccess.h deleted file mode 100644 index 45c04999d67..00000000000 --- a/arch/um/include/shared/um_uaccess.h +++ /dev/null @@ -1,97 +0,0 @@ -/*  - * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) - * Licensed under the GPL - */ - -#ifndef __ARCH_UM_UACCESS_H -#define __ARCH_UM_UACCESS_H - -#include <asm/elf.h> -#include <asm/fixmap.h> -#include "sysdep/archsetjmp.h" - -#define __under_task_size(addr, size) \ -	(((unsigned long) (addr) < TASK_SIZE) && \ -	 (((unsigned long) (addr) + (size)) < TASK_SIZE)) - -#define __access_ok_vsyscall(type, addr, size) \ -	 ((type == VERIFY_READ) && \ -	  ((unsigned long) (addr) >= FIXADDR_USER_START) && \ -	  ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \ -	  ((unsigned long) (addr) + (size) >= (unsigned long)(addr))) - -#define __addr_range_nowrap(addr, size) \ -	((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) - -#define access_ok(type, addr, size) \ -	(__addr_range_nowrap(addr, size) && \ -	 (__under_task_size(addr, size) || \ -	  __access_ok_vsyscall(type, addr, size) || \ -	  segment_eq(get_fs(), KERNEL_DS))) - -extern int copy_from_user(void *to, const void __user *from, int n); -extern int copy_to_user(void __user *to, const void *from, int n); - -extern int __do_copy_to_user(void *to, const void *from, int n, -			     void **fault_addr, jmp_buf **fault_catcher); - -/* - * strncpy_from_user: - Copy a NUL terminated string from userspace. - * @dst:   Destination address, in kernel space.  This buffer must be at - *         least @count bytes long. - * @src:   Source address, in user space. - * @count: Maximum number of bytes to copy, including the trailing NUL. - * - * Copies a NUL-terminated string from userspace to kernel space. - * - * On success, returns the length of the string (not including the trailing - * NUL). - * - * If access to userspace fails, returns -EFAULT (some data may have been - * copied). - * - * If @count is smaller than the length of the string, copies @count bytes - * and returns @count. - */ - -extern int strncpy_from_user(char *dst, const char __user *src, int count); - -/* - * __clear_user: - Zero a block of memory in user space, with less checking. - * @to:   Destination address, in user space. - * @n:    Number of bytes to zero. - * - * Zero a block of memory in user space.  Caller must check - * the specified block with access_ok() before calling this function. - * - * Returns number of bytes that could not be cleared. - * On success, this will be zero. - */ -extern int __clear_user(void __user *mem, int len); - -/* - * clear_user: - Zero a block of memory in user space. - * @to:   Destination address, in user space. - * @n:    Number of bytes to zero. - * - * Zero a block of memory in user space. - * - * Returns number of bytes that could not be cleared. - * On success, this will be zero. - */ -extern int clear_user(void __user *mem, int len); - -/* - * strlen_user: - Get the size of a string in user space. - * @str: The string to measure. - * @n:   The maximum valid length - * - * Get the size of a NUL-terminated string in user space. - * - * Returns the size of the string INCLUDING the terminating NUL. - * On exception, returns 0. - * If the string is too long, returns a value greater than @n. - */ -extern int strnlen_user(const void __user *str, int len); - -#endif diff --git a/arch/um/include/shared/user.h b/arch/um/include/shared/user.h index 293f7c794fa..cef06856333 100644 --- a/arch/um/include/shared/user.h +++ b/arch/um/include/shared/user.h @@ -6,7 +6,7 @@  #ifndef __USER_H__  #define __USER_H__ -#include "kern_constants.h" +#include <generated/asm-offsets.h>  /*   * The usual definition - copied here because the kernel provides its own, @@ -26,6 +26,17 @@  extern void panic(const char *fmt, ...)  	__attribute__ ((format (printf, 1, 2))); +/* Requires preincluding include/linux/kern_levels.h */ +#define UM_KERN_EMERG	KERN_EMERG +#define UM_KERN_ALERT	KERN_ALERT +#define UM_KERN_CRIT	KERN_CRIT +#define UM_KERN_ERR	KERN_ERR +#define UM_KERN_WARNING	KERN_WARNING +#define UM_KERN_NOTICE	KERN_NOTICE +#define UM_KERN_INFO	KERN_INFO +#define UM_KERN_DEBUG	KERN_DEBUG +#define UM_KERN_CONT	KERN_CONT +  #ifdef UML_CONFIG_PRINTK  extern int printk(const char *fmt, ...)  	__attribute__ ((format (printf, 1, 2))); @@ -36,10 +47,11 @@ static inline int printk(const char *fmt, ...)  }  #endif -extern void schedule(void);  extern int in_aton(char *str); -extern int open_gdb_chan(void);  extern size_t strlcpy(char *, const char *, size_t);  extern size_t strlcat(char *, const char *, size_t); +/* Copied from linux/compiler-gcc.h since we can't include it directly */ +#define barrier() __asm__ __volatile__("": : :"memory") +  #endif  | 
