mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 02:09:42 +00:00
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: Jeff Dike <jdike@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7b5cc6ee6c
commit
bf8fde785b
7 changed files with 18 additions and 40 deletions
|
@ -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)
|
||||||
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);
|
||||||
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)
|
||||||
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)
|
||||||
.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);
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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;
|
||||||
|
|
||||||
/* XXX This should do F_GETFL first */
|
flags = fcntl(fd, F_GETFL);
|
||||||
if(fcntl(fd, F_SETFL, O_ASYNC | O_NONBLOCK) < 0){
|
if (flags < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
flags |= O_ASYNC | O_NONBLOCK;
|
||||||
|
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)
|
||||||
* 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)
|
||||||
|
|
Loading…
Reference in a new issue