提交 bf8fde78 编写于 作者: J Jeff Dike 提交者: Linus Torvalds

uml: miscellaneous code cleanups

Code tidying -
	the pid field of struct irq_fd isn't used, so it is removed
     	os_set_fd_async needed to read flags before changing them, it
doesn't need a pid passed in because it can call getpid itself, and a
block of unused code needed deleting
	os_get_exec_close was unused, so it is removed
	ptrace_child called _exit for historical reasons which are no
longer valid, so just calls exit instead
Signed-off-by: NJeff Dike <jdike@linux.intel.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 7b5cc6ee
...@@ -14,7 +14,6 @@ struct irq_fd { ...@@ -14,7 +14,6 @@ struct irq_fd {
int fd; int fd;
int type; int type;
int irq; int irq;
int pid;
int events; int events;
int current_events; int current_events;
}; };
......
...@@ -127,7 +127,6 @@ static inline struct openflags of_cloexec(struct openflags flags) ...@@ -127,7 +127,6 @@ static inline struct openflags of_cloexec(struct openflags flags)
extern int os_stat_file(const char *file_name, struct uml_stat *buf); extern int os_stat_file(const char *file_name, struct uml_stat *buf);
extern int os_stat_fd(const int fd, struct uml_stat *buf); extern int os_stat_fd(const int fd, struct uml_stat *buf);
extern int os_access(const char *file, int mode); extern int os_access(const char *file, int mode);
extern int os_get_exec_close(int fd, int *close_on_exec);
extern int os_set_exec_close(int fd); extern int os_set_exec_close(int fd);
extern int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg); 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_get_ifname(int fd, char *namebuf);
...@@ -142,7 +141,7 @@ extern int os_write_file(int fd, const void *buf, int count); ...@@ -142,7 +141,7 @@ extern int os_write_file(int fd, const void *buf, int count);
extern int os_file_size(const char *file, unsigned long long *size_out); 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_file_modtime(const char *file, unsigned long *modtime);
extern int os_pipe(int *fd, int stream, int close_on_exec); extern int os_pipe(int *fd, int stream, int close_on_exec);
extern int os_set_fd_async(int fd, int owner); extern int os_set_fd_async(int fd);
extern int os_clear_fd_async(int fd); extern int os_clear_fd_async(int fd);
extern int os_set_fd_block(int fd, int blocking); extern int os_set_fd_block(int fd, int blocking);
extern int os_accept_connection(int fd); extern int os_accept_connection(int fd);
......
...@@ -107,10 +107,9 @@ int activate_fd(int irq, int fd, int type, void *dev_id) ...@@ -107,10 +107,9 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
struct pollfd *tmp_pfd; struct pollfd *tmp_pfd;
struct irq_fd *new_fd, *irq_fd; struct irq_fd *new_fd, *irq_fd;
unsigned long flags; unsigned long flags;
int pid, events, err, n; int events, err, n;
pid = os_getpid(); err = os_set_fd_async(fd);
err = os_set_fd_async(fd, pid);
if (err < 0) if (err < 0)
goto out; goto out;
...@@ -127,7 +126,6 @@ int activate_fd(int irq, int fd, int type, void *dev_id) ...@@ -127,7 +126,6 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
.fd = fd, .fd = fd,
.type = type, .type = type,
.irq = irq, .irq = irq,
.pid = pid,
.events = events, .events = events,
.current_events = 0 } ); .current_events = 0 } );
......
...@@ -36,7 +36,6 @@ EXPORT_SYMBOL(uml_strdup); ...@@ -36,7 +36,6 @@ EXPORT_SYMBOL(uml_strdup);
EXPORT_SYMBOL(os_stat_fd); EXPORT_SYMBOL(os_stat_fd);
EXPORT_SYMBOL(os_stat_file); EXPORT_SYMBOL(os_stat_file);
EXPORT_SYMBOL(os_access); EXPORT_SYMBOL(os_access);
EXPORT_SYMBOL(os_get_exec_close);
EXPORT_SYMBOL(os_set_exec_close); EXPORT_SYMBOL(os_set_exec_close);
EXPORT_SYMBOL(os_getpid); EXPORT_SYMBOL(os_getpid);
EXPORT_SYMBOL(os_open_file); EXPORT_SYMBOL(os_open_file);
......
...@@ -74,8 +74,7 @@ static int idle_proc(void *cpup) ...@@ -74,8 +74,7 @@ static int idle_proc(void *cpup)
if (err < 0) if (err < 0)
panic("CPU#%d failed to create IPI pipe, err = %d", cpu, -err); panic("CPU#%d failed to create IPI pipe, err = %d", cpu, -err);
os_set_fd_async(cpu_data[cpu].ipi_pipe[0], os_set_fd_async(cpu_data[cpu].ipi_pipe[0]);
current->thread.mode.tt.extern_pid);
wmb(); wmb();
if (cpu_test_and_set(cpu, cpu_callin_map)) { if (cpu_test_and_set(cpu, cpu_callin_map)) {
...@@ -128,8 +127,7 @@ void smp_prepare_cpus(unsigned int maxcpus) ...@@ -128,8 +127,7 @@ void smp_prepare_cpus(unsigned int maxcpus)
if (err < 0) if (err < 0)
panic("CPU#0 failed to create IPI pipe, errno = %d", -err); panic("CPU#0 failed to create IPI pipe, errno = %d", -err);
os_set_fd_async(cpu_data[me].ipi_pipe[0], os_set_fd_async(cpu_data[me].ipi_pipe[0]);
current->thread.mode.tt.extern_pid);
for (cpu = 1; cpu < ncpus; cpu++) { for (cpu = 1; cpu < ncpus; cpu++) {
printk(KERN_INFO "Booting processor %d...\n", cpu); printk(KERN_INFO "Booting processor %d...\n", cpu);
......
...@@ -328,19 +328,6 @@ int os_file_modtime(const char *file, unsigned long *modtime) ...@@ -328,19 +328,6 @@ int os_file_modtime(const char *file, unsigned long *modtime)
return 0; return 0;
} }
int os_get_exec_close(int fd, int *close_on_exec)
{
int ret;
CATCH_EINTR(ret = fcntl(fd, F_GETFD));
if(ret < 0)
return -errno;
*close_on_exec = (ret & FD_CLOEXEC) ? 1 : 0;
return ret;
}
int os_set_exec_close(int fd) int os_set_exec_close(int fd)
{ {
int err; int err;
...@@ -380,30 +367,27 @@ int os_pipe(int *fds, int stream, int close_on_exec) ...@@ -380,30 +367,27 @@ int os_pipe(int *fds, int stream, int close_on_exec)
return err; return err;
} }
int os_set_fd_async(int fd, int owner) int os_set_fd_async(int fd)
{ {
int err; int err, flags;
flags = fcntl(fd, F_GETFL);
if (flags < 0)
return -errno;
/* XXX This should do F_GETFL first */ flags |= O_ASYNC | O_NONBLOCK;
if(fcntl(fd, F_SETFL, O_ASYNC | O_NONBLOCK) < 0){ if (fcntl(fd, F_SETFL, flags) < 0) {
err = -errno; err = -errno;
printk("os_set_fd_async : failed to set O_ASYNC and " printk("os_set_fd_async : failed to set O_ASYNC and "
"O_NONBLOCK on fd # %d, errno = %d\n", fd, errno); "O_NONBLOCK on fd # %d, errno = %d\n", fd, errno);
return err; return err;
} }
#ifdef notdef
if(fcntl(fd, F_SETFD, 1) < 0){
printk("os_set_fd_async : Setting FD_CLOEXEC failed, "
"errno = %d\n", errno);
}
#endif
if((fcntl(fd, F_SETSIG, SIGIO) < 0) || if ((fcntl(fd, F_SETSIG, SIGIO) < 0) ||
(fcntl(fd, F_SETOWN, owner) < 0)){ (fcntl(fd, F_SETOWN, os_getpid()) < 0)) {
err = -errno; err = -errno;
printk("os_set_fd_async : Failed to fcntl F_SETOWN " printk("os_set_fd_async : Failed to fcntl F_SETOWN "
"(or F_SETSIG) fd %d to pid %d, errno = %d\n", fd, "(or F_SETSIG) fd %d, errno = %d\n", fd, errno);
owner, errno);
return err; return err;
} }
......
...@@ -60,7 +60,8 @@ static int ptrace_child(void) ...@@ -60,7 +60,8 @@ static int ptrace_child(void)
* the UML code itself. * the UML code itself.
*/ */
ret = 2; ret = 2;
_exit(ret);
exit(ret);
} }
static void fatal_perror(const char *str) static void fatal_perror(const char *str)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册