diff options
Diffstat (limited to 'arch/um/include')
| -rw-r--r-- | arch/um/include/line.h | 36 | ||||
| -rw-r--r-- | arch/um/include/sysdep-i386/syscalls.h | 99 | ||||
| -rw-r--r-- | arch/um/include/sysdep-x86_64/syscalls.h | 59 |
3 files changed, 19 insertions, 175 deletions
diff --git a/arch/um/include/line.h b/arch/um/include/line.h index 6d81ecc17be5..4c5e92c04ccb 100644 --- a/arch/um/include/line.h +++ b/arch/um/include/line.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include "linux/workqueue.h" | 10 | #include "linux/workqueue.h" |
| 11 | #include "linux/tty.h" | 11 | #include "linux/tty.h" |
| 12 | #include "linux/interrupt.h" | 12 | #include "linux/interrupt.h" |
| 13 | #include "asm/semaphore.h" | 13 | #include "linux/spinlock.h" |
| 14 | #include "chan_user.h" | 14 | #include "chan_user.h" |
| 15 | #include "mconsole_kern.h" | 15 | #include "mconsole_kern.h" |
| 16 | 16 | ||
| @@ -37,10 +37,18 @@ struct line { | |||
| 37 | struct list_head chan_list; | 37 | struct list_head chan_list; |
| 38 | int valid; | 38 | int valid; |
| 39 | int count; | 39 | int count; |
| 40 | struct semaphore sem; | 40 | /*This lock is actually, mostly, local to*/ |
| 41 | spinlock_t lock; | ||
| 42 | |||
| 43 | /* Yes, this is a real circular buffer. | ||
| 44 | * XXX: And this should become a struct kfifo! | ||
| 45 | * | ||
| 46 | * buffer points to a buffer allocated on demand, of length | ||
| 47 | * LINE_BUFSIZE, head to the start of the ring, tail to the end.*/ | ||
| 41 | char *buffer; | 48 | char *buffer; |
| 42 | char *head; | 49 | char *head; |
| 43 | char *tail; | 50 | char *tail; |
| 51 | |||
| 44 | int sigio; | 52 | int sigio; |
| 45 | struct work_struct task; | 53 | struct work_struct task; |
| 46 | struct line_driver *driver; | 54 | struct line_driver *driver; |
| @@ -52,7 +60,6 @@ struct line { | |||
| 52 | init_pri : INIT_STATIC, \ | 60 | init_pri : INIT_STATIC, \ |
| 53 | chan_list : { }, \ | 61 | chan_list : { }, \ |
| 54 | valid : 1, \ | 62 | valid : 1, \ |
| 55 | sem : { }, \ | ||
| 56 | buffer : NULL, \ | 63 | buffer : NULL, \ |
| 57 | head : NULL, \ | 64 | head : NULL, \ |
| 58 | tail : NULL, \ | 65 | tail : NULL, \ |
| @@ -69,15 +76,18 @@ struct lines { | |||
| 69 | extern void line_close(struct tty_struct *tty, struct file * filp); | 76 | extern void line_close(struct tty_struct *tty, struct file * filp); |
| 70 | extern int line_open(struct line *lines, struct tty_struct *tty, | 77 | extern int line_open(struct line *lines, struct tty_struct *tty, |
| 71 | struct chan_opts *opts); | 78 | struct chan_opts *opts); |
| 72 | extern int line_setup(struct line *lines, int num, char *init, | 79 | extern int line_setup(struct line *lines, unsigned int sizeof_lines, char *init, |
| 73 | int all_allowed); | 80 | int all_allowed); |
| 74 | extern int line_write(struct tty_struct *tty, const unsigned char *buf, int len); | 81 | extern int line_write(struct tty_struct *tty, const unsigned char *buf, int len); |
| 75 | extern void line_put_char(struct tty_struct *tty, unsigned char ch); | 82 | extern void line_put_char(struct tty_struct *tty, unsigned char ch); |
| 76 | extern void line_set_termios(struct tty_struct *tty, struct termios * old); | 83 | extern void line_set_termios(struct tty_struct *tty, struct termios * old); |
| 77 | extern int line_chars_in_buffer(struct tty_struct *tty); | 84 | extern int line_chars_in_buffer(struct tty_struct *tty); |
| 85 | extern void line_flush_buffer(struct tty_struct *tty); | ||
| 86 | extern void line_flush_chars(struct tty_struct *tty); | ||
| 78 | extern int line_write_room(struct tty_struct *tty); | 87 | extern int line_write_room(struct tty_struct *tty); |
| 79 | extern int line_ioctl(struct tty_struct *tty, struct file * file, | 88 | extern int line_ioctl(struct tty_struct *tty, struct file * file, |
| 80 | unsigned int cmd, unsigned long arg); | 89 | unsigned int cmd, unsigned long arg); |
| 90 | |||
| 81 | extern char *add_xterm_umid(char *base); | 91 | extern char *add_xterm_umid(char *base); |
| 82 | extern int line_setup_irq(int fd, int input, int output, struct tty_struct *tty); | 92 | extern int line_setup_irq(int fd, int input, int output, struct tty_struct *tty); |
| 83 | extern void line_close_chan(struct line *line); | 93 | extern void line_close_chan(struct line *line); |
| @@ -89,20 +99,10 @@ extern struct tty_driver * line_register_devfs(struct lines *set, | |||
| 89 | int nlines); | 99 | int nlines); |
| 90 | extern void lines_init(struct line *lines, int nlines); | 100 | extern void lines_init(struct line *lines, int nlines); |
| 91 | extern void close_lines(struct line *lines, int nlines); | 101 | extern void close_lines(struct line *lines, int nlines); |
| 92 | extern int line_config(struct line *lines, int num, char *str); | 102 | |
| 93 | extern int line_remove(struct line *lines, int num, char *str); | 103 | extern int line_config(struct line *lines, unsigned int sizeof_lines, char *str); |
| 94 | extern int line_get_config(char *dev, struct line *lines, int num, char *str, | 104 | extern int line_remove(struct line *lines, unsigned int sizeof_lines, char *str); |
| 105 | extern int line_get_config(char *dev, struct line *lines, unsigned int sizeof_lines, char *str, | ||
| 95 | int size, char **error_out); | 106 | int size, char **error_out); |
| 96 | 107 | ||
| 97 | #endif | 108 | #endif |
| 98 | |||
| 99 | /* | ||
| 100 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 101 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 102 | * adjust the settings for this buffer only. This must remain at the end | ||
| 103 | * of the file. | ||
| 104 | * --------------------------------------------------------------------------- | ||
| 105 | * Local variables: | ||
| 106 | * c-file-style: "linux" | ||
| 107 | * End: | ||
| 108 | */ | ||
diff --git a/arch/um/include/sysdep-i386/syscalls.h b/arch/um/include/sysdep-i386/syscalls.h index 5db81ec9087d..be0a3e3469eb 100644 --- a/arch/um/include/sysdep-i386/syscalls.h +++ b/arch/um/include/sysdep-i386/syscalls.h | |||
| @@ -22,102 +22,3 @@ extern syscall_handler_t old_mmap_i386; | |||
| 22 | extern long sys_mmap2(unsigned long addr, unsigned long len, | 22 | extern long sys_mmap2(unsigned long addr, unsigned long len, |
| 23 | unsigned long prot, unsigned long flags, | 23 | unsigned long prot, unsigned long flags, |
| 24 | unsigned long fd, unsigned long pgoff); | 24 | unsigned long fd, unsigned long pgoff); |
| 25 | |||
| 26 | /* On i386 they choose a meaningless naming.*/ | ||
| 27 | #define __NR_kexec_load __NR_sys_kexec_load | ||
| 28 | |||
| 29 | #define ARCH_SYSCALLS \ | ||
| 30 | [ __NR_waitpid ] = (syscall_handler_t *) sys_waitpid, \ | ||
| 31 | [ __NR_break ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 32 | [ __NR_oldstat ] = (syscall_handler_t *) sys_stat, \ | ||
| 33 | [ __NR_umount ] = (syscall_handler_t *) sys_oldumount, \ | ||
| 34 | [ __NR_stime ] = um_stime, \ | ||
| 35 | [ __NR_oldfstat ] = (syscall_handler_t *) sys_fstat, \ | ||
| 36 | [ __NR_stty ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 37 | [ __NR_gtty ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 38 | [ __NR_nice ] = (syscall_handler_t *) sys_nice, \ | ||
| 39 | [ __NR_ftime ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 40 | [ __NR_prof ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 41 | [ __NR_signal ] = (syscall_handler_t *) sys_signal, \ | ||
| 42 | [ __NR_lock ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 43 | [ __NR_mpx ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 44 | [ __NR_ulimit ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 45 | [ __NR_oldolduname ] = (syscall_handler_t *) sys_olduname, \ | ||
| 46 | [ __NR_sigaction ] = (syscall_handler_t *) sys_sigaction, \ | ||
| 47 | [ __NR_sgetmask ] = (syscall_handler_t *) sys_sgetmask, \ | ||
| 48 | [ __NR_ssetmask ] = (syscall_handler_t *) sys_ssetmask, \ | ||
| 49 | [ __NR_sigsuspend ] = (syscall_handler_t *) sys_sigsuspend, \ | ||
| 50 | [ __NR_sigpending ] = (syscall_handler_t *) sys_sigpending, \ | ||
| 51 | [ __NR_oldlstat ] = (syscall_handler_t *) sys_lstat, \ | ||
| 52 | [ __NR_readdir ] = old_readdir, \ | ||
| 53 | [ __NR_profil ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 54 | [ __NR_socketcall ] = (syscall_handler_t *) sys_socketcall, \ | ||
| 55 | [ __NR_olduname ] = (syscall_handler_t *) sys_uname, \ | ||
| 56 | [ __NR_iopl ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 57 | [ __NR_idle ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 58 | [ __NR_ipc ] = (syscall_handler_t *) sys_ipc, \ | ||
| 59 | [ __NR_sigreturn ] = (syscall_handler_t *) sys_sigreturn, \ | ||
| 60 | [ __NR_sigprocmask ] = (syscall_handler_t *) sys_sigprocmask, \ | ||
| 61 | [ __NR_bdflush ] = (syscall_handler_t *) sys_bdflush, \ | ||
| 62 | [ __NR__llseek ] = (syscall_handler_t *) sys_llseek, \ | ||
| 63 | [ __NR__newselect ] = (syscall_handler_t *) sys_select, \ | ||
| 64 | [ __NR_vm86 ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 65 | [ __NR_mmap ] = (syscall_handler_t *) old_mmap_i386, \ | ||
| 66 | [ __NR_ugetrlimit ] = (syscall_handler_t *) sys_getrlimit, \ | ||
| 67 | [ __NR_mmap2 ] = (syscall_handler_t *) sys_mmap2, \ | ||
| 68 | [ __NR_truncate64 ] = (syscall_handler_t *) sys_truncate64, \ | ||
| 69 | [ __NR_ftruncate64 ] = (syscall_handler_t *) sys_ftruncate64, \ | ||
| 70 | [ __NR_stat64 ] = (syscall_handler_t *) sys_stat64, \ | ||
| 71 | [ __NR_lstat64 ] = (syscall_handler_t *) sys_lstat64, \ | ||
| 72 | [ __NR_fstat64 ] = (syscall_handler_t *) sys_fstat64, \ | ||
| 73 | [ __NR_fcntl64 ] = (syscall_handler_t *) sys_fcntl64, \ | ||
| 74 | [ __NR_sendfile64 ] = (syscall_handler_t *) sys_sendfile64, \ | ||
| 75 | [ __NR_statfs64 ] = (syscall_handler_t *) sys_statfs64, \ | ||
| 76 | [ __NR_fstatfs64 ] = (syscall_handler_t *) sys_fstatfs64, \ | ||
| 77 | [ __NR_fadvise64_64 ] = (syscall_handler_t *) sys_fadvise64_64, \ | ||
| 78 | [ __NR_select ] = (syscall_handler_t *) old_select, \ | ||
| 79 | [ __NR_vm86old ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 80 | [ __NR_modify_ldt ] = (syscall_handler_t *) sys_modify_ldt, \ | ||
| 81 | [ __NR_lchown32 ] = (syscall_handler_t *) sys_lchown, \ | ||
| 82 | [ __NR_getuid32 ] = (syscall_handler_t *) sys_getuid, \ | ||
| 83 | [ __NR_getgid32 ] = (syscall_handler_t *) sys_getgid, \ | ||
| 84 | [ __NR_geteuid32 ] = (syscall_handler_t *) sys_geteuid, \ | ||
| 85 | [ __NR_getegid32 ] = (syscall_handler_t *) sys_getegid, \ | ||
| 86 | [ __NR_setreuid32 ] = (syscall_handler_t *) sys_setreuid, \ | ||
| 87 | [ __NR_setregid32 ] = (syscall_handler_t *) sys_setregid, \ | ||
| 88 | [ __NR_getgroups32 ] = (syscall_handler_t *) sys_getgroups, \ | ||
| 89 | [ __NR_setgroups32 ] = (syscall_handler_t *) sys_setgroups, \ | ||
| 90 | [ __NR_fchown32 ] = (syscall_handler_t *) sys_fchown, \ | ||
| 91 | [ __NR_setresuid32 ] = (syscall_handler_t *) sys_setresuid, \ | ||
| 92 | [ __NR_getresuid32 ] = (syscall_handler_t *) sys_getresuid, \ | ||
| 93 | [ __NR_setresgid32 ] = (syscall_handler_t *) sys_setresgid, \ | ||
| 94 | [ __NR_getresgid32 ] = (syscall_handler_t *) sys_getresgid, \ | ||
| 95 | [ __NR_chown32 ] = (syscall_handler_t *) sys_chown, \ | ||
| 96 | [ __NR_setuid32 ] = (syscall_handler_t *) sys_setuid, \ | ||
| 97 | [ __NR_setgid32 ] = (syscall_handler_t *) sys_setgid, \ | ||
| 98 | [ __NR_setfsuid32 ] = (syscall_handler_t *) sys_setfsuid, \ | ||
| 99 | [ __NR_setfsgid32 ] = (syscall_handler_t *) sys_setfsgid, \ | ||
| 100 | [ __NR_pivot_root ] = (syscall_handler_t *) sys_pivot_root, \ | ||
| 101 | [ __NR_mincore ] = (syscall_handler_t *) sys_mincore, \ | ||
| 102 | [ __NR_madvise ] = (syscall_handler_t *) sys_madvise, \ | ||
| 103 | [ 222 ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 104 | [ 223 ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 105 | [ __NR_set_thread_area ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 106 | [ __NR_get_thread_area ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 107 | [ 251 ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 108 | [ 285 ] = (syscall_handler_t *) sys_ni_syscall, | ||
| 109 | |||
| 110 | /* 222 doesn't yet have a name in include/asm-i386/unistd.h */ | ||
| 111 | |||
| 112 | #define LAST_ARCH_SYSCALL 285 | ||
| 113 | |||
| 114 | /* | ||
| 115 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 116 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 117 | * adjust the settings for this buffer only. This must remain at the end | ||
| 118 | * of the file. | ||
| 119 | * --------------------------------------------------------------------------- | ||
| 120 | * Local variables: | ||
| 121 | * c-file-style: "linux" | ||
| 122 | * End: | ||
| 123 | */ | ||
diff --git a/arch/um/include/sysdep-x86_64/syscalls.h b/arch/um/include/sysdep-x86_64/syscalls.h index b187a4157ff3..67923cca5691 100644 --- a/arch/um/include/sysdep-x86_64/syscalls.h +++ b/arch/um/include/sysdep-x86_64/syscalls.h | |||
| @@ -26,66 +26,9 @@ extern syscall_handler_t *ia32_sys_call_table[]; | |||
| 26 | extern long old_mmap(unsigned long addr, unsigned long len, | 26 | extern long old_mmap(unsigned long addr, unsigned long len, |
| 27 | unsigned long prot, unsigned long flags, | 27 | unsigned long prot, unsigned long flags, |
| 28 | unsigned long fd, unsigned long pgoff); | 28 | unsigned long fd, unsigned long pgoff); |
| 29 | extern syscall_handler_t wrap_sys_shmat; | ||
| 30 | extern syscall_handler_t sys_modify_ldt; | 29 | extern syscall_handler_t sys_modify_ldt; |
| 31 | extern syscall_handler_t sys_arch_prctl; | 30 | extern syscall_handler_t sys_arch_prctl; |
| 32 | 31 | ||
| 33 | #define ARCH_SYSCALLS \ | 32 | #define NR_syscalls (__NR_syscall_max + 1) |
| 34 | [ __NR_mmap ] = (syscall_handler_t *) old_mmap, \ | ||
| 35 | [ __NR_select ] = (syscall_handler_t *) sys_select, \ | ||
| 36 | [ __NR_mincore ] = (syscall_handler_t *) sys_mincore, \ | ||
| 37 | [ __NR_madvise ] = (syscall_handler_t *) sys_madvise, \ | ||
| 38 | [ __NR_shmget ] = (syscall_handler_t *) sys_shmget, \ | ||
| 39 | [ __NR_shmat ] = (syscall_handler_t *) wrap_sys_shmat, \ | ||
| 40 | [ __NR_shmctl ] = (syscall_handler_t *) sys_shmctl, \ | ||
| 41 | [ __NR_semop ] = (syscall_handler_t *) sys_semop, \ | ||
| 42 | [ __NR_semget ] = (syscall_handler_t *) sys_semget, \ | ||
| 43 | [ __NR_semctl ] = (syscall_handler_t *) sys_semctl, \ | ||
| 44 | [ __NR_shmdt ] = (syscall_handler_t *) sys_shmdt, \ | ||
| 45 | [ __NR_msgget ] = (syscall_handler_t *) sys_msgget, \ | ||
| 46 | [ __NR_msgsnd ] = (syscall_handler_t *) sys_msgsnd, \ | ||
| 47 | [ __NR_msgrcv ] = (syscall_handler_t *) sys_msgrcv, \ | ||
| 48 | [ __NR_msgctl ] = (syscall_handler_t *) sys_msgctl, \ | ||
| 49 | [ __NR_pivot_root ] = (syscall_handler_t *) sys_pivot_root, \ | ||
| 50 | [ __NR_tuxcall ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 51 | [ __NR_security ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 52 | [ __NR_epoll_ctl_old ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 53 | [ __NR_epoll_wait_old ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 54 | [ __NR_modify_ldt ] = (syscall_handler_t *) sys_modify_ldt, \ | ||
| 55 | [ __NR_arch_prctl ] = (syscall_handler_t *) sys_arch_prctl, \ | ||
| 56 | [ __NR_socket ] = (syscall_handler_t *) sys_socket, \ | ||
| 57 | [ __NR_connect ] = (syscall_handler_t *) sys_connect, \ | ||
| 58 | [ __NR_accept ] = (syscall_handler_t *) sys_accept, \ | ||
| 59 | [ __NR_recvfrom ] = (syscall_handler_t *) sys_recvfrom, \ | ||
| 60 | [ __NR_recvmsg ] = (syscall_handler_t *) sys_recvmsg, \ | ||
| 61 | [ __NR_sendmsg ] = (syscall_handler_t *) sys_sendmsg, \ | ||
| 62 | [ __NR_bind ] = (syscall_handler_t *) sys_bind, \ | ||
| 63 | [ __NR_listen ] = (syscall_handler_t *) sys_listen, \ | ||
| 64 | [ __NR_getsockname ] = (syscall_handler_t *) sys_getsockname, \ | ||
| 65 | [ __NR_getpeername ] = (syscall_handler_t *) sys_getpeername, \ | ||
| 66 | [ __NR_socketpair ] = (syscall_handler_t *) sys_socketpair, \ | ||
| 67 | [ __NR_sendto ] = (syscall_handler_t *) sys_sendto, \ | ||
| 68 | [ __NR_shutdown ] = (syscall_handler_t *) sys_shutdown, \ | ||
| 69 | [ __NR_setsockopt ] = (syscall_handler_t *) sys_setsockopt, \ | ||
| 70 | [ __NR_getsockopt ] = (syscall_handler_t *) sys_getsockopt, \ | ||
| 71 | [ __NR_iopl ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 72 | [ __NR_set_thread_area ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 73 | [ __NR_get_thread_area ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
| 74 | [ __NR_semtimedop ] = (syscall_handler_t *) sys_semtimedop, \ | ||
| 75 | [ 251 ] = (syscall_handler_t *) sys_ni_syscall, | ||
| 76 | |||
| 77 | #define LAST_ARCH_SYSCALL 251 | ||
| 78 | #define NR_syscalls 1024 | ||
| 79 | 33 | ||
| 80 | #endif | 34 | #endif |
| 81 | |||
| 82 | /* | ||
| 83 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 84 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 85 | * adjust the settings for this buffer only. This must remain at the end | ||
| 86 | * of the file. | ||
| 87 | * --------------------------------------------------------------------------- | ||
| 88 | * Local variables: | ||
| 89 | * c-file-style: "linux" | ||
| 90 | * End: | ||
| 91 | */ | ||
