我有两个内核可加载模块的设计,我是用树构建的。这些模块可以独立运行,也可以在加载时一起工作(使用彼此的服务)。
所以我有带有 funcA 和 funcB 的 module1.ko。我也有带有 funcC 和 funcD 的 module2.ko。当 module1.ko 自己加载时,它只是使用 funcA 和 funcB。但是如果module2.ko也被加载了,我想让module1.ko可以使用funcC。
module1.ko 如何检测 module2.ko 是否已加载,以便知道 funcC 是否可供它使用?
另外,由于我在 Linux 内核之外构建这两个模块,我如何更新我的 Makefile 以在构建时添加这个条件依赖?
我的 Makefile 目前看起来是这样的:
MODULE_NAME=module1
SOURCE_FILES=module1_driver.c
CROSS_COMPILER=powerpc-timesys-linux-gnu-
ARCH=powerpc
ifneq ($(KERNELRELEASE),)
obj-m := $(MODULE_NAME).o
$(MODULE_NAME)-objs := $(SOURCE_FILES:.c=.o)
ccflags-y := -I$(src)/../common
sinclude $(TOPDIR)/Rules.make
else
KERNELDIR ?= ../../linux/2.6-xlnx-rt
PWD := $(shell pwd)
default:
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILER) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILER) -C $(KERNELDIR) M=$(PWD) clean
rm -rf ../common/*.o module1_test
endif