Message ID | d5df1b8807384a00f96e4b02d41a37183fad5562.1601960644.git.thehajime@gmail.com |
---|---|
State | Not Applicable |
Headers | show |
Series | [RFC,v7,01/21] um: split build in kernel and host parts | expand |
On Tue, 2020-10-06 at 18:44 +0900, Hajime Tazaki wrote: > This patch moves underlying OS dependent part under arch/um to tools/um > directory so that arch/um code does not need to build host build > facilities (e.g., libc). Hmm. On the one hand, that build separation seems sensible, but on the other hand this stuff *does* fundamentally belong to arch/um/, and it's not a "tool" like basically everything else there that is a pure userspace application to run *inside* the kernel, not *part of* it. For that reason, I don't really like this much. > tools/um/uml/Build | 48 +++++++++++++++++++ > tools/um/uml/drivers/Build | 10 ++++ Also, what's with the names here? What's wrong with "Makefile"? I'm also not sure I see how this is built at all from the top level Makefile? Oh. I think Anton said it doesn't ... that alone would be a reason not to do it I guess. So why do you think it must be under tools/? Even if you consider "lkl" a "tool", that doesn't mean it must be there. I also consider a UML binary ("linux") a "tool" in my simulation environment, etc. And even LKL, which is the eventual goal here - why would you consider that a "tool"? I don't think we should. johannes
On Wed, Oct 7, 2020 at 6:20 PM Johannes Berg <johannes@sipsolutions.net> wrote: > Hi Johannes, Thank you for the review. > On Tue, 2020-10-06 at 18:44 +0900, Hajime Tazaki wrote: > > This patch moves underlying OS dependent part under arch/um to tools/um > > directory so that arch/um code does not need to build host build > > facilities (e.g., libc). > > Hmm. On the one hand, that build separation seems sensible, but on the > other hand this stuff *does* fundamentally belong to arch/um/, and it's > not a "tool" like basically everything else there that is a pure > userspace application to run *inside* the kernel, not *part of* it. > > For that reason, I don't really like this much. > I see the os_*() calls as dependencies that the kernel uses. Sort of like calls into the hypervisor or firmware. The current UML build is already partially split. USER_OBJS build with a different rule set than the rest of the kernel objects. IMHO this change just makes this more clear and streamlined, especially with regard to linking. > > > tools/um/uml/Build | 48 +++++++++++++++++++ > > tools/um/uml/drivers/Build | 10 ++++ > > Also, what's with the names here? What's wrong with "Makefile"? > > We are using the same build system as the rest of the stuff in tools. Since it is building programs and libraries and not part of the kernel binary build, it is using a slightly different infrastructure, which is detailed in tools/build/Documentation/Build.txt > I'm also not sure I see how this is built at all from the top level > Makefile? Oh. I think Anton said it doesn't ... that alone would be a > reason not to do it I guess. > > > So why do you think it must be under tools/? Even if you consider "lkl" > a "tool", that doesn't mean it must be there. I also consider a UML > binary ("linux") a "tool" in my simulation environment, etc. > > > And even LKL, which is the eventual goal here - why would you consider > that a "tool"? I don't think we should. > The reason for picking tools was that it already has the infrastructure to build programs and shared libraries and the fact that it is the only place in the kernel source tree where code is not built directly into the kernel binary.
On Thu, 2020-10-08 at 20:48 +0300, Octavian Purdila wrote: > > On Tue, 2020-10-06 at 18:44 +0900, Hajime Tazaki wrote: > > > This patch moves underlying OS dependent part under arch/um to tools/um > > > directory so that arch/um code does not need to build host build > > > facilities (e.g., libc). > > > > Hmm. On the one hand, that build separation seems sensible, but on the > > other hand this stuff *does* fundamentally belong to arch/um/, and it's > > not a "tool" like basically everything else there that is a pure > > userspace application to run *inside* the kernel, not *part of* it. > > > > For that reason, I don't really like this much. > > > > I see the os_*() calls as dependencies that the kernel uses. Sort of > like calls into the hypervisor or firmware. Right. > The current UML build is already partially split. USER_OBJS build with > a different rule set than the rest of the kernel objects. Yes, that's true. > IMHO this > change just makes this more clear and streamlined, especially with > regard to linking. Well, maybe? But I actually tend to see this less as a question of (technical) convenience but semantics, and the tools are just not *meant* to be things that build a kernel, they're things to be used inside that kernel. I dunno. Maybe the technical convenience should win, but OTOH the "contortions" that UML build goes through with USER_OBJS don't really seem bad enough to merit breaking the notion of what tools are? > We are using the same build system as the rest of the stuff in tools. > Since it is building programs and libraries and not part of the kernel > binary build, it is using a slightly different infrastructure, which > is detailed in tools/build/Documentation/Build.txt OK, thanks for the pointer, I hadn't seen that before. > The reason for picking tools was that it already has the > infrastructure to build programs and shared libraries and the fact > that it is the only place in the kernel source tree where code is not > built directly into the kernel binary. Yeah, but all of UML/LKL _is_ eventually built into the kernel binary (or library as it may be). Which is in a way exactly my objection. You're looking at it the other way around I think - it seems that you're thinking the kernel binary is the vmlinux.a, and that's what the kernel's build system worries about; then the "vmlinux.so" (library mode) or "linux" (standalone mode - perhaps that's a good name?) is the eventual 'tool' that we build, using the previously built vmlinux.a. But that really isn't how standalone mode works, and IMHO it also doesn't match what tools are today. johannes
On Thu, Oct 8, 2020 at 10:46 PM Johannes Berg <johannes@sipsolutions.net> wrote: > > On Thu, 2020-10-08 at 20:48 +0300, Octavian Purdila wrote: > > > > On Tue, 2020-10-06 at 18:44 +0900, Hajime Tazaki wrote: > > > > This patch moves underlying OS dependent part under arch/um to tools/um > > > > directory so that arch/um code does not need to build host build > > > > facilities (e.g., libc). > > > > > > Hmm. On the one hand, that build separation seems sensible, but on the > > > other hand this stuff *does* fundamentally belong to arch/um/, and it's > > > not a "tool" like basically everything else there that is a pure > > > userspace application to run *inside* the kernel, not *part of* it. > > > > > > For that reason, I don't really like this much. > > > > > > > I see the os_*() calls as dependencies that the kernel uses. Sort of > > like calls into the hypervisor or firmware. > > Right. > > > The current UML build is already partially split. USER_OBJS build with > > a different rule set than the rest of the kernel objects. > > Yes, that's true. > > > IMHO this > > change just makes this more clear and streamlined, especially with > > regard to linking. > > Well, maybe? But I actually tend to see this less as a question of > (technical) convenience but semantics, and the tools are just not > *meant* to be things that build a kernel, they're things to be used > inside that kernel. > > I dunno. Maybe the technical convenience should win, but OTOH the > "contortions" that UML build goes through with USER_OBJS don't really > seem bad enough to merit breaking the notion of what tools are? > Half-joking, technically uml is not a kernel, it is a tool that simulates a kernel and it uses part of the Linux kernel to do that :) > > We are using the same build system as the rest of the stuff in tools. > > Since it is building programs and libraries and not part of the kernel > > binary build, it is using a slightly different infrastructure, which > > is detailed in tools/build/Documentation/Build.txt > > OK, thanks for the pointer, I hadn't seen that before. > > > The reason for picking tools was that it already has the > > infrastructure to build programs and shared libraries and the fact > > that it is the only place in the kernel source tree where code is not > > built directly into the kernel binary. > > Yeah, but all of UML/LKL _is_ eventually built into the kernel binary > (or library as it may be). Which is in a way exactly my objection. > Leaving the library/standalone build itself aside for a while, do you agree that the various tools we are building with library mode should be placed in tools? Things like lklfuse - mounting Linux filesystems with fuse, or lklhijack.so - a preload library that intercept network/file system calls and routes them through the library mode. > You're looking at it the other way around I think - it seems that you're > thinking the kernel binary is the vmlinux.a, and that's what the > kernel's build system worries about; then the "vmlinux.so" (library > mode) or "linux" (standalone mode - perhaps that's a good name?) is the > eventual 'tool' that we build, using the previously built vmlinux.a. > Correct, this is my perspective. > But that really isn't how standalone mode works, and IMHO it also > doesn't match what tools are today. > What if we could use standalone mode for other purposes that would require creating a new binary in addition to the current linux binary?
On Thu, 2020-10-08 at 23:53 +0300, Octavian Purdila wrote: > Leaving the library/standalone build itself aside for a while, do you > agree that the various tools we are building with library mode should > be placed in tools? Things like lklfuse - mounting Linux filesystems > with fuse, or lklhijack.so - a preload library that intercept > network/file system calls and routes them through the library mode. Yeah, I guess that makes sense. I realize the line gets blurry ... OTOH, should these even live in the kernel tree? Almost seems like if the base lkl library is there, the other stuff might not really need to be, it's supposed to use the (stable) syscall API? Dunno. Not sure "doesn't need to be" really is an argument for "shouldn't be" anyway. > > You're looking at it the other way around I think - it seems that you're > > thinking the kernel binary is the vmlinux.a, and that's what the > > kernel's build system worries about; then the "vmlinux.so" (library > > mode) or "linux" (standalone mode - perhaps that's a good name?) is the > > eventual 'tool' that we build, using the previously built vmlinux.a. > > > > Correct, this is my perspective. > > > But that really isn't how standalone mode works, and IMHO it also > > doesn't match what tools are today. > > > > What if we could use standalone mode for other purposes that would > require creating a new binary in addition to the current linux binary? Anything specific you have in mind? But I still think that "UML standalone 'linux' binary" is something that seems like the kernel build system should be able do? If only to avoid regressions from what we have now ... johannes
diff --git a/arch/um/Makefile b/arch/um/Makefile index 09745b40c52d..8be7bc479442 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -24,8 +24,7 @@ OS := $(shell uname -s) SHELL := /bin/bash core-y += $(ARCH_DIR)/kernel/ \ - $(ARCH_DIR)/drivers/ \ - $(ARCH_DIR)/os-$(OS)/ + $(ARCH_DIR)/drivers/ MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/shared/skas diff --git a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile index 2a249f619467..ae96c83e312d 100644 --- a/arch/um/drivers/Makefile +++ b/arch/um/drivers/Makefile @@ -48,6 +48,8 @@ obj-$(CONFIG_UML_NET_VECTOR) += vector.o obj-$(CONFIG_UML_NET_VDE) += vde.o obj-$(CONFIG_UML_NET_MCAST) += umcast.o obj-$(CONFIG_UML_NET_PCAP) += pcap.o +obj-$(CONFIG_UML_NET_ETHERTAP) += ethertap_kern.o +obj-$(CONFIG_UML_NET_TUNTAP) += tuntap_kern.o obj-$(CONFIG_UML_NET) += net.o obj-$(CONFIG_MCONSOLE) += mconsole.o obj-$(CONFIG_MMAPPER) += mmapper_kern.o diff --git a/arch/um/os-Linux/drivers/ethertap_kern.c b/arch/um/drivers/ethertap_kern.c similarity index 100% rename from arch/um/os-Linux/drivers/ethertap_kern.c rename to arch/um/drivers/ethertap_kern.c diff --git a/arch/um/os-Linux/drivers/tuntap_kern.c b/arch/um/drivers/tuntap_kern.c similarity index 100% rename from arch/um/os-Linux/drivers/tuntap_kern.c rename to arch/um/drivers/tuntap_kern.c diff --git a/arch/um/os-Linux/drivers/etap.h b/arch/um/include/shared/etap.h similarity index 100% rename from arch/um/os-Linux/drivers/etap.h rename to arch/um/include/shared/etap.h diff --git a/arch/um/include/shared/init.h b/arch/um/include/shared/init.h index d09308330ca5..305789667584 100644 --- a/arch/um/include/shared/init.h +++ b/arch/um/include/shared/init.h @@ -41,7 +41,12 @@ typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); +#ifndef __UM_HOST__ #include <linux/compiler_types.h> +#else +#define __used __attribute__((__used__)) +#define __section(S) __attribute__((__section__(#S))) +#endif /* These are for everybody (although not all archs will actually discard it in modules) */ diff --git a/arch/um/os-Linux/drivers/tuntap.h b/arch/um/include/shared/tuntap.h similarity index 100% rename from arch/um/os-Linux/drivers/tuntap.h rename to arch/um/include/shared/tuntap.h diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index 5aa882011e04..9b63831a69e1 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile @@ -24,6 +24,7 @@ obj-$(CONFIG_GPROF) += gprof_syms.o obj-$(CONFIG_GCOV) += gmon_syms.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_STACKTRACE) += stacktrace.o +obj-y += user_syms.o USER_OBJS := config.o diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/kernel/user_syms.c similarity index 100% rename from arch/um/os-Linux/user_syms.c rename to arch/um/kernel/user_syms.c diff --git a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile deleted file mode 100644 index 839915b8c31c..000000000000 --- a/arch/um/os-Linux/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# -# Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) -# - -# Don't instrument UML-specific code -KCOV_INSTRUMENT := n - -obj-y = execvp.o file.o helper.o irq.o main.o mem.o process.o \ - registers.o sigio.o signal.o start_up.o time.o tty.o \ - umid.o user_syms.o util.o drivers/ skas/ - -obj-$(CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA) += elf_aux.o - -USER_OBJS := $(user-objs-y) elf_aux.o execvp.o file.o helper.o irq.o \ - main.o mem.o process.o registers.o sigio.o signal.o start_up.o time.o \ - tty.o umid.o util.o - -include arch/um/scripts/Makefile.rules diff --git a/arch/um/os-Linux/drivers/Makefile b/arch/um/os-Linux/drivers/Makefile deleted file mode 100644 index d79e75f1b69a..000000000000 --- a/arch/um/os-Linux/drivers/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# -# Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com) -# - -ethertap-objs := ethertap_kern.o ethertap_user.o -tuntap-objs := tuntap_kern.o tuntap_user.o - -obj-y = -obj-$(CONFIG_UML_NET_ETHERTAP) += ethertap.o -obj-$(CONFIG_UML_NET_TUNTAP) += tuntap.o - -include arch/um/scripts/Makefile.rules diff --git a/tools/um/Makefile b/tools/um/Makefile index a63466ef7ef5..07b9b93ed817 100644 --- a/tools/um/Makefile +++ b/tools/um/Makefile @@ -50,7 +50,7 @@ $(OUTPUT)lib/linux.o: $(Q)CFLAGS= $(MAKE) -C ../.. ARCH=um $(KOPT) $(KCONFIG) $(Q)CFLAGS= $(MAKE) -C ../.. ARCH=um $(KOPT) install INSTALL_PATH=$(OUTPUT) -$(OUTPUT)liblinux.a: $(OUTPUT)lib/linux.o $(OUTPUT)uml/liblinux-in.o +$(OUTPUT)liblinux.a: $(OUTPUT)lib/linux.o $(OUTPUT)uml/liblinux-in.o $(OUTPUT)lib/liblinux-in.o $(QUIET_AR)$(AR) -rc $@ $^ # rule to link programs @@ -60,6 +60,10 @@ $(OUTPUT)%: $(OUTPUT)%-in.o $(OUTPUT)liblinux.a $(OUTPUT)%-in.o: FORCE $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(patsubst %/,%,$(dir $*)) obj=$(notdir $*) +# rule to build objects +$(OUTPUT)%-in.o: $(OUTPUT)lib/linux.o + $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(patsubst %/,%,$(dir $*)) obj=$(notdir $*) + clean: $(call QUIET_CLEAN, objects)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd'\ -delete -o -name '\.*.d' -delete diff --git a/tools/um/uml/Build b/tools/um/uml/Build index e69de29bb2d1..ad93c6ad51fc 100644 --- a/tools/um/uml/Build +++ b/tools/um/uml/Build @@ -0,0 +1,48 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) +# + +# Don't instrument UML-specific code +KCOV_INSTRUMENT := n + +include $(objtree)/include/config/auto.conf + +liblinux-y += execvp.o file.o helper.o irq.o main.o mem.o process.o \ + registers.o sigio.o signal.o start_up.o time.o tty.o \ + umid.o util.o drivers/ skas/ + +liblinux-$(CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA) += elf_aux.o + +export O = $(srctree) +objtree := $(O) +# reset CFLAGS +CFLAGS := -g -O2 + +# from arch/um/Makefile +ARCH_DIR := arch/um +HEADER_ARCH := x86 +HOST_DIR := arch/$(HEADER_ARCH) +ifdef CONFIG_64BIT + KBUILD_CFLAGS += -mcmodel=large +endif +KBUILD_CFLAGS += $(CFLAGS) $(CFLAGS-y) -D__arch_um__ \ + $(ARCH_INCLUDE) $(MODE_INCLUDE) -Dvmap=kernel_vmap \ + -Dlongjmp=kernel_longjmp -Dsetjmp=kernel_setjmp \ + -Din6addr_loopback=kernel_in6addr_loopback \ + -Din6addr_any=kernel_in6addr_any -Dstrrchr=kernel_strrchr +SHARED_HEADERS := $(ARCH_DIR)/include/shared +MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/shared/skas +ARCH_INCLUDE := -I$(srctree)/$(SHARED_HEADERS) +ARCH_INCLUDE += -I$(srctree)/$(HOST_DIR)/um/shared +KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um +USER_CFLAGS := $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \ + $(ARCH_INCLUDE) $(MODE_INCLUDE) $(filter -I%,$(CFLAGS)) \ + -D_FILE_OFFSET_BITS=64 -idirafter $(srctree)/include/uapi \ + -idirafter $(objtree)/include -D__KERNEL__ -D__UM_HOST__ + +# from Makefile-os-Linux +USER_CFLAGS += -D_GNU_SOURCE -D_LARGEFILE64_SOURCE + +# from Makefile.rules +CFLAGS += $(USER_CFLAGS) -include $(srctree)/tools/include/linux/kern_levels.h -include user.h $(CFLAGS_$(basetarget).o) diff --git a/tools/um/uml/drivers/Build b/tools/um/uml/drivers/Build new file mode 100644 index 000000000000..c7a8eaa97d72 --- /dev/null +++ b/tools/um/uml/drivers/Build @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com) +# + +include $(objtree)/include/config/auto.conf + + +liblinux-$(CONFIG_UML_NET_ETHERTAP) += ethertap_user.o +liblinux-$(CONFIG_UML_NET_TUNTAP) += tuntap_user.o diff --git a/arch/um/os-Linux/drivers/ethertap_user.c b/tools/um/uml/drivers/ethertap_user.c similarity index 100% rename from arch/um/os-Linux/drivers/ethertap_user.c rename to tools/um/uml/drivers/ethertap_user.c diff --git a/arch/um/os-Linux/drivers/tuntap_user.c b/tools/um/uml/drivers/tuntap_user.c similarity index 100% rename from arch/um/os-Linux/drivers/tuntap_user.c rename to tools/um/uml/drivers/tuntap_user.c diff --git a/arch/um/os-Linux/elf_aux.c b/tools/um/uml/elf_aux.c similarity index 100% rename from arch/um/os-Linux/elf_aux.c rename to tools/um/uml/elf_aux.c diff --git a/arch/um/os-Linux/execvp.c b/tools/um/uml/execvp.c similarity index 98% rename from arch/um/os-Linux/execvp.c rename to tools/um/uml/execvp.c index 84a0777c2a45..c105e0e7b778 100644 --- a/arch/um/os-Linux/execvp.c +++ b/tools/um/uml/execvp.c @@ -26,12 +26,8 @@ #include <errno.h> #include <limits.h> -#ifndef TEST -#include <um_malloc.h> -#else #include <stdio.h> #define um_kmalloc malloc -#endif #include <os.h> /* Execute FILE, searching in the `PATH' environment variable if it contains diff --git a/arch/um/os-Linux/file.c b/tools/um/uml/file.c similarity index 100% rename from arch/um/os-Linux/file.c rename to tools/um/uml/file.c diff --git a/arch/um/os-Linux/helper.c b/tools/um/uml/helper.c similarity index 100% rename from arch/um/os-Linux/helper.c rename to tools/um/uml/helper.c diff --git a/arch/um/os-Linux/irq.c b/tools/um/uml/irq.c similarity index 100% rename from arch/um/os-Linux/irq.c rename to tools/um/uml/irq.c diff --git a/arch/um/os-Linux/main.c b/tools/um/uml/main.c similarity index 100% rename from arch/um/os-Linux/main.c rename to tools/um/uml/main.c diff --git a/arch/um/os-Linux/mem.c b/tools/um/uml/mem.c similarity index 100% rename from arch/um/os-Linux/mem.c rename to tools/um/uml/mem.c diff --git a/arch/um/os-Linux/process.c b/tools/um/uml/process.c similarity index 100% rename from arch/um/os-Linux/process.c rename to tools/um/uml/process.c diff --git a/arch/um/os-Linux/registers.c b/tools/um/uml/registers.c similarity index 100% rename from arch/um/os-Linux/registers.c rename to tools/um/uml/registers.c diff --git a/arch/um/os-Linux/sigio.c b/tools/um/uml/sigio.c similarity index 100% rename from arch/um/os-Linux/sigio.c rename to tools/um/uml/sigio.c diff --git a/arch/um/os-Linux/signal.c b/tools/um/uml/signal.c similarity index 100% rename from arch/um/os-Linux/signal.c rename to tools/um/uml/signal.c diff --git a/arch/um/os-Linux/skas/Makefile b/tools/um/uml/skas/Build similarity index 56% rename from arch/um/os-Linux/skas/Makefile rename to tools/um/uml/skas/Build index c4566e788815..5fc9d62df863 100644 --- a/arch/um/os-Linux/skas/Makefile +++ b/tools/um/uml/skas/Build @@ -3,8 +3,4 @@ # Copyright (C) 2002 - 2007 Jeff Dike (jdike@{linux.intel,addtoit}.com) # -obj-y := mem.o process.o - -USER_OBJS := $(obj-y) - -include arch/um/scripts/Makefile.rules +liblinux-y += mem.o process.o diff --git a/arch/um/os-Linux/skas/mem.c b/tools/um/uml/skas/mem.c similarity index 100% rename from arch/um/os-Linux/skas/mem.c rename to tools/um/uml/skas/mem.c diff --git a/arch/um/os-Linux/skas/process.c b/tools/um/uml/skas/process.c similarity index 99% rename from arch/um/os-Linux/skas/process.c rename to tools/um/uml/skas/process.c index 4fb877b99dde..fca6a08e81bd 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/tools/um/uml/skas/process.c @@ -21,7 +21,6 @@ #include <registers.h> #include <skas.h> #include <sysdep/stub.h> -#include <linux/threads.h> int is_skas_winch(int pid, int fd, void *data) { @@ -248,7 +247,7 @@ static int userspace_tramp(void *stack) return 0; } -int userspace_pid[NR_CPUS]; +int userspace_pid[UM_NR_CPUS]; /** * start_userspace() - prepare a new userspace process diff --git a/arch/um/os-Linux/start_up.c b/tools/um/uml/start_up.c similarity index 100% rename from arch/um/os-Linux/start_up.c rename to tools/um/uml/start_up.c diff --git a/arch/um/os-Linux/time.c b/tools/um/uml/time.c similarity index 100% rename from arch/um/os-Linux/time.c rename to tools/um/uml/time.c diff --git a/arch/um/os-Linux/tty.c b/tools/um/uml/tty.c similarity index 100% rename from arch/um/os-Linux/tty.c rename to tools/um/uml/tty.c diff --git a/arch/um/os-Linux/umid.c b/tools/um/uml/umid.c similarity index 100% rename from arch/um/os-Linux/umid.c rename to tools/um/uml/umid.c diff --git a/arch/um/os-Linux/util.c b/tools/um/uml/util.c similarity index 100% rename from arch/um/os-Linux/util.c rename to tools/um/uml/util.c
This patch moves underlying OS dependent part under arch/um to tools/um directory so that arch/um code does not need to build host build facilities (e.g., libc). Signed-off-by: Hajime Tazaki <thehajime@gmail.com> --- arch/um/Makefile | 3 +- arch/um/drivers/Makefile | 2 + .../um/{os-Linux => }/drivers/ethertap_kern.c | 0 arch/um/{os-Linux => }/drivers/tuntap_kern.c | 0 .../drivers => include/shared}/etap.h | 0 arch/um/include/shared/init.h | 5 ++ .../drivers => include/shared}/tuntap.h | 0 arch/um/kernel/Makefile | 1 + arch/um/{os-Linux => kernel}/user_syms.c | 0 arch/um/os-Linux/Makefile | 19 -------- arch/um/os-Linux/drivers/Makefile | 13 ----- tools/um/Makefile | 6 ++- tools/um/uml/Build | 48 +++++++++++++++++++ tools/um/uml/drivers/Build | 10 ++++ .../um/uml}/drivers/ethertap_user.c | 0 .../um/uml}/drivers/tuntap_user.c | 0 {arch/um/os-Linux => tools/um/uml}/elf_aux.c | 0 {arch/um/os-Linux => tools/um/uml}/execvp.c | 4 -- {arch/um/os-Linux => tools/um/uml}/file.c | 0 {arch/um/os-Linux => tools/um/uml}/helper.c | 0 {arch/um/os-Linux => tools/um/uml}/irq.c | 0 {arch/um/os-Linux => tools/um/uml}/main.c | 0 {arch/um/os-Linux => tools/um/uml}/mem.c | 0 {arch/um/os-Linux => tools/um/uml}/process.c | 0 .../um/os-Linux => tools/um/uml}/registers.c | 0 {arch/um/os-Linux => tools/um/uml}/sigio.c | 0 {arch/um/os-Linux => tools/um/uml}/signal.c | 0 .../skas/Makefile => tools/um/uml/skas/Build | 6 +-- {arch/um/os-Linux => tools/um/uml}/skas/mem.c | 0 .../os-Linux => tools/um/uml}/skas/process.c | 3 +- {arch/um/os-Linux => tools/um/uml}/start_up.c | 0 {arch/um/os-Linux => tools/um/uml}/time.c | 0 {arch/um/os-Linux => tools/um/uml}/tty.c | 0 {arch/um/os-Linux => tools/um/uml}/umid.c | 0 {arch/um/os-Linux => tools/um/uml}/util.c | 0 35 files changed, 74 insertions(+), 46 deletions(-) rename arch/um/{os-Linux => }/drivers/ethertap_kern.c (100%) rename arch/um/{os-Linux => }/drivers/tuntap_kern.c (100%) rename arch/um/{os-Linux/drivers => include/shared}/etap.h (100%) rename arch/um/{os-Linux/drivers => include/shared}/tuntap.h (100%) rename arch/um/{os-Linux => kernel}/user_syms.c (100%) delete mode 100644 arch/um/os-Linux/Makefile delete mode 100644 arch/um/os-Linux/drivers/Makefile create mode 100644 tools/um/uml/drivers/Build rename {arch/um/os-Linux => tools/um/uml}/drivers/ethertap_user.c (100%) rename {arch/um/os-Linux => tools/um/uml}/drivers/tuntap_user.c (100%) rename {arch/um/os-Linux => tools/um/uml}/elf_aux.c (100%) rename {arch/um/os-Linux => tools/um/uml}/execvp.c (98%) rename {arch/um/os-Linux => tools/um/uml}/file.c (100%) rename {arch/um/os-Linux => tools/um/uml}/helper.c (100%) rename {arch/um/os-Linux => tools/um/uml}/irq.c (100%) rename {arch/um/os-Linux => tools/um/uml}/main.c (100%) rename {arch/um/os-Linux => tools/um/uml}/mem.c (100%) rename {arch/um/os-Linux => tools/um/uml}/process.c (100%) rename {arch/um/os-Linux => tools/um/uml}/registers.c (100%) rename {arch/um/os-Linux => tools/um/uml}/sigio.c (100%) rename {arch/um/os-Linux => tools/um/uml}/signal.c (100%) rename arch/um/os-Linux/skas/Makefile => tools/um/uml/skas/Build (56%) rename {arch/um/os-Linux => tools/um/uml}/skas/mem.c (100%) rename {arch/um/os-Linux => tools/um/uml}/skas/process.c (99%) rename {arch/um/os-Linux => tools/um/uml}/start_up.c (100%) rename {arch/um/os-Linux => tools/um/uml}/time.c (100%) rename {arch/um/os-Linux => tools/um/uml}/tty.c (100%) rename {arch/um/os-Linux => tools/um/uml}/umid.c (100%) rename {arch/um/os-Linux => tools/um/uml}/util.c (100%)