4 messages in com.xensource.lists.xen-ia64-develRE: [Xen-devel] Arch dependent tools/...
FromSent OnAttachments
Tian, Kevin17 May 2005 20:40 
Ian Pratt18 May 2005 00:08 
Tian, Kevin18 May 2005 05:18.Other
Tian, Kevin18 May 2005 17:40.Other, .txt
Subject:RE: [Xen-devel] Arch dependent tools/libxc?
From:Tian, Kevin (kevi@intel.com)
Date:05/18/2005 05:18:33 AM
List:com.xensource.lists.xen-ia64-devel
Attachments:
patch_libxc_arch_dep - 2k

Thanks Ian, and attached is the patch to do that change. I'm not expert in Makefile, so feel free to pin me for better solution. :-) ============================= Libxc is the part coupling with platform context most tightly, with some files which should be made arch dependent. Obvious example is xc_***_build.c, which should behave upon vcpu_guest_context_t defined by different platform.

Following patch is trying to move those files into arch dependent directory. I only addressed 7 files by far, because compilation succeeds on IPF simply after solving them. Since there's no distinct boundary between them and other files, I'm lazy to add another Makefile under arch-dep directory. Also no change to compile option since they works fine on x86 and IPF currentlys.

To reduce the size of patch, a trick is used to move files when first compilation. After that, you can simply remove 8 lines leading by "TEMP" comment. IPF related changes will be sent to Dan later.

Signed-off-by Kevin Tian (Kevi@intel.com)

--- trunk.org/tools/libxc/Makefile 2005-05-09 16:01:18.000000000 +0800 +++ trunk/tools/libxc/Makefile 2005-05-18 20:35:01.000000000 +0800 @@ -21,16 +21,13 @@ SRCS += xc_domain.c SRCS += xc_evtchn.c SRCS += xc_gnttab.c SRCS += xc_io.c -SRCS += xc_linux_build.c -SRCS += xc_plan9_build.c -SRCS += xc_linux_restore.c -SRCS += xc_linux_save.c SRCS += xc_misc.c SRCS += xc_physdev.c SRCS += xc_private.c -SRCS += xc_ptrace.c -SRCS += xc_vmx_build.c

+SRCS += $(wildcard $(COMPILE_ARCH)/*.c) + +vpath %.c $(COMPILE_ARCH) CFLAGS += -Wall CFLAGS += -Werror CFLAGS += -O3 @@ -67,6 +64,15 @@ mk-symlinks: ln -sf ../../$(XEN_ROOT)/xen/include/public/io/*.h . ) ( cd xen/linux >/dev/null ; \ ln -sf ../../$(LINUX_ROOT)/include/asm-xen/linux-public/*.h . ) +#TEMP: Please delete following lines after applying the patch + [ -e $(COMPILE_ARCH) ] || mkdir -p $(COMPILE_ARCH)/ + [ ! -e xc_linux_build.c ] || mv xc_linux_build.c $(COMPILE_ARCH)/ + [ ! -e xc_plan9_build.c ] || mv xc_plan9_build.c $(COMPILE_ARCH)/ + [ ! -e xc_vmx_build.c ] || mv xc_vmx_build.c $(COMPILE_ARCH)/ + [ ! -e xc_linux_save.c ] || mv xc_linux_save.c $(COMPILE_ARCH)/ + [ ! -e xc_linux_restore.c ] || mv xc_linux_restore.c $(COMPILE_ARCH)/ + [ ! -e xc_ptrace.c ] || mv xc_ptrace.c $(COMPILE_ARCH)/ + [ ! -e linux_boot_params.h ] || mv linux_boot_params.h $(COMPILE_ARCH)/

install: build [ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR) @@ -83,7 +89,7 @@ TAGS: etags -t $(SRCS) *.h

clean: - rm -rf *.a *.so* *.o *.opic *.rpm $(LIB) *~ $(DEPS) xen + rm -rf *.a *.so* *.o *.opic *.rpm $(LIB) *~ $(DEPS) xen $(COMPILE_ARCH)/*.o $(COMPILE_ARCH)/*.opic

rpm: build rm -rf staging

Thanks, Kevin

-----Original Message----- From: Ian Pratt [mailto:m+Ian.@cl.cam.ac.uk] Sent: Wednesday, May 18, 2005 3:08 PM To: Tian, Kevin; xen-@lists.xensource.com Cc: xen-@lists.xensource.com; ian.@cl.cam.ac.uk Subject: RE: [Xen-devel] Arch dependent tools/libxc?

Hi, list, When trying to add support for multiple domains on IPF/VTI, immediately we realized current tools/libxc too x86 specific, like xc_linux_build.c, xc_linux_save.c, etc. which are always compiled assumed upon x86 vcpu_guest_context_t. Ideally they should only be compiled upon specific platform.

One solution is to add bunch of boring "ifdef __x86_32... ifdef __ia64__" in Makefile, which however gonna pollute many places. Since tools/libxc is the place coupled with arch context most tightly, a better option may be to move those files into arch dependent directory like tools/libxc/{x86, ia64, etc}: Xc_linux_build.c Xc_plan9_build.c Xc_vmx_build.c Xc_linux_save.c Xc_linux_restore.c Xc_ptrace.c Xc_ptrace_core.c And some header files like linux_boot_params.h

Yep, this needs to happen.