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;
}
Beispiel #3
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;
	}
}
Beispiel #4
0
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;
	}
}