From c5690cfce0f8adb170fc8788a7ee8beef7bd0761 Mon Sep 17 00:00:00 2001 From: gatieme Date: Mon, 1 Aug 2016 20:57:46 +0800 Subject: [PATCH] =?UTF-8?q?[1.2.7=20poll=E6=8E=A5=E5=8F=A3](http://book.51?= =?UTF-8?q?cto.com/art/201205/337672.htm)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- .../1-3register_chrdev/test/Makefile | 2 +- .../src/1drivermodel/1-4cdev/test/Makefile | 2 +- .../src/1drivermodel/1-5ioctl/test/Makefile | 2 +- .../src/1drivermodel/1-6lseek/Makefile | 8 +- .../src/1drivermodel/1-6lseek/README.md | 151 ++- .../1drivermodel/1-6lseek/demo/.demo.ko.cmd | 1 - .../1-6lseek/demo/.demo.mod.o.cmd | 289 ------ .../1drivermodel/1-6lseek/demo/.demo.o.cmd | 459 ---------- .../1-6lseek/demo/.tmp_versions/demo.mod | 2 - .../src/1drivermodel/1-6lseek/demo/demo.mod.c | 21 - .../1drivermodel/1-6lseek/demo/modules.order | 1 - .../1-6lseek/simple/.simple.ko.cmd | 1 + .../1-6lseek/simple/.simple.mod.o.cmd | 594 ++++++++++++ .../1-6lseek/simple/.simple.o.cmd | 867 ++++++++++++++++++ .../1-6lseek/simple/.tmp_versions/simple.mod | 2 + .../src/1drivermodel/1-6lseek/simple/Makefile | 80 ++ .../1-6lseek/{demo => simple}/Module.symvers | 0 .../1drivermodel/1-6lseek/simple/README.md | 140 +++ .../1-6lseek/simple/modules.order | 1 + .../1-6lseek/{demo/demo.c => simple/simple.c} | 58 +- .../1-6lseek/{demo/demo.h => simple/simple.h} | 0 .../1drivermodel/1-6lseek/simple/simple.mod.c | 40 + .../src/1drivermodel/1-6lseek/test/Makefile | 25 + .../src/1drivermodel/1-6lseek/test/test | Bin 10061 -> 0 bytes .../src/1drivermodel/1-6lseek/test/test.c | 69 +- .../src/1drivermodel/1-7poll/Makefile | 30 + .../src/1drivermodel/1-7poll/README.md | 199 ++++ .../1drivermodel/1-7poll/demo/.demo.ko.cmd | 1 - .../1drivermodel/1-7poll/demo/.demo.mod.o.cmd | 289 ------ .../src/1drivermodel/1-7poll/demo/.demo.o.cmd | 462 ---------- .../1-7poll/demo/.tmp_versions/demo.mod | 2 - .../1drivermodel/1-7poll/demo/Module.symvers | 0 .../src/1drivermodel/1-7poll/demo/demo.mod.c | 21 - .../1drivermodel/1-7poll/demo/modules.order | 1 - .../src/1drivermodel/1-7poll/simple/Makefile | 80 ++ .../1-7poll/{demo/demo.c => simple/simple.c} | 142 +-- .../1-7poll/{demo/demo.h => simple/simple.h} | 9 +- .../src/1drivermodel/1-7poll/test/Makefile | 25 + .../src/1drivermodel/1-7poll/test/test | Bin 11054 -> 0 bytes .../src/1drivermodel/1-7poll/test/test.c | 82 +- books/fengguojin/src/1drivermodel/README.md | 16 +- 42 files changed, 2453 insertions(+), 1723 deletions(-) delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.ko.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.mod.o.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.o.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/.tmp_versions/demo.mod delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.mod.c delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/demo/modules.order create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.ko.cmd create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.mod.o.cmd create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.o.cmd create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/.tmp_versions/simple.mod create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/Makefile rename books/fengguojin/src/1drivermodel/1-6lseek/{demo => simple}/Module.symvers (100%) create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/README.md create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/modules.order rename books/fengguojin/src/1drivermodel/1-6lseek/{demo/demo.c => simple/simple.c} (77%) rename books/fengguojin/src/1drivermodel/1-6lseek/{demo/demo.h => simple/simple.h} (100%) create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c create mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/test/Makefile delete mode 100644 books/fengguojin/src/1drivermodel/1-6lseek/test/test create mode 100644 books/fengguojin/src/1drivermodel/1-7poll/Makefile create mode 100644 books/fengguojin/src/1drivermodel/1-7poll/README.md delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.ko.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.mod.o.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.o.cmd delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/.tmp_versions/demo.mod delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/Module.symvers delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/demo.mod.c delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/demo/modules.order create mode 100644 books/fengguojin/src/1drivermodel/1-7poll/simple/Makefile rename books/fengguojin/src/1drivermodel/1-7poll/{demo/demo.c => simple/simple.c} (87%) rename books/fengguojin/src/1drivermodel/1-7poll/{demo/demo.h => simple/simple.h} (90%) create mode 100644 books/fengguojin/src/1drivermodel/1-7poll/test/Makefile delete mode 100644 books/fengguojin/src/1drivermodel/1-7poll/test/test diff --git a/Makefile b/Makefile index 02131a4..df11454 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ GITHUB_COMMIT := $(COMMIT) ifeq ($(COMMIT), ) - GITHUB_COMMIT="[1.2.5 ioctl接口](http://book.51cto.com/art/201205/337670.htm)" + GITHUB_COMMIT="[1.2.7 poll接口](http://book.51cto.com/art/201205/337672.htm)" endif diff --git a/books/fengguojin/src/1drivermodel/1-3register_chrdev/test/Makefile b/books/fengguojin/src/1drivermodel/1-3register_chrdev/test/Makefile index c49bd09..2be09a1 100644 --- a/books/fengguojin/src/1drivermodel/1-3register_chrdev/test/Makefile +++ b/books/fengguojin/src/1drivermodel/1-3register_chrdev/test/Makefile @@ -7,7 +7,7 @@ target=test all:$(target) -memorylayout : test.o +test : test.o $(CC) $^ -o $@ $(LDFLAGS) @echo "测试使用register_chrdev注册的字符设备..." diff --git a/books/fengguojin/src/1drivermodel/1-4cdev/test/Makefile b/books/fengguojin/src/1drivermodel/1-4cdev/test/Makefile index c49bd09..2be09a1 100644 --- a/books/fengguojin/src/1drivermodel/1-4cdev/test/Makefile +++ b/books/fengguojin/src/1drivermodel/1-4cdev/test/Makefile @@ -7,7 +7,7 @@ target=test all:$(target) -memorylayout : test.o +test : test.o $(CC) $^ -o $@ $(LDFLAGS) @echo "测试使用register_chrdev注册的字符设备..." diff --git a/books/fengguojin/src/1drivermodel/1-5ioctl/test/Makefile b/books/fengguojin/src/1drivermodel/1-5ioctl/test/Makefile index c49bd09..2be09a1 100644 --- a/books/fengguojin/src/1drivermodel/1-5ioctl/test/Makefile +++ b/books/fengguojin/src/1drivermodel/1-5ioctl/test/Makefile @@ -7,7 +7,7 @@ target=test all:$(target) -memorylayout : test.o +test : test.o $(CC) $^ -o $@ $(LDFLAGS) @echo "测试使用register_chrdev注册的字符设备..." diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/Makefile b/books/fengguojin/src/1drivermodel/1-6lseek/Makefile index 8998fce..e9e0811 100644 --- a/books/fengguojin/src/1drivermodel/1-6lseek/Makefile +++ b/books/fengguojin/src/1drivermodel/1-6lseek/Makefile @@ -1,5 +1,4 @@ -ROOT=. - +ROOT=../../../../.. DIRS= simple test @@ -24,7 +23,8 @@ rmmod: reinsmod: cd simple && make reinsmod -run : +run : sudo ./test/test - +github : + cd $(ROOT) && make github diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/README.md b/books/fengguojin/src/1drivermodel/1-6lseek/README.md index 37d5d8e..041e341 100644 --- a/books/fengguojin/src/1drivermodel/1-6lseek/README.md +++ b/books/fengguojin/src/1drivermodel/1-6lseek/README.md @@ -1,12 +1,145 @@ -#冯国进--Linux驱动程序开发实例 -------- +例1.6 字符设备seek实例 +======= | 驱动 | 描述 | 书中对应章节 | |:----------:|:----------:|:------------:| -| 1-11net | | -| 1-1simple | 例1.1--最简单的内核模块 | [1.1.3 编写可加载模块](http://book.51cto.com/art/201205/337662.htm) | -| 1-2module | 例1.2 带参数的内核模块实例 | [1.1.4 带参数的可加载模块](http://book.51cto.com/art/201205/337663.htm) | -| 1-3register_chrdev | 例1.3 register_chrdev注册字符设备实例 | 1.2.2 使用register_chrdev注册字符设备](http://book.51cto.com/art/201205/337666.htm) | -| 1-4cdev | 例1.4 cdev_add注册字符设备实例 | [1.2.3 使用cdev_add注册字符设备](http://book.51cto.com/art/201205/337667.htm) | -| 1-5ioctl | 例1.5 字符设备ioctl实例 | [1.2.5 ioctl接口](http://book.51cto.com/art/201205/337670.htm) | -| 1-6lseek | +| 1-6lseek | 例1.6 字符设备seek实例 | [1.2.6 seek接口](http://book.51cto.com/art/201205/337671.htm) | + + +#1.2.6 seek接口 +------- + +seek接口用来对设备的读写位置进行定位 + +file_operations结构中对应的seek接口如下 + +```c +loff_t (*llseek) (struct file *filp, loff_t off, int whence) +``` + +其中off是偏移量,whence参数指起点位置。 + + + +#例1.6 字符设备seek实例 +------- + +代码见光盘\src\1drivermodel\1-6lseek + +核心代码如下所示 + +```c +ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) +{ + loff_t pos= *f_pos;//获取文件指针 + if(pos>=256) + { + count=0; + goto out; + } + if(count>(256-pos)) + { + count=256-pos; + } + pos += count; + //复制数据到指定的地址 + if (copy_to_user(buf,demoBuffer+*f_pos,count)) + { + count=-EFAULT; + goto out; + } + *f_pos = pos; + out: + return count; +} + + +loff_t simple_llseek(struct file *filp, loff_t off, int whence) +{ + loff_t pos; + pos = filp->f_pos; + switch (whence) + { + case 0: + pos = off; + break; + case 1: + pos += off; + break; + case 2: + pos =255+off; + break; + default: + return -EINVAL; + } + if ((pos>=256) || (pos<0)) + { + return -EINVAL; + } + return filp->f_pos=pos; +} + + +struct file_operations simple_fops = { + .owner = THIS_MODULE, + .llseek = simple_llseek, + .read = simple_read, + .open = simple_open, + .release = simple_release, +}; +``` + +应用程序参考代码如下: + +```c +int main() +{ + int fd; + int i; + char data[256]; + int retval; + fd=open("/dev/fgj",O_RDWR); + if(fd==-1) + { + perror("error open\n"); + exit(-1); + } + printf("open /dev/fgj successfully\n"); + retval=lseek(fd,5,0); + if(retval==-1) + { + perror("lseek error\n"); + exit(-1); + } + retval=read(fd,data,3); + if(retval==-1) + { + perror("read error\n"); + exit(-1); + } + data[retval]=0; + printf("read successfully:%s\n",data); + //文件定位 + retval=lseek(fd,2,0); + if(retval==-1) + { + perror("lseek error\n"); + exit(-1); + } + retval=read(fd,data,3); + if(retval==-1) + { + perror("read error\n"); + exit(-1); + } + data[retval]=0; + printf("read successfully:%s\n",data); + close(fd); +} +``` + +本例运行结果如下: +insmod demo.ko +mknod /dev/gatieme c 224 0 +./test + diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.ko.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.ko.cmd deleted file mode 100644 index f49694f..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.ko.cmd +++ /dev/null @@ -1 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.ko := /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld -EL -r -o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.ko /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.mod.o.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.mod.o.cmd deleted file mode 100644 index a064d8b..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.mod.o.cmd +++ /dev/null @@ -1,289 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o := arm-linux-gcc -Wp,-MD,/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/.demo.mod.o.d -nostdinc -isystem /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include -D__KERNEL__ -Iinclude -I/mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include -include include/linux/autoconf.h -mlittle-endian -Iarch/arm/mach-s3c6400/include -Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include -Iarch/arm/plat-s3c/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -Uarm -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(demo.mod)" -D"KBUILD_MODNAME=KBUILD_STR(demo)" -DMODULE -c -o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.c - -deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o := \ - /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.c \ - $(wildcard include/config/module/unload.h) \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/markers.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - include/linux/compiler-gcc4.h \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - include/linux/poison.h \ - include/linux/prefetch.h \ - include/linux/types.h \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbd.h) \ - $(wildcard include/config/lsf.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - include/linux/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/types.h \ - include/asm-generic/int-ll64.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/processor.h \ - $(wildcard include/config/mmu.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ptrace.h \ - $(wildcard include/config/arm/thumb.h) \ - $(wildcard include/config/smp.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hwcap.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cache.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/system.h \ - $(wildcard include/config/cpu/xsc3.h) \ - $(wildcard include/config/cpu/sa1100.h) \ - $(wildcard include/config/cpu/sa110.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/memory.h \ - $(wildcard include/config/page/offset.h) \ - $(wildcard include/config/dram/size.h) \ - $(wildcard include/config/dram/base.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem.h) \ - include/linux/const.h \ - arch/arm/mach-s3c6400/include/mach/memory.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sizes.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - $(wildcard include/config/out/of/line/pfn/to/page.h) \ - include/linux/linkage.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/linkage.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - $(wildcard include/config/x86.h) \ - include/linux/typecheck.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irqflags.h \ - include/asm-generic/cmpxchg-local.h \ - include/asm-generic/cmpxchg.h \ - include/linux/stat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/stat.h \ - include/linux/time.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/spinlock/sleep.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/printk/debug.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include/stdarg.h \ - include/linux/bitops.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - $(wildcard include/config/generic/find/next/bit.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bitops.h \ - include/asm-generic/bitops/non-atomic.h \ - include/asm-generic/bitops/fls64.h \ - include/asm-generic/bitops/sched.h \ - include/asm-generic/bitops/hweight.h \ - include/asm-generic/bitops/lock.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/ratelimit.h \ - include/linux/param.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/param.h \ - $(wildcard include/config/hz.h) \ - include/linux/dynamic_printk.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/linux/byteorder/swab.h \ - include/linux/byteorder/swabb.h \ - include/linux/byteorder/generic.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/div64.h \ - include/linux/seqlock.h \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/thread_info.h \ - $(wildcard include/config/arm/thumbee.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fpstate.h \ - $(wildcard include/config/vfpv3.h) \ - $(wildcard include/config/iwmmxt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/domain.h \ - $(wildcard include/config/io/36.h) \ - include/linux/stringify.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/spinlock_types_up.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - $(wildcard include/config/generic/hardirqs.h) \ - $(wildcard include/config/prove/locking.h) \ - include/linux/spinlock_up.h \ - include/linux/spinlock_api_smp.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/atomic.h \ - include/asm-generic/atomic.h \ - include/linux/math64.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/highmem.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/unevictable/lru.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/arch/populates/node/map.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/cgroup/mem/res/ctlr.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/nodes/span/other/nodes.h) \ - $(wildcard include/config/holes/in/zone.h) \ - include/linux/wait.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/current.h \ - include/linux/threads.h \ - $(wildcard include/config/nr/cpus.h) \ - $(wildcard include/config/base/small.h) \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/init.h \ - $(wildcard include/config/hotplug.h) \ - include/linux/nodemask.h \ - include/linux/bitmap.h \ - include/linux/string.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/string.h \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/bounds.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/page.h \ - $(wildcard include/config/cpu/copy/v3.h) \ - $(wildcard include/config/cpu/copy/v4wt.h) \ - $(wildcard include/config/cpu/copy/v4wb.h) \ - $(wildcard include/config/cpu/copy/feroceon.h) \ - $(wildcard include/config/cpu/xscale.h) \ - $(wildcard include/config/cpu/copy/v6.h) \ - $(wildcard include/config/aeabi.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/glue.h \ - $(wildcard include/config/cpu/arm610.h) \ - $(wildcard include/config/cpu/arm710.h) \ - $(wildcard include/config/cpu/abrt/lv4t.h) \ - $(wildcard include/config/cpu/abrt/ev4.h) \ - $(wildcard include/config/cpu/abrt/ev4t.h) \ - $(wildcard include/config/cpu/abrt/ev5tj.h) \ - $(wildcard include/config/cpu/abrt/ev5t.h) \ - $(wildcard include/config/cpu/abrt/ev6.h) \ - $(wildcard include/config/cpu/abrt/ev7.h) \ - $(wildcard include/config/cpu/pabrt/ifar.h) \ - $(wildcard include/config/cpu/pabrt/noifar.h) \ - include/asm-generic/page.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/memory/hotremove.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/errno.h \ - include/asm-generic/errno.h \ - include/asm-generic/errno-base.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - include/linux/mutex-debug.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - include/linux/rwsem-spinlock.h \ - include/linux/srcu.h \ - include/linux/topology.h \ - $(wildcard include/config/sched/smt.h) \ - $(wildcard include/config/sched/mc.h) \ - include/linux/cpumask.h \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - $(wildcard include/config/cpumask/offstack.h) \ - include/linux/smp.h \ - $(wildcard include/config/use/generic/smp/helpers.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/topology.h \ - include/asm-generic/topology.h \ - include/linux/elf.h \ - include/linux/elf-em.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/elf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/user.h \ - include/linux/kobject.h \ - include/linux/sysfs.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/marker.h \ - include/linux/tracepoint.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/classic/rcu.h) \ - include/linux/percpu.h \ - include/linux/slab.h \ - $(wildcard include/config/slab/debug.h) \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - $(wildcard include/config/debug/slab.h) \ - include/linux/slub_def.h \ - $(wildcard include/config/slub/stats.h) \ - $(wildcard include/config/slub/debug.h) \ - include/linux/workqueue.h \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - include/linux/ktime.h \ - $(wildcard include/config/ktime/scalar.h) \ - include/linux/jiffies.h \ - include/linux/timex.h \ - $(wildcard include/config/no/hz.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/timex.h \ - arch/arm/plat-s3c/include/mach/timex.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects/free.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/percpu.h \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/completion.h \ - include/linux/rcuclassic.h \ - $(wildcard include/config/rcu/cpu/stall/detector.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/local.h \ - include/asm-generic/local.h \ - include/linux/hardirq.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/preempt/rcu.h) \ - include/linux/smp_lock.h \ - $(wildcard include/config/lock/kernel.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hardirq.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irq.h \ - arch/arm/mach-s3c6400/include/mach/irqs.h \ - arch/arm/plat-s3c64xx/include/plat/irqs.h \ - include/linux/irq_cpustat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/module.h \ - include/linux/vermagic.h \ - include/linux/utsrelease.h \ - -/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o: $(deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o) - -$(deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.mod.o): diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.o.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.o.cmd deleted file mode 100644 index c69e1f1..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.demo.o.cmd +++ /dev/null @@ -1,459 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o := arm-linux-gcc -Wp,-MD,/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/.demo.o.d -nostdinc -isystem /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include -D__KERNEL__ -Iinclude -I/mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include -include include/linux/autoconf.h -mlittle-endian -Iarch/arm/mach-s3c6400/include -Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include -Iarch/arm/plat-s3c/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -Uarm -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(demo)" -D"KBUILD_MODNAME=KBUILD_STR(demo)" -c -o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.c - -deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o := \ - /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.c \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/markers.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - include/linux/compiler-gcc4.h \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - include/linux/poison.h \ - include/linux/prefetch.h \ - include/linux/types.h \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbd.h) \ - $(wildcard include/config/lsf.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - include/linux/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/types.h \ - include/asm-generic/int-ll64.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/processor.h \ - $(wildcard include/config/mmu.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ptrace.h \ - $(wildcard include/config/arm/thumb.h) \ - $(wildcard include/config/smp.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hwcap.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cache.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/system.h \ - $(wildcard include/config/cpu/xsc3.h) \ - $(wildcard include/config/cpu/sa1100.h) \ - $(wildcard include/config/cpu/sa110.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/memory.h \ - $(wildcard include/config/page/offset.h) \ - $(wildcard include/config/dram/size.h) \ - $(wildcard include/config/dram/base.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem.h) \ - include/linux/const.h \ - arch/arm/mach-s3c6400/include/mach/memory.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sizes.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - $(wildcard include/config/out/of/line/pfn/to/page.h) \ - include/linux/linkage.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/linkage.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - $(wildcard include/config/x86.h) \ - include/linux/typecheck.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irqflags.h \ - include/asm-generic/cmpxchg-local.h \ - include/asm-generic/cmpxchg.h \ - include/linux/stat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/stat.h \ - include/linux/time.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/spinlock/sleep.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/printk/debug.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include/stdarg.h \ - include/linux/bitops.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - $(wildcard include/config/generic/find/next/bit.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bitops.h \ - include/asm-generic/bitops/non-atomic.h \ - include/asm-generic/bitops/fls64.h \ - include/asm-generic/bitops/sched.h \ - include/asm-generic/bitops/hweight.h \ - include/asm-generic/bitops/lock.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/ratelimit.h \ - include/linux/param.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/param.h \ - $(wildcard include/config/hz.h) \ - include/linux/dynamic_printk.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/linux/byteorder/swab.h \ - include/linux/byteorder/swabb.h \ - include/linux/byteorder/generic.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/div64.h \ - include/linux/seqlock.h \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/thread_info.h \ - $(wildcard include/config/arm/thumbee.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fpstate.h \ - $(wildcard include/config/vfpv3.h) \ - $(wildcard include/config/iwmmxt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/domain.h \ - $(wildcard include/config/io/36.h) \ - include/linux/stringify.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/spinlock_types_up.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - $(wildcard include/config/generic/hardirqs.h) \ - $(wildcard include/config/prove/locking.h) \ - include/linux/spinlock_up.h \ - include/linux/spinlock_api_smp.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/atomic.h \ - include/asm-generic/atomic.h \ - include/linux/math64.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/highmem.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/unevictable/lru.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/arch/populates/node/map.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/cgroup/mem/res/ctlr.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/nodes/span/other/nodes.h) \ - $(wildcard include/config/holes/in/zone.h) \ - include/linux/wait.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/current.h \ - include/linux/threads.h \ - $(wildcard include/config/nr/cpus.h) \ - $(wildcard include/config/base/small.h) \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/init.h \ - $(wildcard include/config/hotplug.h) \ - include/linux/nodemask.h \ - include/linux/bitmap.h \ - include/linux/string.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/string.h \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/bounds.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/page.h \ - $(wildcard include/config/cpu/copy/v3.h) \ - $(wildcard include/config/cpu/copy/v4wt.h) \ - $(wildcard include/config/cpu/copy/v4wb.h) \ - $(wildcard include/config/cpu/copy/feroceon.h) \ - $(wildcard include/config/cpu/xscale.h) \ - $(wildcard include/config/cpu/copy/v6.h) \ - $(wildcard include/config/aeabi.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/glue.h \ - $(wildcard include/config/cpu/arm610.h) \ - $(wildcard include/config/cpu/arm710.h) \ - $(wildcard include/config/cpu/abrt/lv4t.h) \ - $(wildcard include/config/cpu/abrt/ev4.h) \ - $(wildcard include/config/cpu/abrt/ev4t.h) \ - $(wildcard include/config/cpu/abrt/ev5tj.h) \ - $(wildcard include/config/cpu/abrt/ev5t.h) \ - $(wildcard include/config/cpu/abrt/ev6.h) \ - $(wildcard include/config/cpu/abrt/ev7.h) \ - $(wildcard include/config/cpu/pabrt/ifar.h) \ - $(wildcard include/config/cpu/pabrt/noifar.h) \ - include/asm-generic/page.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/memory/hotremove.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/errno.h \ - include/asm-generic/errno.h \ - include/asm-generic/errno-base.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - include/linux/mutex-debug.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - include/linux/rwsem-spinlock.h \ - include/linux/srcu.h \ - include/linux/topology.h \ - $(wildcard include/config/sched/smt.h) \ - $(wildcard include/config/sched/mc.h) \ - include/linux/cpumask.h \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - $(wildcard include/config/cpumask/offstack.h) \ - include/linux/smp.h \ - $(wildcard include/config/use/generic/smp/helpers.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/topology.h \ - include/asm-generic/topology.h \ - include/linux/elf.h \ - include/linux/elf-em.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/elf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/user.h \ - include/linux/kobject.h \ - include/linux/sysfs.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/marker.h \ - include/linux/tracepoint.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/classic/rcu.h) \ - include/linux/percpu.h \ - include/linux/slab.h \ - $(wildcard include/config/slab/debug.h) \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - $(wildcard include/config/debug/slab.h) \ - include/linux/slub_def.h \ - $(wildcard include/config/slub/stats.h) \ - $(wildcard include/config/slub/debug.h) \ - include/linux/workqueue.h \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - include/linux/ktime.h \ - $(wildcard include/config/ktime/scalar.h) \ - include/linux/jiffies.h \ - include/linux/timex.h \ - $(wildcard include/config/no/hz.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/timex.h \ - arch/arm/plat-s3c/include/mach/timex.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects/free.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/percpu.h \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/completion.h \ - include/linux/rcuclassic.h \ - $(wildcard include/config/rcu/cpu/stall/detector.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/local.h \ - include/asm-generic/local.h \ - include/linux/hardirq.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/preempt/rcu.h) \ - include/linux/smp_lock.h \ - $(wildcard include/config/lock/kernel.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hardirq.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irq.h \ - arch/arm/mach-s3c6400/include/mach/irqs.h \ - arch/arm/plat-s3c64xx/include/plat/irqs.h \ - include/linux/irq_cpustat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/module.h \ - include/linux/fs.h \ - $(wildcard include/config/dnotify.h) \ - $(wildcard include/config/quota.h) \ - $(wildcard include/config/inotify.h) \ - $(wildcard include/config/security.h) \ - $(wildcard include/config/epoll.h) \ - $(wildcard include/config/debug/writecount.h) \ - $(wildcard include/config/file/locking.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/block.h) \ - $(wildcard include/config/fs/xip.h) \ - $(wildcard include/config/migration.h) \ - include/linux/limits.h \ - include/linux/ioctl.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/linux/kdev_t.h \ - include/linux/dcache.h \ - $(wildcard include/config/profiling.h) \ - include/linux/rculist.h \ - include/linux/path.h \ - include/linux/radix-tree.h \ - include/linux/prio_tree.h \ - include/linux/pid.h \ - include/linux/capability.h \ - include/linux/semaphore.h \ - include/linux/fiemap.h \ - include/linux/quota.h \ - include/linux/dqblk_xfs.h \ - include/linux/dqblk_v1.h \ - include/linux/dqblk_v2.h \ - include/linux/nfs_fs_i.h \ - include/linux/nfs.h \ - include/linux/sunrpc/msg_prot.h \ - include/linux/fcntl.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fcntl.h \ - include/asm-generic/fcntl.h \ - $(wildcard include/config/64bit.h) \ - include/linux/err.h \ - include/linux/cdev.h \ - include/linux/version.h \ - include/linux/vmalloc.h \ - include/linux/ctype.h \ - include/linux/pagemap.h \ - include/linux/mm.h \ - $(wildcard include/config/sysctl.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/shmem.h) \ - $(wildcard include/config/proc/fs.h) \ - $(wildcard include/config/debug/pagealloc.h) \ - $(wildcard include/config/hibernation.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - $(wildcard include/config/debug/virtual.h) \ - include/linux/rbtree.h \ - include/linux/debug_locks.h \ - $(wildcard include/config/debug/locking/api/selftests.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/mm/owner.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/auxvec.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/mmu.h \ - $(wildcard include/config/cpu/has/asid.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/pgtable.h \ - include/asm-generic/4level-fixup.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/proc-fns.h \ - $(wildcard include/config/cpu/32.h) \ - $(wildcard include/config/cpu/arm7tdmi.h) \ - $(wildcard include/config/cpu/arm720t.h) \ - $(wildcard include/config/cpu/arm740t.h) \ - $(wildcard include/config/cpu/arm9tdmi.h) \ - $(wildcard include/config/cpu/arm920t.h) \ - $(wildcard include/config/cpu/arm922t.h) \ - $(wildcard include/config/cpu/arm925t.h) \ - $(wildcard include/config/cpu/arm926t.h) \ - $(wildcard include/config/cpu/arm940t.h) \ - $(wildcard include/config/cpu/arm946e.h) \ - $(wildcard include/config/cpu/arm1020.h) \ - $(wildcard include/config/cpu/arm1020e.h) \ - $(wildcard include/config/cpu/arm1022.h) \ - $(wildcard include/config/cpu/arm1026.h) \ - $(wildcard include/config/cpu/feroceon.h) \ - $(wildcard include/config/cpu/v6.h) \ - $(wildcard include/config/cpu/v7.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cpu-single.h \ - arch/arm/plat-s3c/include/mach/vmalloc.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/pgtable-hwdef.h \ - include/asm-generic/pgtable.h \ - include/linux/page-flags.h \ - $(wildcard include/config/pageflags/extended.h) \ - $(wildcard include/config/ia64/uncached/allocator.h) \ - $(wildcard include/config/s390.h) \ - include/linux/vmstat.h \ - $(wildcard include/config/vm/event/counters.h) \ - include/linux/highmem.h \ - include/linux/uaccess.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/uaccess.h \ - include/linux/sched.h \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/detect/softlockup.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/keys.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/user/sched.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/sysvipc.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/preempt/bkl.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/group/sched.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cputime.h \ - include/asm-generic/cputime.h \ - include/linux/sem.h \ - include/linux/ipc.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ipcbuf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sembuf.h \ - include/linux/signal.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/signal.h \ - include/asm-generic/signal.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sigcontext.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/linux/fs_struct.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/resource.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/resource.h \ - include/asm-generic/resource.h \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - include/linux/aio.h \ - $(wildcard include/config/aio.h) \ - include/linux/aio_abi.h \ - include/linux/uio.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cacheflush.h \ - $(wildcard include/config/cpu/cache/v3.h) \ - $(wildcard include/config/cpu/cache/v4.h) \ - $(wildcard include/config/cpu/cache/v4wb.h) \ - $(wildcard include/config/outer/cache.h) \ - $(wildcard include/config/cpu/cache/vipt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/shmparam.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/kmap_types.h \ - /mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.h \ - -/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o: $(deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o) - -$(deps_/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o): diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.tmp_versions/demo.mod b/books/fengguojin/src/1drivermodel/1-6lseek/demo/.tmp_versions/demo.mod deleted file mode 100644 index 36d9217..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/.tmp_versions/demo.mod +++ /dev/null @@ -1,2 +0,0 @@ -/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.ko -/mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.o diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.mod.c b/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.mod.c deleted file mode 100644 index 147b9f6..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.mod.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -MODULE_INFO(vermagic, VERMAGIC_STRING); - -struct module __this_module -__attribute__((section(".gnu.linkonce.this_module"))) = { - .name = KBUILD_MODNAME, - .init = init_module, -#ifdef CONFIG_MODULE_UNLOAD - .exit = cleanup_module, -#endif - .arch = MODULE_ARCH_INIT, -}; - -static const char __module_depends[] -__used -__attribute__((section(".modinfo"))) = -"depends="; - diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/modules.order b/books/fengguojin/src/1drivermodel/1-6lseek/demo/modules.order deleted file mode 100644 index 6390cdb..0000000 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/modules.order +++ /dev/null @@ -1 +0,0 @@ -kernel//mnt/hgfs/windows/src/1drivermodel/1-6lseek/demo/demo.ko diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.ko.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.ko.cmd new file mode 100644 index 0000000..fa95d8f --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.ko.cmd @@ -0,0 +1 @@ +cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.ko := ld -r -m elf_x86_64 -T ./scripts/module-common.lds --build-id -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.ko /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.mod.o.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.mod.o.cmd new file mode 100644 index 0000000..628aa79 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.mod.o.cmd @@ -0,0 +1,594 @@ +cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o := gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(simple.mod)" -D"KBUILD_MODNAME=KBUILD_STR(simple)" -DMODULE -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c + +source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c + +deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o := \ + $(wildcard include/config/module/unload.h) \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/sigcontext.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/vermagic.h \ + include/generated/utsrelease.h \ + +/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o) + +$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.o): diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.o.cmd b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.o.cmd new file mode 100644 index 0000000..09c6002 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.o.cmd @@ -0,0 +1,867 @@ +cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o := gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/.simple.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(simple)" -D"KBUILD_MODNAME=KBUILD_STR(simple)" -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/.tmp_simple.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.c + +source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.c + +deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o := \ + include/linux/module.h \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/modules/tree/lookup.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/livepatch.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/x86/include/uapi/asm/types.h \ + include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + arch/x86/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/x86/include/asm/posix_types.h \ + $(wildcard include/config/x86/32.h) \ + arch/x86/include/uapi/asm/posix_types_64.h \ + include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + include/uapi/linux/const.h \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/panic/timeout.h) \ + /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + arch/x86/include/asm/linkage.h \ + $(wildcard include/config/x86/64.h) \ + $(wildcard include/config/x86/alignment/16.h) \ + include/linux/bitops.h \ + arch/x86/include/asm/bitops.h \ + $(wildcard include/config/x86/cmov.h) \ + arch/x86/include/asm/alternative.h \ + $(wildcard include/config/paravirt.h) \ + arch/x86/include/asm/asm.h \ + arch/x86/include/asm/ptrace.h \ + $(wildcard include/config/x86/debugctlmsr.h) \ + arch/x86/include/asm/segment.h \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/x86/32/lazy/gs.h) \ + arch/x86/include/asm/cache.h \ + $(wildcard include/config/x86/l1/cache/shift.h) \ + $(wildcard include/config/x86/internode/cache/shift.h) \ + $(wildcard include/config/x86/vsmp.h) \ + arch/x86/include/asm/page_types.h \ + $(wildcard include/config/physical/start.h) \ + $(wildcard include/config/physical/align.h) \ + arch/x86/include/asm/page_64_types.h \ + $(wildcard include/config/kasan.h) \ + $(wildcard include/config/randomize/base.h) \ + $(wildcard include/config/randomize/base/max/offset.h) \ + arch/x86/include/uapi/asm/ptrace.h \ + arch/x86/include/uapi/asm/ptrace-abi.h \ + arch/x86/include/asm/processor-flags.h \ + $(wildcard include/config/vm86.h) \ + arch/x86/include/uapi/asm/processor-flags.h \ + arch/x86/include/asm/paravirt_types.h \ + $(wildcard include/config/x86/local/apic.h) \ + $(wildcard include/config/pgtable/levels.h) \ + $(wildcard include/config/x86/pae.h) \ + $(wildcard include/config/queued/spinlocks.h) \ + $(wildcard include/config/paravirt/debug.h) \ + arch/x86/include/asm/desc_defs.h \ + arch/x86/include/asm/kmap_types.h \ + $(wildcard include/config/debug/highmem.h) \ + include/asm-generic/kmap_types.h \ + arch/x86/include/asm/pgtable_types.h \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/mem/soft/dirty.h) \ + $(wildcard include/config/proc/fs.h) \ + arch/x86/include/asm/pgtable_64_types.h \ + arch/x86/include/asm/sparsemem.h \ + $(wildcard include/config/sparsemem.h) \ + arch/x86/include/asm/spinlock_types.h \ + $(wildcard include/config/paravirt/spinlocks.h) \ + $(wildcard include/config/nr/cpus.h) \ + include/asm-generic/qspinlock_types.h \ + include/asm-generic/qrwlock_types.h \ + include/asm-generic/ptrace.h \ + arch/x86/include/asm/cpufeature.h \ + $(wildcard include/config/x86/feature/names.h) \ + $(wildcard include/config/x86/debug/static/cpu/has.h) \ + arch/x86/include/asm/required-features.h \ + $(wildcard include/config/x86/minimum/cpu/family.h) \ + $(wildcard include/config/math/emulation.h) \ + $(wildcard include/config/x86/cmpxchg64.h) \ + $(wildcard include/config/x86/use/3dnow.h) \ + $(wildcard include/config/x86/p6/nop.h) \ + $(wildcard include/config/matom.h) \ + arch/x86/include/asm/disabled-features.h \ + $(wildcard include/config/x86/intel/mpx.h) \ + arch/x86/include/asm/rmwcc.h \ + arch/x86/include/asm/barrier.h \ + $(wildcard include/config/x86/ppro/fence.h) \ + arch/x86/include/asm/nops.h \ + $(wildcard include/config/mk7.h) \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + arch/x86/include/asm/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/le.h \ + arch/x86/include/uapi/asm/byteorder.h \ + include/linux/byteorder/little_endian.h \ + include/uapi/linux/byteorder/little_endian.h \ + include/linux/swab.h \ + include/uapi/linux/swab.h \ + arch/x86/include/uapi/asm/swab.h \ + include/linux/byteorder/generic.h \ + include/asm-generic/bitops/ext2-atomic-setbit.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/message/loglevel/default.h) \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + $(wildcard include/config/lto.h) \ + include/linux/kern_levels.h \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + include/uapi/linux/kernel.h \ + include/uapi/linux/sysinfo.h \ + include/linux/dynamic_debug.h \ + include/linux/stat.h \ + arch/x86/include/uapi/asm/stat.h \ + include/uapi/linux/stat.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/seqlock.h \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/preempt.h) \ + include/linux/preempt.h \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + arch/x86/include/asm/preempt.h \ + arch/x86/include/asm/percpu.h \ + $(wildcard include/config/x86/64/smp.h) \ + include/asm-generic/percpu.h \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/threads.h \ + $(wildcard include/config/base/small.h) \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/thread_info.h \ + $(wildcard include/config/compat.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + include/linux/bug.h \ + arch/x86/include/asm/bug.h \ + $(wildcard include/config/debug/bugverbose.h) \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + arch/x86/include/asm/thread_info.h \ + $(wildcard include/config/ia32/emulation.h) \ + arch/x86/include/asm/page.h \ + arch/x86/include/asm/page_64.h \ + $(wildcard include/config/debug/virtual.h) \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/x86/vsyscall/emulation.h) \ + include/linux/range.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + include/asm-generic/getorder.h \ + arch/x86/include/asm/processor.h \ + $(wildcard include/config/m486.h) \ + $(wildcard include/config/xen.h) \ + arch/x86/include/asm/math_emu.h \ + arch/x86/include/asm/sigcontext.h \ + arch/x86/include/uapi/asm/sigcontext.h \ + arch/x86/include/asm/current.h \ + arch/x86/include/asm/msr.h \ + arch/x86/include/asm/msr-index.h \ + arch/x86/include/uapi/asm/errno.h \ + include/uapi/asm-generic/errno.h \ + include/uapi/asm-generic/errno-base.h \ + arch/x86/include/asm/cpumask.h \ + include/linux/cpumask.h \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + include/linux/bitmap.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + arch/x86/include/asm/string.h \ + arch/x86/include/asm/string_64.h \ + arch/x86/include/uapi/asm/msr.h \ + include/uapi/linux/ioctl.h \ + arch/x86/include/uapi/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + include/uapi/asm-generic/ioctl.h \ + arch/x86/include/asm/paravirt.h \ + arch/x86/include/asm/special_insns.h \ + arch/x86/include/asm/fpu/types.h \ + include/linux/personality.h \ + include/uapi/linux/personality.h \ + include/linux/math64.h \ + $(wildcard include/config/arch/supports/int128.h) \ + arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h \ + include/linux/err.h \ + include/linux/irqflags.h \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + arch/x86/include/asm/irqflags.h \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + arch/x86/include/asm/atomic.h \ + arch/x86/include/asm/cmpxchg.h \ + arch/x86/include/asm/cmpxchg_64.h \ + arch/x86/include/asm/atomic64_64.h \ + include/asm-generic/atomic-long.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + include/linux/lockdep.h \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + arch/x86/include/asm/spinlock.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + arch/x86/include/asm/jump_label.h \ + arch/x86/include/asm/qspinlock.h \ + include/asm-generic/qspinlock.h \ + arch/x86/include/asm/qrwlock.h \ + include/asm-generic/qrwlock.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/time64.h \ + include/uapi/linux/time.h \ + include/linux/uidgid.h \ + $(wildcard include/config/multiuser.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/linux/kmod.h \ + include/linux/gfp.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/deferred/struct/page/init.h) \ + $(wildcard include/config/pm/sleep.h) \ + $(wildcard include/config/cma.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/compaction.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/page/extension.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/wait.h \ + include/uapi/linux/wait.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/linux/nodemask.h \ + $(wildcard include/config/movable/node.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/page-flags-layout.h \ + include/generated/bounds.h \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + include/linux/mutex.h \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + include/linux/osq_lock.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/spin/on/owner.h) \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/stall/common.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + $(wildcard include/config/tasks/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/rcu/nocb/cpu/all.h) \ + $(wildcard include/config/no/hz/full/sysidle.h) \ + include/linux/completion.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + include/linux/ktime.h \ + include/linux/jiffies.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/uapi/linux/param.h \ + arch/x86/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + arch/x86/include/asm/timex.h \ + arch/x86/include/asm/tsc.h \ + $(wildcard include/config/x86/tsc.h) \ + include/generated/timeconst.h \ + include/linux/timekeeping.h \ + include/linux/rcutree.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + $(wildcard include/config/no/hz/common.h) \ + include/linux/sysctl.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/rbtree.h \ + include/uapi/linux/sysctl.h \ + arch/x86/include/asm/mmzone.h \ + arch/x86/include/asm/mmzone_64.h \ + arch/x86/include/asm/smp.h \ + $(wildcard include/config/x86/io/apic.h) \ + $(wildcard include/config/x86/32/smp.h) \ + $(wildcard include/config/debug/nmi/selftest.h) \ + arch/x86/include/asm/mpspec.h \ + $(wildcard include/config/eisa.h) \ + $(wildcard include/config/x86/mpparse.h) \ + arch/x86/include/asm/mpspec_def.h \ + arch/x86/include/asm/x86_init.h \ + arch/x86/include/uapi/asm/bootparam.h \ + include/linux/screen_info.h \ + include/uapi/linux/screen_info.h \ + include/linux/apm_bios.h \ + include/uapi/linux/apm_bios.h \ + include/linux/edd.h \ + include/uapi/linux/edd.h \ + arch/x86/include/asm/e820.h \ + $(wildcard include/config/efi.h) \ + $(wildcard include/config/hibernation.h) \ + arch/x86/include/uapi/asm/e820.h \ + $(wildcard include/config/x86/pmem/legacy.h) \ + $(wildcard include/config/intel/txt.h) \ + include/linux/ioport.h \ + arch/x86/include/asm/ist.h \ + arch/x86/include/uapi/asm/ist.h \ + include/video/edid.h \ + $(wildcard include/config/x86.h) \ + include/uapi/video/edid.h \ + arch/x86/include/asm/apicdef.h \ + arch/x86/include/asm/apic.h \ + $(wildcard include/config/x86/x2apic.h) \ + include/linux/pm.h \ + $(wildcard include/config/vt/console/sleep.h) \ + $(wildcard include/config/pm.h) \ + $(wildcard include/config/pm/clk.h) \ + $(wildcard include/config/pm/generic/domains.h) \ + arch/x86/include/asm/fixmap.h \ + $(wildcard include/config/paravirt/clock.h) \ + $(wildcard include/config/provide/ohci1394/dma/init.h) \ + $(wildcard include/config/pci/mmconfig.h) \ + $(wildcard include/config/x86/intel/mid.h) \ + arch/x86/include/asm/acpi.h \ + $(wildcard include/config/acpi.h) \ + $(wildcard include/config/acpi/numa.h) \ + include/acpi/pdc_intel.h \ + arch/x86/include/asm/numa.h \ + $(wildcard include/config/numa/emu.h) \ + arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h \ + arch/x86/include/asm/mmu.h \ + $(wildcard include/config/modify/ldt/syscall.h) \ + arch/x86/include/asm/realmode.h \ + $(wildcard include/config/acpi/sleep.h) \ + arch/x86/include/asm/io.h \ + $(wildcard include/config/mtrr.h) \ + arch/x86/include/generated/asm/early_ioremap.h \ + include/asm-generic/early_ioremap.h \ + $(wildcard include/config/generic/early/ioremap.h) \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport/map.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/xen/xen.h \ + $(wildcard include/config/xen/dom0.h) \ + $(wildcard include/config/xen/pvh.h) \ + include/xen/interface/xen.h \ + arch/x86/include/asm/xen/interface.h \ + arch/x86/include/asm/xen/interface_64.h \ + arch/x86/include/asm/pvclock-abi.h \ + arch/x86/include/asm/xen/hypervisor.h \ + include/xen/features.h \ + include/xen/interface/features.h \ + arch/x86/include/asm/pvclock.h \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + arch/x86/include/asm/clocksource.h \ + arch/x86/include/uapi/asm/vsyscall.h \ + include/asm-generic/fixmap.h \ + arch/x86/include/asm/idle.h \ + arch/x86/include/asm/io_apic.h \ + arch/x86/include/asm/irq_vectors.h \ + $(wildcard include/config/have/kvm.h) \ + $(wildcard include/config/pci/msi.h) \ + include/linux/topology.h \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/sched/smt.h) \ + include/linux/smp.h \ + $(wildcard include/config/up/late/init.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + include/linux/pfn.h \ + include/linux/elf.h \ + arch/x86/include/asm/elf.h \ + $(wildcard include/config/x86/x32/abi.h) \ + arch/x86/include/asm/user.h \ + arch/x86/include/asm/user_64.h \ + arch/x86/include/uapi/asm/auxvec.h \ + arch/x86/include/asm/vdso.h \ + $(wildcard include/config/x86/x32.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + include/linux/uprobes.h \ + $(wildcard include/config/uprobes.h) \ + arch/x86/include/asm/uprobes.h \ + include/uapi/linux/elf.h \ + include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + $(wildcard include/config/uevent/helper.h) \ + $(wildcard include/config/debug/kobject/release.h) \ + include/linux/sysfs.h \ + include/linux/kernfs.h \ + $(wildcard include/config/kernfs.h) \ + include/linux/idr.h \ + include/linux/kobject_ns.h \ + include/linux/kref.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/rbtree_latch.h \ + arch/x86/include/asm/module.h \ + $(wildcard include/config/m586.h) \ + $(wildcard include/config/m586tsc.h) \ + $(wildcard include/config/m586mmx.h) \ + $(wildcard include/config/mcore2.h) \ + $(wildcard include/config/m686.h) \ + $(wildcard include/config/mpentiumii.h) \ + $(wildcard include/config/mpentiumiii.h) \ + $(wildcard include/config/mpentiumm.h) \ + $(wildcard include/config/mpentium4.h) \ + $(wildcard include/config/mk6.h) \ + $(wildcard include/config/mk8.h) \ + $(wildcard include/config/melan.h) \ + $(wildcard include/config/mcrusoe.h) \ + $(wildcard include/config/mefficeon.h) \ + $(wildcard include/config/mwinchipc6.h) \ + $(wildcard include/config/mwinchip3d.h) \ + $(wildcard include/config/mcyrixiii.h) \ + $(wildcard include/config/mviac3/2.h) \ + $(wildcard include/config/mviac7.h) \ + $(wildcard include/config/mgeodegx1.h) \ + $(wildcard include/config/mgeode/lx.h) \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/fs.h \ + $(wildcard include/config/fs/posix/acl.h) \ + $(wildcard include/config/security.h) \ + $(wildcard include/config/cgroup/writeback.h) \ + $(wildcard include/config/ima.h) \ + $(wildcard include/config/fsnotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/file/locking.h) \ + $(wildcard include/config/quota.h) \ + $(wildcard include/config/blk/dev/loop.h) \ + $(wildcard include/config/fs/dax.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/migration.h) \ + include/linux/kdev_t.h \ + include/uapi/linux/kdev_t.h \ + include/linux/dcache.h \ + include/linux/rculist.h \ + include/linux/rculist_bl.h \ + include/linux/list_bl.h \ + include/linux/bit_spinlock.h \ + include/linux/lockref.h \ + $(wildcard include/config/arch/use/cmpxchg/lockref.h) \ + include/linux/path.h \ + include/linux/list_lru.h \ + $(wildcard include/config/memcg/kmem.h) \ + include/linux/shrinker.h \ + include/linux/radix-tree.h \ + include/linux/pid.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/semaphore.h \ + include/uapi/linux/fiemap.h \ + include/linux/migrate_mode.h \ + include/linux/percpu-rwsem.h \ + include/linux/blk_types.h \ + $(wildcard include/config/blk/cgroup.h) \ + $(wildcard include/config/blk/dev/integrity.h) \ + include/uapi/linux/fs.h \ + include/uapi/linux/limits.h \ + include/linux/quota.h \ + $(wildcard include/config/quota/netlink/interface.h) \ + include/linux/percpu_counter.h \ + include/uapi/linux/dqblk_xfs.h \ + include/linux/dqblk_v1.h \ + include/linux/dqblk_v2.h \ + include/linux/dqblk_qtree.h \ + include/linux/projid.h \ + include/uapi/linux/quota.h \ + include/linux/nfs_fs_i.h \ + include/linux/fcntl.h \ + include/uapi/linux/fcntl.h \ + arch/x86/include/uapi/asm/fcntl.h \ + include/uapi/asm-generic/fcntl.h \ + include/linux/cdev.h \ + include/generated/uapi/linux/version.h \ + include/linux/vmalloc.h \ + include/linux/ctype.h \ + include/linux/pagemap.h \ + include/linux/mm.h \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/shmem.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/x86/include/uapi/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/page_ext.h \ + $(wildcard include/config/page/owner.h) \ + include/linux/stacktrace.h \ + $(wildcard include/config/stacktrace.h) \ + $(wildcard include/config/user/stacktrace/support.h) \ + arch/x86/include/asm/pgtable.h \ + $(wildcard include/config/have/arch/soft/dirty.h) \ + arch/x86/include/asm/pgtable_64.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/have/arch/huge/vmap.h) \ + include/linux/page-flags.h \ + $(wildcard include/config/pageflags/extended.h) \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + $(wildcard include/config/ksm.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + $(wildcard include/config/debug/tlbflush.h) \ + $(wildcard include/config/debug/vm/vmacache.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/memory/balloon.h) \ + $(wildcard include/config/balloon/compaction.h) \ + include/linux/highmem.h \ + include/linux/uaccess.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/sched/info.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/arch/wants/dynamic/task/struct.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/have/copy/thread/tls.h) \ + include/uapi/linux/sched.h \ + include/linux/sched/prio.h \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/cputime.h \ + arch/x86/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/sem.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/uapi/linux/ipc.h \ + arch/x86/include/uapi/asm/ipcbuf.h \ + include/uapi/asm-generic/ipcbuf.h \ + arch/x86/include/uapi/asm/sembuf.h \ + include/linux/shm.h \ + include/uapi/linux/shm.h \ + arch/x86/include/uapi/asm/shmbuf.h \ + include/uapi/asm-generic/shmbuf.h \ + arch/x86/include/asm/shmparam.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + arch/x86/include/asm/signal.h \ + arch/x86/include/uapi/asm/signal.h \ + include/uapi/asm-generic/signal-defs.h \ + arch/x86/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/proportions.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/have/arch/seccomp/filter.h) \ + $(wildcard include/config/seccomp/filter.h) \ + include/uapi/linux/seccomp.h \ + arch/x86/include/asm/seccomp.h \ + arch/x86/include/asm/unistd.h \ + arch/x86/include/uapi/asm/unistd.h \ + arch/x86/include/generated/uapi/asm/unistd_64.h \ + arch/x86/include/generated/asm/unistd_64_x32.h \ + arch/x86/include/asm/ia32_unistd.h \ + arch/x86/include/generated/asm/unistd_32_ia32.h \ + include/asm-generic/seccomp.h \ + include/uapi/linux/unistd.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/time/low/res.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + include/linux/key.h \ + include/linux/assoc_array.h \ + $(wildcard include/config/associative/array.h) \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/uapi/linux/magic.h \ + include/linux/cgroup-defs.h \ + include/linux/percpu-refcount.h \ + include/linux/cgroup_subsys.h \ + $(wildcard include/config/cgroup/cpuacct.h) \ + $(wildcard include/config/cgroup/device.h) \ + $(wildcard include/config/cgroup/freezer.h) \ + $(wildcard include/config/cgroup/net/classid.h) \ + $(wildcard include/config/cgroup/perf.h) \ + $(wildcard include/config/cgroup/net/prio.h) \ + $(wildcard include/config/cgroup/hugetlb.h) \ + $(wildcard include/config/cgroup/debug.h) \ + arch/x86/include/asm/uaccess.h \ + $(wildcard include/config/x86/intel/usercopy.h) \ + $(wildcard include/config/debug/strict/user/copy/checks.h) \ + arch/x86/include/asm/smap.h \ + $(wildcard include/config/x86/smap.h) \ + arch/x86/include/asm/uaccess_64.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + include/linux/context_tracking_state.h \ + $(wildcard include/config/context/tracking.h) \ + include/linux/static_key.h \ + arch/x86/include/asm/hardirq.h \ + $(wildcard include/config/x86/thermal/vector.h) \ + $(wildcard include/config/x86/mce/threshold.h) \ + $(wildcard include/config/x86/mce/amd.h) \ + $(wildcard include/config/hyperv.h) \ + include/linux/irq.h \ + $(wildcard include/config/irq/domain/hierarchy.h) \ + $(wildcard include/config/generic/pending/irq.h) \ + $(wildcard include/config/hardirqs/sw/resend.h) \ + $(wildcard include/config/generic/irq/legacy/alloc/hwirq.h) \ + $(wildcard include/config/generic/irq/legacy.h) \ + include/linux/irqhandler.h \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/io.h \ + arch/x86/include/asm/irq.h \ + arch/x86/include/asm/irq_regs.h \ + include/linux/irqdesc.h \ + $(wildcard include/config/irq/preflow/fasteoi.h) \ + $(wildcard include/config/sparse/irq.h) \ + $(wildcard include/config/handle/domain/irq.h) \ + arch/x86/include/asm/hw_irq.h \ + $(wildcard include/config/hpet/timer.h) \ + $(wildcard include/config/dmar/table.h) \ + $(wildcard include/config/ht/irq.h) \ + $(wildcard include/config/x86/uv.h) \ + include/linux/profile.h \ + $(wildcard include/config/profiling.h) \ + arch/x86/include/asm/sections.h \ + $(wildcard include/config/debug/rodata.h) \ + include/asm-generic/sections.h \ + arch/x86/include/asm/cacheflush.h \ + $(wildcard include/config/debug/rodata/test.h) \ + include/asm-generic/cacheflush.h \ + include/linux/hugetlb_inline.h \ + include/linux/slab.h \ + $(wildcard include/config/debug/slab.h) \ + $(wildcard include/config/failslab.h) \ + $(wildcard include/config/slab.h) \ + $(wildcard include/config/slub.h) \ + $(wildcard include/config/slob.h) \ + include/linux/kmemleak.h \ + $(wildcard include/config/debug/kmemleak.h) \ + include/linux/kasan.h \ + $(wildcard include/config/kasan/shadow/offset.h) \ + /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.h \ + +/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o) + +$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o): diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/.tmp_versions/simple.mod b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.tmp_versions/simple.mod new file mode 100644 index 0000000..b4d6346 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/.tmp_versions/simple.mod @@ -0,0 +1,2 @@ +/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.ko +/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.o diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/Makefile b/books/fengguojin/src/1drivermodel/1-6lseek/simple/Makefile new file mode 100644 index 0000000..1d38c26 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/Makefile @@ -0,0 +1,80 @@ +# ------------------------------------------------------------------------------ +# +# Makefile for the LDD-LinuxDeviceDrivers. +# +# Author: gatieme +# Create: 2016-07-29 15:50:46 +# Last modified: 2016-07-29 16:10:29 +# Description: +# This program is loaded as a kernel(v2.6.18 or later) module. +# Use "make install" to load it into kernel. +# Use "make remove" to remove the module out of kernel. +# +# ------------------------------------------------------------------------------ + + +ROOT=../../../../../ +#PLATFORM=$(shell $(ROOT)/systype.sh) +#include $(ROOT)/Make.defines.$(PLATFORM) + +# my driver description +DRIVER_VERSION := "1.0.0" +DRIVER_AUTHOR := "Gatieme @ AderStep Inc..." +DRIVER_DESC := "Demo module for LDD-LinuxDeviceDrivers devices" +DRIVER_LICENSE := "Dual BSD/GPL" + +DEV_FILE := /dev/gatieme +MODULE_NAME := simple + +ifneq ($(KERNELRELEASE),) + +#CFG_FLAGS += -O2 -I./ +#EXTRA_CFLAGS += $(C_FLAGS) $(CFG_INC) $(CFG_INC) + + + +obj-m := $(MODULE_NAME).o #smodule.o + +else + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +PWD := $(shell pwd) + +modules: + make -C $(KERNELDIR) M=$(PWD) modules + +modules_install: + make -C $(KERNELDIR) M=$(PWD) modules_install + + + +insmod: + sudo insmod $(MODULE_NAME).ko + sudo mknod $(DEV_FILE) c 224 0 + +reinsmod: + sudo rmmod $(MODULE_NAME) + sudo insmod $(MODULE_NAME).ko + +rmmod: + sudo rmmod $(MODULE_NAME) + sudo /bin/rm $(DEV_FILE) + +clean: + make -C $(KERNELDIR) M=$(PWD) clean + rm -f modules.order Module.symvers Module.markers + + +COMMIT="[1.1.4 带参数的可加载模块](http://book.51cto.com/art/201205/337663.htm)" +github: + cd $(ROOT) && make github + + +.PHNOY: + modules modules_install clean + + + +endif + diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/Module.symvers b/books/fengguojin/src/1drivermodel/1-6lseek/simple/Module.symvers similarity index 100% rename from books/fengguojin/src/1drivermodel/1-6lseek/demo/Module.symvers rename to books/fengguojin/src/1drivermodel/1-6lseek/simple/Module.symvers diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/README.md b/books/fengguojin/src/1drivermodel/1-6lseek/simple/README.md new file mode 100644 index 0000000..502bf7c --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/README.md @@ -0,0 +1,140 @@ +例1.5 字符设备ioctl实例 +======= + +| 驱动 | 描述 | 书中对应章节 | +|:----------:|:----------:|:------------:| +| 1-6lseek | 例1.6 字符设备seek实例 | [1.2.6 seek接口](http://book.51cto.com/art/201205/337671.htm) | + +#1.2.6 seek接口 +------- + + +seek接口用来对设备的读写位置进行定位。file_operations结构中对应的seek接口如下: + +```c +loff_t (*llseek) (struct file *filp, loff_t off, int whence) +``` + +其中off是偏移量,whence参数指起点位置。 + +#例1.6 字符设备seek实例 +------- + +代码见光盘\src\1drivermodel\1-6lseek。核心代码如下所示: + +```c +ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) +{ + loff_t pos= *f_pos;//获取文件指针 + if(pos>=256) + { + count=0; + goto out; + } + if(count>(256-pos)) + { + count=256-pos; + } + pos += count; + //复制数据到指定的地址 + if (copy_to_user(buf,demoBuffer+*f_pos,count)) + { + count=-EFAULT; + goto out; + } + *f_pos = pos; + out: + return count; +} + +loff_t simple_llseek(struct file *filp, loff_t off, int whence) +{ + loff_t pos; + pos = filp->f_pos; + switch (whence) + { + case 0: + pos = off; + break; + case 1: + pos += off; + break; + case 2: + pos =255+off; + break; + default: + return -EINVAL; + } + if ((pos>=256) || (pos<0)) + { + return -EINVAL; + } + return filp->f_pos=pos; +} +struct file_operations simple_fops = { + .owner = THIS_MODULE, + .llseek = simple_llseek, + .read = simple_read, + .open = simple_open, + .release = simple_release, +}; +``` + + +应用程序参考代码如下: + + +```c +int main() +{ + int fd; + int i; + char data[256]; + int retval; + fd=open("/dev/fgj",O_RDWR); + if(fd==-1) + { + perror("error open\n"); + exit(-1); + } + printf("open /dev/fgj successfully\n"); + retval=lseek(fd,5,0); + if(retval==-1) + { + perror("lseek error\n"); + exit(-1); + } + retval=read(fd,data,3); + if(retval==-1) + { + perror("read error\n"); + exit(-1); + } + data[retval]=0; + printf("read successfully:%s\n",data); + //文件定位 + retval=lseek(fd,2,0); + if(retval==-1) + { + perror("lseek error\n"); + exit(-1); + } + retval=read(fd,data,3); + if(retval==-1) + { + perror("read error\n"); + exit(-1); + } + data[retval]=0; + printf("read successfully:%s\n",data); + close(fd); +} +``` + +本例运行结果如下: + +```c +insmod demo.ko +mknod /dev/fgj c 224 0 +./test +``` \ No newline at end of file diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/modules.order b/books/fengguojin/src/1drivermodel/1-6lseek/simple/modules.order new file mode 100644 index 0000000..1177a57 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/modules.order @@ -0,0 +1 @@ +kernel//home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.ko diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.c b/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.c similarity index 77% rename from books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.c rename to books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.c index bab20fc..f52e2c6 100644 --- a/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.c +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.c @@ -1,4 +1,3 @@ - #include #include #include @@ -11,20 +10,24 @@ #include #include -#include "demo.h" +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) +#include +#endif -MODULE_AUTHOR("fgj"); +#include "simple.h" + +MODULE_AUTHOR("fgj & gatieme"); MODULE_LICENSE("Dual BSD/GPL"); struct simple_dev *simple_devices; static unsigned char simple_inc=0; -static unsigned char demoBuffer[256]; +static unsigned char simple_buffer[256]; int simple_open(struct inode *inode, struct file *filp) { struct simple_dev *dev; - if(simple_inc>0)return -ERESTARTSYS; + if(simple_inc > 0)return -ERESTARTSYS; simple_inc++; dev = container_of(inode->i_cdev, struct simple_dev, cdev); @@ -33,29 +36,33 @@ int simple_open(struct inode *inode, struct file *filp) return 0; } + int simple_release(struct inode *inode, struct file *filp) { simple_inc--; - return 0; + + return 0; } + ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) { - loff_t pos= *f_pos; - if(pos>=256) + loff_t pos = *f_pos; + + if(pos >= 256) { - count=0; + count = 0; goto out; } - if(count>(256-pos)) + if(count > (256 - pos)) { - count=256-pos; + count = 256 - pos; } pos += count; - - if (copy_to_user(buf,demoBuffer+*f_pos,count)) + + if (copy_to_user(buf, simple_buffer + *f_pos,count)) { - count=-EFAULT; + count=-EFAULT; goto out; } *f_pos = pos; @@ -67,7 +74,7 @@ loff_t simple_llseek(struct file *filp, loff_t off, int whence) { loff_t pos; pos = filp->f_pos; - switch (whence) + switch (whence) { case 0: pos = off; @@ -81,12 +88,12 @@ loff_t simple_llseek(struct file *filp, loff_t off, int whence) default: return -EINVAL; } - - if ((pos>=256) || (pos<0)) + + if ((pos>=256) || (pos<0)) { return -EINVAL; } - + return filp->f_pos=pos; } @@ -101,11 +108,11 @@ struct file_operations simple_fops = { /******************************************************* MODULE ROUTINE *******************************************************/ -void simple_cleanup_module(void) +static void __exit simple_cleanup_module(void) { dev_t devno = MKDEV(simple_MAJOR, simple_MINOR); - if (simple_devices) + if (simple_devices) { cdev_del(&simple_devices->cdev); kfree(simple_devices); @@ -114,14 +121,14 @@ void simple_cleanup_module(void) unregister_chrdev_region(devno,1); } -int simple_init_module(void) +static int __init simple_setup_module(void) { int result; dev_t dev = 0; dev = MKDEV(simple_MAJOR, simple_MINOR); result = register_chrdev_region(dev, 1, "DEMO"); - if (result < 0) + if (result < 0) { printk(KERN_WARNING "DEMO: can't get major %d\n", simple_MAJOR); return result; @@ -144,13 +151,14 @@ int simple_init_module(void) printk(KERN_NOTICE "Error %d adding DEMO\n", result); goto fail; } - memcpy(demoBuffer,"ABCDEFGHIJKLMN",14); - return 0; + memcpy(simple_buffer,"ABCDEFGHIJKLMN",14); + + return 0; fail: simple_cleanup_module(); return result; } -module_init(simple_init_module); +module_init(simple_setup_module); module_exit(simple_cleanup_module); diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.h b/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.h similarity index 100% rename from books/fengguojin/src/1drivermodel/1-6lseek/demo/demo.h rename to books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.h diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c b/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c new file mode 100644 index 0000000..a6cf291 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/simple/simple.mod.c @@ -0,0 +1,40 @@ +#include +#include +#include + +MODULE_INFO(vermagic, VERMAGIC_STRING); + +__visible struct module __this_module +__attribute__((section(".gnu.linkonce.this_module"))) = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +static const struct modversion_info ____versions[] +__used +__attribute__((section("__versions"))) = { + { 0xcd71858e, __VMLINUX_SYMBOL_STR(module_layout) }, + { 0x307aee44, __VMLINUX_SYMBOL_STR(cdev_add) }, + { 0xb01e0219, __VMLINUX_SYMBOL_STR(cdev_init) }, + { 0xab7d6a08, __VMLINUX_SYMBOL_STR(kmem_cache_alloc_trace) }, + { 0xf1669456, __VMLINUX_SYMBOL_STR(kmalloc_caches) }, + { 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) }, + { 0xd8e484f0, __VMLINUX_SYMBOL_STR(register_chrdev_region) }, + { 0x7485e15e, __VMLINUX_SYMBOL_STR(unregister_chrdev_region) }, + { 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) }, + { 0x26520044, __VMLINUX_SYMBOL_STR(cdev_del) }, + { 0x4f8b5ddb, __VMLINUX_SYMBOL_STR(_copy_to_user) }, + { 0xbdfb6dbb, __VMLINUX_SYMBOL_STR(__fentry__) }, +}; + +static const char __module_depends[] +__used +__attribute__((section(".modinfo"))) = +"depends="; + + +MODULE_INFO(srcversion, "4AB8CD013BB56D467DB4A03"); diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/test/Makefile b/books/fengguojin/src/1drivermodel/1-6lseek/test/Makefile new file mode 100644 index 0000000..2be09a1 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-6lseek/test/Makefile @@ -0,0 +1,25 @@ +ROOT=../../../ + +target=test + + + +all:$(target) + + +test : test.o + $(CC) $^ -o $@ $(LDFLAGS) + @echo "测试使用register_chrdev注册的字符设备..." + +%.o : %.c + $(CC) -c $^ -o $@ $(CFLAGS) $(DEFINES) + +clean : + rm -rf *.o + rm -rf $(target) + + +run : + sudo ./test + +.PHONY : clean run diff --git a/books/fengguojin/src/1drivermodel/1-6lseek/test/test b/books/fengguojin/src/1drivermodel/1-6lseek/test/test deleted file mode 100644 index b6f837134634a8cff51c2d00f2d62178bdf337a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10061 zcmc&)eQX@Zb)VV2BTwRoj{0yF$#%~%71M#ZcT#BCm5qoLDTy*Eo0jCZZtbj&cT4iD zGjHC^&fX`s4R4oH3Imqt666M^gy=!~`mYIL z2@&cMG0_a!2gJRU7fv?|arz~V5$F*^J~km`*`6aBr$H0LKQ(RdDR5m}yj)X{kosT7YOqZi0_DTlq{BJ?jpM!W%@NIBaec0s@EsKyw0qLIb3 znbCMQ-JQ+kDu-uaN0MWKUYV#i}o;;GwVo$WyOsSUUU*b3x$7+@I#Y=ixvKJ8?A zm@1Y6TY!sU9WpMzAjA~XPbvc_ooAcsY?RdES0OMUl$pOP+Au@yUG7EtQkSvg@*<6sy=I zyhE9?D0szUz9(X$lJ6FPtpb@ zX7*9!a*kubm6;5t(^mZk3n_nEPF~Bcy8Nw(6stl)TtIpU6fZKx7+qqD1}`(kWM5&5 z3I85bILTF}aGD=7g%eCOg(F;J3P%b}ch^E!cFn>Ce-gU#>TGEGui8#GW~sc)=2h?}Rxf?_$hY zUl-aHi4#iBx-k4pSEDWJv)&bp>b-y%L1?>Boe@{N-wvG_p6&S2uG#10shSn7&iyIu z7K!T2>O@Ozbz*HziqahFT(b}IFH*pG(AAj;#-lj~U;XxHe+-|PxfAut-l^G; z_|2K0&d;y8vEv)6{m}gUd<1yuXk#q~eNrNV#M9n^_}KWf^dS|MVhm_YRalD|VXRb1 zrMyyUtdh+hMp$IDiz#iGhB%J6XIMoC)i9@L)c5nC z(O2n?{{GFeE^OoX$9kNN&PHtMzrq}4!g@R{@hYAieIcI1Tt0-9^Tzq(ym8D7aIP$| zA05~FjG?C+!=UEU5N-&`vsP`TKFIRB^{Lxr}&XVIH!you5=C@em=o z3{Uws9_xS{8Y008HN$XW$;b&NR`VBi=I^P@rr%eYVLG}U3gb8+tVsAP%#1W+(V=+w zFOY;n&8XoEpy={Kz7K;SWZ3RS+VnWH-UM1=2+xqbj~RgYM1InXm(Y=k_`!T}e<7Pp zdGS1ch`D|(e2M|{Y-DGhxKF+gA_eN)vv!Pq% z#!+27RV-(mJ-_G%ST)b8vA#XAjn0OLoCgw40?savHNV`yi`oZH>8W1172}5pZ2ox4c(hm2#d3b+R^E8bEpziRLPYx z<2f%KQ!^kVbsob}uILuE zg~D|$Te*O$H6)ey%B6n=>$$Gj6T%pVDLj@IvV{`sGwE>AA4q0}T&5MWqNxd@W*d)r#8M=d_&VzGy}Jf-9gvN2vG-6x`>g$4Hunz?Qd#?Z zSn_>I{;s4pk52NLCi#8HWuGL=3O)$-EU@_s^LttMPO_aW*-Obd*^78+_86$hx5z&6 zH+U}T!ec3VxSO#_?nT@WeGODg=mMT0yw@IQxHsoijW~5{@&G(?SIJf!#!F1MsN8QZ2@$6FA5ok2xck^n#1)vEDTJf(Q~+9i+mD!OBWj1vJ7KKGh6kbw9#mGru`mRylj=c zua#UhtcI+kQQ?->M_O+=hW8@Z5_j<_|FgXf?x}7-=%Ir95kes092LYtJ{PO~(wtQY ze=~qF7+8xNpWPDnP?^6wG$XbpDzN#vGp3j>Gqf#oyv-wmq8|NOUj#S-Vax@dCU^J79 zJC3?j8Be9C(Ot>y&*cy1^aV@zc&?(9Rk?U3m&#Vs9!}EPvF^rX-~^KP#+(Ut(1q0u zg!Y?4uCYJjICgYweZnpvb>ep3u{)fh?@z$Lr97#u{(qQ41{{A1dDL3dm?oaM><%+; zbWog!=W)C6TzhMqI>#YP?L$1@4Yaimyk@;>e=0Q4+7i-dwV*!BCx9Feh(*ljxhoVv z546W#ldo8xv|kRr6n?SkSo2h5@rf>Y0%&ZnzhDnnhmpocyDPFL6zbe zj;#tN;%O$F8cTePxe7=iKw`?DVNwQK;^Q$S3Ml3YUWySW6ie|tcq(W}pJ+&b`)29x zhV-|Ll)gZkaf0uIj0$u(b)UipV8WIHkjr<>V;Ra#5!fhQc&?#e#5h`LgHqZQa>jPL2y_B3YUcPWo^T1$A03 z3J1&I!LhQG$>$a@E@VY7OMOigvSs0@xpm6kA<$}~oMK*`#GJm}yBypMrVk0nn{da9 z$w^PE>xtLuhJH4M+EH_IGLu59dDNzB87-BBlgdv{dhj$S?TuE(Q6`xi$2FzT7Am7C z*Wfd`vAmHbM@Ng^0mI<}88+xje1kNDaWeUcn}#&auqVlKxtJNPAXJ-~_}^2$_Aut) zpBXAAO_k1{gJQ%$Rh{!2B9|yy+P1M&Xo8dkcS8A@!sGB z^sazb#}%a1i2}C(Z6Nh{&#(^!?-vZ9n1UU6!Y|bw0q+OifgbNHOuJxJ9XO(@I|cH* zSBRkUUeLy7qn|?F5+L;kp*ILUu2LgsNI($Nm{Tz7^9}997hMt3q!z zXalC+0y2!Ax}$*Jr;QR)>JdK%GG|WAX0j) zf@`@KdhDA4qjww`sITxm($mo6Hyw^ctFLJE{z&Vo@jDB>v(Pg#sv7!r&^QgMIp%#6 zztI?3Q11*F#u5yNx`#S{8@=<8v%l2i9qonN=zSY<&IR@KHy{1Ihkihy4eZw&KvN&@ zug)TqcP<8~NBmo$(Yp@4>(FC)1Ex=W0b@Sf<=ykUV2q5qtb_0-(9q7q?ySSJ zWPdSKDz*gco9YzeyMcnHKB(RV{8mb^{Z<*bHLojReAc{ffpJ*#dbAmDHLq8Nxp%eI z%7JgaVB}b20LDpz?Ry>Lq2?JOb==cDoC?7BMzH;_m;+OW*U^OWieRg+q?pq>&xoPp z4^vx32E>@UoFj+&{X1V<&5Dj2%(wMdMin14uXj9iM{N5MlIvZ|;S>O_Yl1B>sQ|8D zf~{_`73uTA$WA#AL=CXj&J^Ui3pc>7pXha-tzJ8W^1B-hC|mscB0jc=zh@Eu{<;sc+`j)Mv(1U_7Z` z2-N?6U9o!7KFZDfbH^axfVDUEhwbrvszKYwbE<|malavvvi=^V=9`|x38)Xe`Bq~2 z{WZL?|8l@y9eMB?Jk7qrHabR}S9d^Lq@z)NgoGf9RN&ljp^=@n;Et zW_^Zd)H!EVk+MJRKi|?d==rO@*xMaeG*`1?@a_)`r2 zv=Kbz9OC7`t>CYMH~)dy1KzyFG#_MVD!S*K>l`nyhQ5h-62Vc||wEr^r z;D0>606th>6+F+61ls%O;Di4G`6hVty^8k#C3q8Wmh&qkU+VZWhkG|%B4q>r`w*Q; z(U~@va=02Rl`CUo&~x2K`**v;JNN9xUqf6sop;Bx`O#$7O_%eIlq&`XcHv@R%D;^f=JJKo%jKv?_>en8N{u{Hf%!2>h-0F`y`U{@^>&=3q3%?Qa1NH*38?fDV@s6$S zQDdau* #include -void main() + +#define MAX_SIZE 256 +#define DEV_FILE "/dev/gatieme" + +int main(void) { int fd; int i; - char data[256]; - + char data[MAX_SIZE]; + int retval; - fd=open("/dev/fgj",O_RDWR); - if(fd==-1) + + fd = open(DEV_FILE, O_RDWR); + if(fd == -1) { perror("error open\n"); exit(-1); } - printf("open /dev/fgj successfully\n"); - retval=lseek(fd,5,0); - if(retval==-1) + printf("open " DEV_FILE " successfully\n"); + + // read data + retval = read(fd, data, MAX_SIZE); + if(retval == -1) + { + perror("read error"); + exit(-1); + } + printf("read successfully : %s\n", data); + + // lseek 5 and read data + retval = lseek(fd, 5, 0); + if(retval == -1) { perror("lseek error\n"); exit(-1); } - retval=read(fd,data,3); - if(retval==-1) + printf("lseek 5\n"); + + retval = read(fd, data, MAX_SIZE); + if(retval == -1) { - perror("read error\n"); + perror("read error"); exit(-1); } - data[retval]=0; - printf("read successfully:%s\n",data); - - retval=lseek(fd,2,0); - if(retval==-1) + + data[retval] = 0; + printf("read successfully : %s\n", data); + + // lseek 2 and read data + retval = lseek(fd, 2, 0); + if(retval == -1) { - perror("lseek error\n"); + perror("lseek error"); exit(-1); } - retval=read(fd,data,3); - if(retval==-1) + printf("lseek 2\n"); + + retval = read(fd, data, MAX_SIZE); + if(retval == -1) { - perror("read error\n"); + perror("read error"); exit(-1); } - data[retval]=0; - printf("read successfully:%s\n",data); - + data[retval] = 0; + + printf("read successfully : %s\n", data); + close(fd); } diff --git a/books/fengguojin/src/1drivermodel/1-7poll/Makefile b/books/fengguojin/src/1drivermodel/1-7poll/Makefile new file mode 100644 index 0000000..e9e0811 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-7poll/Makefile @@ -0,0 +1,30 @@ +ROOT=../../../../.. + +DIRS= simple test + +all: + for i in $(DIRS); do \ + (cd $$i && echo "making $$i" && $(MAKE) ) || exit 1; \ + done + + +clean: + for i in $(DIRS); do \ + (cd $$i && echo "cleaning $$i" && $(MAKE) clean) || exit 1; \ + done + + +insmod: + cd simple && make insmod + +rmmod: + cd simple && make rmmod + +reinsmod: + cd simple && make reinsmod + +run : + sudo ./test/test + +github : + cd $(ROOT) && make github diff --git a/books/fengguojin/src/1drivermodel/1-7poll/README.md b/books/fengguojin/src/1drivermodel/1-7poll/README.md new file mode 100644 index 0000000..be93ab2 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-7poll/README.md @@ -0,0 +1,199 @@ +例1.7 poll接口驱动程序示例 +======= + +| 驱动 | 描述 | 书中对应章节 | +|:----------:|:----------:|:------------:| +| 1-7poll | 例1.7 poll接口驱动程序示例 | [1.2.7 poll接口](http://book.51cto.com/art/201205/337672.htm) | + + + +#1.2.7 poll接口 +------- + +如果设备被配置成阻塞式操作,即当设备执行I/O操作时如果不能获得数据将阻塞,直到获得数据. + +应用层可以使用select函数查询设备当前的状态,以便用户程序获知是否能对设备进行非阻塞的访问. + +使用select函数需要在设备驱动程序中添加file_operations->poll接口支持. + +一个典型的字符驱动程序的file_operations->poll函数的实现如下 + +```c +static unsigned int my_poll(struct file *file, struct poll_table_struct *wait) +{ + unsigned int mask = 0; + poll_wait(file, & outq, wait);//把当前进程添加到等待列表 + if (0 != bta->read_count)//如果有数据 + mask |= (POLLIN | POLLRDNORM); + return mask; +} +``` + + +驱动程序中的poll函数返回的标志如下: + +```c +#define POLLIN 1 //设备可以无阻塞地读取 +#define POLLPRI 2//可以无阻塞地读取高优先级数据(带外数据) +#define POLLOUT 4//设备可以无阻塞地写入 +#define POLLERR 8//设备发生错误 +#define POLLHUP 16//当读取设备的进程到达文件尾部 +#define POLLNVAL 32 //请求无效 +#define POLLRDNORM 64//常规数据已经就绪 +#define POLLWRNORM POLLOUT +#define POLLRDBAND 128//可以从设备读带外数据 +#define POLLWRBAND 256//可以向设备写带外数据 +#define POLLMSG 0x0400 +#define POLLREMOVE 0x1000 +#define POLLRDHUP 0x2000 +``` + +应用层多路I/O选择函数select的原型如下: + +```c +int select(int numfds, fd_set *readfds, fd_set +*writefds, fd_set *exceptfds, struct timeval *timeout); +``` + +其中readfds、writefds、exceptfds分别是被select函数监视的读、写和异常处理的文件描述符集合,numfds的值是需要检查的号码最高的文件描述符加1。timeout参数是一个指向struct timeval类型的指针,它可以使select函数在等待timeout时间后若没有文件描述符准备好则返回。文件描述符集常用函数接口如下: + +```c +FD_ZERO(fd_set *set)//清除一个文件描述符集; + +FD_SET(int fd,fd_set *set)//将文件描述符fd加入文件描述符集中; + +FD_CLR(int fd,fd_set *set)//将文件描述符fd从文件描述符集中清除; + +FD_ISSET(int fd,fd_set *set)//判断文件描述符fd是否被置位。 +``` + +#例1.7 poll接口驱动程序示例 +------- + +代码见光盘\src\1drivermodel\1-7poll + +核心代码如下所示: + +```c +FD_ZERO(fd_set *set)//清除一个文件描述符集; + +FD_SET(int fd,fd_set *set)//将文件描述符fd加入文件描述符集中; + +FD_CLR(int fd,fd_set *set)//将文件描述符fd从文件描述符集中清除; +FD_ISSET(int fd,fd_set *set)//判断文件描述符fd是否被置位 +``` + +#例1.7 poll接口驱动程序示例 +------- + +代码见光盘\src\1drivermodel\1-7poll + +核心代码如下所示 + + +```c +ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) +{ + //printk("wait_event_interruptible before\n"); + wait_event_interruptible(read_queue, simple_flag); + //printk("wait_event_interruptible after\n"); + if (copy_to_user(buf,demoBuffer,count)) + { + count=-EFAULT; + } + return count; +} + +ssize_t simple_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos) +{ + if (copy_from_user(demoBuffer, buf, count)) + { + count = -EFAULT; + goto out; + } + simple_flag=1; + wake_up(&read_queue); +out: + return count; +} + +//poll接口实现 +unsigned int simple_poll(struct file * file, poll_table * pt) +{ + unsigned int mask = POLLIN | POLLRDNORM; + poll_wait(file, &read_queue, pt); + return mask; +} +struct file_operations simple_fops = { + .owner = THIS_MODULE, + .poll = simple_poll, + .read = simple_read, + .write= simple_write, + .open = simple_open, + .release = simple_release, +}; +``` + +应用程序参考代码如下: + +```c +int fd; +void *readthread(void *arg)//读数据线程 +{ + char data[256]; + fd_set rfds; //读描述符集合 + fd_set wfds; //写描述符集合 + int retval=0; + while(1) + { + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + select(fd+1, &rfds, &wfds, NULL, NULL); //多路选择 + if(FD_ISSET(fd, &rfds)) + { + retval=read(fd,data,3); + if(retval==-1) + { + perror("read error\n"); + exit(-1); + } + data[retval]=0; + printf("read successfully:%s\n",data); + } + } + return (void *)0; +} +void main() +{ + int i; + int retval; + fd=open("/dev/fgj",O_RDWR); + if(fd==-1) + { + perror("error open\n"); + exit(-1); + } + printf("open /dev/fgj successfully\n"); + pthread_t tid; + pthread_create(&tid, NULL, readthread, NULL);//创建读线程 + while(1) + { + retval=write(fd,"fgj",3);//主线程负责写数据 + if(retval==-1) + { + perror("write error\n"); + exit(-1); + } + } + close(fd); +} +``` + +本例运行结果如下: + + +```c +insmod demo.ko +mknod /dev/fgj c 224 0 +./test +``` diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.ko.cmd b/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.ko.cmd deleted file mode 100644 index acc23ec..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.ko.cmd +++ /dev/null @@ -1 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.ko := /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld -EL -r -o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.ko /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.mod.o.cmd b/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.mod.o.cmd deleted file mode 100644 index 7229556..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.mod.o.cmd +++ /dev/null @@ -1,289 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o := arm-linux-gcc -Wp,-MD,/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/.demo.mod.o.d -nostdinc -isystem /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include -D__KERNEL__ -Iinclude -I/mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include -include include/linux/autoconf.h -mlittle-endian -Iarch/arm/mach-s3c6400/include -Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include -Iarch/arm/plat-s3c/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -Uarm -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(demo.mod)" -D"KBUILD_MODNAME=KBUILD_STR(demo)" -DMODULE -c -o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.c - -deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o := \ - /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.c \ - $(wildcard include/config/module/unload.h) \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/markers.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - include/linux/compiler-gcc4.h \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - include/linux/poison.h \ - include/linux/prefetch.h \ - include/linux/types.h \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbd.h) \ - $(wildcard include/config/lsf.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - include/linux/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/types.h \ - include/asm-generic/int-ll64.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/processor.h \ - $(wildcard include/config/mmu.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ptrace.h \ - $(wildcard include/config/arm/thumb.h) \ - $(wildcard include/config/smp.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hwcap.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cache.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/system.h \ - $(wildcard include/config/cpu/xsc3.h) \ - $(wildcard include/config/cpu/sa1100.h) \ - $(wildcard include/config/cpu/sa110.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/memory.h \ - $(wildcard include/config/page/offset.h) \ - $(wildcard include/config/dram/size.h) \ - $(wildcard include/config/dram/base.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem.h) \ - include/linux/const.h \ - arch/arm/mach-s3c6400/include/mach/memory.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sizes.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - $(wildcard include/config/out/of/line/pfn/to/page.h) \ - include/linux/linkage.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/linkage.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - $(wildcard include/config/x86.h) \ - include/linux/typecheck.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irqflags.h \ - include/asm-generic/cmpxchg-local.h \ - include/asm-generic/cmpxchg.h \ - include/linux/stat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/stat.h \ - include/linux/time.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/spinlock/sleep.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/printk/debug.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include/stdarg.h \ - include/linux/bitops.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - $(wildcard include/config/generic/find/next/bit.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bitops.h \ - include/asm-generic/bitops/non-atomic.h \ - include/asm-generic/bitops/fls64.h \ - include/asm-generic/bitops/sched.h \ - include/asm-generic/bitops/hweight.h \ - include/asm-generic/bitops/lock.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/ratelimit.h \ - include/linux/param.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/param.h \ - $(wildcard include/config/hz.h) \ - include/linux/dynamic_printk.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/linux/byteorder/swab.h \ - include/linux/byteorder/swabb.h \ - include/linux/byteorder/generic.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/div64.h \ - include/linux/seqlock.h \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/thread_info.h \ - $(wildcard include/config/arm/thumbee.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fpstate.h \ - $(wildcard include/config/vfpv3.h) \ - $(wildcard include/config/iwmmxt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/domain.h \ - $(wildcard include/config/io/36.h) \ - include/linux/stringify.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/spinlock_types_up.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - $(wildcard include/config/generic/hardirqs.h) \ - $(wildcard include/config/prove/locking.h) \ - include/linux/spinlock_up.h \ - include/linux/spinlock_api_smp.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/atomic.h \ - include/asm-generic/atomic.h \ - include/linux/math64.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/highmem.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/unevictable/lru.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/arch/populates/node/map.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/cgroup/mem/res/ctlr.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/nodes/span/other/nodes.h) \ - $(wildcard include/config/holes/in/zone.h) \ - include/linux/wait.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/current.h \ - include/linux/threads.h \ - $(wildcard include/config/nr/cpus.h) \ - $(wildcard include/config/base/small.h) \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/init.h \ - $(wildcard include/config/hotplug.h) \ - include/linux/nodemask.h \ - include/linux/bitmap.h \ - include/linux/string.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/string.h \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/bounds.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/page.h \ - $(wildcard include/config/cpu/copy/v3.h) \ - $(wildcard include/config/cpu/copy/v4wt.h) \ - $(wildcard include/config/cpu/copy/v4wb.h) \ - $(wildcard include/config/cpu/copy/feroceon.h) \ - $(wildcard include/config/cpu/xscale.h) \ - $(wildcard include/config/cpu/copy/v6.h) \ - $(wildcard include/config/aeabi.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/glue.h \ - $(wildcard include/config/cpu/arm610.h) \ - $(wildcard include/config/cpu/arm710.h) \ - $(wildcard include/config/cpu/abrt/lv4t.h) \ - $(wildcard include/config/cpu/abrt/ev4.h) \ - $(wildcard include/config/cpu/abrt/ev4t.h) \ - $(wildcard include/config/cpu/abrt/ev5tj.h) \ - $(wildcard include/config/cpu/abrt/ev5t.h) \ - $(wildcard include/config/cpu/abrt/ev6.h) \ - $(wildcard include/config/cpu/abrt/ev7.h) \ - $(wildcard include/config/cpu/pabrt/ifar.h) \ - $(wildcard include/config/cpu/pabrt/noifar.h) \ - include/asm-generic/page.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/memory/hotremove.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/errno.h \ - include/asm-generic/errno.h \ - include/asm-generic/errno-base.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - include/linux/mutex-debug.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - include/linux/rwsem-spinlock.h \ - include/linux/srcu.h \ - include/linux/topology.h \ - $(wildcard include/config/sched/smt.h) \ - $(wildcard include/config/sched/mc.h) \ - include/linux/cpumask.h \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - $(wildcard include/config/cpumask/offstack.h) \ - include/linux/smp.h \ - $(wildcard include/config/use/generic/smp/helpers.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/topology.h \ - include/asm-generic/topology.h \ - include/linux/elf.h \ - include/linux/elf-em.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/elf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/user.h \ - include/linux/kobject.h \ - include/linux/sysfs.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/marker.h \ - include/linux/tracepoint.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/classic/rcu.h) \ - include/linux/percpu.h \ - include/linux/slab.h \ - $(wildcard include/config/slab/debug.h) \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - $(wildcard include/config/debug/slab.h) \ - include/linux/slub_def.h \ - $(wildcard include/config/slub/stats.h) \ - $(wildcard include/config/slub/debug.h) \ - include/linux/workqueue.h \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - include/linux/ktime.h \ - $(wildcard include/config/ktime/scalar.h) \ - include/linux/jiffies.h \ - include/linux/timex.h \ - $(wildcard include/config/no/hz.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/timex.h \ - arch/arm/plat-s3c/include/mach/timex.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects/free.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/percpu.h \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/completion.h \ - include/linux/rcuclassic.h \ - $(wildcard include/config/rcu/cpu/stall/detector.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/local.h \ - include/asm-generic/local.h \ - include/linux/hardirq.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/preempt/rcu.h) \ - include/linux/smp_lock.h \ - $(wildcard include/config/lock/kernel.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hardirq.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irq.h \ - arch/arm/mach-s3c6400/include/mach/irqs.h \ - arch/arm/plat-s3c64xx/include/plat/irqs.h \ - include/linux/irq_cpustat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/module.h \ - include/linux/vermagic.h \ - include/linux/utsrelease.h \ - -/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o: $(deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o) - -$(deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.mod.o): diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.o.cmd b/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.o.cmd deleted file mode 100644 index ca09fe9..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/.demo.o.cmd +++ /dev/null @@ -1,462 +0,0 @@ -cmd_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o := arm-linux-gcc -Wp,-MD,/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/.demo.o.d -nostdinc -isystem /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include -D__KERNEL__ -Iinclude -I/mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include -include include/linux/autoconf.h -mlittle-endian -Iarch/arm/mach-s3c6400/include -Iarch/arm/mach-s3c6410/include -Iarch/arm/plat-s3c64xx/include -Iarch/arm/plat-s3c/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float -Uarm -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(demo)" -D"KBUILD_MODNAME=KBUILD_STR(demo)" -c -o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.c - -deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o := \ - /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.c \ - include/linux/module.h \ - $(wildcard include/config/modules.h) \ - $(wildcard include/config/modversions.h) \ - $(wildcard include/config/unused/symbols.h) \ - $(wildcard include/config/generic/bug.h) \ - $(wildcard include/config/kallsyms.h) \ - $(wildcard include/config/markers.h) \ - $(wildcard include/config/tracepoints.h) \ - $(wildcard include/config/module/unload.h) \ - $(wildcard include/config/sysfs.h) \ - include/linux/list.h \ - $(wildcard include/config/debug/list.h) \ - include/linux/stddef.h \ - include/linux/compiler.h \ - $(wildcard include/config/enable/must/check.h) \ - $(wildcard include/config/enable/warn/deprecated.h) \ - include/linux/compiler-gcc4.h \ - include/linux/compiler-gcc.h \ - $(wildcard include/config/arch/supports/optimized/inlining.h) \ - $(wildcard include/config/optimize/inlining.h) \ - include/linux/poison.h \ - include/linux/prefetch.h \ - include/linux/types.h \ - $(wildcard include/config/uid16.h) \ - $(wildcard include/config/lbd.h) \ - $(wildcard include/config/lsf.h) \ - $(wildcard include/config/phys/addr/t/64bit.h) \ - include/linux/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/posix_types.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/types.h \ - include/asm-generic/int-ll64.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/processor.h \ - $(wildcard include/config/mmu.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ptrace.h \ - $(wildcard include/config/arm/thumb.h) \ - $(wildcard include/config/smp.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hwcap.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cache.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/system.h \ - $(wildcard include/config/cpu/xsc3.h) \ - $(wildcard include/config/cpu/sa1100.h) \ - $(wildcard include/config/cpu/sa110.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/memory.h \ - $(wildcard include/config/page/offset.h) \ - $(wildcard include/config/dram/size.h) \ - $(wildcard include/config/dram/base.h) \ - $(wildcard include/config/zone/dma.h) \ - $(wildcard include/config/discontigmem.h) \ - $(wildcard include/config/sparsemem.h) \ - include/linux/const.h \ - arch/arm/mach-s3c6400/include/mach/memory.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sizes.h \ - include/asm-generic/memory_model.h \ - $(wildcard include/config/flatmem.h) \ - $(wildcard include/config/sparsemem/vmemmap.h) \ - $(wildcard include/config/out/of/line/pfn/to/page.h) \ - include/linux/linkage.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/linkage.h \ - include/linux/irqflags.h \ - $(wildcard include/config/trace/irqflags.h) \ - $(wildcard include/config/irqsoff/tracer.h) \ - $(wildcard include/config/preempt/tracer.h) \ - $(wildcard include/config/trace/irqflags/support.h) \ - $(wildcard include/config/x86.h) \ - include/linux/typecheck.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irqflags.h \ - include/asm-generic/cmpxchg-local.h \ - include/asm-generic/cmpxchg.h \ - include/linux/stat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/stat.h \ - include/linux/time.h \ - include/linux/cache.h \ - $(wildcard include/config/arch/has/cache/line/size.h) \ - include/linux/kernel.h \ - $(wildcard include/config/preempt/voluntary.h) \ - $(wildcard include/config/debug/spinlock/sleep.h) \ - $(wildcard include/config/printk.h) \ - $(wildcard include/config/dynamic/printk/debug.h) \ - $(wildcard include/config/numa.h) \ - $(wildcard include/config/ftrace/mcount/record.h) \ - /usr/local/arm/4.2.2-eabi/usr/bin-ccache/../lib/gcc/arm-unknown-linux-gnueabi/4.2.2/include/stdarg.h \ - include/linux/bitops.h \ - $(wildcard include/config/generic/find/first/bit.h) \ - $(wildcard include/config/generic/find/next/bit.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bitops.h \ - include/asm-generic/bitops/non-atomic.h \ - include/asm-generic/bitops/fls64.h \ - include/asm-generic/bitops/sched.h \ - include/asm-generic/bitops/hweight.h \ - include/asm-generic/bitops/lock.h \ - include/linux/log2.h \ - $(wildcard include/config/arch/has/ilog2/u32.h) \ - $(wildcard include/config/arch/has/ilog2/u64.h) \ - include/linux/ratelimit.h \ - include/linux/param.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/param.h \ - $(wildcard include/config/hz.h) \ - include/linux/dynamic_printk.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/byteorder.h \ - include/linux/byteorder/little_endian.h \ - include/linux/byteorder/swab.h \ - include/linux/byteorder/swabb.h \ - include/linux/byteorder/generic.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/bug.h \ - $(wildcard include/config/bug.h) \ - $(wildcard include/config/debug/bugverbose.h) \ - include/asm-generic/bug.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/div64.h \ - include/linux/seqlock.h \ - include/linux/spinlock.h \ - $(wildcard include/config/debug/spinlock.h) \ - $(wildcard include/config/generic/lockbreak.h) \ - $(wildcard include/config/preempt.h) \ - $(wildcard include/config/debug/lock/alloc.h) \ - include/linux/preempt.h \ - $(wildcard include/config/debug/preempt.h) \ - $(wildcard include/config/preempt/notifiers.h) \ - include/linux/thread_info.h \ - $(wildcard include/config/compat.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/thread_info.h \ - $(wildcard include/config/arm/thumbee.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fpstate.h \ - $(wildcard include/config/vfpv3.h) \ - $(wildcard include/config/iwmmxt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/domain.h \ - $(wildcard include/config/io/36.h) \ - include/linux/stringify.h \ - include/linux/bottom_half.h \ - include/linux/spinlock_types.h \ - include/linux/spinlock_types_up.h \ - include/linux/lockdep.h \ - $(wildcard include/config/lockdep.h) \ - $(wildcard include/config/lock/stat.h) \ - $(wildcard include/config/generic/hardirqs.h) \ - $(wildcard include/config/prove/locking.h) \ - include/linux/spinlock_up.h \ - include/linux/spinlock_api_smp.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/atomic.h \ - include/asm-generic/atomic.h \ - include/linux/math64.h \ - include/linux/kmod.h \ - include/linux/gfp.h \ - $(wildcard include/config/zone/dma32.h) \ - $(wildcard include/config/highmem.h) \ - include/linux/mmzone.h \ - $(wildcard include/config/force/max/zoneorder.h) \ - $(wildcard include/config/unevictable/lru.h) \ - $(wildcard include/config/memory/hotplug.h) \ - $(wildcard include/config/arch/populates/node/map.h) \ - $(wildcard include/config/flat/node/mem/map.h) \ - $(wildcard include/config/cgroup/mem/res/ctlr.h) \ - $(wildcard include/config/have/memory/present.h) \ - $(wildcard include/config/need/node/memmap/size.h) \ - $(wildcard include/config/need/multiple/nodes.h) \ - $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ - $(wildcard include/config/sparsemem/extreme.h) \ - $(wildcard include/config/nodes/span/other/nodes.h) \ - $(wildcard include/config/holes/in/zone.h) \ - include/linux/wait.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/current.h \ - include/linux/threads.h \ - $(wildcard include/config/nr/cpus.h) \ - $(wildcard include/config/base/small.h) \ - include/linux/numa.h \ - $(wildcard include/config/nodes/shift.h) \ - include/linux/init.h \ - $(wildcard include/config/hotplug.h) \ - include/linux/nodemask.h \ - include/linux/bitmap.h \ - include/linux/string.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/string.h \ - include/linux/pageblock-flags.h \ - $(wildcard include/config/hugetlb/page.h) \ - $(wildcard include/config/hugetlb/page/size/variable.h) \ - include/linux/bounds.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/page.h \ - $(wildcard include/config/cpu/copy/v3.h) \ - $(wildcard include/config/cpu/copy/v4wt.h) \ - $(wildcard include/config/cpu/copy/v4wb.h) \ - $(wildcard include/config/cpu/copy/feroceon.h) \ - $(wildcard include/config/cpu/xscale.h) \ - $(wildcard include/config/cpu/copy/v6.h) \ - $(wildcard include/config/aeabi.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/glue.h \ - $(wildcard include/config/cpu/arm610.h) \ - $(wildcard include/config/cpu/arm710.h) \ - $(wildcard include/config/cpu/abrt/lv4t.h) \ - $(wildcard include/config/cpu/abrt/ev4.h) \ - $(wildcard include/config/cpu/abrt/ev4t.h) \ - $(wildcard include/config/cpu/abrt/ev5tj.h) \ - $(wildcard include/config/cpu/abrt/ev5t.h) \ - $(wildcard include/config/cpu/abrt/ev6.h) \ - $(wildcard include/config/cpu/abrt/ev7.h) \ - $(wildcard include/config/cpu/pabrt/ifar.h) \ - $(wildcard include/config/cpu/pabrt/noifar.h) \ - include/asm-generic/page.h \ - include/linux/memory_hotplug.h \ - $(wildcard include/config/have/arch/nodedata/extension.h) \ - $(wildcard include/config/memory/hotremove.h) \ - include/linux/notifier.h \ - include/linux/errno.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/errno.h \ - include/asm-generic/errno.h \ - include/asm-generic/errno-base.h \ - include/linux/mutex.h \ - $(wildcard include/config/debug/mutexes.h) \ - include/linux/mutex-debug.h \ - include/linux/rwsem.h \ - $(wildcard include/config/rwsem/generic/spinlock.h) \ - include/linux/rwsem-spinlock.h \ - include/linux/srcu.h \ - include/linux/topology.h \ - $(wildcard include/config/sched/smt.h) \ - $(wildcard include/config/sched/mc.h) \ - include/linux/cpumask.h \ - $(wildcard include/config/hotplug/cpu.h) \ - $(wildcard include/config/debug/per/cpu/maps.h) \ - $(wildcard include/config/cpumask/offstack.h) \ - include/linux/smp.h \ - $(wildcard include/config/use/generic/smp/helpers.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/topology.h \ - include/asm-generic/topology.h \ - include/linux/elf.h \ - include/linux/elf-em.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/elf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/user.h \ - include/linux/kobject.h \ - include/linux/sysfs.h \ - include/linux/kref.h \ - include/linux/moduleparam.h \ - $(wildcard include/config/alpha.h) \ - $(wildcard include/config/ia64.h) \ - $(wildcard include/config/ppc64.h) \ - include/linux/marker.h \ - include/linux/tracepoint.h \ - include/linux/rcupdate.h \ - $(wildcard include/config/classic/rcu.h) \ - include/linux/percpu.h \ - include/linux/slab.h \ - $(wildcard include/config/slab/debug.h) \ - $(wildcard include/config/debug/objects.h) \ - $(wildcard include/config/slub.h) \ - $(wildcard include/config/slob.h) \ - $(wildcard include/config/debug/slab.h) \ - include/linux/slub_def.h \ - $(wildcard include/config/slub/stats.h) \ - $(wildcard include/config/slub/debug.h) \ - include/linux/workqueue.h \ - include/linux/timer.h \ - $(wildcard include/config/timer/stats.h) \ - $(wildcard include/config/debug/objects/timers.h) \ - include/linux/ktime.h \ - $(wildcard include/config/ktime/scalar.h) \ - include/linux/jiffies.h \ - include/linux/timex.h \ - $(wildcard include/config/no/hz.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/timex.h \ - arch/arm/plat-s3c/include/mach/timex.h \ - include/linux/debugobjects.h \ - $(wildcard include/config/debug/objects/free.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/percpu.h \ - include/asm-generic/percpu.h \ - $(wildcard include/config/have/setup/per/cpu/area.h) \ - include/linux/completion.h \ - include/linux/rcuclassic.h \ - $(wildcard include/config/rcu/cpu/stall/detector.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/local.h \ - include/asm-generic/local.h \ - include/linux/hardirq.h \ - $(wildcard include/config/virt/cpu/accounting.h) \ - $(wildcard include/config/preempt/rcu.h) \ - include/linux/smp_lock.h \ - $(wildcard include/config/lock/kernel.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/hardirq.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/irq.h \ - arch/arm/mach-s3c6400/include/mach/irqs.h \ - arch/arm/plat-s3c64xx/include/plat/irqs.h \ - include/linux/irq_cpustat.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/module.h \ - include/linux/fs.h \ - $(wildcard include/config/dnotify.h) \ - $(wildcard include/config/quota.h) \ - $(wildcard include/config/inotify.h) \ - $(wildcard include/config/security.h) \ - $(wildcard include/config/epoll.h) \ - $(wildcard include/config/debug/writecount.h) \ - $(wildcard include/config/file/locking.h) \ - $(wildcard include/config/auditsyscall.h) \ - $(wildcard include/config/block.h) \ - $(wildcard include/config/fs/xip.h) \ - $(wildcard include/config/migration.h) \ - include/linux/limits.h \ - include/linux/ioctl.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ioctl.h \ - include/asm-generic/ioctl.h \ - include/linux/kdev_t.h \ - include/linux/dcache.h \ - $(wildcard include/config/profiling.h) \ - include/linux/rculist.h \ - include/linux/path.h \ - include/linux/radix-tree.h \ - include/linux/prio_tree.h \ - include/linux/pid.h \ - include/linux/capability.h \ - include/linux/semaphore.h \ - include/linux/fiemap.h \ - include/linux/quota.h \ - include/linux/dqblk_xfs.h \ - include/linux/dqblk_v1.h \ - include/linux/dqblk_v2.h \ - include/linux/nfs_fs_i.h \ - include/linux/nfs.h \ - include/linux/sunrpc/msg_prot.h \ - include/linux/fcntl.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/fcntl.h \ - include/asm-generic/fcntl.h \ - $(wildcard include/config/64bit.h) \ - include/linux/err.h \ - include/linux/cdev.h \ - include/linux/version.h \ - include/linux/vmalloc.h \ - include/linux/ctype.h \ - include/linux/pagemap.h \ - include/linux/mm.h \ - $(wildcard include/config/sysctl.h) \ - $(wildcard include/config/stack/growsup.h) \ - $(wildcard include/config/swap.h) \ - $(wildcard include/config/shmem.h) \ - $(wildcard include/config/proc/fs.h) \ - $(wildcard include/config/debug/pagealloc.h) \ - $(wildcard include/config/hibernation.h) \ - include/linux/mmdebug.h \ - $(wildcard include/config/debug/vm.h) \ - $(wildcard include/config/debug/virtual.h) \ - include/linux/rbtree.h \ - include/linux/debug_locks.h \ - $(wildcard include/config/debug/locking/api/selftests.h) \ - include/linux/mm_types.h \ - $(wildcard include/config/split/ptlock/cpus.h) \ - $(wildcard include/config/mm/owner.h) \ - $(wildcard include/config/mmu/notifier.h) \ - include/linux/auxvec.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/auxvec.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/mmu.h \ - $(wildcard include/config/cpu/has/asid.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/pgtable.h \ - include/asm-generic/4level-fixup.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/proc-fns.h \ - $(wildcard include/config/cpu/32.h) \ - $(wildcard include/config/cpu/arm7tdmi.h) \ - $(wildcard include/config/cpu/arm720t.h) \ - $(wildcard include/config/cpu/arm740t.h) \ - $(wildcard include/config/cpu/arm9tdmi.h) \ - $(wildcard include/config/cpu/arm920t.h) \ - $(wildcard include/config/cpu/arm922t.h) \ - $(wildcard include/config/cpu/arm925t.h) \ - $(wildcard include/config/cpu/arm926t.h) \ - $(wildcard include/config/cpu/arm940t.h) \ - $(wildcard include/config/cpu/arm946e.h) \ - $(wildcard include/config/cpu/arm1020.h) \ - $(wildcard include/config/cpu/arm1020e.h) \ - $(wildcard include/config/cpu/arm1022.h) \ - $(wildcard include/config/cpu/arm1026.h) \ - $(wildcard include/config/cpu/feroceon.h) \ - $(wildcard include/config/cpu/v6.h) \ - $(wildcard include/config/cpu/v7.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cpu-single.h \ - arch/arm/plat-s3c/include/mach/vmalloc.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/pgtable-hwdef.h \ - include/asm-generic/pgtable.h \ - include/linux/page-flags.h \ - $(wildcard include/config/pageflags/extended.h) \ - $(wildcard include/config/ia64/uncached/allocator.h) \ - $(wildcard include/config/s390.h) \ - include/linux/vmstat.h \ - $(wildcard include/config/vm/event/counters.h) \ - include/linux/highmem.h \ - include/linux/uaccess.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/uaccess.h \ - include/linux/sched.h \ - $(wildcard include/config/sched/debug.h) \ - $(wildcard include/config/detect/softlockup.h) \ - $(wildcard include/config/core/dump/default/elf/headers.h) \ - $(wildcard include/config/keys.h) \ - $(wildcard include/config/bsd/process/acct.h) \ - $(wildcard include/config/taskstats.h) \ - $(wildcard include/config/audit.h) \ - $(wildcard include/config/inotify/user.h) \ - $(wildcard include/config/posix/mqueue.h) \ - $(wildcard include/config/user/sched.h) \ - $(wildcard include/config/schedstats.h) \ - $(wildcard include/config/task/delay/acct.h) \ - $(wildcard include/config/fair/group/sched.h) \ - $(wildcard include/config/rt/group/sched.h) \ - $(wildcard include/config/blk/dev/io/trace.h) \ - $(wildcard include/config/cc/stackprotector.h) \ - $(wildcard include/config/sysvipc.h) \ - $(wildcard include/config/rt/mutexes.h) \ - $(wildcard include/config/task/xacct.h) \ - $(wildcard include/config/cpusets.h) \ - $(wildcard include/config/cgroups.h) \ - $(wildcard include/config/futex.h) \ - $(wildcard include/config/fault/injection.h) \ - $(wildcard include/config/latencytop.h) \ - $(wildcard include/config/have/unstable/sched/clock.h) \ - $(wildcard include/config/preempt/bkl.h) \ - $(wildcard include/config/tracing.h) \ - $(wildcard include/config/group/sched.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cputime.h \ - include/asm-generic/cputime.h \ - include/linux/sem.h \ - include/linux/ipc.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/ipcbuf.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sembuf.h \ - include/linux/signal.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/signal.h \ - include/asm-generic/signal.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/sigcontext.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/siginfo.h \ - include/asm-generic/siginfo.h \ - include/linux/fs_struct.h \ - include/linux/proportions.h \ - include/linux/percpu_counter.h \ - include/linux/seccomp.h \ - $(wildcard include/config/seccomp.h) \ - include/linux/rtmutex.h \ - $(wildcard include/config/debug/rt/mutexes.h) \ - include/linux/plist.h \ - $(wildcard include/config/debug/pi/list.h) \ - include/linux/resource.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/resource.h \ - include/asm-generic/resource.h \ - include/linux/hrtimer.h \ - $(wildcard include/config/high/res/timers.h) \ - include/linux/task_io_accounting.h \ - $(wildcard include/config/task/io/accounting.h) \ - include/linux/latencytop.h \ - include/linux/cred.h \ - include/linux/aio.h \ - $(wildcard include/config/aio.h) \ - include/linux/aio_abi.h \ - include/linux/uio.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/cacheflush.h \ - $(wildcard include/config/cpu/cache/v3.h) \ - $(wildcard include/config/cpu/cache/v4.h) \ - $(wildcard include/config/cpu/cache/v4wb.h) \ - $(wildcard include/config/outer/cache.h) \ - $(wildcard include/config/cpu/cache/vipt.h) \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/shmparam.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/kmap_types.h \ - include/linux/poll.h \ - /mnt/v/urbetter-linux2.6.28-v1.0/arch/arm/include/asm/poll.h \ - include/asm-generic/poll.h \ - /mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.h \ - -/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o: $(deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o) - -$(deps_/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o): diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/.tmp_versions/demo.mod b/books/fengguojin/src/1drivermodel/1-7poll/demo/.tmp_versions/demo.mod deleted file mode 100644 index 9d439d8..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/.tmp_versions/demo.mod +++ /dev/null @@ -1,2 +0,0 @@ -/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.ko -/mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.o diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/Module.symvers b/books/fengguojin/src/1drivermodel/1-7poll/demo/Module.symvers deleted file mode 100644 index e69de29..0000000 diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.mod.c b/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.mod.c deleted file mode 100644 index 147b9f6..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.mod.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -MODULE_INFO(vermagic, VERMAGIC_STRING); - -struct module __this_module -__attribute__((section(".gnu.linkonce.this_module"))) = { - .name = KBUILD_MODNAME, - .init = init_module, -#ifdef CONFIG_MODULE_UNLOAD - .exit = cleanup_module, -#endif - .arch = MODULE_ARCH_INIT, -}; - -static const char __module_depends[] -__used -__attribute__((section(".modinfo"))) = -"depends="; - diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/modules.order b/books/fengguojin/src/1drivermodel/1-7poll/demo/modules.order deleted file mode 100644 index c694552..0000000 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/modules.order +++ /dev/null @@ -1 +0,0 @@ -kernel//mnt/hgfs/windows/src/1drivermodel/1-7poll/demo/demo.ko diff --git a/books/fengguojin/src/1drivermodel/1-7poll/simple/Makefile b/books/fengguojin/src/1drivermodel/1-7poll/simple/Makefile new file mode 100644 index 0000000..1d38c26 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-7poll/simple/Makefile @@ -0,0 +1,80 @@ +# ------------------------------------------------------------------------------ +# +# Makefile for the LDD-LinuxDeviceDrivers. +# +# Author: gatieme +# Create: 2016-07-29 15:50:46 +# Last modified: 2016-07-29 16:10:29 +# Description: +# This program is loaded as a kernel(v2.6.18 or later) module. +# Use "make install" to load it into kernel. +# Use "make remove" to remove the module out of kernel. +# +# ------------------------------------------------------------------------------ + + +ROOT=../../../../../ +#PLATFORM=$(shell $(ROOT)/systype.sh) +#include $(ROOT)/Make.defines.$(PLATFORM) + +# my driver description +DRIVER_VERSION := "1.0.0" +DRIVER_AUTHOR := "Gatieme @ AderStep Inc..." +DRIVER_DESC := "Demo module for LDD-LinuxDeviceDrivers devices" +DRIVER_LICENSE := "Dual BSD/GPL" + +DEV_FILE := /dev/gatieme +MODULE_NAME := simple + +ifneq ($(KERNELRELEASE),) + +#CFG_FLAGS += -O2 -I./ +#EXTRA_CFLAGS += $(C_FLAGS) $(CFG_INC) $(CFG_INC) + + + +obj-m := $(MODULE_NAME).o #smodule.o + +else + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +PWD := $(shell pwd) + +modules: + make -C $(KERNELDIR) M=$(PWD) modules + +modules_install: + make -C $(KERNELDIR) M=$(PWD) modules_install + + + +insmod: + sudo insmod $(MODULE_NAME).ko + sudo mknod $(DEV_FILE) c 224 0 + +reinsmod: + sudo rmmod $(MODULE_NAME) + sudo insmod $(MODULE_NAME).ko + +rmmod: + sudo rmmod $(MODULE_NAME) + sudo /bin/rm $(DEV_FILE) + +clean: + make -C $(KERNELDIR) M=$(PWD) clean + rm -f modules.order Module.symvers Module.markers + + +COMMIT="[1.1.4 带参数的可加载模块](http://book.51cto.com/art/201205/337663.htm)" +github: + cd $(ROOT) && make github + + +.PHNOY: + modules modules_install clean + + + +endif + diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.c b/books/fengguojin/src/1drivermodel/1-7poll/simple/simple.c similarity index 87% rename from books/fengguojin/src/1drivermodel/1-7poll/demo/demo.c rename to books/fengguojin/src/1drivermodel/1-7poll/simple/simple.c index e479dd6..62d765f 100644 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.c +++ b/books/fengguojin/src/1drivermodel/1-7poll/simple/simple.c @@ -1,4 +1,3 @@ - #include #include #include @@ -9,30 +8,39 @@ #include #include #include -#include +#include #include -#include "demo.h" +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) +#include +#endif -MODULE_AUTHOR("fgj"); +#include "simple.h" + + + +MODULE_AUTHOR("fgj & gatieme"); MODULE_LICENSE("Dual BSD/GPL"); struct simple_dev *simple_devices; -static unsigned char simple_inc=0; +static unsigned char simple_inc=0; static unsigned char simple_flag=0; -static unsigned char demoBuffer[256]; +static unsigned char demoBuffer[256]; wait_queue_head_t read_queue; + + + int simple_open(struct inode *inode, struct file *filp) { struct simple_dev *dev; - + if(simple_inc>0)return -ERESTARTSYS; simple_inc++; - + dev = container_of(inode->i_cdev, struct simple_dev, cdev); filp->private_data = dev; - + return 0; } @@ -42,80 +50,86 @@ int simple_release(struct inode *inode, struct file *filp) return 0; } - -ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) -{ - //printk("wait_event_interruptible before\n"); - wait_event_interruptible(read_queue, simple_flag); - //printk("wait_event_interruptible after\n"); - if (copy_to_user(buf,demoBuffer,count)) - { - count=-EFAULT; - - } - return count; -} - -ssize_t simple_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos) -{ - if (copy_from_user(demoBuffer, buf, count)) - { - count = -EFAULT; - goto out; - } - simple_flag=1; - wake_up(&read_queue); -out: - return count; -} - -unsigned int simple_poll(struct file * file, poll_table * pt) -{ - unsigned int mask = POLLIN | POLLRDNORM; - //printk("poll_wait before\n"); - poll_wait(file, &read_queue, pt); - //printk("poll_wait after\n"); - return mask; -} - -struct file_operations simple_fops = { - .owner = THIS_MODULE, - .poll = simple_poll, - .read = simple_read, - .write= simple_write, - .open = simple_open, - .release = simple_release, + +ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos) +{ + //printk("wait_event_interruptible before\n"); + wait_event_interruptible(read_queue, simple_flag); + //printk("wait_event_interruptible after\n"); + if (copy_to_user(buf,demoBuffer,count)) + { + count=-EFAULT; + + } + return count; +} + +ssize_t simple_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos) +{ + if (copy_from_user(demoBuffer, buf, count)) + { + count = -EFAULT; + goto out; + } + simple_flag=1; + wake_up(&read_queue); +out: + return count; +} + +unsigned int simple_poll(struct file * file, poll_table * pt) +{ + unsigned int mask = POLLIN | POLLRDNORM; + + printk("poll_wait before\n"); + poll_wait(file, &read_queue, pt); + printk("poll_wait after\n"); + + return mask; +} + +struct file_operations simple_fops = { + .owner = THIS_MODULE, + .poll = simple_poll, + .read = simple_read, + .write= simple_write, + .open = simple_open, + .release = simple_release, }; + + + /******************************************************* MODULE ROUTINE *******************************************************/ -void simple_cleanup_module(void) +static void __exit simple_cleanup_module(void) { dev_t devno = MKDEV(simple_MAJOR, simple_MINOR); - - if (simple_devices) + + if (simple_devices) { cdev_del(&simple_devices->cdev); kfree(simple_devices); } - + unregister_chrdev_region(devno,1); } -int simple_init_module(void) + +static int __init simple_setup_module(void) { int result; dev_t dev = 0; - + dev = MKDEV(simple_MAJOR, simple_MINOR); result = register_chrdev_region(dev, 1, "DEMO"); - if (result < 0) + if (result < 0) { printk(KERN_WARNING "DEMO: can't get major %d\n", simple_MAJOR); return result; } - + simple_devices = kmalloc(sizeof(struct simple_dev), GFP_KERNEL); if (!simple_devices) { @@ -123,7 +137,7 @@ int simple_init_module(void) goto fail; } memset(simple_devices, 0, sizeof(struct simple_dev)); - + cdev_init(&simple_devices->cdev, &simple_fops); simple_devices->cdev.owner = THIS_MODULE; simple_devices->cdev.ops = &simple_fops; @@ -133,14 +147,14 @@ int simple_init_module(void) printk(KERN_NOTICE "Error %d adding DEMO\n", result); goto fail; } - init_waitqueue_head(&read_queue); + init_waitqueue_head(&read_queue); return 0; - + fail: simple_cleanup_module(); return result; } -module_init(simple_init_module); +module_init(simple_setup_module); module_exit(simple_cleanup_module); diff --git a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.h b/books/fengguojin/src/1drivermodel/1-7poll/simple/simple.h similarity index 90% rename from books/fengguojin/src/1drivermodel/1-7poll/demo/demo.h rename to books/fengguojin/src/1drivermodel/1-7poll/simple/simple.h index da4b7e2..b93fd66 100644 --- a/books/fengguojin/src/1drivermodel/1-7poll/demo/demo.h +++ b/books/fengguojin/src/1drivermodel/1-7poll/simple/simple.h @@ -1,6 +1,5 @@ - -#ifndef _simple_H_ -#define _simple_H_ +#ifndef __SIMPLE_H_INCLUDE__ +#define __SIMPLE_H_INCLUDE__ #include /* needed for the _IOW etc stuff used later */ @@ -28,7 +27,7 @@ #define COMMAND2 2 //豸ṹ -struct simple_dev +struct simple_dev { struct cdev cdev; /* Char device structure */ }; @@ -43,4 +42,4 @@ int simple_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); -#endif /* _simple_H_ */ +#endif /* #endif __SIMPLE_H_INCLUDE__ */ diff --git a/books/fengguojin/src/1drivermodel/1-7poll/test/Makefile b/books/fengguojin/src/1drivermodel/1-7poll/test/Makefile new file mode 100644 index 0000000..873a4b1 --- /dev/null +++ b/books/fengguojin/src/1drivermodel/1-7poll/test/Makefile @@ -0,0 +1,25 @@ +ROOT=../../../ + +target=test + +LDFLAGS+= -lpthread + +all:$(target) + + +test : test.o + $(CC) $^ -o $@ $(LDFLAGS) + @echo "例1.7 poll接口驱动应用程序示例..." + +%.o : %.c + $(CC) -c $^ -o $@ $(CFLAGS) $(DEFINES) + +clean : + rm -rf *.o + rm -rf $(target) + + +run : + sudo ./test + +.PHONY : clean run diff --git a/books/fengguojin/src/1drivermodel/1-7poll/test/test b/books/fengguojin/src/1drivermodel/1-7poll/test/test deleted file mode 100644 index 09f3aba366915f5932d4eebeae6cac2862e7376d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11054 zcmc&)eT-byb-(w$nceZu?0R;+fMZj520LDmcV=u1b_s%Ay!a!#HpYguG|qkqGJ)=^s%=)oq0;D}}^Cw1tQ&Zqy_Qp=v*v0)a{{Ar)#6 z)8FsjcW2%Xrb(qFJ-g?fd+s^++;hLqz3;yH@+~9VrIf;eCHe%p=@UY1292#2!V)61 zSvaB{vQLXEDKE`NgqS_45lKM|`Pc@^vYV$h&LK?<1F2&Jdts#asKyoGiIgE*Aqbq% z_#BKAS)O^+(RmV7iUDNo1hQVr;jefJ`Y%C7JP)2oIqM+yLBH>)Mh866$ddWoXfmJe z&*utLhZ2=y;uFY9JJ1`22 z0bAi}WPEsBh!dbaz$st^%rhuV{ur-E$Iubv1^TyCohWis@F*|QRYZ7x!xefc)Uf5N%Jl#JPFP9*FxuZFI*?YJE3zA zFNEfvdgHQsa$e=novwAwJu(+L|J~Zz`{CR_KC%$`!9xpYfAL(+q|XG>vw`%t1L>JS z`iVgL(LnlSAUz#O9}1*PNUuG6x+Z347DMr;-sp5@=0gtr7yY%kI9-dUPS-+b`)jY& z>+k#oc;-PNK6n6YAGD7$v~{g>x@M;ynX{ZzZwj$*k!@c-H`CoyPj&~}|1Rd=Rx~*d zeUbW6O^E%AGIiV%sTacRpAXT0wAY7vMe0!{r!5Rg$4b;iecD~oV)sSF7eeRRnR)SQ z|J$M2k%cS%ZTEs>MPX-Vab+r68@p+EAr4Bu7Zk($v)=gXTHIN!^5n*2Z}z5E*Wk|r zxA-1eE7d27wgd@Me^Af01#cIw!ih@YzU z`udkU_JTxxD_Aamv{6Q|j2K=JjWWk;b8H{#kk0XivCD@S9{3^TC@WGA*DTZ-L!IQm ziZOWB*ZtNN|BD~asoF!n-sLHKVc#_~^AfZUWIukVUhl~J^6klC^fB5JS8ZGLPzUOo zXTPmvpNPsL#$eR|#^v*riMhoB=t}h6^L{_DJ(e>)XQNHp?-y#@+2<%@!|t8Xf2v;p zndp#W=p~+|mGmBf1ztu0#Hr^12KhDfzl69bsoD*@sjqlg%s~p(6f-=~?7IXrB(&sAZG;rtr zLOcmN1LT}NzoY+cF@wIHM*o#&=0_eqUHj;x`a3&O=gz%c7rD7@>Dl@4-bdyTGCIV- z%;K`t{YcNuN6;_r4%XZEPrZqGJ%1_e$$=9KA@R9+%)3?RcRc@=iW~KMJpz2?Xfw71 z*Of$kWTt4P)nj^ZejGe~|8pQht%~Uvff6t$#Tmp5gl_SNz+NEt*-L@Y@v=&{M!STgb`iPg@Ti_AY!nQecjGQ(T~b|{R4kgy`*zhP#i{V+)={C6OsP&+Jq11T;B zAwPvK6f$fNpo`jWW!7szOAO-~lIxiPNKOUC3Mr}$>casW&N8H*CjUgtK1~aB{St}F0ubN zT>(w=B<~FFcQz$9ZcSX9N~Ev^3O)C0QwFk{h$-+ySpVS;T&Eb%34Kv5O5{q>?5_^ElEIck3VHB=- zm}+|*@L_Y9uL^tZDH!XJfh8k5Wf)3a(>&)9IxrZ~ba`CJ7)ADDuOEqJ)77+)T@=}m zz44`38Ey!D05nk!=i5- zrkA5a7`|B85p5VoSIB6TjD+d-&W2z1O+!I5@n$*QW;FH_`;ARQQ~W+^^c?#$oDlF+ zN!G`dm+U`PXE0N_-VWD&8x}?-((HCLJSy)%UPsd{HYaLY5z`~mY5J*a4F+TRMRI+N zeG(6=@#=0GyeW1=?1BS`NQzD9_xO~*?CQkYP?vOE9)gDg>_dbzR1gRGY*qWMtrQ{r z9U0D`V=bOO>`s|Xrji6a(QEKFZ1E6hUj>O}=?q37`+BMQe^9=wL&?W{pQ@CT`C=xW zPx4%#4yXNIdNh|zQj#lV@>5xyHV#*W%J|i)YL^oJ4vvcTtx#fuFAe^lR6ShsD#$^k zVY9dk*)jR_?#Rp5rWKJpt+l<8H50=lKR@x{1Al*Fcx3l?e?Bp6^`K#Ys~U2Q&tJbG zY{zJ>kW3`hb>ny@!>0C6749n(4;J*@WB+(zO0`;bfN3^fpz>q=%}IbmY1SLlO;O{4 zP;b8`Q zF<-bc@Sar1joKHxVx8(;4O!}ZFbfMqow1>>Sr6NP8XAg4L!u$)o_rR1t@2iTrJ4p$EecwB6r+BGUR65Ii3?PhY>`rKgUn&2!w6lVO8V zXSE9)9h>EN{;TA^;0dpAprleRu0_k^ncz!^df^DnFPxANZFn$BAJ+G!&<106 zdWV6{1L!{8sZ!j{zEx39+(p8nv&0eRDj@$X5Sk>P*g z^B__64k4`uHBm0Ab9Z8J-|hr1*|Ud4!kci%%IQf@tLsUk)lK@|46MU)dNP+mtwmVV zRz@ook;oJ$Cq2x{MAjRf8b_IQVH{WgK3kd^MY$%QD~uJ5EIm3}_6`^hA8O!(HsU*^ z8T6CM#};9drW&>+U9FaLqf^)z%t-ud$`@$NPRu>r`y2&=!S3Dw$_Q5i+kw>N!SSFp^bXHgW3tb5u}Zrl(+@RdnoEX4!y^rH;1%3@PSe%4!j9y1F6TmtSS<` z2{3?S3U=U$X{qj^cn8&kLY(}jUX~}~kgx8onC9J83VH)b8=sAS26^~Ip~{q?SAt#y zypfZV&jXDf@5&BAj|-7inH9#H0QJ~S|`rZJidzC~#j2^ZLrN@5ZS{{HNeKBD49zh1|m5zbVLT?s& z_;1`d8NF|6J=K3_pmzpJMg~zM{TE2{TO(cPohHA9UPx~ia>f$s@vigiC+Ix~IonG; ze$ROE6ZF0hImd!}`rE4huF82ppbsc2egHJ~ct?5$gM9dSzUEh59DDVxR#J~&^D5AU_;t;FPflm&b+Hh9rt z(iD9gdOtFq0^Z2FTJ*lqjeC4f9v_U}r7e0-Ah_6Ue2ZRRi{6tLBPJLnP}6_c`g$o} zmbyfUt4w9cW0E-F>-lQpPAs;6HjJ-BcDO~a4|~@=6!>8J?@s8!?Z%Qg3B6TD36ymb z&<$#A6@$mq(90Pic#|XzbeH(hfzJrA>yW<>$o9s881^OhZs-%@y+A=@4{9F+#&d%0 z*UGr9d2N94S@U{87>6~ldz_sJSHcA>z81wFC{AJ^TEhYIS)ilu$Rmn%DD?S!ET)X zb)K!>orChrnha7lt|o(E3n$1zzNUr0qA?FC2#No!v&S1(?}+ByI}Ok1&KlnG$A>)S zJU43SP(1e+4V_Bg%s0+->YMR3_Dp{Yak0{WCSd;xV+xf1v3@iD+%cB6c=gBH!}@qW z)u8=ro^3nDRYn9#`(p8J-S;rS))VetIsM=kuR)LByAL#Z z%FVsBsqaZ10u;o=_e>Jh*yFpU25rx2jCbr~{mFgPtVfAR_A2;b|Gq)FzkZ~3k@#=$ zjsCH^MHEeKv=97c;LZA!RM|m^f9L%>(;3?;nV>GxK zd<2a79nyaA=3Tl6* zIln_lcVmA43-uw#zmm^`-x}cG18>?BM|*Iw(1=HIjDIIXJg(ujy-P$KJm&-JrT?qJ zoAIIkdhkQAZ+;gw2>t_qe7dcR#UAh>Uh4y>|2gpHZh`j3TI6N$dub2)Y~Km+!QWMV z9lVL3wD)vN`M&}`f$~@!s{HdU@)y7d%fAes=TQRf{S81j7gkaqOZ{63yg`-^3-#XTW~U}652HwcTY6hT zRsR-n$t}nBeS^Diac|i(q}-y9etO5qtv3&jxVLWKzW -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + + +#define DEV_FILE "/dev/gatieme" +#define MAX_SIZE 256 + + +int fd; + -int fd; void *readthread(void *arg) { - char data[256]; - fd_set rfds; // - fd_set wfds; //д - int retval=0; - while(1) + char data[MAX_SIZE]; + + fd_set rfds; // + fd_set wfds; //д + int retval = 0; + + while( 1 ) { FD_ZERO(&rfds); FD_SET(fd, &rfds); - select(fd+1, &rfds, &wfds, NULL, NULL); - if(FD_ISSET(fd, &rfds)) + select(fd + 1, &rfds, &wfds, NULL, NULL); + + if(FD_ISSET(fd, &rfds)) { - retval=read(fd,data,3); - if(retval==-1) - { + retval = read(fd, data, MAX_SIZE); + + if(retval == -1) + { perror("read error\n"); exit(-1); } - data[retval]=0; + data[retval] = 0; printf("read successfully:%s\n",data); } } return (void *)0; -} +} -main() + + +int main(void) { - + int i; int retval; - fd=open("/dev/fgj",O_RDWR); - if(fd==-1) + + fd = open(DEV_FILE, O_RDWR); + if(fd == -1) { perror("error open\n"); exit(-1); } - printf("open /dev/fgj successfully\n"); - - pthread_t tid; + printf("open " DEV_FILE " successfully\n"); + + pthread_t tid; pthread_create(&tid, NULL, readthread, NULL); - - while(1) + + while( 1 ) { - retval=write(fd,"fgj",3); - if(retval==-1) + retval = write(fd, "gatieme", strlen("gatieme")); + if(retval == -1) { perror("write error\n"); exit(-1); } } + close(fd); } diff --git a/books/fengguojin/src/1drivermodel/README.md b/books/fengguojin/src/1drivermodel/README.md index 6a83d8a..570c7f0 100644 --- a/books/fengguojin/src/1drivermodel/README.md +++ b/books/fengguojin/src/1drivermodel/README.md @@ -3,11 +3,11 @@ | 驱动 | 描述 | 书中对应章节 | |:----------:|:----------:|:------------:| -| 1-11net | | -| 1-1simple | 例1.1--最简单的内核模块 | [1.1.3 编写可加载模块](http://book.51cto.com/art/201205/337662.htm) | -| 1-2module | 例1.2 带参数的内核模块实例 | [1.1.4 带参数的可加载模块](http://book.51cto.com/art/201205/337663.htm) | -| 1-3register_chrdev | 例1.3 register_chrdev注册字符设备实例 | 1.2.2 使用register_chrdev注册字符设备](http://book.51cto.com/art/201205/337666.htm) | -| 1-4cdev | 例1.4 cdev_add注册字符设备实例 | [1.2.3 使用cdev_add注册字符设备](http://book.51cto.com/art/201205/337667.htm) | -| 1-5ioctl | 例1.5 字符设备ioctl实例 | [1.2.5 ioctl接口](http://book.51cto.com/art/201205/337670.htm) | -| 1-6lseek | 例1.6 字符设备seek实例 | [1.2.6 seek接口](http://book.51cto.com/art/201205/337671.htm) | -| +| 1-11net | | +| 1-1simple | 例1.1--最简单的内核模块 | [1.1.3 编写可加载模块](http://book.51cto.com/art/201205/337662.htm) | +| 1-2module | 例1.2 带参数的内核模块实例 | [1.1.4 带参数的可加载模块](http://book.51cto.com/art/201205/337663.htm) | +| 1-3register_chrdev | 例1.3 register_chrdev注册字符设备实例 | 1.2.2 使用register_chrdev注册字符设备](http://book.51cto.com/art/201205/337666.htm) | +| 1-4cdev | 例1.4 cdev_add注册字符设备实例 | [1.2.3 使用cdev_add注册字符设备](http://book.51cto.com/art/201205/337667.htm) | +| 1-5ioctl | 例1.5 字符设备ioctl实例 | [1.2.5 ioctl接口](http://book.51cto.com/art/201205/337670.htm) | +| 1-6lseek | 例1.6 字符设备seek实例 | [1.2.6 seek接口](http://book.51cto.com/art/201205/337671.htm) | +| 1-7poll | 例1.7 poll接口驱动程序示例 | [1.2.7 poll接口](http://book.51cto.com/art/201205/337672.htm) |