写了一个CMA驱动,make编译后:
error: dereferencing pointer to incomplete type ‘struct cma’
cma->name, cma->base_pfn);
意思是cma只是声明了。
cma.h在目录include/linux/cma.h里,里面空有一句
struct cma;
对,这句只是做了声明,但并未做任何定义和初始化。那到底在哪定义的呢?
很奇葩,在mm目录下还有一个cma.h,里面定义了cma结构体。
妈的,反手就往Makefile里添加了
EXTRA_CFLAGS := -I$(KERNEL_DIR)/mm
all:
make -C $(KERNEL_DIR) M=$(CUR_DIR) EXTRA_CFLAGS=$(EXTRA_CFLAGS) modules
搞定。。。。