diff --git a/common/src/tfe_future.cpp b/common/src/tfe_future.cpp index e24d785..9cbad2e 100644 --- a/common/src/tfe_future.cpp +++ b/common/src/tfe_future.cpp @@ -2,10 +2,13 @@ #include #include #include +#include #include #include -#include +#include +#include + const char* FP_HISTOGRAM_BINS="10,50,100,500"; @@ -47,19 +50,24 @@ void future_promise_library_init(void) { return; } + + int value=0; memset(&g_FP_instance,0,sizeof(g_FP_instance)); MESA_htable_handle htable = MESA_htable_born(); - MESA_htable_set_opt(htable, MHO_SCREEN_PRINT_CTRL, 0); - MESA_htable_set_opt(htable, MHO_THREAD_SAFE, 1); - MESA_htable_set_opt(htable, MHO_MUTEX_NUM, 16); - MESA_htable_set_opt(htable, MHO_HASH_SLOT_SIZE, 1024); + value=0; + MESA_htable_set_opt(htable, MHO_SCREEN_PRINT_CTRL,&value,sizeof(value)); + value=1; + MESA_htable_set_opt(htable, MHO_THREAD_SAFE, &value,sizeof(value));; + value=16; + MESA_htable_set_opt(htable, MHO_MUTEX_NUM, &value,sizeof(value));; + value=1024; + MESA_htable_set_opt(htable, MHO_HASH_SLOT_SIZE, &value,sizeof(value));; MESA_htable_mature(htable); g_FP_instance.name_table=htable; screen_stat_handle_t fs=NULL; const char* stat_path="./future.status"; const char* app_name="FP"; - int value=0; fs=FS_create_handle(); FS_set_para(fs, APP_NAME, app_name, strlen(app_name)+1); value=0; @@ -91,18 +99,19 @@ struct field_get_set_args static long field_get_set_cb(void * data, const uchar * key, uint size, void * user_arg) { struct field_get_set_args* args=(struct field_get_set_args*)user_arg; - int field_id=0, ret=0; + int *field_id=NULL, ret=0; if(data==NULL) { - field_id=FS_register(args->fs_handle, FS_STYLE_HISTOGRAM, FS_CALC_SPEED, (const char * )key); + field_id=(int*)malloc(sizeof(int)); + *field_id=FS_register(args->fs_handle, FS_STYLE_HISTOGRAM, FS_CALC_SPEED, (const char * )key); ret = MESA_htable_add(args->htable, key, size, (void*)field_id); assert(ret==0); } else { - field_id=(int)data; + field_id=(int*)data; } - return field_id; + return *field_id; } struct future * future_create(const char* symbol, future_success_cb * cb_success, future_failed_cb * cb_failed, void * user) @@ -117,8 +126,8 @@ struct future * future_create(const char* symbol, future_success_cb * cb_success void * no_use = NULL; long cb_ret=0; struct field_get_set_args args{.htable = g_FP_instance.name_table, .fs_handle = g_FP_instance.fs_handle}; - no_use=MESA_htable_search_cb(g_FP_instance.name_table, symbol, strlen(symbol), field_get_set_cb, &args, &cb_ret); - p->__debug.field_id=(int)cb_ret + no_use=MESA_htable_search_cb(g_FP_instance.name_table, (const unsigned char*)symbol, strlen(symbol), field_get_set_cb, &args, &cb_ret); + p->__debug.field_id=(int)cb_ret; FS_operate(g_FP_instance.fs_handle,g_FP_instance.fsid_f_num, 0, FS_OP_ADD, 1); return &p->f; } @@ -138,10 +147,10 @@ void future_destroy(struct future * f) } struct timespec end; clock_gettime(CLOCK_MONOTONIC,&end); - long long jiffies=(end->tv_sec-p->__debug.create_time.tv_sec)*1000000000+end->tv_nsec-p->__debug.create_time.tv_nsec; + long long jiffies=(end.tv_sec-p->__debug.create_time.tv_sec)*1000000000+end.tv_nsec-p->__debug.create_time.tv_nsec; FS_operate(g_FP_instance.fs_handle, p->__debug.field_id, 0, FS_OP_SET, jiffies); FS_operate(g_FP_instance.fs_handle,g_FP_instance.fsid_f_num, 0, FS_OP_SUB, 1); - memset(p, 0, sizeof(struct p)); + memset(p, 0, sizeof(struct promise)); free(p); }