最近在想把Yaffs文件系统编入内核,现已支持。但是要测试比较麻烦,还好Yaffs下可以支持基于file和ram的模拟。 但是都是基于MTD层的接口,我在编译mtdemul2k.o文件就遇到了如下错误,前大半部分错误都是内核文件错误,不大可能吧,希望得到指教。谢谢。
我的makefile文件: Makefile for NANDemul MTD # # NB this is not yet suitable for putting into the kernel tree. # YAFFS: Yet another Flash File System. A NAND-flash specific file system. # # Copyright (C) 2002 Aleph One Ltd. # for Toby Churchill Ltd and Brightstar Engineering # # Created by Charles Manning <charles@aleph1.co.uk> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation.
## Change or override KERNELDIR to your kernel ## comment out USE_xxxx if you don't want these features.
KERNELDIR = /lib/modules/$(shell uname -r)/build
#CFLAGS = -D__KERNEL__ -DMODULE -I$(KERNELDIR)/include -O2 -Wall -g CFLAGS = -D__KERNEL__ -DMODULE -I$(KERNELDIR)/include -O2 -Wall -g
TARGET = nandemul2k.o
default: $(TARGET)
clean: rm -f $(TARGET)
$(TARGET): %.o: %.c gcc -c $(CFLAGS) $< -o $@
报错的内容: In file included from /lib/modules/2.6.18-pae/build/include/asm/thread_info.h:16, from /lib/modules/2.6.18-pae/build/include/linux/thread_info.h:21, from /lib/modules/2.6.18-pae/build/include/linux/preempt.h:9, from /lib/modules/2.6.18-pae/build/include/linux/spinlock.h:49, from /lib/modules/2.6.18-pae/build/include/linux/capability.h:45, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:44, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/processor.h:80: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function) /lib/modules/2.6.18-pae/build/include/asm/processor.h:80: error: requested alignment is not a constant In file included from /lib/modules/2.6.18-pae/build/include/linux/rwsem.h:24, from /lib/modules/2.6.18-pae/build/include/asm/semaphore.h:42, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:57, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h: In function ‘__down_read’: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:97: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/rwsem.h: In function ‘__down_write_nested’: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:149: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/rwsem.h: In function ‘__up_read’: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:192: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:192: warning: unused variable ‘tmp’ /lib/modules/2.6.18-pae/build/include/asm/rwsem.h: In function ‘__up_write’: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:216: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/rwsem.h: In function ‘__downgrade_write’: /lib/modules/2.6.18-pae/build/include/asm/rwsem.h:242: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ In file included from /lib/modules/2.6.18-pae/build/include/linux/sched.h:57, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/semaphore.h: In function ‘down’: /lib/modules/2.6.18-pae/build/include/asm/semaphore.h:99: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/semaphore.h: In function ‘down_interruptible’: /lib/modules/2.6.18-pae/build/include/asm/semaphore.h:123: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/semaphore.h: In function ‘down_trylock’: /lib/modules/2.6.18-pae/build/include/asm/semaphore.h:145: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ /lib/modules/2.6.18-pae/build/include/asm/semaphore.h: In function ‘up’: /lib/modules/2.6.18-pae/build/include/asm/semaphore.h:172: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ In file included from /lib/modules/2.6.18-pae/build/include/asm/smp.h:17, from /lib/modules/2.6.18-pae/build/include/linux/smp.h:18, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:63, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/mpspec.h:6:25: error: mach_mpspec.h: No such file or directory In file included from /lib/modules/2.6.18-pae/build/include/asm/smp.h:17, from /lib/modules/2.6.18-pae/build/include/linux/smp.h:18, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:63, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/mpspec.h: At top level: /lib/modules/2.6.18-pae/build/include/asm/mpspec.h:8: error: ‘MAX_MP_BUSSES’ undeclared here (not in a function) /lib/modules/2.6.18-pae/build/include/asm/mpspec.h:22: error: ‘MAX_IRQ_SOURCES’ undeclared here (not in a function) In file included from /lib/modules/2.6.18-pae/build/include/linux/smp.h:18, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:63, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/smp.h:76:26: error: mach_apicdef.h: No such file or directory In file included from /lib/modules/2.6.18-pae/build/include/linux/smp.h:18, from /lib/modules/2.6.18-pae/build/include/linux/sched.h:63, from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/asm/smp.h: In function ‘hard_smp_processor_id’: /lib/modules/2.6.18-pae/build/include/asm/smp.h:80: warning: implicit declaration of function ‘GET_APIC_ID’ In file included from /lib/modules/2.6.18-pae/build/include/linux/module.h:9, from nandemul2k.c:20: /lib/modules/2.6.18-pae/build/include/linux/sched.h: In function ‘dequeue_signal_lock’: /lib/modules/2.6.18-pae/build/include/linux/sched.h:1209: warning: implicit declaration of function ‘local_irq_save’ /lib/modules/2.6.18-pae/build/include/linux/sched.h:1211: warning: implicit declaration of function ‘local_irq_restore’ In file included from /lib/modules/2.6.18-pae/build/include/asm/pgtable.h:244, from /lib/modules/2.6.18-pae/build/include/linux/mm.h:38, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:7, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘set_pte’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:55: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:55: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘pte_clear’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:97: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: At top level: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:100: error: expected ‘)’ before ‘*’ token /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘ptep_get_and_clear’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:114: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:114: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:115: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘pte_same’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:122: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:122: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘pte_none’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:129: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘pte_pfn’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:135: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: In function ‘pfn_pte’: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:144: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:144: warning: right shift count >= width of type /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:146: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h: At top level: /lib/modules/2.6.18-pae/build/include/asm/pgtable-3level.h:152: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pfn_pmd’ In file included from /lib/modules/2.6.18-pae/build/include/linux/mm.h:38, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:7, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/asm/pgtable.h: In function ‘pte_modify’: /lib/modules/2.6.18-pae/build/include/asm/pgtable.h:318: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable.h:319: error: ‘pte_t’ has no member named ‘pte_high’ /lib/modules/2.6.18-pae/build/include/asm/pgtable.h:319: warning: right shift count >= width of type In file included from /lib/modules/2.6.18-pae/build/include/asm/pgtable.h:450, from /lib/modules/2.6.18-pae/build/include/linux/mm.h:38, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:7, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/asm-generic/pgtable.h: At top level: /lib/modules/2.6.18-pae/build/include/asm-generic/pgtable.h:199: error: expected ‘)’ before ‘*’ token /lib/modules/2.6.18-pae/build/include/asm-generic/pgtable.h:223: error: expected ‘)’ before ‘*’ token In file included from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:7, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/linux/mm.h: In function ‘lowmem_page_address’: /lib/modules/2.6.18-pae/build/include/linux/mm.h:531: warning: implicit declaration of function ‘__page_to_pfn’ /lib/modules/2.6.18-pae/build/include/linux/mm.h: At top level: /lib/modules/2.6.18-pae/build/include/linux/mm.h:809: error: expected declaration specifiers or ‘...’ before ‘pmd_t’ /lib/modules/2.6.18-pae/build/include/linux/mm.h:810: error: expected ‘)’ before ‘*’ token /lib/modules/2.6.18-pae/build/include/linux/mm.h:823: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token In file included from /lib/modules/2.6.18-pae/build/include/linux/irq.h:22, from /lib/modules/2.6.18-pae/build/include/asm/hardirq.h:5, from /lib/modules/2.6.18-pae/build/include/linux/hardirq.h:7, from /lib/modules/2.6.18-pae/build/include/linux/interrupt.h:11, from /lib/modules/2.6.18-pae/build/include/asm/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:10, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/asm/irq.h:15:25: error: irq_vectors.h: No such file or directory In file included from /lib/modules/2.6.18-pae/build/include/asm/hardirq.h:5, from /lib/modules/2.6.18-pae/build/include/linux/hardirq.h:7, from /lib/modules/2.6.18-pae/build/include/linux/interrupt.h:11, from /lib/modules/2.6.18-pae/build/include/asm/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:10, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/linux/irq.h:169: error: ‘NR_IRQS’ undeclared here (not in a function) In file included from /lib/modules/2.6.18-pae/build/include/linux/irq.h:182, from /lib/modules/2.6.18-pae/build/include/asm/hardirq.h:5, from /lib/modules/2.6.18-pae/build/include/linux/hardirq.h:7, from /lib/modules/2.6.18-pae/build/include/linux/interrupt.h:11, from /lib/modules/2.6.18-pae/build/include/asm/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/highmem.h:23, from /lib/modules/2.6.18-pae/build/include/linux/pagemap.h:10, from nandemul2k.c:27: /lib/modules/2.6.18-pae/build/include/asm/hw_irq.h:31: error: ‘NR_IRQ_VECTORS’ undeclared here (not in a function) nandemul2k.c: In function ‘nand_read’: nandemul2k.c:307: warning: implicit declaration of function ‘nand_read_ecc’ nandemul2k.c: At top level: nandemul2k.c:314: error: static declaration of ‘nand_read_ecc’ follows non-static declaration nandemul2k.c:307: error: previous implicit declaration of ‘nand_read_ecc’ was here nandemul2k.c: In function ‘nand_read_oob’: nandemul2k.c:387: error: invalid operands to binary * (have ‘int’ and ‘size_t *’) nandemul2k.c: In function ‘nand_write’: nandemul2k.c:410: warning: implicit declaration of function ‘nand_write_ecc’ nandemul2k.c: At top level: nandemul2k.c:416: error: static declaration of ‘nand_write_ecc’ follows non-static declaration nandemul2k.c:410: error: previous implicit declaration of ‘nand_write_ecc’ was here nandemul2k.c: In function ‘nandemul2k_scan’: nandemul2k.c:602: error: ‘struct mtd_info’ has no member named ‘oobavail’ nandemul2k.c:617: warning: assignment from incompatible pointer type nandemul2k.c:618: warning: assignment from incompatible pointer type nandemul2k.c:619: warning: assignment from incompatible pointer type nandemul2k.c:620: warning: assignment from incompatible pointer type nandemul2k.c:623: error: ‘struct mtd_info’ has no member named ‘readv’ make: *** [nandemul2k.o] Error 1
|
|