master/master.c
changeset 993 8c32564252fd
parent 992 50a44cbd30af
child 994 e29edcced328
--- a/master/master.c	Thu Jun 12 07:15:54 2008 +0000
+++ b/master/master.c	Thu Jun 12 07:26:38 2008 +0000
@@ -58,7 +58,7 @@
 /*****************************************************************************/
 
 void ec_master_destroy_slave_configs(ec_master_t *);
-void ec_master_destroy_domains(ec_master_t *);
+void ec_master_clear_domains(ec_master_t *);
 static int ec_master_idle_thread(ec_master_t *);
 static int ec_master_operation_thread(ec_master_t *);
 #ifdef EC_EOE
@@ -231,7 +231,7 @@
 #endif
     ec_master_destroy_slave_configs(master);
     ec_master_clear_slaves(master);
-    ec_master_destroy_domains(master);
+    ec_master_clear_domains(master);
     ec_fsm_master_clear(&master->fsm);
     ec_datagram_clear(&master->fsm_datagram);
     ec_device_clear(&master->backup_device);
@@ -299,13 +299,14 @@
    Destroy all domains.
 */
 
-void ec_master_destroy_domains(ec_master_t *master)
+void ec_master_clear_domains(ec_master_t *master)
 {
     ec_domain_t *domain, *next;
 
     list_for_each_entry_safe(domain, next, &master->domains, list) {
         list_del(&domain->list);
-        ec_domain_destroy(domain);
+        ec_domain_clear(domain);
+        kfree(domain);
     }
 }
 
@@ -517,7 +518,7 @@
     master->cb_data = master;
     
     ec_master_destroy_slave_configs(master);
-    ec_master_destroy_domains(master);
+    ec_master_clear_domains(master);
 
     // set states for all slaves
     list_for_each_entry(slave, &master->slaves, list) {
@@ -1202,17 +1203,14 @@
         return NULL;
     }
 
-    if (list_empty(&master->domains)) index = 0;
-    else {
+    if (list_empty(&master->domains)) {
+        index = 0;
+    } else {
         last_domain = list_entry(master->domains.prev, ec_domain_t, list);
         index = last_domain->index + 1;
     }
 
-    if (ec_domain_init(domain, master, index)) {
-        EC_ERR("Failed to init domain.\n");
-        return NULL;
-    }
-
+    ec_domain_init(domain, master, index);
     list_add_tail(&domain->list, &master->domains);
 
     return domain;