Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60d339f6 authored by Gennady Sharapov's avatar Gennady Sharapov Committed by Linus Torvalds
Browse files

[PATCH] uml: move libc-dependent startup and signal code



The serial UML OS-abstraction layer patch (um/kernel dir).

This moves all systemcalls from process.c file under os-Linux dir and join
process.c and process_kern.c files.

Signed-off-by: default avatarGennady Sharapov <gennady.v.sharapov@intel.com>
Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 09ace81c
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -153,6 +153,11 @@ extern int os_file_type(char *file);
extern int os_file_mode(char *file, struct openflags *mode_out);
extern int os_lock_file(int fd, int excl);

/* start_up.c */
extern void os_early_checks(void);
extern int can_do_skas(void);

/* process.c */
extern unsigned long os_process_pc(int pid);
extern int os_process_parent(int pid);
extern void os_stop_process(int pid);
@@ -161,6 +166,9 @@ extern void os_kill_ptraced_process(int pid, int reap_child);
extern void os_usr1_process(int pid);
extern int os_getpid(void);
extern int os_getpgrp(void);
extern void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int));
extern void init_new_thread_signals(int altstack);
extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr);

extern int os_map_memory(void *virt, int fd, unsigned long long off,
			 unsigned long len, int r, int w, int x);
@@ -170,6 +178,13 @@ extern int os_unmap_memory(void *addr, int len);
extern void os_flush_stdout(void);
extern unsigned long long os_usecs(void);

/* tt.c
 * for tt mode only (will be deleted in future...)
 */
extern void forward_pending_sigio(int target);
extern int start_fork_tramp(void *arg, unsigned long temp_stack,
			    int clone_flags, int (*tramp)(void *));

#endif

/*
+0 −8
Original line number Diff line number Diff line
@@ -54,8 +54,6 @@ extern void stack_protections(unsigned long address);
extern void task_protections(unsigned long address);
extern int wait_for_stop(int pid, int sig, int cont_type, void *relay);
extern void *add_signal_handler(int sig, void (*handler)(int));
extern int start_fork_tramp(void *arg, unsigned long temp_stack, 
			    int clone_flags, int (*tramp)(void *));
extern int linux_main(int argc, char **argv);
extern void set_cmdline(char *cmd);
extern void input_cb(void (*proc)(void *), void *arg, int arg_len);
@@ -64,8 +62,6 @@ extern void *um_kmalloc(int size);
extern int switcheroo(int fd, int prot, void *from, void *to, int size);
extern void setup_machinename(char *machine_out);
extern void setup_hostinfo(void);
extern void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int));
extern void init_new_thread_signals(int altstack);
extern void do_exec(int old_pid, int new_pid);
extern void tracer_panic(char *msg, ...);
extern char *get_umid(int only_if_set);
@@ -74,16 +70,12 @@ extern int detach(int pid, int sig);
extern int attach(int pid);
extern void kill_child_dead(int pid);
extern int cont(int pid);
extern void check_ptrace(void);
extern void check_sigio(void);
extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr);
extern void write_sigio_workaround(void);
extern void arch_check_bugs(void);
extern int cpu_feature(char *what, char *buf, int len);
extern int arch_handle_signal(int sig, union uml_pt_regs *regs);
extern int arch_fixup(unsigned long address, void *sc_ptr);
extern void forward_pending_sigio(int target);
extern int can_do_skas(void);
extern void arch_init_thread(void);
extern int setjmp_wrapper(void (*proc)(void *, void *), ...);
extern int raw(int fd);
+6 −7
Original line number Diff line number Diff line
@@ -8,11 +8,10 @@ clean-files :=

obj-y = config.o exec_kern.o exitcode.o \
	helper.o init_task.o irq.o irq_user.o ksyms.o main.o mem.o mem_user.o \
	physmem.o process.o process_kern.o ptrace.o reboot.o resource.o \
	sigio_user.o sigio_kern.o signal_kern.o signal_user.o smp.o \
	syscall_kern.o sysrq.o tempfile.o time.o time_kern.o \
	tlb.o trap_kern.o trap_user.o uaccess_user.o um_arch.o umid.o \
	user_util.o
	physmem.o process_kern.o ptrace.o reboot.o resource.o sigio_user.o \
	sigio_kern.o signal_kern.o signal_user.o smp.o syscall_kern.o sysrq.o \
	tempfile.o time.o time_kern.o tlb.o trap_kern.o trap_user.o \
	uaccess_user.o um_arch.o umid.o user_util.o

obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o
obj-$(CONFIG_GPROF)	+= gprof_syms.o
@@ -25,8 +24,8 @@ obj-$(CONFIG_MODE_SKAS) += skas/

user-objs-$(CONFIG_TTY_LOG) += tty_log.o

USER_OBJS := $(user-objs-y) config.o helper.o main.o process.o tempfile.o \
	time.o tty_log.o umid.o user_util.o
USER_OBJS := $(user-objs-y) config.o helper.o main.o tempfile.o time.o \
	tty_log.o umid.o user_util.o

include arch/um/scripts/Makefile.rules

+1 −1
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ int linux_main(int argc, char **argv)
	if(have_root == 0)
		add_arg(DEFAULT_COMMAND_LINE);

	os_early_checks();
	mode_tt = force_tt ? 1 : !can_do_skas();
#ifndef CONFIG_MODE_TT
	if (mode_tt) {
@@ -470,7 +471,6 @@ void __init setup_arch(char **cmdline_p)
void __init check_bugs(void)
{
	arch_check_bugs();
	check_ptrace();
	check_sigio();
	check_devanon();
}
+4 −3
Original line number Diff line number Diff line
@@ -3,10 +3,11 @@
# Licensed under the GPL
#

obj-y = aio.o elf_aux.o file.o process.o signal.o time.o tty.o user_syms.o \
	drivers/ sys-$(SUBARCH)/
obj-y = aio.o elf_aux.o file.o process.o signal.o start_up.o time.o tt.o \
	tty.o user_syms.o drivers/ sys-$(SUBARCH)/

USER_OBJS := aio.o elf_aux.o file.o process.o signal.o time.o tty.o
USER_OBJS := aio.o elf_aux.o file.o process.o signal.o start_up.o time.o tt.o \
	tty.o

CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH)

Loading