From cd5f2c7c266da713a218459a3e7b8983890292c4 Mon Sep 17 00:00:00 2001 From: zhengchao Date: Tue, 20 Apr 2021 12:47:05 +0800 Subject: [PATCH] =?UTF-8?q?Maat=20Hierarchy=E4=B8=AD=E7=9A=84compile=20mid?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BD=93=E4=BF=9D=E7=95=99=E4=BA=86Hier?= =?UTF-8?q?=E7=9A=84=E6=8C=87=E9=92=88=EF=BC=8C=E5=8F=AF=E8=83=BD=E6=8C=87?= =?UTF-8?q?=E5=90=91=E5=B7=B2=E8=A2=AB=E9=87=8A=E6=94=BE=E7=9A=84hier?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=89=AB=E6=8F=8F=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=AD=BB=E9=94=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entry/Maat_api.cpp | 4 ++-- src/entry/Maat_hierarchy.cpp | 13 ++++--------- src/inc_internal/Maat_hierarchy.h | 4 ++-- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/entry/Maat_api.cpp b/src/entry/Maat_api.cpp index b14062c..8756fd2 100644 --- a/src/entry/Maat_api.cpp +++ b/src/entry/Maat_api.cpp @@ -244,10 +244,10 @@ int region_compile(_Maat_feather_t*feather, struct Maat_hierarchy_compile_mid* c { virtual_table_id=region_hit_wraper->virtual_table_id; } - Maat_hierarchy_compile_mid_udpate(compile_mid, region->region_id, virtual_table_id, region_hit_wraper->Nth_scan, i); + Maat_hierarchy_compile_mid_udpate(feather->scanner->hier, compile_mid, region->region_id, virtual_table_id, region_hit_wraper->Nth_scan, i); } - scan_ret=Maat_hierarchy_region_compile(compile_mid, is_last_region, (void**)compile_rule_array, size); + scan_ret=Maat_hierarchy_region_compile(feather->scanner->hier, compile_mid, is_last_region, (void**)compile_rule_array, size); //Maat_hierarchy is rwlock protected, it always returns non-NULL compile_rule. if(scan_ret>1) { diff --git a/src/entry/Maat_hierarchy.cpp b/src/entry/Maat_hierarchy.cpp index 81170ef..7fa4f32 100644 --- a/src/entry/Maat_hierarchy.cpp +++ b/src/entry/Maat_hierarchy.cpp @@ -1107,7 +1107,6 @@ TAILQ_HEAD(hit_path_q, Maat_hierarchy_hit_path); struct Maat_hierarchy_compile_mid { - struct Maat_hierarchy* ref_hier; int thread_num; int Nth_scan; size_t this_scan_region_hit_cnt; @@ -1123,7 +1122,6 @@ struct Maat_hierarchy_compile_mid* Maat_hierarchy_compile_mid_new(struct Maat_hi struct Maat_hierarchy_compile_mid* mid=ALLOC(struct Maat_hierarchy_compile_mid, 1); TAILQ_INIT(&mid->hit_path_qhead); mid->thread_num=thread_num; - mid->ref_hier=hier; utarray_new(mid->_all_hit_clause_array, &ut_clause_id_icd); return mid; } @@ -1138,7 +1136,6 @@ void Maat_hierarchy_compile_mid_free(struct Maat_hierarchy_compile_mid* mid) tmp = TAILQ_FIRST(&mid->hit_path_qhead); } assert(mid->hit_path_cnt==0); - mid->ref_hier=NULL; utarray_free(mid->_all_hit_clause_array); free(mid); } @@ -1195,7 +1192,7 @@ size_t Maat_hierarchy_hit_path_select0(const struct Maat_hierarchy_compile_mid* return ret; } -void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, int region_id, int virtual_table_id, int Nth_scan, int Nth_region_result) +void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid* mid, int region_id, int virtual_table_id, int Nth_scan, int Nth_region_result) { size_t i=0, j=0; unsigned long long *clause_id=0; @@ -1206,7 +1203,6 @@ void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, i struct Maat_hierarchy_literal_id literal_id={0,0}; struct Maat_hierarchy_literal* literal=NULL; - struct Maat_hierarchy* hier=mid->ref_hier; if(mid->Nth_scan!=Nth_scan) { assert(mid->this_scan_region_hit_cnt==0); @@ -1274,7 +1270,7 @@ void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, i } -static size_t Maat_hierarchy_compile_mid_update_by_compile(struct Maat_hierarchy_compile_mid* mid, struct Maat_hierarchy_compile* compile) +static size_t Maat_hierarchy_compile_mid_update_by_compile(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid* mid, struct Maat_hierarchy_compile* compile) { size_t r_in_c_cnt=0; struct Maat_hierarchy_hit_path* p=NULL, *q=NULL; @@ -1337,10 +1333,9 @@ static size_t Maat_hierarchy_compile_mid_update_by_compile(struct Maat_hierarchy } -int Maat_hierarchy_region_compile(struct Maat_hierarchy_compile_mid* mid, int is_last_compile, void** user_data_array, size_t ud_array_sz) +int Maat_hierarchy_region_compile(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid* mid, int is_last_compile, void** user_data_array, size_t ud_array_sz) { int bool_match_ret=0, i=0; - struct Maat_hierarchy* hier=mid->ref_hier; struct Maat_hierarchy_compile* compile_array=NULL; void **expr_match=hier->expr_match_buff+mid->thread_num*MAX_SCANNER_HIT_NUM; @@ -1358,7 +1353,7 @@ int Maat_hierarchy_region_compile(struct Maat_hierarchy_compile_mid* mid, int is for(i=0; inot_clause_cnt>0 && !is_last_compile) { mid->not_clause_hitted_flag=1; diff --git a/src/inc_internal/Maat_hierarchy.h b/src/inc_internal/Maat_hierarchy.h index a67a23f..bcad76d 100644 --- a/src/inc_internal/Maat_hierarchy.h +++ b/src/inc_internal/Maat_hierarchy.h @@ -14,7 +14,7 @@ void Maat_hierarchy_set_region_user_data_free_func(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid; struct Maat_hierarchy_compile_mid* Maat_hierarchy_compile_mid_new(struct Maat_hierarchy* hier, int thread_num); void Maat_hierarchy_compile_mid_free(struct Maat_hierarchy_compile_mid* mid); -void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, int region_id, int virtual_table_id, int Nth_scan, int Nth_region_result); +void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid* mid, int region_id, int virtual_table_id, int Nth_scan, int Nth_region_result); void Maat_hierarchy_compile_user_data_iterate(struct Maat_hierarchy* hier, void (*callback)(void *user_data, void* apram), void* param); int Maat_hierarchy_compile_mid_has_NOT_clause(struct Maat_hierarchy_compile_mid* mid); @@ -47,6 +47,6 @@ int Maat_hierarchy_add_region_to_group(struct Maat_hierarchy* hier, int group_id int Maat_hierarchy_remove_region_from_group(struct Maat_hierarchy* hier, int group_id, int region_id); int Maat_hierarchy_rebuild(struct Maat_hierarchy* hier); -int Maat_hierarchy_region_compile(struct Maat_hierarchy_compile_mid* mid, int is_last_compile, void** user_data_array, size_t ud_array_sz); +int Maat_hierarchy_region_compile(struct Maat_hierarchy* hier, struct Maat_hierarchy_compile_mid* mid, int is_last_compile, void** user_data_array, size_t ud_array_sz);