From: Vitaliy Cherepanov Date: Fri, 18 Oct 2013 12:47:48 +0000 (+0400) Subject: [FIX] ACK return error code X-Git-Tag: Tizen_SDK_2.3~154 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3231ff856ccc50de6a4d6517ca4171fd25743ad3;p=platform%2Fcore%2Fsystem%2Fswap-manager.git [FIX] ACK return error code return ERR_WRONG_MESSAGE_FORMAT instead of ERR_UNKNOWN if message parse failed on messages: start, add, remove Change-Id: I25a75284e4cd167f87816dad884176fa3211c10b Signed-off-by: Vitaliy Cherepanov --- diff --git a/daemon/da_inst.c b/daemon/da_inst.c index 105dfe5..2389535 100644 --- a/daemon/da_inst.c +++ b/daemon/da_inst.c @@ -623,11 +623,13 @@ struct app_info_t *app_info_get_next(struct app_list_t **app_list) } //----------------------------------------------------------------------------- -int msg_start(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg) +int msg_start(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err) { char *p = NULL; *msg = NULL; if (!parse_app_inst_list(data, &us_inst->app_num, &us_inst->app_inst_list)) { + *err = ERR_WRONG_MESSAGE_FORMAT; LOGE("parse app inst\n"); return 1; } @@ -638,17 +640,22 @@ int msg_start(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct p = (char *)*msg; pack_int32(p, NMSG_START); } else { + *err = ERR_CANNOT_START_PROFILING; return 1; } return 0; } -int msg_swap_inst_add(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg) +int msg_swap_inst_add(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err) { uint32_t lib_num = 0; char *p = NULL; + *err = ERR_UNKNOWN; + if (!parse_lib_inst_list(data, &lib_num, &us_inst->lib_inst_list)) { + *err = ERR_WRONG_MESSAGE_FORMAT; LOGE("parse lib inst list fail\n"); return 1; } @@ -677,15 +684,19 @@ int msg_swap_inst_add(struct msg_buf_t *data, struct user_space_inst_t *us_inst, // free new_list free_data_list((struct data_list_t **)&new_lib_inst_list); new_lib_inst_list = NULL; + *err = ERR_NO; return 0; } -int msg_swap_inst_remove(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg) +int msg_swap_inst_remove(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err) { uint32_t lib_num = 0; char *p = NULL; + *err = ERR_UNKNOWN; if (!parse_lib_inst_list(data, &lib_num, &new_lib_inst_list)) { + *err = ERR_WRONG_MESSAGE_FORMAT; LOGE("parse lib inst\n"); return 1; } @@ -706,5 +717,6 @@ int msg_swap_inst_remove(struct msg_buf_t *data, struct user_space_inst_t *us_in free_data_list((struct data_list_t **)&new_lib_inst_list); new_lib_inst_list = NULL; + *err = ERR_NO; return 0; } diff --git a/daemon/da_inst.h b/daemon/da_inst.h index 4c211aa..ce20510 100644 --- a/daemon/da_inst.h +++ b/daemon/da_inst.h @@ -73,9 +73,12 @@ struct data_list_t { typedef int (cmp_data_f) (struct data_list_t *el_1, struct data_list_t *el_2); typedef char *(*pack_head_t) (char *to, void *data); -extern int msg_swap_inst_remove(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg); -extern int msg_swap_inst_add(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg); -extern int msg_start(struct msg_buf_t *data, struct user_space_inst_t *us_inst, struct msg_t **msg); +extern int msg_swap_inst_remove(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err); +extern int msg_swap_inst_add(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err); +extern int msg_start(struct msg_buf_t *data, struct user_space_inst_t *us_inst, + struct msg_t **msg, enum ErrorCode *err); struct probe_list_t *new_probe(); struct lib_list_t *new_lib(); diff --git a/daemon/da_protocol.c b/daemon/da_protocol.c index efceee6..5b621c7 100644 --- a/daemon/da_protocol.c +++ b/daemon/da_protocol.c @@ -753,7 +753,7 @@ int sendACKToHost(enum HostMessageT resp, enum ErrorCode err_code, //copy payload data memcpy(p, payload, payload_size); - LOGI("ACK (%s) errcode<%s> payload=%d; size=%d\n", msg_ID_str(resp), + LOGI("ACK (%s) errcode<%s> payload=0x%08X; size=%d\n", msg_ID_str(resp), msgErrStr(err_code), (int)payload, payload_size); printBuf((char *)msg, loglen); @@ -951,7 +951,7 @@ static int process_msg_start(struct msg_buf_t *msg_control) } if (msg_start(msg_control, &prof_session.user_space_inst, - &msg_reply) != 0) { + &msg_reply, &err_code) != 0) { LOGE("parse error\n"); goto send_ack; } @@ -1044,9 +1044,9 @@ int host_message_handler(struct msg_t *msg) case NMSG_BINARY_INFO: return process_msg_binary_info(&msg_control); case NMSG_SWAP_INST_ADD: - if (msg_swap_inst_add(&msg_control, &prof_session.user_space_inst, &msg_reply) != 0) { + if (msg_swap_inst_add(&msg_control, &prof_session.user_space_inst, + &msg_reply, &error_code) != 0) { LOGE("swap inst add\n"); - error_code = ERR_UNKNOWN; goto send_ack; } if (msg_reply != NULL) @@ -1057,7 +1057,8 @@ int host_message_handler(struct msg_t *msg) //send ack to host goto send_ack; case NMSG_SWAP_INST_REMOVE: - if (msg_swap_inst_remove(&msg_control, &prof_session.user_space_inst, &msg_reply) != 0) { + if (msg_swap_inst_remove(&msg_control, &prof_session.user_space_inst, + &msg_reply, &error_code) != 0) { LOGE("swap inst remove\n"); error_code = ERR_UNKNOWN; goto send_ack;