diff options
| author | lijia <[email protected]> | 2021-09-23 17:20:19 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2021-09-23 17:20:19 +0800 |
| commit | 86156ab004072179dfc34fb63c3ba437d5688db3 (patch) | |
| tree | 3627934f2ebc00d0d4f93bff8106cadaa2861ee9 /src/sapp_dev | |
| parent | bcd30b7ea3e7a8d486ae66bd015152ec78bf3e74 (diff) | |
TSG-7425, sapp支持不退出进程而释放所有资源.
Diffstat (limited to 'src/sapp_dev')
| -rw-r--r-- | src/sapp_dev/sapp_init.c | 2 | ||||
| -rw-r--r-- | src/sapp_dev/sapp_plug.c | 41 |
2 files changed, 36 insertions, 7 deletions
diff --git a/src/sapp_dev/sapp_init.c b/src/sapp_dev/sapp_init.c index 07618cd..14b7f0d 100644 --- a/src/sapp_dev/sapp_init.c +++ b/src/sapp_dev/sapp_init.c @@ -238,8 +238,8 @@ int MESA_platform_init(int argc, char *argv[]) timestamp_record_init(); /* timer must before packet_io and plug_proc() */ - __sapp_timer_platform_init(); + __sapp_timer_platform_init(); #if 1 if(cycle_pkt_dump_init(argc , argv) < 0){ diff --git a/src/sapp_dev/sapp_plug.c b/src/sapp_dev/sapp_plug.c index f879e1a..4e3d8f1 100644 --- a/src/sapp_dev/sapp_plug.c +++ b/src/sapp_dev/sapp_plug.c @@ -27,7 +27,7 @@ int dpdk_init(int argc, char **argv); /* ��Щ�������ܷ���sapp_global_val, �����ж�destroy����״̬��, destroy��������Ҫfree sapp_global_val������! - 0:do nothing; 1:doing; 0x7FFFFFFF:done + 0:do nothing; 1:doing; 0x7FFFF:done */ static volatile unsigned long g_destory_env_done; @@ -75,12 +75,29 @@ static void show_mesa_log(void) sapp_runtime_log(30, "\n\n%s", MESA_art_log); } +static void sapp_wait_for_required_thread_starting(void) +{ + int tseq; + + for(tseq = 0; tseq < g_packet_io_thread_num; tseq++){ + while(sapp_global_val->individual_fixed.thread_obtain_id[tseq] == 0){ + sapp_usleep(10); + } + } + + while(sapp_global_val->individual_fixed.thread_timer_event_id == 0){ + sapp_usleep(10); + } +} + int libsapp_setup_env(int argc, char *argv[]) { int ret; MESA_ATOMIC_SET(g_destory_env_done, 0); + memset((void *)g_destory_env_per_thread_done, 0, sizeof(g_destory_env_per_thread_done)); + sapp_gval_init(); sapp_set_current_state(SAPP_STATE_JUST_START); sapp_set_current_state(SAPP_STATE_CONFIG_PARSE); @@ -127,6 +144,8 @@ int libsapp_setup_env(int argc, char *argv[]) MESA_platform_run(); + sapp_wait_for_required_thread_starting(); + //TODO: dumpfileģʽ���������Զ��˳�, ����һֱ���� //�������ź�, �����������߳�ǿ�е���sapp_destroy_env() #if 0 @@ -148,6 +167,8 @@ static void wait_for_all_io_threads(void) } pthread_join(sapp_global_val->individual_fixed.thread_timer_event_id, NULL); + + sapp_timer_destroy(sapp_global_val->individual_fixed.sapp_standalone_timer); } @@ -156,7 +177,7 @@ void libsapp_destroy_env_per_thread(int tseq) { if(MESA_ATOMIC_INC(g_destory_env_per_thread_done[tseq]) != 1){ /* INC����1, ˵��ԭ���϶�����0, ˵��������һ���߳�������destroy����, �����ȴ�, ֱ������Ϊֹ */ - while(MESA_ATOMIC_READ(g_destory_env_per_thread_done[tseq]) != 0x7FFFFFFF){ + while(MESA_ATOMIC_READ(g_destory_env_per_thread_done[tseq]) != 0x7FFFF){ sapp_usleep(100); } return; @@ -165,7 +186,7 @@ void libsapp_destroy_env_per_thread(int tseq) } packet_io_clean_thread_context(tseq); - MESA_ATOMIC_SET(g_destory_env_per_thread_done[tseq], 0x7FFFFFFF); + MESA_ATOMIC_SET(g_destory_env_per_thread_done[tseq], 0x7FFFF); } @@ -173,6 +194,8 @@ void libsapp_destroy_env_per_thread(int tseq) void libsapp_destroy_env(void) { + int exit_process = 0; + /* һ���������: sapp -d������Ϻ�, ���Զ�����libsapp_destroy_env(), ���Dz��Ҳ���ܻ����ⲿ��������libsapp_destroy_env(), @@ -182,7 +205,7 @@ void libsapp_destroy_env(void) if(MESA_ATOMIC_INC(g_destory_env_done) != 1){ /* INC����1, ˵��ԭ���϶�����0, ˵��������һ���߳�������destroy����, �����ȴ�, ֱ������Ϊֹ */ - while(MESA_ATOMIC_READ(g_destory_env_done) != 0x7FFFFFFF){ + while(MESA_ATOMIC_READ(g_destory_env_done) != 0x7FFFF){ sapp_usleep(100); } return; @@ -190,7 +213,9 @@ void libsapp_destroy_env(void) MESA_ATOMIC_SET(g_destory_env_done, 1); } - MESA_ATOMIC_SET(g_destory_env_done, 1); + if(CAP_MODEL_PCAP_DUMPFILE == g_packet_io_cap_mode){ + exit_process = 1; + } sapp_set_current_state(SAPP_STATE_READY_TO_EXIT); @@ -198,7 +223,11 @@ void libsapp_destroy_env(void) packet_io_exit(); - MESA_ATOMIC_SET(g_destory_env_done, 0x7FFFFFFF); + MESA_ATOMIC_SET(g_destory_env_done, 0x7FFFF); + + if(exit_process){ + exit(0); + } } |
