static thread_ret_type thread_func_call __log_service_start_routine(void *arg) { thread_ret_type r = (thread_ret_type)0; iop_log_service_t *log = (iop_log_service_t *)arg; int nloop = 0; while(!(log->stop_flag)) { ++nloop; iop_msleep(100); iop_lock(&(log->lock)); __log_service_flush(log); if(nloop > 60) { __iop_log_reopen(log); nloop = 0; } iop_unlock(&(log->lock)); } if(log->fp) { fclose(log->fp); log->fp = (FILE *)0; } iop_lock_destroy(&(log->lock)); if(log == g_iop_log_service) { g_iop_log_service = (iop_log_service_t *)0; } free(log); return r; }
int iop_log_service_stop() { if(!g_iop_log_service){return 0;} iop_log_flush(g_iop_log_service); iop_lock(&(g_iop_log_service->lock)); if((g_iop_log_service->fp)) { fclose(g_iop_log_service->fp); g_iop_log_service->fp = 0; } iop_thread_cancel((g_iop_log_service->tid)); iop_unlock(&(g_iop_log_service->lock)); iop_lock_destroy(&(g_iop_log_service->lock)); free(g_iop_log_service); g_iop_log_service = 0; return 0; }
CBlock::~CBlock() { clear(); iop_lock_destroy(&mapLock); }