Em Thu, Aug 06, 2015 at 09:44:33AM +0800, Wangnan (F) escreveu:
> Hi Arnaldo,
> 
> Have you tried 'perf test BPF'? Is that okay on your environment?

Freshly checked out from your github repo, 'ebpf' branch, looks good, see
output below, back to reading patches...

37: Test thread map                                          : Ok
38: Test LLVM searching and compiling                        : Ok
39: Test BPF filter                                          : Ok
[root@felicio ~]# set -o vi
[root@felicio ~]# perf test -v BPF
39: Test BPF filter                                          :
--- start ---
test child forked, pid 9746
Kernel build dir is set to /lib/modules/4.2.0-rc3+/build
set env: KBUILD_DIR=/lib/modules/4.2.0-rc3+/build
unset env: KBUILD_OPTS
include option is set to  -nostdinc -isystem 
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include 
-I/home/acme/git/linux/arch/x86/include -Iarch/x86/include/generated/uapi 
-Iarch/x86/include/generated  -I/home/acme/git/linux/include -Iinclude 
-I/home/acme/git/linux/arch/x86/include/uapi -Iarch/x86/include/generated/uapi 
-I/home/acme/git/linux/include/uapi -Iinclude/generated/uapi -include 
/home/acme/git/linux/include/linux/kconfig.h 
set env: CLANG_EXEC=/usr/local/bin/clang
set env: CLANG_OPTIONS=-xc 
set env: KERNEL_INC_OPTIONS= -nostdinc -isystem 
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include 
-I/home/acme/git/linux/arch/x86/include -Iarch/x86/include/generated/uapi 
-Iarch/x86/include/generated  -I/home/acme/git/linux/include -Iinclude 
-I/home/acme/git/linux/arch/x86/include/uapi -Iarch/x86/include/generated/uapi 
-I/home/acme/git/linux/include/uapi -Iinclude/generated/uapi -include 
/home/acme/git/linux/include/linux/kconfig.h 
set env: WORKING_DIR=/lib/modules/4.2.0-rc3+/build
set env: CLANG_SOURCE=-
llvm compiling command template: cat << '__EOF__' | $CLANG_EXEC -D__KERNEL__ 
$CLANG_OPTIONS $KERNEL_INC_OPTIONS -Wno-unused-value -Wno-pointer-sign 
-working-directory $WORKING_DIR -c "$CLANG_SOURCE" -target bpf -O2 -o -
#define LINUX_VERSION_CODE 0x00040200;
#ifndef LINUX_VERSION_CODE
# error Need LINUX_VERSION_CODE
# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" 
into llvm section of ~/.perfconfig'
#endif
#define BPF_ANY 0
#define BPF_MAP_TYPE_ARRAY 2
#define BPF_FUNC_map_lookup_elem 1
#define BPF_FUNC_map_update_elem 2

static void *(*bpf_map_lookup_elem)(void *map, void *key) =
        (void *) BPF_FUNC_map_lookup_elem;
static void *(*bpf_map_update_elem)(void *map, void *key, void *value, int 
flags) =
        (void *) BPF_FUNC_map_update_elem;

struct bpf_map_def {
        unsigned int type;
        unsigned int key_size;
        unsigned int value_size;
        unsigned int max_entries;
};

#define SEC(NAME) __attribute__((section(NAME), used))
struct bpf_map_def SEC("maps") flip_table = {
        .type = BPF_MAP_TYPE_ARRAY,
        .key_size = sizeof(int),
        .value_size = sizeof(int),
        .max_entries = 1,
};

SEC("func=sys_epoll_pwait")
int bpf_func__sys_epoll_pwait(void *ctx)
{
        int ind =0;
        int *flag = bpf_map_lookup_elem(&flip_table, &ind);
        int new_flag;
        if (!flag)
                return 0;
        /* flip flag and store back */
        new_flag = !*flag;
        bpf_map_update_elem(&flip_table, &ind, &new_flag, BPF_ANY);
        return new_flag;
}
char _license[] SEC("license") = "GPL";
int _version SEC("version") = LINUX_VERSION_CODE;

__EOF__

[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.018 MB /tmp/perf-bpf-test-7EbF3J/perf.data 
(56 samples) ]
test child finished with 0
---- end ----
Test BPF filter: Ok
[root@felicio ~]#
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to