函数逻辑报告 |
Source Code:kernel\bpf\btf.c |
Create Date:2022-07-27 14:37:17 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:btf_datasec_check_meta
函数原型:static s32 btf_datasec_check_meta(struct btf_verifier_env *env, const struct btf_type *t, u32 meta_left)
返回类型:s32
参数:
类型 | 参数 | 名称 |
---|---|---|
struct btf_verifier_env * | env | |
const struct btf_type * | t | |
u32 | meta_left |
2717 | last_vsi_end_off等于0, sum等于0 |
2720 | meta_needed等于btf_type_vlen(t)乘vsi的长度 |
2721 | 如果meta_left小于meta_needed则 |
2722 | btf_verifier_log_basic(env, t, "meta_left:%u meta_needed:%u", meta_left, meta_needed) |
2725 | 返回:负EINVAL |
2728 | 如果非btf_type_vlen(t)则 |
2729 | btf_verifier_log_type(env, t, "vlen == 0") |
2730 | 返回:负EINVAL |
2733 | 如果非size则 |
2734 | btf_verifier_log_type(env, t, "size == 0") |
2735 | 返回:负EINVAL |
2738 | 如果btf_type_kflag(t)则 |
2739 | btf_verifier_log_type(env, t, "Invalid btf_info kind_flag") |
2740 | 返回:负EINVAL |
2743 | 如果非name_off或非btf_name_valid_section(btf, name_off)则 |
2745 | btf_verifier_log_type(env, t, "Invalid name") |
2746 | 返回:负EINVAL |
2749 | btf_verifier_log_type(env, t, NULL) |
2753 | 如果非type或非BTF_TYPE_ID_VALID(type)则 |
2754 | btf_verifier_log_vsi(env, t, vsi, "Invalid type_id") |
2756 | 返回:负EINVAL |
2759 | 如果offset小于last_vsi_end_off或offset大于等于size则 |
2760 | btf_verifier_log_vsi(env, t, vsi, "Invalid offset") |
2762 | 返回:负EINVAL |
2766 | btf_verifier_log_vsi(env, t, vsi, "Invalid size") |
2768 | 返回:负EINVAL |
2771 | last_vsi_end_off等于offset加size |
2772 | 如果last_vsi_end_off大于size则 |
2773 | btf_verifier_log_vsi(env, t, vsi, "Invalid offset+size") |
2775 | 返回:负EINVAL |
2778 | btf_verifier_log_vsi(env, t, vsi, NULL) |
2783 | btf_verifier_log_type(env, t, "Invalid btf_info size") |
2784 | 返回:负EINVAL |
2787 | 返回:meta_needed |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |