structure format(both user/kernel mode of dcfa and dcfampi enabled)

This commit is contained in:
simin
2013-04-10 17:38:02 +09:00
parent 15b7256738
commit 93e1f112f8
6 changed files with 196 additions and 52 deletions

View File

@ -4,8 +4,14 @@ OBJS += process.o copy.o waitq.o futex.o timer.o
DEPSRCS=$(wildcard $(SRC)/*.c)
CFLAGS += -I$(SRC)/include -mcmodel=kernel -D__KERNEL__
CFLAGS += -DDCFA_KMOD -DKNC_MAP_MICPA -DCONFIG_$(CONFIG_V)
CFLAGS += -DKNC_MAP_MICPA -DCONFIG_$(CONFIG_V) $(EXTRA_CFLAGS)
ifeq ("$(DCFA_V)", "k")
CFLAGS += -DDCFA_RUN
else
CFLAGS += -DDCFA_KMOD
endif
LDFLAGS += -e arch_start
IHKOBJ = ihk/ihk.o
@ -24,16 +30,28 @@ mkimage_cmd_base = [ -f $(SRC)/script/mkimage.$(TARGET) ] && CC=$(CC) LD=$(LD) L
ld_kern_cmd = $(call echo_cmd,LDKERN,$@)$(ld_kern_cmd_base)
mkimage_cmd = $(call echo_cmd,MKIMAGE,$@)$(mkimage_cmd_base)
all: depend kernel.img
P_OBJ ?= ./a.out
all: kernel.img
kernel.img: $(OBJS) $(IHKOBJ) $(EXTRA_OBJS)
$(ld_kern_cmd)
$(mkimage_cmd)
clean:
$(rm_cmd) $(OBJS) kernel.img kernel.img.elf Makefile.dep
kobj: depend $(KERNEL_OBJ)
$(KERNEL_OBJ): $(OBJS) $(IHKOBJ)
@echo ' ' [with] $^
$(ld_cmd)
umod_clean:
$(rm_cmd) $(OBJS) $(IHKOBJ) kernel.img kernel.img.elf Makefile.dep
@$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) clean
kmod_clean:
$(rm_cmd) $(OBJS) $(IHKOBJ) $(KERNEL_OBJ) Makefile.dep
@$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) clean
depend: Makefile.dep
Makefile.dep:

View File

@ -0,0 +1,24 @@
IHKDIR=$(IHKBASE)/$(TARGETDIR)
LDFLAGS += -e arch_start
include $(SRC)/config/config.$(TARGET)
include $(IHKBASE)/Makefile.common
ld_kern_cmd_base = $(LD) $(LDFLAGS) -o $@.elf $^
mkimage_cmd_base = [ -f $(SRC)/script/mkimage.$(TARGET) ] && CC=$(CC) LD=$(LD) LDFLAGS="$(LDFLAGS_MKIMAGE)" OBJDUMP=$(OBJDUMP) OBJCOPY=$(OBJCOPY) sh $(SRC)/script/mkimage.$(TARGET) '$@.elf' '$@' '$(SRC)' || cp $@.elf $@
ld_kern_cmd = $(call echo_cmd,LDKERN,$@)$(ld_kern_cmd_base)
mkimage_cmd = $(call echo_cmd,MKIMAGE,$@)$(mkimage_cmd_base)
P_OBJ ?= ./a.out
all: kernel_program.img
kernel_program.img: $(KERNEL_OBJ) $(P_OBJ)
$(ld_kern_cmd)
$(mkimage_cmd)
FORCE:
-include Makefile.dep

102
kernel/Makefile.dcfa Normal file
View File

@ -0,0 +1,102 @@
BUILD_TARGET ?= attached-mic
SRC = $(CURDIR)
IHKBASE ?= $(SRC)/../../ihk/cokernel
INSTALL_KL_DIR ?= ./
O ?= $(KBUILD_OUTPUT)
N ?= kernel_obj.o
V ?= $(VERBOSE)
CONFIG_V ?= KNF
DCFA_V ?= u
EXTRA_OBJS ?=
## compile items
KERNEL = kernel.img
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
KERNEL_OBJ = $(addsuffix /$(N),$(addprefix $(O)/,$(BUILD_TARGET)))
KERNEL_MAKEFILE = $(addsuffix /Makefile,$(addprefix $(O)/,$(BUILD_TARGET)))
## install items
ifeq ("$(DCFA_V)", "k")
KERNEL_OBJ_PUB = $(INSTALL_KL_DIR)/$(N)
KERNEL_MAKEFILE_PUB = $(INSTALL_KL_DIR)/Makefile
else
KERNELS_PUB = $(INSTALL_KL_DIR)/$(KERNEL)
KERNEL_MAKEFILE_PUB = $(INSTALL_KL_DIR)/Makefile
endif
SUBCMD_OPTS = V='$(V)'
$(if $(O),,$(error Specify the compilation target directory))
#$(if $(shell ls $(IHKBASE)/Makefile),,\
# $(error IHK is not found in $(IHKBASE)))
.PHONY: kmod umod clean depend
.SECONDARY: $(KERNEL_MAKEFILE) $(KERNEL_MAKEFILE_PUB)
kmod: $(KERNEL_OBJ)
umod: $(KERNELS)
umod_install:
@echo install $(KERNELS_PUB)
@rm -f $(KERNELS_PUB)
@mkdir -p $(dir $(KERNELS_PUB))
@cp $(KERNELS) $(KERNELS_PUB)
kmod_install: $(KERNEL_MAKEFILE_PUB)
@echo install $(KERNEL_OBJ_PUB)
@rm -f $(KERNEL_OBJ_PUB)
@cp $(KERNEL_OBJ) $(KERNEL_OBJ_PUB)
%/kernel.img: %/Makefile
@echo 'Building for' $(dir $@)
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
%/$(N): %/Makefile
@echo 'Building for' $(dir $@)
@make kobj --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
$(KERNEL_MAKEFILE): Makefile.build.dcfa
rm -f $@
@mkdir -p $(dir $@)
@echo 'SRC = $(SRC)' > $@
@echo 'IHKBASE = $(IHKBASE)' >> $@
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
@echo 'CONFIG_V = $(CONFIG_V)' >> $@
@echo 'DCFA_V = $(DCFA_V)' >> $@
@echo 'KERNEL_OBJ = $(KERNEL_OBJ)' >> $@
@echo 'EXTRA_OBJS = $(EXTRA_OBJS)' >> $@
@echo 'EXTRA_CFLAGS = $(EXTRA_CFLAGS)' >> $@
@cat $^ >> $@
# @rm -f $(dir $@)/Makefile.dep
$(KERNEL_MAKEFILE_PUB): Makefile.build.dcfa.public
@echo install $@
@rm -f $@
@mkdir -p $(dir $@)
@echo 'SRC = $(SRC)' > $@
@echo 'IHKBASE = $(IHKBASE)' >> $@
@echo 'TARGET = $(BUILD_TARGET)' >> $@
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
@echo 'KERNEL_OBJ = $(KERNEL_OBJ_PUB)' >> $@
@cat $^ >> $@
umod_clean: $(addsuffix .umod_clean,$(BUILD_TARGET))
kmod_clean: $(addsuffix .kmod_clean,$(BUILD_TARGET))
%.umod_clean: $(O)/%/Makefile
@make --no-print-directory -C $(O)/$(basename $@) $(SUBCMD_OPTS) umod_clean
%.kmod_clean: $(O)/%/Makefile
@make --no-print-directory -C $(O)/$(basename $@) $(SUBCMD_OPTS) kmod_clean
FORCE:

View File

@ -1,47 +0,0 @@
BUILD_TARGET ?= attached-mic
SRC = $(CURDIR)
IHKBASE ?= $(SRC)/../../ihk/cokernel
O ?= $(KBUILD_OUTPUT)
V ?= $(VERBOSE)
CONFIG_V ?= KNF
EXTRA_OBJS ?=
KERNEL = kernel.img
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
SUBCMD_OPTS = V='$(V)'
$(if $(O),,$(error Specify the compilation target directory))
#$(if $(shell ls $(IHKBASE)/Makefile),,\
# $(error IHK is not found in $(IHKBASE)))
.PHONY: all clean depend
all: $(KERNELS)
%/kernel.img: %/Makefile
@echo 'Building for' $(dir $@)
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
%/Makefile: Makefile.build.mpiu FORCE
rm -f $@
@mkdir -p $(dir $@)
@echo 'SRC = $(SRC)' > $@
@echo 'IHKBASE = $(IHKBASE)' >> $@
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
@echo 'CONFIG_V = $(CONFIG_V)' >> $@
@echo 'EXTRA_OBJS = $(EXTRA_OBJS)' >> $@
@cat Makefile.build.mpiu >> $@
@rm -f $(dir $@)/Makefile.dep
clean: $(addsuffix .clean,$(BUILD_TARGET))
%.clean: $(O)/%/Makefile
@make --no-print-directory -C $(O)/$(basename $@) $(SUBCMD_OPTS) clean
FORCE:

View File

@ -1070,18 +1070,31 @@ SYSCALL_DECLARE(noop)
#ifdef DCFA_KMOD
#ifdef CMD_DCFA
extern int ibmic_cmd_syscall(char *uargs);
extern int dcfampi_cmd_syscall(char *uargs);
extern void ibmic_cmd_exit(int status);
#endif
#ifdef CMD_DCFAMPI
extern int dcfampi_cmd_syscall(char *uargs);
#endif
static int (*mod_call_table[]) (char *) = {
#ifdef CMD_DCFA
[1] = ibmic_cmd_syscall,
#endif
#ifdef CMD_DCFAMPI
[2] = dcfampi_cmd_syscall,
#endif
};
static void (*mod_exit_table[]) (int) = {
#ifdef CMD_DCFA
[1] = ibmic_cmd_exit,
#endif
#ifdef CMD_DCFAMPI
[2] = NULL,
#endif
};
SYSCALL_DECLARE(mod_call) {
@ -1096,6 +1109,8 @@ SYSCALL_DECLARE(mod_call) {
if(mod_call_table[mod_id])
return mod_call_table[mod_id]((char*)uargs);
kprintf("ERROR! undefined mod_call id:%d\n", mod_id);
return -ENOSYS;
}