函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\syscall.c Create Date:2022-07-27 14:06:35
Last Modify:2022-05-19 18:06:12 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:bpf_raw_tracepoint_open

函数原型:static int bpf_raw_tracepoint_open(const union bpf_attr *attr)

返回类型:int

参数:

类型参数名称
const union bpf_attr *attr
1953  如果helper macro to check that unused fields 'union bpf_attr' are zero (BPF_RAW_TRACEPOINT_OPEN)则返回:负EINVAL
1956  prog等于bpf_prog_get(prog_fd)
1957  如果是错误则返回:错误
1960  如果 Type of BPF program 不等于BPF_PROG_TYPE_RAW_TRACEPOINT Type of BPF program 不等于BPF_PROG_TYPE_TRACING Type of BPF program 不等于BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
1963  err等于负EINVAL
1964  转到:out_put_prog
1967  如果 Type of BPF program 恒等于BPF_PROG_TYPE_TRACING
1968  如果name
1972  err等于负EINVAL
1973  转到:out_put_prog
1975  如果 For some prog types 恒等于BPF_TRACE_RAW_TPtp_name等于 function name for valid attach_btf_id
1977  否则返回:bpf_tracing_prog_attach(prog)
1979  否则
1980  如果复制用户字符串小于0则
1983  err等于负EFAULT
1984  转到:out_put_prog
1986  buf[buf的长度 - 1]等于0
1987  tp_name等于buf
1990  btp等于bpf_get_raw_tracepoint(tp_name)
1991  如果非btp
1992  err等于负ENOENT
1993  转到:out_put_prog
1996  raw_tp等于分配内存并置零
1997  如果非raw_tp
1998  err等于负ENOMEM
1999  转到:out_put_btp
2001  btp等于btp
2002  prog等于prog
2004  err等于bpf_probe_register(btp, prog)
2005  如果err则转到:out_free_tp
2008  tp_fd等于anon_inode_getfd("bpf-raw-tracepoint", & bpf_raw_tp_fops, raw_tp, O_CLOEXEC)
2010  如果tp_fd小于0则
2011  bpf_probe_unregister(btp, prog)
2012  err等于tp_fd
2013  转到:out_free_tp
2015  返回:tp_fd
2017  out_free_tp :
2018  kfree(raw_tp)
2019  out_put_btp :
2020  bpf_put_raw_tracepoint(btp)
2021  out_put_prog :
2022  bpf_prog_put(prog)
2023  返回:err