寫了一個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
搞定。。。。