嘿嘿 是因为非RHEL内核没有 RHEL_RELEASE_VERSION的定义 而RHEL_RELEASE_VERSION(6,1)在预处理的过程中早于 defined(RHEL_RELEASE_CODE) 进行了转换 找不到所以会报错 加了 #ifndef RHEL_RELEASE_VERSION #define RHEL_RELEASE_VERSION(a,b) (((a) << 8) + (b)) #define RHEL_RELEASE_CODE 0 #endif 应该就好了 #ifndef RHEL_RELEASE_VERSION #define RHEL_RELEASE_VERSION(a,b) (((a) << 8) + (b)) #define RHEL_RELEASE_CODE 0 #endif void perf_event_set(struct perf_event *event, u64 val) { (void)perf_event_read(event); #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) \ || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,1)) local64_set(&event->count, val); #else atomic64_set(&event->count, val); #endif perf_event_update_userpage(event); } EXPORT_SYMBOL_GPL(perf_event_set); 还得辛苦兄弟有空再帮我测下 :) Thanks, Hui 2011/12/16 borderj@xxxxxxxxx <borderj@xxxxxxxxx>: > #include <linux/version.h> > 忘加了, 还有不知道为啥会报下面的错。是不是和GCC的版本有关? > 这次编译是在x86上的,下午在公司arm上也报同样的错误。 > border@ubuntu:/build/build/linux-2.6.35$ gcc -v > Using built-in specs. > Target: i686-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro > 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs > --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-4.4 --enable-shared --enable-multiarch > --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib > --without-included-gettext --enable-threads=posix > --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls > --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug > --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 > --with-tune=generic --enable-checking=release --build=i686-linux-gnu > --host=i686-linux-gnu --target=i686-linux-gnu > Thread model: posix > gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) > > > > kernel/perf_event.c: In function 'perf_event_set': > kernel/perf_event.c:2160: error: missing binary operator before token "(" > make[2]: *** [kernel/perf_event.o] Error 1 > > > 2011/12/15 Hui Zhu <teawater@xxxxxxxxx> >> >> #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) \ >> || (defined(RHEL_RELEASE_CODE) \ >> && (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,1))) >> local64_set(&event->count, val); >> #else >> atomic64_set(&event->count, val); >> #endif >> >> >> >> 2011/12/15 Hui Zhu <teawater@xxxxxxxxx>: >> >> > #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) \ || >> > (defined(RHEL_RELEASE_CODE) \ && >> > (RHEL_RELEASE_CODE >= >> > RHEL_RELEASE_VERSION(6,1))) local64_set(&event->count, >> > val);#else atomic64_set(&event->count, val);#endif >> > >> > 换成这个看看成不成? >> > 2011/12/15 borderj@xxxxxxxxx <borderj@xxxxxxxxx>: >> >> 缺少 linux/version.h 文件 >> >> >> >> kernel/perf_event.c: In function 'perf_event_set': >> >> kernel/perf_event.c:2159: warning: "RHEL_RELEASE_CODE" is not defined >> >> kernel/perf_event.c:2159: warning: "RHEL_RELEASE_VERSION" is not >> >> defined >> >> kernel/perf_event.c:2159: error: missing binary operator before token >> >> "(" >> >> make[1]: *** [kernel/perf_event.o] 错误 1 >> >> >> >> >> >> 2011/12/15 Hui Zhu <teawater@xxxxxxxxx> >> >>> >> >>> 多谢 :) >> >>> >> >>> 忘记这个了 能否帮我个忙 把perf_event_set的代码改为 >> >>> #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35)) \ >> >>> || (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6,1)) >> >>> local64_set(&event->count, val); >> >>> #else >> >>> atomic64_set(&event->count, val); >> >>> #endif >> >>> 然后编译下看看 >> >>> >> >>> Thanks, >> >>> Hui >> >>> >> >>> 2011/12/15 borderj@xxxxxxxxx <borderj@xxxxxxxxx>: >> >>> > Android Kernel 2.6.35.7 >> >>> > patch -p1 < gtp_2.6.33_to_2.6.38.patch >> >>> > >> >>> > CC kernel/perf_event.o >> >>> > kernel/perf_event.c: In function 'perf_event_set': >> >>> > kernel/perf_event.c:2157: error: implicit declaration of function >> >>> > 'local64_set' >> >>> > make[1]: *** [kernel/perf_event.o] 错误 1 >> >>> > make: *** [kernel] 错误 2 >> >>> > >> >>> > 看了一下这个版本的kernel没有include/asm-generic/local64.h文件。 >> >>> > >> >>> > Kernel git 相关信息: >> >>> > git show 1996bda2a42480c275656233e631ee0966574be4 >> >>> > >> >>> > >> >>> > 2011/12/15 borderj@xxxxxxxxx <borderj@xxxxxxxxx> >> >>> > >> >>> >> 我在Android上测试一下。 >> >>> >> >> >>> >> >> >>> >> 2011/12/15 Hui Zhu <teawater@xxxxxxxxx> >> >>> >>> >> >>> >>> gtp_rb merge进来是本次比较大的一个工作 >> >>> >>> 还有就是增加了几个自动patch 基本上覆盖了 常见的内核版本 别人可以很方便的集成KGTP进入他们的内核了(有空的同学可以测一下) >> >>> >>> >> >>> >>> 在现在基础上 可能再增加一个版本显示的tv 还有进行一些文档的工作 就准备release了 大家觉得如何? >> >>> >>> >> >>> >>> Thanks, >> >>> >>> Hui >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> -- >> >>> >> Jiang Bian >> >>> >> http://www.wifihack.net/ >> >>> >> http://golang-china.org/ >> >>> >> >> >>> > >> >>> > >> >>> > >> >>> > -- >> >>> > Jiang Bian >> >>> > http://www.wifihack.net/ >> >>> > http://golang-china.org/ >> >>> > >> >> >> >> >> >> >> >> >> >> -- >> >> Jiang Bian >> >> http://www.wifihack.net/ >> >> http://golang-china.org/ >> >> >> > > > > -- > Jiang Bian > http://www.wifihack.net/ > http://golang-china.org/ >