int ipc_gen_phone_res_expect_unregister(struct ril_client *client, struct ipc_gen_phone_res_expect *expect) { struct ipc_fmt_data *data; struct list_head *list; if (client == NULL || client->data == NULL) return -1; data = (struct ipc_fmt_data *) client->data; RIL_CLIENT_LOCK(client); list = data->gen_phone_res_expect; while (list != NULL) { if (list->data == (void *) expect) { memset(expect, 0, sizeof(struct ipc_gen_phone_res_expect)); free(expect); if (list == data->gen_phone_res_expect) data->gen_phone_res_expect = list->next; list_head_free(list); break; } list_continue: list = list->next; } RIL_CLIENT_UNLOCK(client); return 0; }
int ipc_gen_phone_res_expect_flush(struct ril_client *client) { struct ipc_gen_phone_res_expect *expect; struct ipc_fmt_data *data; struct list_head *list; struct list_head *list_next; if (client == NULL || client->data == NULL) return -1; data = (struct ipc_fmt_data *) client->data; RIL_CLIENT_LOCK(client); list = data->gen_phone_res_expect; while (list != NULL) { if (list->data != NULL) { expect = (struct ipc_gen_phone_res_expect *) list->data; memset(expect, 0, sizeof(struct ipc_gen_phone_res_expect)); free(expect); } if (list == data->gen_phone_res_expect) data->gen_phone_res_expect = list->next; list_next = list->next; list_head_free(list); list_continue: list = list_next; } RIL_CLIENT_UNLOCK(client); return 0; }
void ril_request_send_sms_unregister(struct ril_request_send_sms_info *send_sms) { struct list_head *list; if (send_sms == NULL) return; list = ril_data.outgoing_sms; while (list != NULL) { if (list->data == (void *) send_sms) { memset(send_sms, 0, sizeof(struct ril_request_send_sms_info)); free(send_sms); if (list == ril_data.outgoing_sms) ril_data.outgoing_sms = list->next; list_head_free(list); break; } list_continue: list = list->next; } }
void ipc_sms_incoming_msg_unregister(struct ipc_sms_incoming_msg_info *incoming_msg) { struct list_head *list; if (incoming_msg == NULL) return; list = ril_data.incoming_sms; while (list != NULL) { if (list->data == (void *) incoming_msg) { memset(incoming_msg, 0, sizeof(struct ipc_sms_incoming_msg_info)); free(incoming_msg); if (list == ril_data.incoming_sms) ril_data.incoming_sms = list->next; list_head_free(list); break; } list_continue: list = list->next; } }
void ril_request_unregister(struct ril_request_info *request) { struct list_head *list; if(request == NULL) return; list = ril_data.requests; while(list != NULL) { if(list->data == (void *) request) { memset(request, 0, sizeof(struct ril_request_info)); free(request); if(list == ril_data.requests) ril_data.requests = list->next; list_head_free(list); break; } list_continue: list = list->next; } }