All of lore.kernel.org
 help / color / mirror / Atom feed
* add a common removing and unregistering exit function for interfaces when manager_free and manager_destroy function is called
@ 2009-06-02  1:18 Li, Minjun
  2009-06-02  3:57 ` Denis Kenzior
  0 siblings, 1 reply; 4+ messages in thread
From: Li, Minjun @ 2009-06-02  1:18 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 286 bytes --]

Hi Folks,
Because I found that manager_destroy function is lack of some exit function calls comparing to manager_free function, I add a common removing and unregistering exit function for interfaces when manager_free and manager_destroy function is called.

Best Regards,
Minjun


[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 2475 bytes --]

[-- Attachment #3: 0001-Adding-a-remove-and-unregister-function-for-interfac.patch --]
[-- Type: application/octet-stream, Size: 3989 bytes --]

From 443e2d92da2d746ddd3859f8365eb8b155127fdc Mon Sep 17 00:00:00 2001
From: Minjun Li <minjun.li@intel.com>
Date: Mon, 1 Jun 2009 09:09:54 +0800
Subject: [PATCH] Adding a remove and unregister function for interfaces

---
 drivers/atmodem/atmodem.c              |   37 +++++++++++++++++--------------
 1 files changed, 20 insertions(+), 17 deletions(-)
 mode change 100644 => 100755 drivers/atmodem/at.h
 mode change 100644 => 100755 drivers/atmodem/atmodem.c
 mode change 100644 => 100755 drivers/atmodem/call-barring.c
 mode change 100644 => 100755 drivers/atmodem/call-forwarding.c
 mode change 100644 => 100755 drivers/atmodem/call-meter.c
 mode change 100644 => 100755 drivers/atmodem/call-settings.c
 mode change 100644 => 100755 drivers/atmodem/network-registration.c
 mode change 100644 => 100755 drivers/atmodem/session.c
 mode change 100644 => 100755 drivers/atmodem/session.h
 mode change 100644 => 100755 drivers/atmodem/sim.c
 mode change 100644 => 100755 drivers/atmodem/sms.c
 mode change 100644 => 100755 drivers/atmodem/ussd.c
 mode change 100644 => 100755 drivers/atmodem/voicecall.c

diff --git a/drivers/atmodem/at.h b/drivers/atmodem/at.h
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/atmodem.c b/drivers/atmodem/atmodem.c
old mode 100644
new mode 100755
index 2f1e430..6df1598
--- a/drivers/atmodem/atmodem.c
+++ b/drivers/atmodem/atmodem.c
@@ -90,19 +90,10 @@ static void at_destroy(struct at_data *at)
 	g_free(at);
 }
 
-static void manager_free(gpointer user)
+static void foo_free(struct at_data *at)
 {
-	GSList *l;
-
-	for (l = g_pending; l; l = l->next)
-		g_io_channel_unref(l->data);
-
-	g_slist_free(g_pending);
-
-	for (l = g_sessions; l; l = l->next) {
-		struct at_data *at = l->data;
-
-		at_sms_exit(at->modem);
+	if (at){
+	    at_sms_exit(at->modem);
 		at_call_forwarding_exit(at->modem);
 		at_call_settings_exit(at->modem);
 		at_network_registration_exit(at->modem);
@@ -112,9 +103,23 @@ static void manager_free(gpointer user)
 		at_ussd_exit(at->modem);
 		at_sim_exit(at->modem);
 		ofono_modem_unregister(at->modem);
-
 		at_destroy(at);
 	}
+}
+
+static void manager_free(gpointer user)
+{
+	GSList *l;
+
+	for (l = g_pending; l; l = l->next)
+		g_io_channel_unref(l->data);
+
+	g_slist_free(g_pending);
+
+	for (l = g_sessions; l; l = l->next) {
+		struct at_data *at = l->data;
+		foo_free(at);
+	}
 
 	g_slist_free(g_sessions);
 }
@@ -421,12 +426,10 @@ static DBusMessage *manager_destroy(DBusConnection *conn, DBusMessage *msg,
 		if (strcmp(at->modem->path, path))
 			continue;
 
-		at_network_registration_exit(at->modem);
-		at_voicecall_exit(at->modem);
-		ofono_modem_unregister(at->modem);
+		foo_free(at);
 
 		g_sessions = g_slist_remove(g_sessions, at);
-		at_destroy(at);
+		
 
 		modem_list(&modems);
 		dbus_gsm_signal_array_property_changed(conn, "/",
diff --git a/drivers/atmodem/call-barring.c b/drivers/atmodem/call-barring.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/call-forwarding.c b/drivers/atmodem/call-forwarding.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/call-meter.c b/drivers/atmodem/call-meter.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/call-settings.c b/drivers/atmodem/call-settings.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/session.c b/drivers/atmodem/session.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/session.h b/drivers/atmodem/session.h
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/sms.c b/drivers/atmodem/sms.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/ussd.c b/drivers/atmodem/ussd.c
old mode 100644
new mode 100755
diff --git a/drivers/atmodem/voicecall.c b/drivers/atmodem/voicecall.c
old mode 100644
new mode 100755
-- 
1.6.0.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-06-03  3:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-02  1:18 add a common removing and unregistering exit function for interfaces when manager_free and manager_destroy function is called Li, Minjun
2009-06-02  3:57 ` Denis Kenzior
2009-06-03  2:25   ` Xu, Martin
2009-06-03  3:08     ` Li, Minjun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.