return 1;
}
+void app_list_rm_probes_by_addr(struct app_list_t *app_list, uint64_t addr)
+{
+ struct probe_list_t *pr = app_list->list;
+
+ while (pr) {
+ pr = pr->func->func_addr == addr ?
+ probe_list_rm_element(app_list, pr) :
+ pr->next;
+ }
+}
+
//--------------------------------------pack ----------------------------------
static char *pack_lib_head_to_array(char *to, void *data)
void free_app(struct app_list_t *app);
void free_lib(struct lib_list_t *lib);
+void app_list_rm_probes_by_addr(struct app_list_t *app_list, uint64_t addr);
+
struct app_info_t *app_info_get_first(struct app_list_t **app_list);
struct app_info_t *app_info_get_next(struct app_list_t **app_list);
}
static int parse_inst_app_setup_data(struct msg_buf_t *msg,
- struct app_info_t *app_info)
+ struct app_info_t *app_info,
+ struct app_list_t *app_list)
{
switch (app_info->app_type) {
case APP_TYPE_TIZEN: {
app_info->setup_data.size = data_len;
memcpy(app_info->setup_data.data, data, data_len);
+
+ /* FIXME: dog nail */
+ app_list_rm_probes_by_addr(app_list, val);
+
return 0;
}
case APP_TYPE_RUNNING:
goto exit_free_err;
}
- if (parse_inst_app_setup_data(msg, app_info)) {
+ if (parse_inst_app_setup_data(msg, app_info, *dest)) {
LOGE("setup data parsing error\n");
goto exit_free_err;
}