From 4121cc7cb0fb7d2d3230e0eaa42637cab96e5c8f Mon Sep 17 00:00:00 2001 From: pengxuanzheng Date: Fri, 28 Aug 2020 18:44:14 +0800 Subject: 修改输入参数tsg为TSG MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/luatest/CMakeLists.txt | 9 +-- .../build/CMakeFiles/luatest.dir/luatest.cpp.o | Bin 0 -> 53912 bytes example/luatest/build/luatest | Bin 0 -> 45336 bytes example/luatest/conf/fasta.conf | 2 +- example/luatest/luatest | Bin 56720 -> 45336 bytes example/luatest/luatest.cpp | 56 ++++++-------- example/luatest/script/10_handle_fasta_find.lua | 2 +- example/luatest/script/11_handle_fasta_find.lua | 2 +- example/luatest/script/12_handle_fasta_find.lua | 2 +- example/luatest/script/13_handle_fasta_find.lua | 2 +- example/luatest/script/14_handle_fasta_find.lua | 2 +- example/luatest/script/15_handle_fasta_find.lua | 2 +- example/luatest/script/16_1_handle_fasta_find.lua | 2 +- example/luatest/script/16_2_handle_fasta_find.lua | 2 +- example/luatest/script/16_3_handle_fasta_find.lua | 2 +- example/luatest/script/1_handle_fasta_find.lua | 2 +- example/luatest/script/2_handle_fasta_find.lua | 2 +- example/luatest/script/3_handle_fasta_find.lua | 2 +- example/luatest/script/4_handle_fasta_find.lua | 2 +- example/luatest/script/5_handle_fasta_find.lua | 2 +- example/luatest/script/6_handle_fasta_find.lua | 2 +- example/luatest/script/7_handle_fasta_find.lua | 2 +- example/luatest/script/8_handle_fasta_find.lua | 2 +- example/luatest/script/9_handle_fasta_find.lua | 2 +- example/luatest/script/cfunc_handle_weixinnum.lua | 6 +- example/luatest/script/ffi_handle_weixinnum.lua | 6 +- example/luatest/script/handle_fasta_count.lua | 2 +- example/luatest/script/handle_fasta_find.lua | 2 +- example/luatest/script/handle_weixinnum.lua | 6 +- example/multithread.cpp | 4 + example/script/count_1.lua | 2 +- example/script/find_1.lua | 2 +- example/script/find_1.luajit | Bin 267 -> 267 bytes example/script/find_hello.lua | 2 +- example/script/find_hello.luajit | Bin 324 -> 324 bytes example/script/match_12345.lua | 2 +- example/script/print_hello.lua | 2 +- example/script/print_hello.luajit | Bin 124 -> 124 bytes example/script/protocol_recognition.lua | 2 +- gtest/CMakeLists.txt | 1 - gtest/script/do_expected.lua | 2 +- gtest/script/end_expected.lua | 2 +- gtest/script/eof_expected.lua | 2 +- gtest/script/equal_in_expected.lua | 2 +- gtest/script/name_expected.lua | 2 +- gtest/script/return_boolean_normal.lua | 2 +- gtest/script/return_boolean_normal.luajit | Bin 109 -> 109 bytes gtest/script/return_integer_normal.lua | 2 +- gtest/script/return_integer_normal.luajit | Bin 109 -> 109 bytes gtest/script/return_string_normal.lua | 2 +- gtest/script/return_string_normal.luajit | Bin 66 -> 66 bytes gtest/script/right_curly_bracket_expected.lua | 2 +- gtest/script/right_curves_bracket_expected.lua | 2 +- gtest/script/then_expected.lua | 2 +- gtest/script/unexpected_symbol.lua | 2 +- include/tsg_lua_interface.h | 3 +- lib/libtsglua.a | Bin 43946 -> 42968 bytes lib/libtsglua.so | Bin 615024 -> 611296 bytes src/CMakeLists.txt | 2 +- src/tsg_lua_func.cpp | 81 ++++++++++----------- 60 files changed, 122 insertions(+), 130 deletions(-) create mode 100644 example/luatest/build/CMakeFiles/luatest.dir/luatest.cpp.o create mode 100755 example/luatest/build/luatest diff --git a/example/luatest/CMakeLists.txt b/example/luatest/CMakeLists.txt index feb0934..ddc9ae7 100644 --- a/example/luatest/CMakeLists.txt +++ b/example/luatest/CMakeLists.txt @@ -1,18 +1,13 @@ cmake_minimum_required(VERSION 3.5) project (luatest) -include_directories("/usr/local/include/gperftools") +include_directories("/usr/include/gperftools") include_directories("../../include") -link_directories("/root/workspace/tsg_lua_0.99/lib") +link_directories("../../lib") link_libraries(tsglua pthread dl tcmalloc) add_definitions(-g -W -Wall -O0 -rdynamic) -#add_executable(../single_thread single_thread.cpp) -#add_executable(../multithread multithread.cpp) -#target_link_libraries(single_thread tsglua) -#target_link_libraries(multithread tsglua) - add_executable(luatest luatest.cpp) target_link_libraries(luatest pcap tsglua pthread dl) diff --git a/example/luatest/build/CMakeFiles/luatest.dir/luatest.cpp.o b/example/luatest/build/CMakeFiles/luatest.dir/luatest.cpp.o new file mode 100644 index 0000000..dca5f60 Binary files /dev/null and b/example/luatest/build/CMakeFiles/luatest.dir/luatest.cpp.o differ diff --git a/example/luatest/build/luatest b/example/luatest/build/luatest new file mode 100755 index 0000000..269d72f Binary files /dev/null and b/example/luatest/build/luatest differ diff --git a/example/luatest/conf/fasta.conf b/example/luatest/conf/fasta.conf index a265d48..ed618c9 100644 --- a/example/luatest/conf/fasta.conf +++ b/example/luatest/conf/fasta.conf @@ -1,7 +1,7 @@ #fasta find G thread_num 1 feature q -input ./pcap/test.fasta +input ./fasta/test.fasta lib ./lib/libhandle_fasta_find.so script ./script/handle_fasta_find.lua file_type 1 diff --git a/example/luatest/luatest b/example/luatest/luatest index 3d7496f..269d72f 100755 Binary files a/example/luatest/luatest and b/example/luatest/luatest differ diff --git a/example/luatest/luatest.cpp b/example/luatest/luatest.cpp index 5b3dd99..7c614a5 100644 --- a/example/luatest/luatest.cpp +++ b/example/luatest/luatest.cpp @@ -156,11 +156,12 @@ int read_file_list(const char *path, char file_name[][256]) static int init_conf(char *path, conf_t *conf) { char buf[1024]; + int ret = 0; size_t buf_len = sizeof(buf); FILE *fp = fopen(path, "r"); if (fp == NULL) { - perror("error opening file"); + perror(path); return -1; } while(fgets(buf, buf_len, fp) != NULL) @@ -197,35 +198,25 @@ static int init_conf(char *path, conf_t *conf) conf->complete |= THREAD_NUM_COMPLETE; break; case 'f': - if (conf->complete & FEATURE_COMPLETE) + if (!(conf->complete & FILE_TYPE_COMPLETE)) { - if (conf->complete & FILE_TYPE_COMPLETE) + ret = sscanf(buf, "file_type %hhd", &conf->file_type); + if ((ret !=0) && (ret != EOF)) { + conf->complete |= FILE_TYPE_COMPLETE; break; - }else - { - /* file type */ - if ((sscanf(buf, "file_type %hhd", &conf->file_type) == EOF) ) - { - printf("error: conf_file: feature error\n"); - return -1; - }else - { - if ((conf->file_type != text_type) && (conf->file_type != pcap_type)) - { - return -1; - } - conf->complete |= FILE_TYPE_COMPLETE; - break; - } } } - if ((sscanf(buf, "feature %s", conf->feature) == EOF) || (strlen(conf->feature) == 0)) + + if (!(conf->complete & FEATURE_COMPLETE)) { - printf("error: conf_file: feature error\n"); - return -1; + ret = sscanf(buf, "feature %s", conf->feature); + if ((ret !=0 ) && (ret != EOF) && (strlen(conf->feature) != 0)) + { + conf->complete |= FEATURE_COMPLETE; + break; + } } - conf->complete |= FEATURE_COMPLETE; break; case 'i': if (conf->complete & INPUT_COMPLETE) @@ -290,7 +281,7 @@ int file_to_buffer(const char *file, char *buffer, size_t *len) *len = 0; if (fp == NULL) { - printf("fopen file failed\n"); + printf("fopen file failed:%s\n", file); return -1; } do{ @@ -349,8 +340,8 @@ void c_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ch debuginfo_len = strlen(pcap_info->debuginfo); if (debuginfo_len < 9500) { - sprintf((char *)&pcap_info->debuginfo[debuginfo_len], "%-10s%-10ld%-11d%-20s%-20s%-20ld%-20ld\n", - "C", pcap_info->thread_id, pcap_info->packet_num, pcap_info->feature, result, time, pcap_info->total_time); + sprintf((char *)&pcap_info->debuginfo[debuginfo_len], "%-10s%-10ld%-11d%-11d%-20s%-20s%-20ld%-20ld\n", + "C", pcap_info->thread_id, pcap_info->packet_num, pkthdr->caplen, pcap_info->feature, result, time, pcap_info->total_time); } return; } @@ -603,8 +594,8 @@ void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ debuginfo_len = strlen(pcap_info->debuginfo); if (debuginfo_len < 9500) { - sprintf(&pcap_info->debuginfo[debuginfo_len], "%-10s%-10ld%-11d%-20s%-20s%-20ld%-20ld\n", - "LUA", pcap_info->thread_id, pcap_info->packet_num, pcap_info->feature, result, time, pcap_info->total_time); + sprintf(&pcap_info->debuginfo[debuginfo_len], "%-10s%-10ld%-11d%-11d%-20s%-20s%-20ld%-20ld\n", + "LUA", pcap_info->thread_id, pcap_info->packet_num, pkthdr->caplen, pcap_info->feature, result, time, pcap_info->total_time); } return ; } @@ -752,7 +743,6 @@ static void *lua_file_handle(void *ptr) { pthread_exit(debuginfo); } - tsg_lua_identify(lua, &thread_info->thread_id); if (file_to_buffer(thread_info->script, script, &script_len)) { pthread_exit(debuginfo); @@ -904,7 +894,7 @@ int main(int argc, char *argv[]) printf("\n==============================================================================================================================\n"); if (conf.file_type & pcap_type) { - printf("%-10s%-10s%-11s%-20s%-20s%-20s%-20s\n", "C or LUA", "thread_id", "packet_num", "feature", "result", "time", "total_time"); + printf("%-10s%-10s%-11s%-11s%-20s%-20s%-20s%-20s\n", "C or LUA", "thread_id", "packet_num", "packet_len", "feature", "result", "time", "total_time"); }else { printf("%-10s%-10s%-20s%-20s%-20s%-20s\n", "C or LUA", "thread_id", "file_name", "feature", "result", "time"); @@ -927,12 +917,13 @@ int main(int argc, char *argv[]) } CPU_ZERO(&mask); - CPU_SET(thread_num, &mask); + CPU_SET(thread_num + 8, &mask); if (pthread_setaffinity_np(thread[thread_num], sizeof(mask), &mask) != 0) { printf("warning:could not set CPU affinity, continuing...\n"); } } + printf("\n"); for (thread_num = 0; thread_num < conf.thread_num; thread_num++) { @@ -962,12 +953,13 @@ int main(int argc, char *argv[]) } CPU_ZERO(&mask); - CPU_SET(thread_num, &mask); + CPU_SET(thread_num + 8, &mask); if (pthread_setaffinity_np(thread[thread_num], sizeof(mask), &mask) != 0) { printf("warning:could not set CPU affinity, continuing...\n"); } } + printf("\n"); for (thread_num = 0; thread_num < conf.thread_num; thread_num++) { diff --git a/example/luatest/script/10_handle_fasta_find.lua b/example/luatest/script/10_handle_fasta_find.lua index b8516dd..cab668a 100644 --- a/example/luatest/script/10_handle_fasta_find.lua +++ b/example/luatest/script/10_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "q" diff --git a/example/luatest/script/11_handle_fasta_find.lua b/example/luatest/script/11_handle_fasta_find.lua index 8917d9a..eebc275 100644 --- a/example/luatest/script/11_handle_fasta_find.lua +++ b/example/luatest/script/11_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qGCTGA" diff --git a/example/luatest/script/12_handle_fasta_find.lua b/example/luatest/script/12_handle_fasta_find.lua index 8917d9a..eebc275 100644 --- a/example/luatest/script/12_handle_fasta_find.lua +++ b/example/luatest/script/12_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qGCTGA" diff --git a/example/luatest/script/13_handle_fasta_find.lua b/example/luatest/script/13_handle_fasta_find.lua index 8917d9a..eebc275 100644 --- a/example/luatest/script/13_handle_fasta_find.lua +++ b/example/luatest/script/13_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qGCTGA" diff --git a/example/luatest/script/14_handle_fasta_find.lua b/example/luatest/script/14_handle_fasta_find.lua index 8917d9a..eebc275 100644 --- a/example/luatest/script/14_handle_fasta_find.lua +++ b/example/luatest/script/14_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qGCTGA" diff --git a/example/luatest/script/15_handle_fasta_find.lua b/example/luatest/script/15_handle_fasta_find.lua index ef79cf5..ad119d5 100644 --- a/example/luatest/script/15_handle_fasta_find.lua +++ b/example/luatest/script/15_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qCTCGG" diff --git a/example/luatest/script/16_1_handle_fasta_find.lua b/example/luatest/script/16_1_handle_fasta_find.lua index 8917d9a..eebc275 100644 --- a/example/luatest/script/16_1_handle_fasta_find.lua +++ b/example/luatest/script/16_1_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qGCTGA" diff --git a/example/luatest/script/16_2_handle_fasta_find.lua b/example/luatest/script/16_2_handle_fasta_find.lua index 07865db..49b94c9 100644 --- a/example/luatest/script/16_2_handle_fasta_find.lua +++ b/example/luatest/script/16_2_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "rAATCC" diff --git a/example/luatest/script/16_3_handle_fasta_find.lua b/example/luatest/script/16_3_handle_fasta_find.lua index 4149a34..8c4e3d3 100644 --- a/example/luatest/script/16_3_handle_fasta_find.lua +++ b/example/luatest/script/16_3_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "sCGGGC" diff --git a/example/luatest/script/1_handle_fasta_find.lua b/example/luatest/script/1_handle_fasta_find.lua index b8516dd..cab668a 100644 --- a/example/luatest/script/1_handle_fasta_find.lua +++ b/example/luatest/script/1_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "q" diff --git a/example/luatest/script/2_handle_fasta_find.lua b/example/luatest/script/2_handle_fasta_find.lua index 14ba4c3..2215352 100644 --- a/example/luatest/script/2_handle_fasta_find.lua +++ b/example/luatest/script/2_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqqqqq" diff --git a/example/luatest/script/3_handle_fasta_find.lua b/example/luatest/script/3_handle_fasta_find.lua index b28e6d9..2f02fd5 100644 --- a/example/luatest/script/3_handle_fasta_find.lua +++ b/example/luatest/script/3_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqqqqqqqqq" diff --git a/example/luatest/script/4_handle_fasta_find.lua b/example/luatest/script/4_handle_fasta_find.lua index 44bbb74..8e24805 100644 --- a/example/luatest/script/4_handle_fasta_find.lua +++ b/example/luatest/script/4_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqq" diff --git a/example/luatest/script/5_handle_fasta_find.lua b/example/luatest/script/5_handle_fasta_find.lua index 14ba4c3..2215352 100644 --- a/example/luatest/script/5_handle_fasta_find.lua +++ b/example/luatest/script/5_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqqqqq" diff --git a/example/luatest/script/6_handle_fasta_find.lua b/example/luatest/script/6_handle_fasta_find.lua index b28e6d9..2f02fd5 100644 --- a/example/luatest/script/6_handle_fasta_find.lua +++ b/example/luatest/script/6_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqqqqqqqqq" diff --git a/example/luatest/script/7_handle_fasta_find.lua b/example/luatest/script/7_handle_fasta_find.lua index 44bbb74..8e24805 100644 --- a/example/luatest/script/7_handle_fasta_find.lua +++ b/example/luatest/script/7_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqq" diff --git a/example/luatest/script/8_handle_fasta_find.lua b/example/luatest/script/8_handle_fasta_find.lua index 44bbb74..8e24805 100644 --- a/example/luatest/script/8_handle_fasta_find.lua +++ b/example/luatest/script/8_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqq" diff --git a/example/luatest/script/9_handle_fasta_find.lua b/example/luatest/script/9_handle_fasta_find.lua index 44bbb74..8e24805 100644 --- a/example/luatest/script/9_handle_fasta_find.lua +++ b/example/luatest/script/9_handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "qqq" diff --git a/example/luatest/script/cfunc_handle_weixinnum.lua b/example/luatest/script/cfunc_handle_weixinnum.lua index 3667c7d..644ea31 100644 --- a/example/luatest/script/cfunc_handle_weixinnum.lua +++ b/example/luatest/script/cfunc_handle_weixinnum.lua @@ -1,6 +1,6 @@ -local data = tsg.data -local data_len = string.len(tsg.data) +local data = TSG.data +local data_len = string.len(data) local feature = "weixinnum" local feature_len = string.len(feature); local max_weixinnum_len = 12 @@ -8,7 +8,7 @@ local offset = 4 local locate = 0 -- 查找字符串weixinnum位置 -local _start, _end = tsg.memmem(data, data_len, feature, feature_len) +local _start, _end = TSG.memmem(data, data_len, feature, feature_len) if not _end then return 1, false end diff --git a/example/luatest/script/ffi_handle_weixinnum.lua b/example/luatest/script/ffi_handle_weixinnum.lua index a730f42..b6630e4 100644 --- a/example/luatest/script/ffi_handle_weixinnum.lua +++ b/example/luatest/script/ffi_handle_weixinnum.lua @@ -1,10 +1,10 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "weixinnum" local feature_len = string.len(feature) local max_weixinnum_len = 12 -local C = tsg.C -local ffi = tsg.ffi +local C = TSG.C +local ffi = TSG.ffi -- 查找weixinnum字符串位置 local weixinnum_name = C.memmem(data, data_len, feature, feature_len) diff --git a/example/luatest/script/handle_fasta_count.lua b/example/luatest/script/handle_fasta_count.lua index 219b681..4c11753 100644 --- a/example/luatest/script/handle_fasta_count.lua +++ b/example/luatest/script/handle_fasta_count.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "hAATCGCTT" diff --git a/example/luatest/script/handle_fasta_find.lua b/example/luatest/script/handle_fasta_find.lua index b8516dd..cab668a 100644 --- a/example/luatest/script/handle_fasta_find.lua +++ b/example/luatest/script/handle_fasta_find.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local feature = "q" diff --git a/example/luatest/script/handle_weixinnum.lua b/example/luatest/script/handle_weixinnum.lua index 971845e..1b8b448 100644 --- a/example/luatest/script/handle_weixinnum.lua +++ b/example/luatest/script/handle_weixinnum.lua @@ -1,13 +1,15 @@ --------------------------------------------------------------------------------------------- -- 脚本功能:在数据中查找符合特征的weixinnum -- +-- 输入: -- +-- TSG.data -- -- 特征如下: -- -- 00 00 00 09 | 77 65 69 78 69 6e 6d 75 2d | 00 00 00 0a | 31 39 35 35 37 34 30 37 38 30 -- -- weixinnum | w e i x i n n u m | weixinnum | 1 9 5 5 7 4 0 7 8 0 -- -- 字符串长度 | 字符串 | 数值长度 | 字符串 -- --------------------------------------------------------------------------------------------- -local data = tsg.data --tsg.data 获取待处理数据 -local data_len = string.len(tsg.data) +local data = TSG.data --TSG.data 获取待处理数据 +local data_len = string.len(data) local feature = "weixinnum" --待识别的特征 local max_weixinnum_len = 12 local offset = 4 -- 字符串长度所占位数 diff --git a/example/multithread.cpp b/example/multithread.cpp index 26b45ec..48dd227 100644 --- a/example/multithread.cpp +++ b/example/multithread.cpp @@ -34,6 +34,7 @@ typedef struct lua_data_s{ typedef struct{ lua_data_t data; int thread_id; + tsg_lua_handle lua; }userdata_t; @@ -178,6 +179,7 @@ int main(int argc, char *argv[]) { int thread_num; pthread_t thread[MAX_THREAD_NUM] = {0}; + tsg_lua_handle lua[MAX_THREAD_NUM] = {0}; int thread_sum; int ch, i; char buf[1024]; @@ -252,6 +254,8 @@ int main(int argc, char *argv[]) data->data_len = buf_len; data->data[buf_len] = thread_num; data->data_len++; + lua[i] = tsg_lua_vm_create(); + data->lua = lua[i]; pthread_create(&thread[thread_num], NULL, lua_function, (void *)&userdata[thread_num]); } diff --git a/example/script/count_1.lua b/example/script/count_1.lua index 21e5091..02f7600 100644 --- a/example/script/count_1.lua +++ b/example/script/count_1.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data local len = string.len(str) local thread_id = string.byte(str, len) local str = string.format("[lua][thread_id:%d][count_1.lua]:str:%s, len:%d", thread_id, str, len - 1) diff --git a/example/script/find_1.lua b/example/script/find_1.lua index 2c6e865..b388b74 100644 --- a/example/script/find_1.lua +++ b/example/script/find_1.lua @@ -1,4 +1,4 @@ -local data = tsg.data +local data = TSG.data local data_len = string.len(data) local str = string.format("[lua]:data:%s len:%d", data, data_len) print(str) diff --git a/example/script/find_1.luajit b/example/script/find_1.luajit index b558ed1..bae2e0c 100644 Binary files a/example/script/find_1.luajit and b/example/script/find_1.luajit differ diff --git a/example/script/find_hello.lua b/example/script/find_hello.lua index 89037c0..c4fb80b 100644 --- a/example/script/find_hello.lua +++ b/example/script/find_hello.lua @@ -1,4 +1,4 @@ -local ss = tsg.data +local ss = TSG.data print("[lua]:the parameter of lua function is '"..ss.."'") print("[lua]:start find 'hello'...") local index_s, index_e = string.find(ss, 'hello') diff --git a/example/script/find_hello.luajit b/example/script/find_hello.luajit index ba644ec..173a173 100644 Binary files a/example/script/find_hello.luajit and b/example/script/find_hello.luajit differ diff --git a/example/script/match_12345.lua b/example/script/match_12345.lua index c795bd3..8d0ee5d 100644 --- a/example/script/match_12345.lua +++ b/example/script/match_12345.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data local len = string.len(str) local thread_id = string.byte(str, len) local str = string.format("[lua][thread_id:%d][match_12345.lua]:str:%s, len:%d", thread_id, str, len - 1) diff --git a/example/script/print_hello.lua b/example/script/print_hello.lua index ee823e7..5378758 100644 --- a/example/script/print_hello.lua +++ b/example/script/print_hello.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data print("-----------") print("str") print("-----------") diff --git a/example/script/print_hello.luajit b/example/script/print_hello.luajit index c9eb05b..c0e01ff 100644 Binary files a/example/script/print_hello.luajit and b/example/script/print_hello.luajit differ diff --git a/example/script/protocol_recognition.lua b/example/script/protocol_recognition.lua index 0987232..2089d98 100644 --- a/example/script/protocol_recognition.lua +++ b/example/script/protocol_recognition.lua @@ -1,4 +1,4 @@ -local str = tsg.data; +local str = TSG.data; local len = string.len(str) local thread_id = string.byte(str, -1) local info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:str:%s, str_len:%d", thread_id, str, len - 1) diff --git a/gtest/CMakeLists.txt b/gtest/CMakeLists.txt index 111f465..a230729 100644 --- a/gtest/CMakeLists.txt +++ b/gtest/CMakeLists.txt @@ -7,7 +7,6 @@ link_directories("/root/workspace/tsg_lua_0.99/lib") link_libraries(tsglua gtest gtest_main pthread) add_definitions(-g -W -Wall) -#add_executable(gtest_tsg_lua gtest_tsg_lua_vm_create.cpp gtest_tsg_lua_exec.cpp gtest_tsg_lua_cache_script.cpp gtest_tsg_cache_exec.cpp gtest_tsg_lua_uncache_script.cpp gtest_tsg_destory_lua.cpp) add_executable(../gtest_tsg_lua ${SRCS}) target_link_libraries(../gtest_tsg_lua tsglua gtest gtest_main pthread) diff --git a/gtest/script/do_expected.lua b/gtest/script/do_expected.lua index b6d9afb..e730a74 100644 --- a/gtest/script/do_expected.lua +++ b/gtest/script/do_expected.lua @@ -1,3 +1,3 @@ -local str = tsg.data +local str = TSG.data for i = 0, 10 return string.len(str), str diff --git a/gtest/script/end_expected.lua b/gtest/script/end_expected.lua index fb1dfcb..a886c55 100644 --- a/gtest/script/end_expected.lua +++ b/gtest/script/end_expected.lua @@ -1,3 +1,3 @@ -local str = tsg.data +local str = TSG.data if str then return string.len(str), str diff --git a/gtest/script/eof_expected.lua b/gtest/script/eof_expected.lua index 580dcab..4f94caf 100644 --- a/gtest/script/eof_expected.lua +++ b/gtest/script/eof_expected.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data str = string.format('%s', str) return string.len(str), str end diff --git a/gtest/script/equal_in_expected.lua b/gtest/script/equal_in_expected.lua index 846dd7c..e1294bd 100644 --- a/gtest/script/equal_in_expected.lua +++ b/gtest/script/equal_in_expected.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data for i return string.len(str), str end diff --git a/gtest/script/name_expected.lua b/gtest/script/name_expected.lua index 0d0bd7a..99a131f 100644 --- a/gtest/script/name_expected.lua +++ b/gtest/script/name_expected.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data for do print(str) end diff --git a/gtest/script/return_boolean_normal.lua b/gtest/script/return_boolean_normal.lua index 5ec3497..fbf1fbf 100644 --- a/gtest/script/return_boolean_normal.lua +++ b/gtest/script/return_boolean_normal.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data local s_index, e_index = string.find(str, 'hello') if s_index then return 1, true diff --git a/gtest/script/return_boolean_normal.luajit b/gtest/script/return_boolean_normal.luajit index d76eab6..9bbbfbb 100644 Binary files a/gtest/script/return_boolean_normal.luajit and b/gtest/script/return_boolean_normal.luajit differ diff --git a/gtest/script/return_integer_normal.lua b/gtest/script/return_integer_normal.lua index d3c08a7..ccb38fe 100644 --- a/gtest/script/return_integer_normal.lua +++ b/gtest/script/return_integer_normal.lua @@ -1,4 +1,4 @@ -local str = tsg.data +local str = TSG.data local s_index, e_index = string.find(str, 'world') if s_index then return 8, s_index diff --git a/gtest/script/return_integer_normal.luajit b/gtest/script/return_integer_normal.luajit index 6c72798..3abd850 100644 Binary files a/gtest/script/return_integer_normal.luajit and b/gtest/script/return_integer_normal.luajit differ diff --git a/gtest/script/return_string_normal.lua b/gtest/script/return_string_normal.lua index 0f1c592..e7e6d7b 100644 --- a/gtest/script/return_string_normal.lua +++ b/gtest/script/return_string_normal.lua @@ -1,2 +1,2 @@ -local str = tsg.data +local str = TSG.data return string.len(str), str diff --git a/gtest/script/return_string_normal.luajit b/gtest/script/return_string_normal.luajit index 27764b3..e32af68 100644 Binary files a/gtest/script/return_string_normal.luajit and b/gtest/script/return_string_normal.luajit differ diff --git a/gtest/script/right_curly_bracket_expected.lua b/gtest/script/right_curly_bracket_expected.lua index 194864b..f9b4d4a 100644 --- a/gtest/script/right_curly_bracket_expected.lua +++ b/gtest/script/right_curly_bracket_expected.lua @@ -1,4 +1,4 @@ -local str = string.format ('%s', tsg.data) +local str = string.format ('%s', TSG.data) local table = {} setmetatable(table, {__index = _G) return string.len(str), str diff --git a/gtest/script/right_curves_bracket_expected.lua b/gtest/script/right_curves_bracket_expected.lua index b901a50..a79a231 100644 --- a/gtest/script/right_curves_bracket_expected.lua +++ b/gtest/script/right_curves_bracket_expected.lua @@ -1,2 +1,2 @@ -local str = string.format('%s', tsg.data +local str = string.format('%s', TSG.data return string.len(str), str diff --git a/gtest/script/then_expected.lua b/gtest/script/then_expected.lua index 8a94370..890e4ad 100644 --- a/gtest/script/then_expected.lua +++ b/gtest/script/then_expected.lua @@ -1,4 +1,4 @@ if not nil - str = tsg.data + str = TSG.data return string.len(str), str end diff --git a/gtest/script/unexpected_symbol.lua b/gtest/script/unexpected_symbol.lua index a51eb44..02c4edf 100644 --- a/gtest/script/unexpected_symbol.lua +++ b/gtest/script/unexpected_symbol.lua @@ -1,3 +1,3 @@ -=* -local str = string.format('%s', tsg.data) +local str = string.format('%s', TSG.data) return string.len(str), str diff --git a/include/tsg_lua_interface.h b/include/tsg_lua_interface.h index ae417e0..6af78a5 100644 --- a/include/tsg_lua_interface.h +++ b/include/tsg_lua_interface.h @@ -51,7 +51,8 @@ enum err_value ERR_SCRIPT_ID_INVAILD = -33, /* 脚本ID无效 */ ERR_LUA_CACHE_FAILED = -34, /* 脚本缓存失败 */ ERR_MEM_NOT_ENOUGH = -35, /* 空间不足 */ - ERR_UNKNOWN = -36, /* 未知错误 */ + ERR_LUA_ID = -36, /* lua id 错误*/ + ERR_UNKNOWN = -37, /* 未知错误 */ }; typedef void* tsg_lua_handle; diff --git a/lib/libtsglua.a b/lib/libtsglua.a index d799972..6d526d1 100644 Binary files a/lib/libtsglua.a and b/lib/libtsglua.a differ diff --git a/lib/libtsglua.so b/lib/libtsglua.so index e0025c0..3b18f90 100755 Binary files a/lib/libtsglua.so and b/lib/libtsglua.so differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e98e04d..1454f62 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5) SET(CMAKE_CXX_COMPILER /usr/bin/g++) aux_source_directory(. DIR_LIB_SRCS) -include_directories("/usr/local/include/luajit-2.1/") +include_directories("/usr/local/include/luajit-2.1/" "/usr/include/gperftools/") link_directories("/usr/local/lib") link_libraries("libluajit-5.1.a") diff --git a/src/tsg_lua_func.cpp b/src/tsg_lua_func.cpp index b9e0403..299cab1 100644 --- a/src/tsg_lua_func.cpp +++ b/src/tsg_lua_func.cpp @@ -111,7 +111,7 @@ typedef struct{ char buff[TSG_LUA_READER_BUFFSIZE]; }tsg_lua_clfactory_file_t; -static jmp_buf lua_exception[TSG_MAX_LUA_ID]; +//static jmp_buf lua_exception[TSG_MAX_LUA_ID]; static const char *syntax_error[] = { @@ -415,9 +415,9 @@ static int c_lua_atpanic(lua_State *L) char *s = NULL; char err[255]; size_t len = 0; - int *lua_id; + jmp_buf *lua_exception; - lua_id = (int *)lua_getexdata(L); + lua_exception = (jmp_buf *)lua_getexdata(L); if (lua_type(L, -1) == LUA_TSTRING) { s = (char *)lua_tolstring(L, -1, &len); @@ -430,9 +430,9 @@ static int c_lua_atpanic(lua_State *L) } sprintf(err, "lua atpanic:lua VM creashed, reason:%*s\n", (int)len, s); debuginfo(err, __FILE__, __LINE__); - longjmp(lua_exception[*lua_id], 1); + longjmp(*lua_exception, 1); } -#if 0 + int tsg_lua_memmem(lua_State *L) { const char *src; @@ -469,6 +469,7 @@ int tsg_lua_memmem(lua_State *L) return 2; } +#if 0 static void *mem_alloc(void *ud, void *ptr, size_t osize, size_t nsize) { (void)ud; @@ -484,23 +485,32 @@ static void *mem_alloc(void *ud, void *ptr, size_t osize, size_t nsize) tsg_lua_handle tsg_lua_vm_create() { lua_State *L; - //const char *err; + jmp_buf *lua_exception = (jmp_buf *)tc_malloc(sizeof(jmp_buf)); + if (lua_exception == NULL) + { + return NULL; + } L = luaL_newstate(); //L = lua_newstate(mem_alloc, NULL); if (L == NULL) + { + tc_free(lua_exception); return NULL; + } + lua_setexdata(L, lua_exception); lua_atpanic(L, c_lua_atpanic); luaL_openlibs(L); lua_createtable(L, 0, 2); - //lua_pushcfunction(L, tsg_lua_memmem); - //lua_setfield(L, -2, "memmem"); - lua_setglobal(L, "tsg"); -#if 0 + lua_pushcfunction(L, tsg_lua_memmem); + lua_setfield(L, -2, "memmem"); + lua_setglobal(L, "TSG"); +#if 1 + const char *err; const char *code = "local ffi = require(\"ffi\")\n"\ "ffi.cdef[[char *memmem(const char *haystack, size_t haystacklen, const char *needle, size_t needlelen);]]\n"\ - "tsg.ffi = ffi\n"\ - "tsg.C = ffi.C"; + "TSG.ffi = ffi\n"\ + "TSG.C = ffi.C"; if (luaL_dostring(L, code)) { err = lua_tostring(L, -1); @@ -521,7 +531,7 @@ int tsg_lua_exec_file(tsg_lua_handle lua, const char *script, const char *in, si int i = 0; int sharp = 0; tsg_lua_clfactory_file_t lf; - int *lua_id; + jmp_buf *lua_exception; if (L == NULL) { @@ -546,7 +556,7 @@ int tsg_lua_exec_file(tsg_lua_handle lua, const char *script, const char *in, si return ERR_IN_LEN_INVAILD; } - lua_id = (int *)lua_getexdata(L); + lua_exception = (jmp_buf *)lua_getexdata(L); lf.extraline = 0; lf.sent_begin = 0; @@ -656,12 +666,12 @@ int tsg_lua_exec_file(tsg_lua_handle lua, const char *script, const char *in, si } /* 输入待处理数据 */ - lua_getglobal(L, "tsg"); + lua_getglobal(L, "TSG"); lua_pushlstring(L, in, in_len); lua_setfield(L, -2, "data"); lua_settop(L, 1); - if (setjmp(lua_exception[*lua_id]) == 0) + if (setjmp(*lua_exception) == 0) { if (lua_pcall(L, 0, LUA_MULTRET, 0)) { @@ -734,7 +744,7 @@ int tsg_lua_exec(tsg_lua_handle lua, const char *script, size_t script_len, cons int sharp = 0; int status; tsg_lua_clfactory_buffer_t ls; - int *lua_id; + jmp_buf *lua_exception; if (L == NULL) { @@ -759,7 +769,7 @@ int tsg_lua_exec(tsg_lua_handle lua, const char *script, size_t script_len, cons return ERR_IN_LEN_INVAILD; } - lua_id = (int *)lua_getexdata(L); + lua_exception = (jmp_buf *)lua_getexdata(L); ls.s = script; ls.size = script_len; @@ -854,11 +864,11 @@ int tsg_lua_exec(tsg_lua_handle lua, const char *script, size_t script_len, cons } /* 输入待处理数据 */ - lua_getglobal(L, "tsg"); + lua_getglobal(L, "TSG"); lua_pushlstring(L, in, in_len); lua_setfield(L, -2, "data"); lua_settop(L, 1); - if (setjmp(lua_exception[*lua_id]) == 0) + if (setjmp(*lua_exception) == 0) { if (lua_pcall(L, 0, LUA_MULTRET, 0)) { @@ -1201,7 +1211,7 @@ int tsg_lua_cache_exec(tsg_lua_handle lua, size_t script_id, const char *in, siz char err_buf[255]; int i = 0; int num = 0; - int *lua_id; + jmp_buf *lua_exception; if (L == NULL) { @@ -1225,15 +1235,15 @@ int tsg_lua_cache_exec(tsg_lua_handle lua, size_t script_id, const char *in, siz } lua_settop(L, 0); - lua_id = (int *)lua_getexdata(L); + lua_exception = (jmp_buf *)lua_getexdata(L); lua_rawgeti(L, LUA_REGISTRYINDEX, script_id); - lua_getglobal(L, "tsg"); + lua_getglobal(L, "TSG"); lua_pushlstring(L, in, in_len); lua_setfield(L, -2, "data"); lua_settop(L, 1); - if (setjmp(lua_exception[*lua_id]) == 0) + if (setjmp(*lua_exception) == 0) { if (lua_pcall(L, 0, LUA_MULTRET, 0)) { @@ -1299,31 +1309,20 @@ int tsg_lua_cache_exec(tsg_lua_handle lua, size_t script_id, const char *in, siz int tsg_destory_lua(tsg_lua_handle lua) { lua_State *L = (lua_State *)lua; + jmp_buf *lua_exception = NULL; if (L == NULL) { debuginfo("lua VM is null.", __FILE__, __LINE__); return ERR_LUAVM_ISNULL; } - - lua_close(L); - return 0; -} - -int tsg_lua_identify(tsg_lua_handle lua, size_t *id) -{ - lua_State *L = (lua_State *)lua; - if (L == NULL) - { - debuginfo("lua VM is null.", __FILE__, __LINE__); - return ERR_LUAVM_ISNULL; - } - if (*id > TSG_MAX_LUA_ID) + lua_exception = (jmp_buf *)lua_getexdata(L); + if (lua_exception != NULL) { - return ERR_LUA_ID; + tc_free(lua_exception); } - lua_setexdata(L, id); - + lua_close(L); return 0; } + -- cgit v1.2.3