[kgtp] Re: [kgtp] Re: [kgtp] 差不离又是要release的时候了

  • From: Hui Zhu <teawater@xxxxxxxxx>
  • To: "borderj@xxxxxxxxx" <borderj@xxxxxxxxx>
  • Date: Fri, 16 Dec 2011 13:18:45 +0800

嘿嘿 是因为非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/
>

Other related posts: